Способ и устройство для кодирования видео
METHOD AND APPARATUS FOR VIDEO ENCODING

ВКЛЮЧЕНИЕ ПОСРЕДСТВОМ ССЫЛКИ
[0001] По настоящей заявке испрашивается приоритет согласно заявке на выдачу патента США №16/941,193 «Способ и устройство для кодирования видеоданных», поданной 28 июля 2020, по которой испрашивался приоритет согласно предварительной заявке США №62/886,056 «Улучшенный синтаксис и дескриптор заголовка SPS для размера CTU», поданной 13 августа 2019 г. Содержание предыдущих заявок полностью включено в настоящее описание посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] В настоящей заявке описаны варианты осуществления изобретения, в целом относящиеся к кодированию видеоданных.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[0003] Описание уровня техники приведено здесь для представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники для настоящего изобретения.
[0004] Кодирование и декодирование видеоданных может осуществляться с использованием внешнего предсказания изображения с компенсацией движения. Цифровое видео без сжатия может включать последовательность изображений, каждое из которых имеет пространственный размер, например, 1920x1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. Видео без сжатия предъявляет конкретные требования к битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920x1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с. Час такого видео требует объема памяти более 600 ГБ.
[0005] Одной целью кодирования и декодирования видеоданных может быть снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе и/или объему памяти, в ряде случаев на два порядка величины или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так что реконструированный сигнал можно использовать для намеченного применения. Сжатие с потерями широко применяется для видеоданных. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями, чем пользователи телевещательных приложений. Достижимая степень сжатия может отражать, что более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.
[0006] Кодер и декодер видеоданных могут использовать методы на основе нескольких широких категорий, включая, например, компенсацию движения, преобразование, квантование и энтропийное кодирование.
[0007] Технологии видеокодеков могут включать методы, известные как внутреннее кодирование. При внутреннем кодировании значения отсчетов представлены без ссылки на отсчеты или другие данные из ранее реконструированных опорных изображений. В некоторых видеокодеках изображение пространственно разбивается на блоки отсчетов. Когда все блоки отсчетов кодируются в режиме внутреннего кодирования, это изображение является изображением с внутренним кодированием. Изображения с внутренним кодированием и их производные, такие как изображения обновления независимого декодера, могут использоваться для сброса состояния декодера и, следовательно, могут использоваться в качестве первого изображения в кодированном битовом потоке видеоданных и видеосеансе или в качестве неподвижного изображения. Отсчеты блока с внутренним кодированием могут подвергаться преобразованию, а коэффициенты преобразования могут квантоваться перед энтропийным кодированием. Внутреннее предсказание может быть методом, который минимизирует значения отсчетов в области до преобразования. В некоторых случаях, чем меньше значение DC после преобразования и чем меньше коэффициенты АС, тем меньше битов требуется при заданном размере шага квантования для представления блока после энтропийного кодирования.
[0008] Традиционное внутреннее кодирование, например, известное из технологий кодирования поколения MPEG-2, не использует внутреннее предсказание. Однако некоторые новые технологии сжатия видеоданных включают методы, которые используют предсказание, например, из данных окружающих отсчетов и/или метаданных, полученных во время кодирования/декодирования пространственно соседних и предшествующих в порядке декодирования блоков данных. Такие методы в дальнейшем называются методами «внутреннего предсказания». Следует отметить, что по меньшей мере в некоторых случаях внутреннее предсказание использует опорные данные только из текущего реконструируемого изображения, а не из опорных изображений.
[0009] Существует много различных форм внутреннего предсказания. Когда в данной технологии кодирования видеоданных может использоваться более одного из таких методов, применяемый метод может использоваться в режиме внутреннего предсказания. В некоторых случаях режимы могут иметь подрежимы и/или параметры, которые могут кодироваться индивидуально или включаться в кодовое слово режима. Кодовое слово, используемое для данной комбинации режима/подрежима/параметра, может повлиять на повышение эффективности кодирования за счет внутреннего предсказания, как и технология энтропийного кодирования, используемая для преобразования кодовых слов в битовый поток.
[0010] Режим внутреннего предсказания был введен в Н.264, усовершенствован в Н.265 и дополнительно усовершенствован в новых технологиях кодирования, таких как совместная модель исследования (JEM, joint exploration model), универсальное кодирование видеоданных (VVC, versatile video coding) и набор эталонов (BMS, benchmark set). Блок предсказателя может быть сформирован с использованием значений соседних отсчетов, принадлежащих уже доступным отсчетам. Значения соседних отсчетов копируются в блок предсказания в соответствии с направлением. Ссылка на используемое направление может кодироваться в битовом потоке или сама может быть предсказана.
[0011] Как показано на фиг. 1А, в правом нижнем углу имеется подмножество из девяти направлений предсказателя, известных из 33 возможных направлений предсказателя в стандарте Н.265 (которые соответствуют 33 угловым режимам из 35 режимов внутреннего кодирования). Точка, где сходятся стрелки (101), представляет собой предсказываемый отсчет. Стрелки указывают направление, в котором осуществляют предсказание отсчета. Например, стрелка (102) указывает на то, что отсчет (101) предсказывается на основе отсчета или отсчетов в правом верхнем углу под углом 45 градусов к горизонтали. Аналогично, стрелка (103) указывает на то, что отсчет (101) предсказывается на основе отсчета или отсчетов, расположенных ниже слева от отсчета (101) под углом 22,5 градуса к горизонтали.
[0012] Снова обращаясь к фиг. 1А, сверху слева изображен квадратный блок (104) из 4x4 отсчетов (обозначен пунктирной жирной линией). Квадратный блок (104) содержит 16 отсчетов, каждый из которых обозначен буквой «S», его положением в измерении Υ (например, индекс строки) и его положением в измерении X (например, индекс столбца). Например, отсчет S21 - это второй (сверху) отсчет в измерении Υ и первый (слева) отсчет в измерении X. Аналогично, отсчет S44 является четвертым отсчетом в блоке (104) как в измерении Υ, так и в измерении X. Поскольку размер блока - 4x4 отсчетов, S44 находится внизу справа. Далее показаны опорные отсчеты, которые следуют аналогичной схеме нумерации. Опорный отсчет обозначен буквой R, его положением Υ (например, индекс строки) и положением X (индекс столбца) относительно блока (104). Как в стандарте Н.264, так и в стандарте Н.265, отсчеты предсказания находятся рядом с реконструируемым блоком, поэтому нет необходимости использовать отрицательные значения.
[0013] Внутреннее предсказание изображения может осуществляться путем копирования значений опорных отсчетов из соседних отсчетов в соответствии с сигнализированным направлением предсказания. Например, предположим, что битовый поток кодированных видеоданных включает сигнализацию, которая для этого блока указывает направление предсказания, соответствующее стрелке (102), то есть отсчеты предсказываются на основе отсчета или отсчетов предсказания, расположенных справа сверху под углом 45 градусов к горизонтали. В этом случае отсчеты S41, S32, S23 и S14 предсказываются на основе одного и того же опорного отсчета R05. Отсчет S44 затем предсказывается на основе опорного отсчета R08.
[0014] В некоторых случаях значения нескольких опорных отсчетов могут быть объединены, например, посредством интерполяции, для вычисления опорного отсчета, особенно тогда, когда направления не делятся ровно на 45 градусов.
[0015] Количество возможных направлений увеличилось по мере развития технологии кодирования видеоданных. В стандарте Н.264 (2003 год) могли быть представлены девять различных направлений. Число направлений увеличилось до 33 в Н.265 (2013 год), a JEM/VVC/BMS на момент написания этого текста может поддерживать до 65 направлений. Были проведены эксперименты для определения наиболее вероятных направлений, и используются определенные методы энтропийного кодирования для представления этих вероятных направлений небольшим количеством битов с принятием определенного штрафа за менее вероятные направления. Кроме того, сами направления иногда могут быть предсказаны на основе соседних направлений, используемых в соседних, уже декодированных, блоках.
[0016] Фиг. 1В показывает схему (180), которая изображает 65 направлений внутреннего предсказания согласно JEM, чтобы проиллюстрировать возрастающее с течением времени количество направлений предсказания.
[0017] Отображение битов направлений внутреннего предсказания в битовом потоке кодированных видеоданных, которые представляют направление, может отличаться от технологии к технологии кодирования видеоданных и может варьироваться, например, от простых прямых отображений направления предсказания до режима внутреннего предсказания, кодовых слов, сложных адаптивных схем, включающих наиболее вероятные режимы, и аналогичных методов. Однако во всех случаях могут быть определенные направления, которые статистически менее вероятны в видеоконтенте, чем некоторые другие направления. Поскольку целью сжатия видеоданных является уменьшение избыточности, эти менее вероятные направления в хорошо работающей технологии кодирования видеоданных будут представлены большим числом битов, чем более вероятные направления.
[0018] Компенсация движения может быть методом сжатия с потерями и может относиться к методам, в которых блок данных отсчетов из ранее реконструированного изображения или его части (опорного изображения) после пространственного сдвига в направлении, указанном вектором движения (MV, motion vector), используется для предсказания вновь реконструированного изображения или части изображения. В некоторых случаях опорное изображение может быть таким же, как реконструируемое в настоящий момент изображение. Векторы движения могут иметь два измерения X и Υ или три измерения, при этом третье измерение указывает на используемое опорное изображение (последнее, косвенно, может быть измерением времени).
[0019] В некоторых методах сжатия видеоданных вектор движения, применимый к определенной области данных отсчетов, может быть предсказан на основе других векторов движения, например, на основе тех, которые связаны с другой областью данных отсчетов, соседней с реконструируемой областью, и предшествуют этому вектору движения в порядке декодирования. Это может существенно уменьшить объем данных, необходимых для кодирования вектора движения, что устраняет избыточность и увеличивает степень сжатия. Предсказание вектора движения может работать эффективно, например, потому что при кодировании входного видеосигнала, полученного от камеры (известного как естественное видео), существует статистическая вероятность того, что области, большие, чем область, к которой применим один вектор движения, перемещаются в сходном направлении и, следовательно, в некоторых случаях могут быть предсказаны с использованием сходного вектора движения, полученного из векторов движения соседней области. Это приводит к тому, что вектор движения, найденный для данной области, является сходным вектору движения, предсказанному на основе окружающих векторов движения, или совпадает с ним и, в свою очередь, может быть представлен после энтропийного кодирования меньшим количеством битов, чем в случае непосредственного кодирования вектора движения. В некоторых случаях предсказание вектора движения может быть примером сжатия без потерь сигнала (а именно, векторов движения), полученного из исходного сигнала (а именно, потока отсчетов). В других случаях само предсказание векторов движения может быть с потерями, например, из-за ошибок округления при вычислении предсказателя на основе нескольких окружающих векторов движения.
[0020] Различные механизмы предсказания векторов движения описаны в стандарте H.265/HEVC (Рекомендация МСЭ-Т Н.265, «Высокоэффективное кодирование видеоданных», декабрь 2016 г.). Из множества механизмов предсказания векторов движения, которые предлагает стандарт Н.265, здесь описывается метод, далее называемый «пространственным слиянием».
[0021] Как показано на фиг. 2, текущий блок (201) содержит отсчеты, обнаруженные кодером в процессе поиска движения как предсказуемые на основе предыдущего блока того же размера, который пространственно-сдвинут.Вместо непосредственного кодирования вектора движения, этот вектор движения может быть получен из метаданных, связанных с одним или несколькими опорными изображениями, например, на основе самого последнего (в порядке декодирования) опорного изображения с использованием вектора движения, связанного с любым из пяти окружающих отсчетов, обозначенных А0, А1 и В0, B1, В2 (от 202 до 206, соответственно). В стандарте Н.265 предсказание векторов движения может использовать предсказатели на основе того же опорного изображения, которое используется для соседнего блока.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0022] Аспекты изобретения предоставляют способы и устройства для кодирования/декодирования видеоданных. В некоторых примерах устройство для декодирования видеоданных содержит схему обработки. Схема обработки может принимать кодированную информацию изображений в кодированной видеопоследовательности. Кодированная информация может включать информацию о размере единицы дерева кодирования (CTU, coding tree unit), которая указывает размер CTU, выбранный для изображений. Информация о размере CTU может быть кодирована с использованием усеченного унарного кода. Схема обработки может определять выбранный размер CTU на основе информации о размере CTU, кодированной с использованием усеченного унарного кода, и реконструировать отсчеты в изображениях на основе выбранного размера CTU. В варианте осуществления изобретения выбранный размер CTU составляет 32x32, 64x64 или 128x128 отсчетов яркости.
[0023] В варианте осуществления изобретения схема обработки может определять на основе информации о размере CTU, кодированной с использованием усеченного унарного кода, кодированное значение из битовой строки в кодированной информации, при этом максимальное количество битов в битовой строке равно 2. Кодированное значение может быть 0, 1 и 2, когда битовая строка равна 0, 10 и 11, соответственно. Схема обработки может определять выбранный размер CTU на основе кодированного значения.
CtbLog2SizeY
[0024] В примере схема обработки может определять, что выбранный размер CTU равен 128, 64 и 32 в случае, если кодированное значение равно 0, 1 и 2, соответственно. Схема обработки может определить выбранный размер CTU как 2, где значение CtbLog2SizeY представляет собой разность 7 и кодированного значения.
CtbLog2SizeY
[0025] В примере схема обработки может определять, что выбранный размер CTU равен 32, 64 и 128 в случае, если кодированное значение равно 0, 1 и 2, соответственно. Схема обработки может определять выбранный размер CTU как 2, где значение CtbLog2SizeY является суммой кодированного значения и 5.
[0026] В варианте осуществления изобретения кодированная информация находится в заголовке набора параметров последовательности для кодированной видеопоследовательности.
[0027] Аспекты изобретения также предоставляют машиночитаемый носитель, хранящий инструкции, которые при их исполнении компьютером для декодирования видеоданных заставляют компьютер осуществлять любой из способов декодирования видеоданных.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0028] Другие признаки, принципы и различные преимущества настоящего изобретения будут понятны из последующего подробного описания и прилагаемых чертежей.
[0029] Фиг. 1А - схематическая иллюстрация примера подмножества режимов внутреннего предсказания.
[0030] Фиг. 1В иллюстрация примеров направлений внутреннего
предсказания.
[0031] Фиг. 2 - схематическая иллюстрация текущего блока и окружающих его кандидатов для пространственного слияния в одном из примеров.
[0032] Фиг. 3 схематическая иллюстрация упрощенной структурной схемы системы (300) связи в соответствии с вариантом осуществления изобретения.
[0033] Фиг. 4 - схематическая иллюстрация упрощенной структурной схемы системы (400) связи в соответствии с вариантом осуществления изобретения.
[0034] Фиг. 5 схематическая иллюстрация упрощенной структурной схемы декодера в соответствии с вариантом осуществления изобретения.
[0035] Фиг. 6 - схематическая иллюстрация упрощенной структурной схемы кодера в соответствии с вариантом осуществления изобретения.
[0036] Фиг. 7 показывает структурную схему кодера в соответствии с другим вариантом осуществления изобретения.
[0037] Фиг. 8 показывает структурную схему декодера в соответствии с другим вариантом осуществления изобретения.
[0038] Фиг. 9А-9В показывают единицу дерева кодирования (CTU) и структуру «квадродерево плюс бинарное дерево» (QTBT, quadtree plus binary tree) согласно вариантам осуществления изобретения.
[0039] Фиг. 10А показывает пример синтаксиса и соответствующего дескриптора в заголовке набора параметров последовательности (SPS, Sequence Parameter Setting) согласно варианту осуществления изобретения.
[0040] Фиг. 10В показывает пример беззнакового целочисленного кодирования Exp-Golomb согласно варианту осуществления изобретения.
[0041] Фиг. 11А показывает пример синтаксиса и соответствующего дескриптора в заголовке SPS согласно варианту осуществления изобретения.
[0042] Фиг. 11В показывает пример кодирования кодами фиксированной длины с использованием 2 битов согласно варианту осуществления изобретения.
[0043] Фиг. 12А показывает пример синтаксиса и соответствующего дескриптора в заголовке SPS согласно варианту осуществления изобретения.
[0044] Фиг. 12В показывает пример усеченного унарного кодирования согласно варианту осуществления изобретения.
[0045] Фиг. 13 показывает блок-схему, описывающую способ (1300) согласно варианту осуществления изобретения.
[0046] Фиг. 14 - схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0047] На фиг. 3 показана упрощенная структурная схема системы (300) связи согласно варианту осуществления настоящего изобретения. Система (300) связи включает в себя множество оконечных устройств, которые могут осуществлять связь друг с другом, например, через сеть (350). Например, система (300) связи включает в себя первую пару оконечных устройств (310) и (320), соединенных между собой через сеть (350). В примере, приведенном на фиг.3, первая пара оконечных устройств (310) и (320) осуществляет однонаправленную передачу данных. Например, оконечное устройство (310) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством (310)) для передачи в другое оконечное устройство (320) через сеть (350). Кодированные видеоданные могут передаваться в виде одного или более битовых потоков кодированных видеоданных. Оконечное устройство (320) может принимать кодированные видеоданные из сети (350), декодировать кодированные видеоданные для восстановления видеоизображений и их отображения согласно восстановленным видеоданным. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.
[0048] В другом примере, система (300) связи включает в себя вторую пару оконечных устройств (330) и (340), которые осуществляют двунаправленную передачу кодированных видеоданных, возникающих, например, в ходе видеоконференцсвязи. Для двунаправленной передачи данных, например, каждое оконечное устройство из оконечных устройств (330) и (340) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством) для передачи в другое оконечное устройство из оконечных устройств (330) и (340) через сеть (350). Каждое оконечное устройство из оконечных устройств (330) и (340) также может принимать кодированные видеоданные, передаваемые другим оконечным устройством из оконечных устройств (330) и (340), и может декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения на доступном устройстве отображения согласно восстановленным видеоданным.
[0049] В примере, приведенном на фиг.3, оконечные устройства (310), (320), (330) и (340) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. Варианты осуществления настоящего изобретения находят применение для портативных компьютеров, планшетных компьютеров, медиаплееров и/или специального оборудования для видеоконференцсвязи. Сеть (350) представляет любое количество сетей, которые переносят кодированные видеоданные между оконечными устройствами (310), (320), (330) и (340), включая, например, проводные и/или беспроводные сети связи. Сеть (350) связи позволяет обмениваться данными в режиме канальной коммутации и/или пакетной коммутации. Примеры сетей включают телекоммуникационные сети, локальные сети, глобальные сети и/или интернет. Для настоящего рассмотрения архитектура и топология сети (350) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.
[0050] На фиг. 4 показано размещение видеокодера и видеодекодера в окружении потоковой передачи, в качестве примера применения настоящего изобретения. Настоящее изобретение может в равной степени использоваться и в других применениях обработки видеоданных, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, в том числе CD, DVD, карте памяти и т.п.
[0051] Система потоковой передачи может содержать подсистему (413) захвата, которая может включать источник (401) видеоданных, например, цифровую камеру, создающую, например, поток (402) видеоизображений, не подвергнутых сжатию. Например, поток (402) видеоизображений включает отсчеты, полученные цифровой камерой. Поток (402) видеоизображений, показанный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (404) (или битовыми потоками кодированных видеоданных), может обрабатываться электронным устройством (420), которое содержит видеокодер (403), подключенный к источнику (401) видеоданных. Видеокодер (403) может включать оборудование, программное обеспечение или их комбинацию для обеспечения или реализации аспектов настоящего изобретения, как более подробно описано ниже. Кодированные видеоданные (404) (или битовый поток (404) кодированных видеоданных), показанные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком (402) видеоизображений, могут храниться на потоковом сервере (405) для использования в будущем. Одна или более клиентских подсистем потоковой передачи, например клиентские подсистемы (406) и (408) на фиг. 4, могут осуществлять доступ к потоковому серверу (405) для извлечения копий (407) и (409) кодированных видеоданных (404). Клиентская подсистема (406) может содержать видеодекодер (410), например, в электронном устройстве (430). Видеодекодер (410) декодирует входящую копию (407) кодированных видеоданных и создает исходящий поток (411) видеоизображений, который может визуализироваться на дисплее (412) (например, отображающем экране) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи, кодированные видеоданные (404), (407) и (409) (например, битовые потоки видеоданных) могут кодироваться согласно тем или иным стандартам кодирования/сжатия видеоданных. Примеры этих стандартов включают Рекомендацию МСЭ-Т Н.265. Например, разрабатывается стандарт кодирования видеоданных под официальным названием «Универсальное кодирование видеоданных» (VVC, Versatile Video Coding). Настоящее изобретение может использоваться в контексте VVC.
[0052] Заметим, что электронные устройства (420) и (430) могут содержать другие компоненты (не показаны). Например, электронное устройство (420) может содержать видеодекодер (не показан), и электронное устройство (430) также может содержать видеокодер (не показан).
[0053] На фиг. 5 показана структурная схема видеодекодера (510) согласно варианту осуществления настоящего изобретения. Видеодекодер (510) может входить в состав электронного устройства (530). Электронное устройство (530) может содержать приемник (531) (например, приемные схемы). Видеодекодер (510) может использоваться вместо видеодекодера (410) в примере, приведенном на фиг. 4.
[0054] Приемник (531) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (510), в том же или другом варианте осуществления изобретения, по одной кодированной видеопоследовательности за раз, причем декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (501), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (531) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут перенаправляться на соответствующие использующие их объекты (не показаны). Приемник (531) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети, между приемником (531) и энтропийным декодером/анализатором (520) (далее «анализатором (520)») может быть подключена буферная память (515). В некоторых вариантах применения буферная память (515) входит в состав видеодекодера (510). В других она может не входить в состав видеодекодера (510) (не показано). В прочих вариантах может иметься буферная память вне видеодекодера (510) (не показано), например, для борьбы с джиттером сети, помимо другой буферной памяти (515) в составе видеодекодера (510), например, для управления временем воспроизведения. Когда приемник (531) принимает данные от устройства хранения/перенаправления с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (515) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшей попытки, например, в Интернете, буферная память (515) может потребоваться, может быть сравнительно большой, может иметь преимущественно адаптивный размер и по меньшей мере частично может быть реализована в операционной системе или аналогичных элементах (не показаны) вне видеодекодера (510).
[0055] Видеодекодер (510) может содержать анализатор (520) для реконструкции символов (521) из кодированной видеопоследовательности. Категории этих символов включают информацию, используемую для управления работой видеодекодера (510) и, возможно, информацию для управления устройством визуализации, например устройством (512) визуализации (например, отображающим экраном), которое не является неотъемлемой частью электронного устройства (530), но может быть подключено к электронному устройству (530), как показано на фиг. 5. Информация управления для устройств(а) визуализации может представлять собой сообщения дополнительной информации улучшения (SEI, Supplemental Enhancement Information) или фрагменты набора параметров информации о возможности использования видео (VUI, Video Usability Information) (не показаны). Анализатор (520) может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование видеопоследовательности может осуществляться в соответствии с технологией или стандартом кодирования видеоданных и может следовать различным принципам, в том числе кодированию с переменной длиной серии, кодированию Хаффмана, арифметическому кодированию с контекстной чувствительностью или без нее и т.д. Анализатор (520) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать группы изображений (GOP, Groups of Pictures), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU, Coding Unit), блоки, единицы преобразования (TU, Transform Unit), единицы предсказания (PU, Prediction Unit) и т.д. Анализатор (520) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[0056] Анализатор (520) может осуществлять операцию энтропийного декодирования / анализа видеопоследовательности, принятой из буферной памяти (515), для создания символов (521).
[0057] Для реконструкции символов (521) могут использоваться несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например: изображения с внутренним и внешним кодированием, блоки с внутренним и внешним кодированием) и других факторов. Какие модули и как используются, может определяться информацией управления подгруппами, полученной из кодированной видеопоследовательности анализатором (520). Поток такой информации управления подгруппами между анализатором (520) и модулями для простоты в дальнейшем не показан.
[0058] Помимо ранее упомянутых функциональных блоков, видеодекодер (510) может принципиально разделяться на несколько функциональных модулей, как описано ниже. В практической реализации в условиях коммерческих ограничений многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания настоящего изобретения уместно принципиальное разделение на перечисленные ниже функциональные модули.
[0059] Первым модулем является модуль (551) масштабирования / обратного преобразования. Модуль (551) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (521) от анализатора (520). Модуль (551) масштабирования / обратного преобразования может выводить блоки, содержащие значения отсчетов, которые можно вводить в агрегатор (555).
[0060] В ряде случаев, выходные отсчеты блока (551) масштабирования / обратного преобразования могут относиться к блоку с внутренним кодированием, то есть к блоку, который не использует предсказанную информацию из ранее реконструированных изображений, но может использовать предсказанную информацию из ранее реконструированных частей текущего изображения. Такая предсказанная информация может обеспечиваться модулем (552) внутреннего предсказания изображения. В ряде случаев модуль (552) внутреннего предсказания изображения формирует блок такого же размера и формы, как у блока, подлежащего реконструкции, с использованием информации ранее реконструированного окружения, извлеченной из буфера (558) текущего изображения. Буфер (558) текущего изображения буферизует, например, частично реконструированное текущее изображение и/или полностью реконструированное текущее изображение. Агрегатор (555) в ряде случаев добавляет, для каждого отсчета, информацию предсказания, сформированную модулем (552) внутреннего предсказания, в информацию выходных отсчетов, предоставленную модулем (551) масштабирования / обратного преобразования.
[0061] В других случаях выходные отсчеты модуля (551) масштабирования / обратного преобразования могут относиться к блоку с внутренним кодированием, возможно, с компенсацией движения. В таком случае модуль (553) предсказания с компенсацией движения может осуществлять доступ к памяти (557) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (521), относящимися к блоку, эти отсчеты могут добавляться агрегатором (555) к выходному сигналу модуля (551) масштабирования / обратного преобразования (в этом случае называемому отсчетами остатка или сигналом остатка) для генерации информации выходных отсчетов. Адреса в памяти (557) опорных изображений, откуда модуль (553) предсказания с компенсацией движения извлекает отсчеты для предсказания, могут управляться векторами движения, доступными модулю (553) предсказания с компенсацией движения, в форме символов (521), которые могут иметь, например, компоненты Χ, Υ и компоненты опорного изображения. Компенсация движения также может включать интерполяцию значений отсчетов, извлеченных из памяти (557) опорных изображений, когда используются точные векторы движения подотсчетов, механизмы предсказания векторов движения и т.д.
[0062] К выходным отсчетам агрегатора (555) можно применять различные методы контурной фильтрации в модуле (556) контурного фильтра. Технологии сжатия видеоданных могут включать технологии контурного фильтра под управлением с помощью параметров, включенных в кодированную видеопоследовательность (также называемую битовым потоком кодированных видеоданных) и доступных модулю (556) контурного фильтра в качестве символов (521) от анализатора (520), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.
[0063] Модуль (556) контурного фильтра может выдавать поток отсчетов, который может поступать на устройство (512) визуализации, а также сохраняться в памяти (557) опорных изображений для использования в будущем внешнем предсказании изображения.
[0064] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью реконструировано и идентифицировано как опорное изображение (например, анализатором (520)), буфер (558) текущего изображения может становиться частью памяти (557) опорных изображений, и может повторно выделяться свежий буфер текущего изображения до начала реконструкции следующего кодированного изображения.
[0065] Видеодекодер (510) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видеоданных согласно стандарту, например, согласно Рекомендации МСЭ-Т Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или используемым стандартом сжатия видеоданных, в том смысле, что кодированная видеопоследовательность может придерживаться как синтаксиса технологии или стандарта сжатия видеоданных, так и профилей, задокументированных в технологии или стандарте сжатия видеоданных. В частности, профиль может выбирать некоторые инструменты как инструменты, доступные для использования только под этим профилем, из всех инструментов, доступных в технологии или стандарте сжатия видеоданных. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видеоданных. В ряде случаев, уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемыми в кодированной видеопоследовательности.
[0066] Согласно варианту осуществления изобретения, приемник (531) может принимать дополнительные (избыточные) данные с кодированными видеоданными. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (510) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, временные уровни улучшения, пространственные уровни улучшения или уровни улучшения отношения «сигнал/шум» (SNR, signal noise ratio), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.
[0067] На фиг. 6 показана структурная схема видеокодера (603) согласно варианту осуществления настоящего изобретения. Видеокодер (603) входит в состав электронного устройства (620). Электронное устройство (620) содержит передатчик (640) (например, передающую схему). Видеокодер (603) может использоваться вместо видеокодера (403) в примере, приведенном на фиг. 4.
[0068] Видеокодер (603) может принимать отсчеты видеоданных от источника (601) видеоданных (который не входит в состав электронного устройства (620) в примере, показанном на фиг. 6), который может захватывать видеоизображение(я), подлежащее(ие) кодированию видеокодером (603). В другом примере источник (601) видеоданных входит в состав электронного устройства (620).
[0069] Источник (601) видеоданных может обеспечивать исходную видеопоследовательность, подлежащую кодированию видеокодером (603) в форме потока отсчетов цифровых видеоданных любой подходящей битовой глубины (например: 8 битов, 10 битов, 12 битов,...), любого цветового пространства (например, ВТ.601 Y CrCB, RGB, …) и любой подходящей структуры дискретизации (например, Υ CrCb 4:2:0, Y CrCb 4:4:4). В системе службы массовой информации источником (601) видеоданных может быть запоминающее устройство, где хранится ранее подготовленное видео. В системе видеоконференцсвязи источником (601) видеоданных может быть камера, которая захватывает информацию локального изображения в виде видеопоследовательности. Видеоданные могут предоставляться как множество отдельных изображений, которые создают ощущение движения при наблюдении в последовательности. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемой структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники нетрудно понять соотношение между пикселями и отсчетами. Последующее описание посвящено отсчетам.
[0070] Согласно варианту осуществления изобретения, видеокодер (603) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (643) в реальном времени или с учетом любых других временных ограничений, налагаемых применением. Установление надлежащей скорости кодирования является одной из функций контроллера (650). В некоторых вариантах осуществления изобретения контроллер (650) управляет другими функциональными модулями, как описано ниже, и функционально подключен к другим функциональным модулям. Подключение для простоты не показано. Параметры, установленные контроллером (650), могут включать параметры, связанные с регулировкой частоты (пропуск изображения, квантователь, значение лямбда, применяемое в методах оптимизации скорости-искажения, и т.д.), размер изображения, организацию групп изображений (GOP, group of pictures), максимальную зону поиска вектора движения и т.д. Контроллер (650) может иметь другие подходящие функции, относящиеся к видеокодеру (603), оптимизированному для конкретной конструкции системы.
[0071] В некоторых вариантах осуществления изобретения видеокодер (603) выполнен с возможностью работать в контуре кодирования. В качестве очень упрощенного описания, например, контур кодирования может включать кодер (630) источника (например, отвечающий за создание символов, например, потока символов на основе входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локальный) декодер (633), встроенный в видеокодер (603). Декодер (633) реконструирует символы для создания данных отсчетов аналогично тому, как это делал бы (удаленный) декодер (поскольку любое сжатие между символами и битовым потоком кодированных видеоданных происходит без потерь в технологиях сжатия видеоданных, рассматриваемых в данном описании). Реконструированный поток отсчетов (данные отсчетов) поступают в память (634) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, которые не зависят от положения (локального или удаленного) декодера, содержимое памяти (634) опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, часть предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, как «видел» бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронизма опорного изображения (и, в итоге, дрейф, если синхронизм не удается поддерживать, например, вследствие канальных ошибок) используется также в некоторых связанных областях техники.
[0072] «Локальный» декодер (633) может действовать таким же образом, как «удаленный» декодер, например, видеодекодер (510), подробно описанный выше со ссылкой на фиг. 5. Однако, опять же, согласно фиг. 5, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (645) и анализатором (520) может осуществляться без потерь, части энтропийного декодирования видеодекодера (510), включающие буферную память (515) и анализатор (520), могут быть не полностью реализованы в локальном декодере (633).
[0073] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализа / энтропийного декодирования, также обязательно должна присутствовать по существу в идентичной функциональной форме в соответствующем кодере. По этой причине настоящее изобретение сконцентрировано на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодирования. Лишь в некоторых областях требуется более подробное описание, которое приведено ниже.
[0074] Согласно некоторым примерам, в ходе работы кодер (630) источника может осуществлять кодирование с предсказанием и компенсацией движения, при котором входное изображение кодируется с предсказанием на основе одного или более ранее кодированных изображений из видеопоследовательности, указанных как «опорные изображения». Таким образом, механизм (632) кодирования кодирует разности между блоками пикселей входного изображения и блоками пикселей опорного изображения(й), которое(ые) может(ут) выбираться в качестве ссылки(ок) предсказания на входное изображение.
[0075] Локальный видеодекодер (633) может декодировать кодированные видеоданные изображений, которые могут быть указаны как опорные изображения, на основе символов, созданных кодером (630) источника. Операции механизма (632) кодирования могут быть преимущественно способами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 6), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (633) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных изображениях, и может обеспечивать сохранение реконструированных опорных изображений в кэш-памяти (634) опорных изображений. Таким образом, видеокодер (603) может локально сохранять копии реконструированных опорных изображений, имеющие такое же содержимое, как реконструированные опорные изображения, которые будут получены удаленным видеодекодером (в отсутствие ошибок передачи).
[0076] Предсказатель (635) может осуществлять поиски предсказания для механизма (632) кодирования. Таким образом, для нового изображения, подлежащего кодированию, предсказатель (635) может искать в памяти (634) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных блоков пикселей) или конкретные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (635) может работать на основе «блоки отсчетов χ блоки пикселей» для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предсказателем (635), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (634) опорных изображений.
[0077] Контроллер (650) может управлять операциями кодирования кодера (630) источника, включая, например, установление параметров, а также параметров подгруппы, используемых для кодирования видеоданных.
[0078] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (645). Энтропийный кодер (645) переводит символы, сформированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно, например, технологиям кодирования Хаффмана, кодирования с переменной длиной серии, арифметического кодирования и т.д.
[0079] Передатчик (640) может буферизовать кодированную(ые) видеопоследовательность(и), созданную(ые) энтропийным кодером (645), для подготовки к передаче через канал (660) связи, который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Передатчик (640) может объединять кодированные видеоданные от видеокодера (603) с другими данными, подлежащими передаче, например, с кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).
[0080] Контроллер (650) может управлять работой видеокодера (603). В ходе кодирования контроллер (650) может назначать каждому кодированному изображению тот или иной тип кодированного изображения, который может определять методы кодирования, применимые к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы изображения.
[0081] Изображение с внутренним кодированием (I-изображение), которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника для предсказания. Некоторые видеокодеки допускают разные типы изображений с внутренним кодированием, включая, например, изображения в формате независимого обновления декодера (IDR, Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.
[0082] Изображение с предсказанием (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[0083] Изображение с двунаправленным предсказанием (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, изображения с множеством предсказаний могут использовать более двух опорных изображений и соответствующие метаданные для реконструкции одного блока.
[0084] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4x4, 8x8, 4x8 или 16x16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться с предсказанием со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки I-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (с пространственным предсказанием или внутренним предсказанием). Блоки пикселей Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[0085] Видеокодер (603) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, например, Рекомендации МСЭ-Т Н.265. В своей работе видеокодер (603) может осуществлять различные операции сжатия, в том числе операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Поэтому кодированные видеоданные могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видеоданных.
[0086] Согласно варианту осуществления изобретения, передатчик (640) может передавать дополнительные данные с кодированными видеоданными. Кодер (630) источника может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR уровни улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и т.д.
[0087] Видео может захватываться как множество исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно называемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а внешнее предсказание изображения использует (временную или иную) корреляцию между изображениями. Например, конкретное изображение, подлежащее кодированию/декодированию, которое называется текущим изображением, разбивается на блоки. Когда блок в текущем изображении аналогичен опорному блоку в ранее кодированном и все еще находящемся в буфере опорном изображении в видео, блок в текущем изображении может кодироваться вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множества опорных изображений.
[0088] В некоторых вариантах осуществления изобретения, может использоваться метод двойного предсказания в предсказании между изображениями. Согласно методу двойного предсказания, используются два опорных изображения, например, первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может предсказываться с помощью комбинации первого опорного блока и второго опорного блока.
[0089] Дополнительно, во внешнем предсказании изображения может использоваться способ режима слияния для повышения эффективности кодирования.
[0090] Согласно некоторым вариантам осуществления изобретения предсказания, например, внешнее предсказание изображения и внутреннее предсказание изображения осуществляются поблочно. Например, согласно стандарту HEVC, изображение в последовательности видеоизображений разбивается на единицы дерева кодирования (CTU, coding tree units) для сжатия, единицы CTU в изображении имеют одинаковый размер, например 64x64 пикселя, 32x32 пикселя или 16x16 пикселей. В общем случае единица CTU включает три блока дерева кодирования (СТВ, coding tree blocks), а именно, один блок СТВ яркости и два блока СТВ цветности. Каждая единица CTU может рекурсивно разделяться посредством квадродерева на одну или несколько единиц кодирования (CU). Например, единица CTU размером 64x64 пикселя может делиться на одну единицу CU размером 64x64 пикселя или 4 единицы CU размером 32x32 пикселя или 16 единиц CU размером 16x16 пикселей. Например, каждая единица CU анализируется для определения типа предсказания для этой единицы CU, например, типа внешнего предсказания или типа внутреннего предсказания. Единица CU делится на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. В целом, каждая единица PU включает блок предсказания (РВ, prediction block) яркости и два блока РВ предсказания цветности. Согласно варианту осуществления изобретения, операция предсказания при кодировании (кодировании/декодировании) осуществляется в единице блока предсказания. В качестве примера блока предсказания, блок предсказания яркости включает матрицу значений (например, значений яркости) для пикселей, например, 8x8 пикселей, 16x16 пикселей, 8x16 пикселей, 16x8 пикселей и т.п.
[0091] На фиг. 7 показана схема видеокодера (703) согласно другому варианту осуществления изобретения. Видеокодер (703) выполнен с возможностью приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое составляет часть кодированной видеопоследовательности. Например, видеокодер (703) используется вместо видеокодера (403) в примере, приведенном на фиг. 4.
[0092] В примере HEVC видеокодер (703) принимает матрицу значений отсчетов для блока обработки, например, блока предсказания из 8x8 отсчетов и т.п. Видеокодер (703) определяет, наилучшим ли образом кодируется блок обработки в режиме внутреннего предсказания, режиме внешнего предсказания или режиме двойного предсказания с использованием, например, оптимизации «скорость-искажения». Когда блок обработки подлежит кодированию в режиме внутреннего предсказания, видеокодер (703) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение, а когда блок обработки подлежит кодированию в режиме внешнего предсказания или режиме двойного предсказания, видеокодер (703) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях видеокодирования режим слияния может быть подрежимом внешнего предсказания изображения, где вектор движения выводится из одного или более предсказателей вектора движения без привлечения кодированного компонента вектора движения вне предсказателей. В некоторых других технологиях видеокодирования может присутствовать компонент вектора движения, применимый к данному блоку. В порядке примера, видеокодер (703) содержит другие компоненты, например, модуль определения режима (не показан) для определения режима блоков обработки.
[0093] В примере, приведенном на фиг. 7, видеокодер (703) содержит кодер (730) внешнего кодирования, кодер (722) внутреннего кодирования, вычислитель (723) остатка, переключатель (726), кодер (724) остатка, общий контроллер (721) и энтропийный кодер (725), соединенные друг с другом так, как показано на фиг. 7.
[0094] Кодер (730) внешнего кодирования выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоками в предыдущих изображениях и более поздних изображениях), создания информации внешнего предсказания (например, описания избыточной информации согласно методу внешнего кодирования, векторов движения, информации режима слияния) и вычисления результатов внешнего предсказания (например, блока предсказания) на основе информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорными изображениями являются опорные изображения, декодированные на основе информации кодированных видеоданных.
[0095] Кодер (722) внутреннего кодирования выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), в ряде случаев сравнения блока с блоками, ранее кодированными в том же изображении, формирования квантованных коэффициентов после преобразования и в ряде случаев также информации внутреннего предсказания (например, информации о направлении внутреннего предсказания согласно одному или более методам внутреннего кодирования). В порядке примера, кодер (722) внутреннего кодирования также вычисляет результаты внутреннего предсказания (например, блок предсказания) на основе информации внутреннего предсказания и опорных блоков в том же изображении.
[0096] Общий контроллер (721) выполнен с возможностью определения общих данных управления и управления другими компонентами видеокодера (703) на основе общих данных управления. Например, общий контроллер (721) определяет режим блока и выдает сигнал управления на переключатель (726) на основе режима. Например, когда режим является режимом внутреннего кодирования, общий контроллер (721) управляет переключателем (726) для выбора результата режима внутреннего кодирования для использования вычислителем (723) остатка и управляет энтропийным кодером (725) для выбора информации внутреннего предсказания и включения информации внутреннего предсказания в битовый поток, а когда режим является режимом внешнего кодирования, общий контроллер (721) управляет переключателем (726) для выбора результата внешнего предсказания для использования вычислителем (723) остатка и управляет энтропийным кодером (725) для выбора информации внешнего предсказания и включения информации внешнего предсказания в битовый поток.
[0097] Вычислитель (723) остатка выполнен с возможностью вычисления разности (данных остатка) между принятым блоком и результатами предсказания, выбранными из кодера (722) внутреннего кодирования или кодера (730) внешнего кодирования. Кодер (724) остатка выполнен с возможностью действовать на основе данных остатка для кодирования данных остатка для формирования коэффициентов преобразования. Например, кодер (724) остатка выполнен с возможностью преобразования данных остатка из пространственной области в частотную область и формирования коэффициентов преобразования. Затем коэффициенты преобразования подвергаются квантованию для получения квантованных коэффициентов преобразования. В различных вариантах осуществления изобретения видеокодер (703) также содержит декодер (728) остатка. Декодер (728) остатка выполнен с возможностью осуществления обратного преобразования и формирования декодированных данных остатка. Декодированные данные остатка могут надлежащим образом использоваться кодером (722) внутреннего кодирования и кодером (730) внешнего кодирования. Например, кодер (730) внешнего кодирования может формировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, а кодер (722) внутреннего кодирования может формировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки надлежащим образом обрабатываются для формирования декодированных изображений, и декодированные изображения могут буферизоваться в схеме памяти (не показана) и в некоторых примерах использоваться в качестве опорных изображений.
[0098] Энтропийный кодер (725) выполнен с возможностью форматирования битового потока для включения кодированного блока. Энтропийный кодер (725) выполнен с возможностью включать различную информацию согласно подходящему стандарту, например, стандарту HEVC. Например, энтропийный кодер (725) выполнен с возможностью включать общие данные управления, выбранную информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), информацию остатка и другую подходящую информацию в битовый поток. Следует отметить, что, согласно изобретению, при кодировании блока в подрежиме слияния для любого из режима внешнего кодирования и режима двойного предсказания, информация остатка отсутствует.
[0099] На фиг. 8 показана схема видеодекодера (810) согласно другому варианту осуществления изобретения. Видеодекодер (810) выполнен с возможностью приема кодированных изображений, составляющих часть кодированной видеопоследовательности, и декодирования кодированных изображений для формирования реконструированных изображений. Например, видеодекодер (810) используется вместо видеодекодера (410) в примере, приведенном на фиг. 4.
[0100] В примере, приведенном на фиг. 8, видеодекодер (810) содержит энтропийный декодер (871), декодер (880) внешнего декодирования, декодер (873) остатка, модуль (874) реконструкции и декодер (872) внутреннего декодирования, соединенные друг с другом так, как показано на фиг. 8.
[0101] Энтропийный декодер (871) может быть выполнен с возможностью реконструкции, из кодированного изображения, некоторых символов, которые представляют синтаксические элементы, образующие кодированное изображение. Такие символы могут включать, например, режим кодирования блока (например, режим внутреннего кодирования, режим внешнего кодирования, режим двойного предсказания, причем последние два в подрежиме слияния или другом подрежиме), информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, используемые для предсказания декодером (872) внутреннего декодирования или декодером (880) внешнего декодирования, соответственно, информацию остатка в виде, например, квантованных коэффициентов преобразования и т.п.Например, когда режим предсказания является режимом внутреннего или двойного предсказания, информация внешнего предсказания поступает на декодер (880) внешнего декодирования, а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания поступает на декодер (872) внутреннего декодирования. Информация остатка может подвергаться деквантованию и поступать на декодер (873) остатка.
[0102] Декодер (880) внешнего декодирования выполнен с возможностью приема информации внешнего предсказания и генерирования результатов внешнего предсказания на основе информации внешнего предсказания.
[0103] Декодер (872) внутреннего декодирования выполнен с возможностью приема информации внутреннего предсказания и генерирования результатов предсказания на основе информации внутреннего предсказания.
[0104] Декодер (873) остатка выполнен с возможностью осуществления деквантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (873) остатка также может требовать некоторой информации управления (для включения параметра квантователя (QP, Quantizer Parameter)), и эта информация может обеспечиваться энтропийным декодером (871) (путь данных не показан, поскольку это может быть только информация управления малого объема).
[0105] Модуль (874) реконструкции выполнен с возможностью объединения, в пространственной области, остатка на выходе декодера (873) остатка и результатов предсказания (на выходе модулей внешнего или внутреннего предсказания, в зависимости от ситуации) для формирования реконструированного блока, который может входить в состав реконструированного изображения, которое, в свою очередь, может входить в состав реконструированного видео. Заметим, что могут осуществляться другие подходящие операции, например, операция устранения блочности и т.п., для повышения визуального качества.
[0106] Следует отметить, что видеокодеры (403), (603) и (703) и видеодекодеры (410), (510) и (810) могут быть реализованы с использованием любой подходящей технологии. Согласно варианту осуществления изобретения, видеокодеры (403), (603) и (703) и видеодекодеры (410), (510) и (810) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления изобретения видеокодеры (403), (603) и (603) и видеодекодеры (410), (510) и (810) могут быть реализованы с использованием одного или более процессоров, которые исполняют программные инструкции.
[0107] Структура блочного разделения может называться деревом кодирования. В некоторых вариантах осуществления изобретения структура блочного разделения использует квадродерево (QT) плюс бинарное дерево (ВТ). Например, используя структуру QT, единица CTU разделяется на единицы CU для адаптации к различным локальным характеристикам. Решение о том, кодировать ли область изображения с использованием внешнего (временного) или внутреннего (пространственного) предсказания, может быть принято на уровне единицы CU. Каждая единица CU может быть дополнительно разделена на одну, две или четыре единицы PU в соответствии с типом разделения PU. Внутри одной единицы PU применяется один и тот же процесс предсказания, и соответствующая информация может передаваться в декодер на основе PU.
[0108] После получения блока остатка путем применения процесса предсказания на основе типа разделения PU, единица CU может быть разделена на единицы TU согласно другой структуре QT. Как видно, существует несколько концепций разделения, включая CU, PU и TU.
[0109] В некоторых вариантах осуществления изобретения на границе изображения может использоваться неявное разделение посредством квадродерева, так что блок будет поддерживать разделение QT до тех пор, пока размер не будет соответствовать границе изображения.
[0110] В некоторых вариантах осуществления изобретения используется структура «квадродерево плюс бинарное дерево» (QTBT). Структура QTBT удаляет концепции нескольких типов разделения (например, концепции CU, PU и TU) и поддерживает большую гибкость для форм разделения CU. В блочной структуре QTBT единица CU может иметь квадратную или прямоугольную форму.
[0111] Фиг. 9А показывает единицу CTU (910), разделенную с использованием структуры QTBT (920), показанной на фиг. 9В. Единица CTU (910) сначала разделяется посредством структуры QT. Листовые узлы QT дополнительно разделяются посредством структуры ВТ или структуры QT. При разделении ВТ может использоваться два типа разделения: симметричное горизонтальное разделение и симметричное вертикальное разделение. Листовые узлы ВТ представляют собой единицы CU, которые могут использоваться для обработки предсказания и преобразования без дальнейшего разделения. Соответственно, единицы CU, PU и TU имеют одинаковый размер блока в блочной структуре кодирования QTBT.
[0112] В некоторых вариантах осуществления изобретения единица CU может включать в себя блоки кодирования (СВ) различных цветовых компонентов. Например, одна единица CU содержит один блок СВ яркости и два блока СВ сигнала цветности в случае слайсов Ρ и В формата цветности 4:2:0. Единица CU может включать блок СВ одного цветового компонента. Например, одна единица CU содержит только один блок СВ яркости или только два блока СВ сигнала цветности в случае I-слайсов.
[0113] В некоторых вариантах осуществления изобретения определены следующие параметры для схемы разделения QTBT:
- размер CTU: размер корневого узла квадродерева, например, как в HEVC;
- MinQTSize: минимально допустимый размер листового узла QT;
- MaxBTSize: максимально допустимый размер корневого узла ВТ;
- MaxBTDepth: максимально допустимая глубина ВТ;
- MinBTSize: минимально допустимый размер листового узла ВТ.
[0114] В одном примере структуры разделения QTBT размер CTU установлен как 128x128 отсчетов яркости с двумя соответствующими блоками 64x64 отсчетов цветности, MinQTSize установлен как 16x16, MaxBTSize установлен как 64x64, MinBTSize (для ширины и высоты) установлен как 4x4, a MaxBTDepth установлен как 4. Разделение QT применяется сначала к единице CTU для генерации листовых узлов QT. Листовые узлы QT могут иметь размер от 16x16 (то есть MinQTSize) до 128x128 (то есть размер CTU). Если листовой узел QT имеет размер 128x128, он не будет далее разделяться посредством бинарного дерева, так как размер превышает MaxBTSize (то есть 64x64). В противном случае листовой узел QT может быть также разделен посредством бинарного дерева. Следовательно, листовой узел QT также является корневым узлом для бинарного дерева, и его глубина ВТ равна 0.
[0115] Когда глубина ВТ достигает MaxBTDepth (то есть 4), дальнейшее разделение не рассматривается. Когда ширина узла ВТ равна MinBTSize (то есть 4), дальнейшее горизонтальное разделение не рассматривается. Аналогично, когда высота узла ВТ равна MinBTSize, дальнейшее вертикальное разделение не рассматривается. Листовые узлы бинарного дерева дополнительно обрабатываются с помощью предсказания и преобразования без какого-либо дальнейшего разделения. В варианте осуществления изобретения максимальный размер CTU составляет 256x256 отсчетов яркости.
[0116] На фиг. 9А и 9В сплошные линии обозначают разделение QT, а пунктирные линии обозначают разделение ВТ. В каждом узле разделения (то есть не листовом узле) бинарного дерева может сигнализироваться один флаг, указывающий на то, какой тип разделения (то есть горизонтальный или вертикальный) используется.
Например, 0 означает горизонтальное разделение, а 1 означает вертикальное разделение. Для разделения QT нет необходимости указывать тип разделения, поскольку при разделении посредством квадродерева блок всегда разделяется как по горизонтали, так и по вертикали, с получением 4 подблоков одинакового размера.
[0117] В некоторых вариантах осуществления изобретения схема QTBT поддерживает гибкость, так что для яркости и цветности используются отдельные структуры QTBT. Например, для слайсов Ρ и В блоки яркости и цветности в одной единице CTU совместно используют одну и ту же структуру QTBT. Однако для I-слайсов блок СТВ отсчетов яркости разделяется на единицы CU посредством структуры QTBT, а блоки цветности разделяются на единицы CU цветности посредством другой структуры QTBT. Таким образом, единица CU в I-слайсе может включать или содержать блок кодирования компонента яркости или блоки кодирования двух компонентов цветности, а единица CU в Р- или В-слайсе может включать или содержать блоки кодирования всех трех цветовых компонентов.
[0118] В некоторых вариантах осуществления изобретения внешнее предсказание для небольших блоков ограничено, чтобы уменьшить доступ к памяти для компенсации движения. Например, для блоков 4x8 и 8x4 не поддерживается двунаправленное предсказание, а для блоков 4x4 не поддерживается внешнее предсказание. В некоторых примерах, например, при осуществлении QTBT, вышеуказанные ограничения могут быть сняты.
[0119] Размер CTU может быть представлен шириной (или высотой) Μ единицы CTU. В варианте осуществления изобретения, когда единица CTU имеет квадратную форму, размер CTU также может быть представлен МхМ отсчетами яркости в единице CTU. Таким образом, размер единицы CTU можно обозначить как Μ или МхМ. В варианте осуществления изобретения один и тот же размер CTU может использоваться для кодирования (например, кодирования/декодирования) изображений в видеопоследовательности, и информация о кодировании, указывающая размер CTU, может сигнализироваться в наборе параметров последовательности (SPS) (например, в заголовке SPS) и совместно использоваться изображениями в видеопоследовательности.
[0120] В некоторых вариантах осуществления изобретения может использоваться множество размеров CTU (например, четыре размера CTU), например 16, 32, 64 и 128. Таким образом, четыре размера CTU могут составлять 16x16, 32x32, 64x64 и 128x128 отсчетов яркости, соответственно. Переменная CtbSizeY может использоваться для представления четырех размеров CTU (например, 16, 32, 64 и 128). Числа 4-7 представляют собой логарифмы по основанию 2 четырех размеров CTU 16, 32, 64 и 128, соответственно, и могут быть представлены переменной CtbLog2SizeY. Четыре числа 2, 3, 4 и 5 могут использоваться для кодирования 16 (или 16x16 отсчетов яркости), 32 (или 32x32 отсчетов яркости), 64 (или 64x64 отсчетов яркости) и 128 (или 128x128 отсчетов яркости), соответственно, и могут быть представлены переменной log2_ctu_size_minus2. Например, четыре числа 2-5 (или log2_ctu_size_minus2) представляют собой разность логарифмов по основанию 2 (или CtbLog2SizeY) четырех размеров CTU 16, 32, 64, 128 и значения 2, соответственно. Пример синтаксиса заголовка SPS для размеров CTU может быть установлен как log2_ctu_size_minus2, как показано на фиг. 10А.
[0121] Четыре числа 2-5 (или log2_ctu_size_minus2) могут кодироваться с использованием инструмента энтропийного кодирования, например кодирования Ехр-Golomb, такого как беззнаковое целочисленное кодирование 0-го порядка Exp-Golomb (или ue(v)). Таким образом, соответствующий дескриптор для переменной log2_ctu_size_minus2 - это ue(v) на фиг. 10 А.
[0122] Фиг. 10В показывает пример кодирования ue(v) согласно варианту осуществления изобретения. Переменные битовые строки (1010) могут использоваться для кодирования переменной log2_ctu_size_minus2 (также называемой кодированными значениями или кодовыми числами (codeNums)) (1020). Например, битовые строки 011, 00100, 00101 и 00110 используются для кодирования кодовых чисел 2 5, соответственно.
[0123] На основе приведенного выше описания семантика для размеров CTU может быть следующей. log2_ctu_size_minus2 плюс 2 определяет размер СТВ яркости каждой единицы CTU (как показано в выражении (1)). log2_min_ luma_coding_block_size_minus2 плюс 2 определяет минимальный размер блока кодирования яркости. Переменные CtbLog2SizeY и CtbSizeY могут быть получены с помощью выражений (1) - (2).
CtbLog2SizeY
4
[0124] Например, битовая строка 011 представляет codeNum 2 на основе кодирования ue(v), как показано на фиг. 10В. Таким образом, значение переменной log2_ctu_size_minus2 равно 2. Значение переменной CtbLog2SizeY определяется равным 4 на основе выражения (1). Значение переменной CtbSizeY определяется как 2 на основе выражения (2), и, таким образом, значение переменной CtbSizeY равно 2=16. Таким образом, размер CTU составляет 16 или 16x16 отсчетов яркости. Приведенное выше описание может применяться к другим битовым строкам, которые указывают различные размеры CTU, например 32, 64 или 128.
[0125] В некоторых примерах могут возникать гораздо большие издержки при использовании размера CTU, равного 16, вместо использования большего размера CTU (например, 128). Таким образом, время декодирования может быть больше при использовании размера CTU, равного 16. В примере размер CTU, равный 16x16 отсчетов яркости, соответствует размеру блока СТВ цветности 8x8. Для некоторых модулей кодирования обработка блока СТВ цветности размера 8x8 является сложной задачей, поскольку контурный фильтр обычно использует блок 16x16 на входе. Кроме того, размер CTU 16x16 может вызвать значительную потерю при кодировании. Таким образом, размер CTU 16 может быть исключен.
[0126] В некоторых вариантах осуществления изобретения используется множество размеров CTU (например, три размера CTU), например 32, 64 и 128 (или 32x32, 64x64, 128x128 отсчетов яркости). Аналогично, переменную CtbSizeY можно использовать для представления трех размеров CTU. Числа 5-7 представляют собой логарифмы по основанию 2 трех размеров CTU 32, 64 и 128, соответственно, и могут быть представлены переменной CtbLog2SizeY. Синтаксис и соответствующее описание в заголовке SPE можно изменить, как описано ниже и показано на фиг. 11 А.
[0127] Три числа 0-2 могут использоваться для кодирования трех размеров CTU, например 32 (или 32x32 отсчетов яркости), 64 (или 64x64 отсчетов яркости) и 128 (или 128x128 отсчетов яркости), соответственно, и могут быть представлены переменной log2_ctu_size_minus5. Например, три числа 0-2 (или log2_ctu_size_minus5) являются разностями логарифмов по основанию 2 (то есть 5-7) (или CtbLog2SizeY) трех размеров CTU 32, 64 и 128 и числа 5, соответственно. Как описано выше, синтаксис заголовка SPS для размеров CTU может быть установлен как log2_ctu_size_minus5, как показано на фиг. 11А.
[0128] Три числа 0-2 (или log2_ctu_size_minus5) могут кодироваться с использованием инструмента энтропийного кодирования, осуществляющего кодирование кодами фиксированной длины, такое как беззнаковое целочисленное кодирование с использованием n битов (или u(n)). В примере можно использовать 2 бита (например, n=2). Таким образом, соответствующий дескриптор - u(2) на фиг. 11А. Различия фиг. 10А и 11А обозначены метками 1110 и 1120.
[0129] Фиг. 11В показывает пример кодирования u(2) согласно варианту осуществления изобретения. Битовые строки (1130) фиксированной длины могут использоваться для кодирования переменной log2_ctu_size_minus5 (также называемой кодированными значениями или codeNums) (1140). Например, битовые строки 00, 01 и 10 могут использоваться для кодирования codeNums 0-2, соответственно.
[0130] Семантика для размеров CTU описана ниже, и некоторые различия, связанные с log2_ctu_size_minus2 и log2 ctu size minus5, выделены курсивом.
[0131] log2_ctu_size_minus5 плюс 5 определяет размер блока СТВ яркости каждой единицы CTU. В одном примере имеется требование соответствия для битового потока, которое заключается в том, чтобы значение log2_ctu_size_minus5 было меньше или равно 2.
[0132] log2_min_luma_coding_block_size_minus2 плюс 2 может указывать минимальный размер блока кодирования яркости.
[0133] Переменные CtbLog2SizeY и CtbSizeY могут быть получены с использованием выражений (2) - (3), при этом выражение (3) отличается от выражения (1).
CtbLog2SizeY
5
[0134] Например, битовая строка 00 представляет codeNum 0 на основе кодирования и(2), как показано на фиг. 11В. Таким образом, переменная log2_ctu_size_minus5 равна 0. Значение переменной CtbLog2SizeY определяется равным 5 на основе выражения (3). Значение переменной CtbSizeY определяется как 2 на основе выражения (2), и, таким образом, значение переменной CtbSizeY равно 2=32. Таким образом, размер CTU равен 32 или 32x32 отсчетов яркости. Вышеприведенное описание может применяться к другим битовым строкам, которые указывают другие размеры CTU (например, 64 или 128).
[0135] В некоторых вариантах осуществления изобретения кодируются только три числа (например, codeNums 0-2), представляющие три размера CTU. Использование кодирования кодами фиксированной длины и(2) для описания синтаксиса log2_ctu_size_minus5 может привести к потере одного бита, например, когда кодированное число равно 0 или 1.
[0136] В некоторых вариантах осуществления изобретения, описанных выше, число 0 (например, codeNum 0) может использоваться для представления размера 32 CTU (или 32x32 отсчетов яркости), а число 2 (например, codeNum 2) может использоваться для представления размера 128 CTU (или 128x128 отсчетов яркости). В различных примерах размер 128 CTU является наиболее часто используемым размером CTU в видеопоследовательности, и, таким образом, кодирование размера 128 CTU числом 2 может снизить эффективность кодирования и увеличить сложность кодирования.
[0137] В некоторых вариантах осуществления изобретения для изображений в видеопоследовательности размер CTU, который должен использоваться для кодирования изображений, может быть указан в кодированной информации для видеопоследовательности. Информация, указывающая размер CTU, может находиться в заголовке SPS. Размер CTU может быть одним из множества размеров CTU, таких как три размера CTU 32, 64 и 128. Согласно аспектам изобретения, может использоваться усеченное унарное кодирование для кодирования (например, кодирования/декодирования) чисел (например, кодированных значений или codeNums), указывающих размеры CTU. По сравнению с кодированием кодами фиксированной длины, описанным выше (например, со ссылкой на фиг. 11А-11В), усеченное унарное кодирование может повысить эффективность кодирования, например, путем устранения ненужной траты битов. Таким образом, размер заголовка SPS может быть уменьшен, если используется усеченное унарное кодирование вместо кодирования кодами фиксированной длины u(2), что повышает эффективность кодирования. Кроме того, в некоторых примерах можно избежать недопустимого битового потока, создаваемого несоответствующим кодером (например, разрешающим размер CTU 16x16, который не разрешен некоторыми стандартами или кодерами).
[0138] В варианте осуществления изобретения могут использоваться три размера CTU 32, 64 и 128 (или 32x32, 64x64, 128x128 отсчетов яркости). Как описано выше, переменная CtbSizeY может использоваться для представления трех размеров CTU. Числа 5-7 представляют собой логарифмы по основанию 2 трех размеров CTU 32, 64 и 128, соответственно, и могут быть представлены переменной CtbLog2SizeY. Синтаксис и соответствующее описание в заголовке SPS можно изменить, как описано ниже и показано на фиг. 12А.
[0139] Три числа 0-2 могут использоваться для кодирования или представления трех размеров CTU. Согласно аспектам изобретения, 0 используется для представления (или кодирования) 128 (или 128x128 отсчетов яркости), 1 используется для представления (или кодирования) 64 (или 64x64 отсчетов яркости), а 2 используется для представления (или кодирования) 32 (или 32x32 отсчетов яркости), и, таким образом, три числа могут быть представлены переменной seven_minus_log2_ctu_size. Например, три числа 0-2 (или seven_minus_log2_ctu_size) являются разностью 7 и логарифмов 7, 6 и 5 по основанию 2 (или CtbLog2SizeY) трех размеров CTU 128, 64 и 32, соответственно. Как описано выше, синтаксис заголовка SPS для размеров CTU может быть установлен как seven_minus_log2_ctu_size, как показано на фиг. 12А.
[0140] Три числа 0-2 (или seven_minus_log2_ctu_size) могут кодироваться с использованием усеченного унарного кодирования (или tu(v)), как показано с помощью дескриптора tu(v) на фиг. 12А. В варианте осуществления изобретения усеченное унарное кодирование является унарным кодированием, которое генерирует строку бинов (или строку битов), включающую 1, за которой следует 0, когда число, которое нужно кодировать, меньше максимального значения сМах. Когда кодируемое число равно максимальному значению сМах, последний 0 усекается. В варианте осуществления изобретения максимальное значение сМах равно 2 при кодировании трех чисел 0-2 (или seven_minus_log2_ctu_size). Фиг. 12 В показывает пример усеченного унарного кодирования согласно варианту осуществления изобретения. Битовые строки (1230) переменной длины используются для кодирования переменной seven_minus_log2_ctu_size (также называемой кодированными значениями или codeNums (1240)). Битовая строка 0 может использоваться для кодирования codeNum 0. Битовая строка 10 может использоваться для кодирования codeNum 1. Битовая строка 11 может использоваться для кодирования codeNum 2. Различия фиг. 11А и 12А обозначены метками (1210) и (1220). Различия фиг. 10А и 12А обозначены метками (1210) и (1220).
[0141] В общем, три числа 0-2 (или seven_minus_log2_ctu_size) могут кодироваться с использованием любого подходящего метода кодирования, такого как кодирование кодами переменной длины (например, усеченное унарное кодирование, кодирование Exp-Golomb), кодирование кодами фиксированной длины (например, u(n)) и т.п., где число 0 представляет размер 128 CTU. Кодовые числа могут быть назначены на основе частоты использования размера CTU. Например, размер CTU 128 может быть назначен наименьшему или меньшему кодовому числу.
[0142] Как описано выше со ссылкой на фиг. 12А-12В, переменная seven_minus_log2_ctu_size может использоваться для описания размеров CTU, а размер CTU 128 может кодироваться с помощью кодированного значения или codeNum 0. Кроме того, битовая строка 0, имеющая 1 бит, может использоваться для кодирования codeNum 0. В различных примерах, когда размер 128 CTU используется чаще, чем другие размеры CTU (например, 32 и 64), кодирование размера 128 CTU одним битом может повысить эффективность кодирования. Например, битовая строка 00110 может использоваться, чтобы указать на то, что размер 128 CTU имеет 5 битов (фиг. 10 В), или битовая строка 10 может использоваться, чтобы указать на то, что размер 128 CTU имеет 2 бита (фиг. 11В).
[0143] Семантика для размеров CTU описана ниже, и некоторые различия между seven_minus_log2_ctu_size и другими переменными (log2_ctu_size_minus5 и log2_ctu_size_minus2) выделены курсивом.
[0144] seven_minus_log2_ctu_size определяет размер блока СТВ яркости каждой единицы CTU. В одном примере имеется требование соответствия для битового потока, чтобы значение seven_minus_log2_ctu_size было меньше или равно 2.
[0145] log2_min_luma_coding_block_size_minus2 плюс 2 может указывать минимальный размер блока кодирования яркости.
[0146] Переменные CtbLog2SizeY и CtbSizeY могут быть получены с использованием выражений (2) и (4).
[0147]
CtbLog2SizeY
7
[0148] Как показано на фиг. 12 В, например, битовая строка 0 может использоваться для представления codeNum 0 на основе кодирования tu(v), имеющего максимальное значение сМах, равное 2. Таким образом, значение переменной seven_minus_log2_ctu_size равно 0. Значение переменной CtbLog2SizeY определено как 7 на основе выражения (4). Значение переменной CtbSizeY определяется как 2на основе выражения (2), и, таким образом, значение переменной CtbSizeY равно 2=128. Таким образом, размер CTU составляет 128 или 128x128 отсчетов яркости. Вышеприведенное описание может применяться к другим битовым строкам, которые указывают другие размеры CTU (например, 32 или 64).
[0149] Согласно аспектам изобретения, кодированная информация изображений в кодированной видеопоследовательности может быть принята декодером. Кодированная информация может указывать размер CTU, который выбирается или используется для кодирования изображений, например, кодером. Выбранный размер CTU может быть одним из множества размеров CTU, таких как три размера CTU 32, 64 и 128. Кодированная информация может быть кодирована/декодирована с использованием усеченного унарного кодирования для получения выбранного размера CTU. В примере информация кодирования может указывать инструмент кодирования (например, усеченное унарное кодирование), используемый для кодирования размера CTU. В другом примере инструмент кодирования заранее определен или сигнализируется.
CtbLog2SizeY
7
[0150] В варианте осуществления изобретения кодированная информация находится в заголовке SPS (например, используются синтаксис и дескриптор заголовка SPS), как описано выше со ссылкой на фиг. 12А-12В. Кодированная информация может включать битовую строку (например, битовую строку 10 на фиг. 12В). В примере кодированное значение/codeNum (например, seven_minus_log2_ctu_size) может быть определено из битовой строки с использованием усеченного унарного кодирования, а кодированным значением является число 1, как показано на фиг. 12В. В примере максимальное значение сМах, используемое в усеченном унарном кодировании, равно 2. Кроме того, выбранный размер CTU (например, 64) может быть определен из кодированного значения (например, числа 1) на основе синтаксиса и соответствующей семантики (например, с помощью выражений (4) и (2)). Например, значение переменной CtbLog2SizeY определяется как разность 7 и кодированного значения с использованием выражения (4), и, таким образом, значение переменной CtbLog2SizeY равно 7, когда seven_minus_log2_ctu_size равно 0. Затем значение переменной CtbSizeY определяется как 2 с использованием выражения (2), и, таким образом, значение переменной CtbSizeY равно 2=128, когда CtbLog2SizeY равно 7.
[0151] Как описано выше со ссылкой на фиг. 12А-12В, кодирование наиболее часто используемого размера CTU меньшим количеством битов может повысить эффективность кодирования. В некоторых примерах наиболее часто используемый размер CTU составляет 128, и, таким образом, размер 128 CTU может быть кодирован с помощью 1 бита (например, битовой строки 0, как показано на фиг. 12В).
CtbLog2SizeY
[0152] В некоторых вариантах осуществления изобретения множество размеров CTU (например, три размера CTU), такие как 32, 64 и 128, могут быть представлены с использованием переменной log2_ctu_size_minus5, например, с помощью выражений (2) и (3) и могут быть кодированы с использованием усеченного унарного кодирования tu(v) с максимальным значением сМах, равным 2, как показано на фиг. 12В. В примере размер 128 CTU кодируется с помощью кодированного значения (или codeNum) 2, и, таким образом, битовая строка 11 используется для кодирования числа 2 и размера 128 CTU. В примере размер 64 CTU кодируется с помощью кодированного значения (или codeNum) 1, и, таким образом, битовая строка 10 используется для кодирования числа 1 и размера CTU 64. В примере размер CTU 32 кодируется кодированным значением (или codeNum) 0, и, таким образом, битовая строка 0 используется для кодирования числа 0 и размера 32 CTU. Таким образом, кодированное значение (или log2_ctu_size_minus5) может быть определено из битовой строки с использованием усеченного унарного кодирования с максимальным значением сМах, равным 2. Кроме того, выбранный размер CTU может быть определен из кодированного значения на основе синтаксиса и соответствующей семантики (например, с помощью выражений (3) и (2)). Например, значение переменной CtbLog2SizeY может быть определено как сумма 5 и кодированного значения с помощью выражения (3). Тогда значение переменной CtbSizeY может быть определено как 2 с использованием выражения (2).
[0153] Фиг. 13 показывает блок-схему, описывающую способ (1300) согласно варианту осуществления изобретения. Способ (1300) может использоваться для определения размера CTU, используемого для изображений в кодированной видеопоследовательности. В различных вариантах осуществления изобретения способ (1300) выполняется схемой обработки, такой как схема обработки в оконечных устройствах (310), (320), (330) и (340), схема обработки, которая выполняет функции видеокодера (403), схема обработки, которая выполняет функции видеодекодера (410), схема обработки, которая выполняет функции видеодекодера (510), схема обработки, которая выполняет функции видеокодера (603), и т.п.В некоторых вариантах осуществления изобретения способ (1300) реализован в программных инструкциях, так что при исполнении схемой обработки программных инструкций, схема обработки выполняет способ (1300). Способ начинается с шага (S1301) и переходит к шагу (S1310).
[0154] На шаге (S1310) кодированная информация изображений в кодированной видеопоследовательности может быть принята, например, декодером. Кодированная информация может включать информацию о размере CTU, которая указывает размер CTU, который выбирается для изображений, например, кодером для кодирования изображений. Выбранный размер CTU может быть одним из множества размеров CTU, таких как три размера CTU 32x32, 64x64 и 128x128 отсчетов яркости. Множество размеров CTU может включать любое подходящее количество размеров CTU и может включать любой подходящий(е) размер(ы) CTU. Информация о размере CTU может кодироваться с использованием усеченного унарного кода или других схем кодирования.
[0155] В примере кодированная информация указывает на инструмент кодирования, используемый для кодирования выбранного размера CTU. Например, информация кодирования находится в заголовке SPS, который указывает на инструмент кодирования (например, tu(v), u(2) или ue(v)). В некоторых примерах синтаксис включен в заголовок SPS и, таким образом, указывает соответствующую семантику.
[0156] На шаге (S1320) выбранный размер CTU может быть определен с использованием инструмента кодирования (например, усеченного унарного кодирования) на основе информации о размере CTU. Например, кодированную информацию декодируют с использованием усеченного унарного декодирования, как описано выше со ссылкой на фиг. 12А-12В. В варианте осуществления изобретения информация о размере CTU включает битовую строку. Кодированное значение (например, codeNum) может быть определено из битовой строки с использованием усеченного унарного декодирования. Например, кодированное значение может быть определено как 0, 1 и 2, когда битовая строка равна 0, 10 и 11, соответственно, при этом максимальное значение Cmax, используемое в усеченном унарном кодировании, равно 2. Кроме того, выбранный размер CTU может быть определен на основе кодированного значения, например, с использованием синтаксиса (или соответствующей семантики), указанного в информации кодирования.
CtbLog2SizeY
[0157] В примере синтаксис указывает на то, что кодированное значение относится к значению переменной seven_minus_log2_ctu_size, и, таким образом, для получения размера CTU могут использоваться выражения (2) и (4). Соответственно, выбранный размер CTU равен 128, когда кодированное значение равно 0. Выбранный размер CTU равен 64, когда кодированное значение равно 1. Выбранный размер CTU равен 32, когда кодированное значение равно 2. Выбранный размер CTU можно определить как 2 где значение переменной CtbLog2SizeY представляет собой разность 7 и кодированного значения.
CtbLog2SizeY
[0158] В примере синтаксис указывает на то, что кодированное значение относится к значению переменной log2_ctu_size_minus5, и, таким образом, для получения выбранного размера CTU можно использовать выражения (2) и (3). Соответственно, выбранный размер CTU равен 128, когда кодированное значение равно 2. Выбранный размер CTU равен 64, когда кодированное значение равно 1. Выбранный размер CTU равен 32, когда кодированное значение равно 0. Выбранный размер CTU можно определить как 2, где значение переменной CtbLog2SizeY представляет собой сумму кодированного значения и 5.
[0159] На шаге (S1330) отсчеты в изображениях могут быть реконструированы на основе выбранного размера CTU. Например, одно из изображений может быть разделено на единицы CTU, имеющие выбранный размер CTU. Каждая из единиц CTU может быть также разделена на единицы CU, при этом для реконструкции отсчетов в единицах CU могут использоваться внешние предсказания и/или внутреннее предсказание. Способ (1300) переходит к шагу (S1399) и завершается.
[0160] Вышеописанные способы могут быть реализованы в виде компьютерного программного обеспечения, использующего машиночитаемые инструкции и физически хранящегося на одном или более машиночитаемых носителях. Например, на фиг. 14 показана компьютерная система (1400), пригодная для осуществления некоторых вариантов осуществления изобретения.
[0161] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing units), графическими процессорами (GPU, Graphics Processing Units) и т.п.
[0162] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0163] Компоненты компьютерной системы (1400), показанные на фиг. 14, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым компонентом или комбинацией компонентов, показанных в примере осуществления компьютерной системы (1400).
[0164] Компьютерная система (1400) может включать некоторые устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двумерного видео, трехмерного видео, включая стереоскопическое видео).
[0165] Входной человеко-машинный интерфейс устройства может включать одно или более из следующего (показано по одному): клавиатура (1401), мышь (1402), сенсорная панель (1403), сенсорный экран (1410), информационная перчатка (не показана), джойстик (1405), микрофон (1406), сканер (1407) и камера (1408).
[0166] Компьютерная система (1400) также может включать в себя некоторые устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (1410), информационной перчатки (не показана) или джойстика (1405), а также устройства тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: динамики (1409), наушники (не показаны)), устройства визуального вывода (например, экраны (1410), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из них способны к двумерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографическому выводу, очки виртуальной реальности (не показаны), голографические дисплеи, дымовые баки (не показаны) и принтеры (не показаны).
[0167] Компьютерная система (1400) также может включать доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие CD / DVD ROM / RW (1420) с носителями (1421) CD/DVD и т.п., карты (1422) флэш-памяти, сменный жесткий диск или твердотельный диск (1423), традиционные магнитные носители, например, ленту и магнитный диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.
[0168] Специалисты в данной области техники также должны понимать, что термин «машиночитаемые носители», используемый в связи с настоящим изобретением, не охватывает среды передачи, несущие волны или другие временные сигналы.
[0169] Компьютерная система (1400) также может включать интерфейс к одной или более сетям связи. Сети могут быть, например, беспроводными, проводными, оптическими. Сети могут быть также локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают локальные сети, например, Ethernet, беспроводные сети LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные сети, включающие CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (1449) (например, USB-порты компьютерной системы (1400)); другие обычно встраиваются в ядро компьютерной системы (1400) путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1400) может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.
[0170] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (1440) компьютерной системы (1400).
[0171] Ядро (1440) может включать один или более центральных процессоров (CPU) (1441), графические процессоры (GPU) (1442), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Arrays) (1443), аппаратные ускорители (1444) для некоторых задач и т.д. Эти устройства, совместно с постоянной памятью (ROM) (1445), оперативной памятью (1446), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками, недоступными пользователю, SSD и т.п.(1447), могут соединяться посредством системной шины (1448). В некоторых компьютерных системах системная шина (1448) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных процессоров CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (1448) ядра, либо через периферийную шину (1449). Архитектуры периферийной шины включают PCI, USB и т.п.
[0172] Устройства CPU (1441), GPU (1442), FPGA (1443) и ускорители (1444) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в памяти ROM (1445) или RAM (1446). Временные данные также могут храниться в памяти RAM (1446), тогда как постоянные данные могут храниться, например, во внутреннем хранилище (1447) данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с одним или более процессорами CPU (1441), GPU (1442), хранилищем (1447) данных большой емкости, памятью ROM (1445), RAM (1446) и т.п.
[0173] На машиночитаемых носителях может храниться компьютерный код для осуществления различных выполняемых компьютером операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.
[0174] В порядке примера, но не ограничения изобретения, компьютерная система, имеющая архитектуру (1400), и, в частности, ядро (1440) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных машиночитаемых носителей. Такие машиночитаемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым постоянным хранилищем ядра (1440), например, внутренним хранилищем (1447) данных большой емкости или ROM (1445). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (1440). Машиночитаемый носитель может включать одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (1440) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные способы или конкретные части описанных здесь конкретных способов, включая задание структур данных, хранящихся в памяти RAM (1446), и модификацию таких структур данных согласно способам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (1444)), которая может действовать вместо программного обеспечения или совместно с программным обеспечением для выполнения конкретных способов или конкретных частей описанных здесь конкретных способов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на машиночитаемые носители может охватывать схему (например, интегральную схему (IC, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе схемы, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию аппаратного и программного обеспечения.
Приложение А: сокращения
JEM: модель совместного исследования
VVC: универсальное кодирование видеоданных
BMS: набор эталонов
MV: вектор движения
HEVC: высокопроизводительное кодирование видеоданных
МРМ: наиболее вероятный режим
WAIP: широкоугольное внутреннее предсказание
SEI: дополнительная информация улучшения
VUI: информация о возможности использования видео
GOP: группа изображений
TU: единица преобразования
PU: единица предсказания
CTU: единица дерева кодирования
СТВ: блок дерева кодирования
РВ: блок предсказания
HRD: гипотетический эталонный декодер
SDR: стандартный динамический диапазон
SNR: отношение «сигнал/шум»
CPU: центральный процессор
GPU: графический процессор
CRT: кинескоп
LCD: жидкокристаллический дисплей
OLED: органический светодиод
CD: компакт-диск
DVD: цифровой видеодиск
ROM: постоянная память
RAM: оперативная память
ASIC: специализированная интегральная схема
PLD: программируемое логическое устройство
LAN: локальная сеть
GSM: глобальная система мобильной связи
LTE: проект долгосрочного развития систем связи
CANBus: шина контроллерной сети
USB: универсальная последовательная шина
PCI: соединение периферийных компонентов
FPGA: вентильная матрица, программируемая пользователем
SSD: твердотельный привод
IC: интегральная схема
CU: единица кодирования
PDPC: комбинация предсказания в зависимости от позиции
ISP: внутренние подразделения
SPS: набор параметров последовательности
[0175] Хотя здесь были описаны некоторые варианты осуществления изобретения, возможны изменения, перестановки и различные эквивалентные замены в пределах объема изобретения. Таким образом, специалисты в данной области техники могут предложить многочисленные системы и способы, которые, хотя в явном виде здесь не показаны и не описаны, воплощают принципы изобретения и, таким образом, соответствуют его сущности и объему.