ПЕРЕДАЧА ИНФОРМАЦИИ ОБ ИНСТРУМЕНТАХ КОДИРОВАНИЯ ДЛЯ КОДИРОВАНИЯ ВИДЕОКОМПОНЕНТЫ В РЕЖИМЕ МОНОХРОМНОГО ВИДЕО
TRANSMITTING INFORMATION ABOUT ENCODING TOOLS FOR ENCODING VIDEO COMPONENTS IN MONOCHROME VIDEO MODE

ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
[0001] Настоящее раскрытие испрашивает приоритет патентной заявки США №17/072980 «Передача информации об инструментах кодирования для кодирования видеокомпоненты в режиме монохромного видео», поданной 16 октября 2020 г., который испрашивает приоритет предварительной патентной заявки США №62/924674 «Передача информации об инструментах кодирования для кодирования видеокомпоненты в режиме монохромного видео», поданной 22 октября 2019 г. Раскрытия предшествующих заявок включены в настоящий документ посредством ссылки в полном объеме.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] В настоящем раскрытии описаны варианты осуществления, относящиеся в целом к кодированию видео.
УРОВЕНЬ ТЕХНИКИ
[0003] Приведенное в настоящем документе описание уровня техники предназначено для ознакомления с контекстом данного изобретения. Работы названных здесь изобретателей в той мере, в какой они описываются в данном разделе, а также аспекты этого описания, которые не могут быть признаны известным уровнем техники на момент подачи заявки, ни прямо, ни косвенно не рассматриваются в качестве известного уровня техники в отношении настоящего раскрытия.
[0004] Кодирование и декодирование видео может выполняться с использованием межкадрового предсказания с компенсацией движения. Цифровое видео без сжатия может содержать серию изображений, каждое из которых имеет пространственное измерение, например, 1920 х 1080 отсчетов компоненты яркости и соответствующих отсчетов компонент цветности. Последовательность изображений может иметь фиксированную или переменную частоту изображений (которая неофициально также называется частотой кадров), например 60 изображений в секунду или 60 Гц. Видео без сжатия предъявляет значительные требования к скорости передачи данных. Например, для передачи видео формата 1080р60 4:2:0 с разрешением 8 бит на отсчет (разрешение отсчета компоненты яркости 1920x1080 при частоте кадров 60 Гц) требуется пропускная способность около 1,5 Гбит/с. Для хранения одного часа такого видео требуется хранилище объемом более 600 Гбайт.
[0005] Одной из целей кодирования и декодирования видео может быть сокращение избыточности исходного видеосигнала за счет его сжатия. Сжатие позволяет снизить упомянутые выше требования к пропускной способности или объему хранилища, причем в некоторых случаях на два порядка и более. Может применяться как сжатие без потерь, так и сжатие с потерями, а также их сочетание. Под сжатием без потерь понимаются методы, при которых из сжатого сигнала может быть восстановлена точная копия исходного сигнала. При использовании сжатия с потерями восстановленный сигнал может быть не идентичен исходному, однако различия между исходным и восстановленным сигналами настолько малы, что восстановленный сигнал может использоваться по назначению. В случае видео широко используется сжатие с потерями. Допустимые искажения зависят от области применения; например, пользователи некоторых бытовых приложений для потокового вещания могут мириться с большими искажениями, чем пользователи приложений для телевизионного вещания. Это обстоятельство может быть отражено в достижимой степени сжатия: более высокие допустимые искажения позволяют добиться более высокой степени сжатия.
[0006] В кодере и декодере видео могут применяться методы из ряда широких категорий, включая, например, компенсацию движения, преобразование, квантование и энтропийное кодирование.
[0007] В состав технологий, используемых в видеокодеках, могут также входить методы, известные как внутрикадровое кодирование. При внутрикадровом кодировании значения отсчетов представляются без привязки к отсчетам или другим данным из ранее восстановленных опорных изображений. В некоторых видеокодеках изображение разбивается в пространстве на блоки отсчетов. Если все блоки отсчетов кодируются во внутрикадровом режиме, такое изображение может быть интракадром. Интракадры и их производные, такие как изображения независимого обновления декодера, могут использоваться для сброса состояния декодера и, следовательно, могут использоваться в качестве первого изображения в битовом потоке кодированного видео и видеосеансе, либо в качестве неподвижного изображения. Отсчеты интраблока могут быть подвергнуты преобразованию, а коэффициенты преобразования могут быть подвергнуты квантованию перед энтропийным кодированием. С помощью внутрикадрового предсказания можно минимизировать значения отсчетов на этапе до преобразования. В некоторых случаях, чем меньше значение DC после преобразования и чем меньше коэффициенты АС, тем меньше битов требуется при заданном размере шага квантования для представления блока после энтропийного кодирования.
[0008] При традиционном внутрикадровом кодировании, известном, например, из технологий кодирования поколения MPEG-2, не используется внутрикадровое предсказание, кроме предсказания DC. Однако в некоторых новейших технологиях сжатия видео используются методы, которые пытаются выполнять предсказание, например, на основе данных окружающих отсчетов и/или метаданных, полученных в процессе кодирования/декодирования блоков данных, соседних пространственно и предшествующих по очередности декодирования. Такие методы далее именуются методами «внутрикадрового предсказания». Следует отметить, что по меньшей мере в некоторых случаях при внутрикадровом предсказании используются опорные данные только из текущего восстанавливаемого изображения, но не из опорных изображений.
[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), состоящий из 4 х 4 отсчетов (обозначен пунктирной полужирной линией). Квадратный блок (104) содержит 16 отсчетов, каждый из которых помечен буквой S, положением по оси Y (например индекс строки) и положением по оси X (например индекс столбца). Например, отсчет S21 является вторым отсчетом по оси Y (сверху) и первым отсчетом по оси X (слева). Аналогичным образом, отсчет S44 является четвертым отсчетом в блоке (104) по обоим осям Y и X. Поскольку размер блока составляет 4x4 отсчета, S44 находится в правом нижнем углу. Далее показаны опорные отсчеты, для которых используется аналогичная схема нумерации. Опорный отсчет обозначается буквой R, его положением по оси Y (например индекс строки) и положением по оси X (индекс столбца) относительно блока (104). В обоих стандартах Н.264 и Н.265 отсчеты предсказания граничат с восстанавливаемым блоком, поэтому нет необходимости использовать отрицательные значения.
[0013] Внутрикадровое предсказание может осуществляться путем копирования значений опорных отсчетов из соседних отсчетов в соответствии с переданным направлением предсказания. Например, предположим, что в битовом потоке кодированного видео присутствует сигнал, который для этого блока указывает направление предсказания, соответствующее стрелке (102), то есть отсчеты предсказываются от отсчета или отсчетов предсказания, находящихся справа вверху, под углом 45 градусов от горизонтали. В этом случае отсчеты S41, S32, S23 и S14 предсказываются по одному и тому же опорному отсчету R05. Тогда отсчет S44 предсказывается по опорному отсчету R08.
[0014] В некоторых случаях значения нескольких опорных отсчетов могут быть объединены, например путем интерполяции, для вычисления опорного отсчета; в частности, это касается тех случаев, когда направление не кратно 45 градусам.
[0015] С развитием технологии кодирования видео увеличилось количество возможных направлений. В стандарте Н.264 (2003 г.) может быть представлено девять различных направлений. Это количество увеличилось до 33 в стандарте Н.265 (2013 г.), а на момент раскрытия настоящего изобретения стандарты JEM/VVC/BMS могут поддерживать до 65 направлений. Были проведены эксперименты по определению наиболее вероятных направлений и для представления этих вероятных направлений с помощью небольшого количества битов используются некоторые методы энтропийного кодирования, при этом допускаются определенные погрешности для менее вероятных направлений. Кроме того, сами направления иногда могут быть предсказаны на основе соседних направлений, использованных в соседних, уже декодированных блоках.
[0016] Режимы внутрикадрового предсказания, которые используются в стандарте HEVC, показаны на фиг. 1В. В стандарте HEVC существует 35 режимов внутрикадрового предсказания, среди которых режим 10 - горизонтальный, режим 26 - вертикальный, а режимы 2, 18 и 34 - диагональные. Для передачи информации о режимах внутреннего предсказания используются три наиболее вероятных режима (МРМ, most probable mode) и 32 оставшихся режима.
[0017] На фиг. 1С показаны режимы внутрикадрового предсказания, которые используются в стандарте VVC. В стандарте VVC существует всего 95 режимов внутрикадрового предсказания, как показано на фиг. 1С, среди которых режим 18 - горизонтальный, режим 50 - вертикальный, а режимы 2, 34 и 66 - диагональные. Режимы с 1 по 14 и с 67 по 80 называются режимами широкоугольного внутрикадрового предсказания (WAIP,Wide-Angle Intra Prediction).
[0018] В различных технологиях кодирования направления внутрикадрового предсказания могут быть по-разному представлены битами в битовом потоке кодированного видео; это может быть простое прямое сопоставление направления предсказания с режимом внутрикадрового предсказания, кодовые слова, сложные адаптивные схемы с использованием МРМ и другие подобные методы. Однако во всех случаях могут быть определенные направления, вероятность появления которых в видеоконтенте статистически меньше по сравнению с некоторыми другими направлениями. Поскольку целью сжатия видео является сокращение избыточности, в хорошо работающей технологии кодирования видео эти менее вероятные направления должны быть представлены большим количеством битов, чем более вероятные направления.
[0019] Кодирование и декодирование видео может выполняться с использованием межкадрового предсказания с компенсацией движения. Цифровое видео без сжатия может содержать серию изображений, каждое из которых имеет пространственное измерение, например, 1920 х 1080 отсчетов компоненты яркости и соответствующих отсчетов компонент цветности. Последовательность изображений может иметь фиксированную или переменную частоту изображений (которая неформально также называется частотой кадров), например 60 изображений в секунду или 60 Гц. Видео без сжатия предъявляет значительные требования к скорости передачи данных. Например, для передачи видео формата 1080р60 4:2:0 с разрешением 8 бит на отсчет (разрешение отсчета компоненты яркости 1920x1080 при частоте кадров 60 Гц) требуется пропускная способность около 1,5 Гбит/с. Для хранения одного часа такого видео требуется хранилище объемом более 600 Гбайт.
[0020] Компенсация движения может быть методом сжатия с потерями и может относиться к методам, в которых блок отсчетов из ранее восстановленного изображения или его части (опорного изображения), после пространственного смещения в направлении, указанном вектором движения (далее MV, motion vector), используется для предсказания нового восстановленного изображения или его части. В некоторых случаях опорное изображение может быть таким же, как и изображение, подвергающееся восстановлению. Вектора MV могут иметь два измерения X и Y или три измерения, при этом третье измерение служит для указания используемого опорного изображения (последнее, косвенно, может быть измерением во времени).
[0021] В некоторых методах сжатия видео вектор MV, применяемый к определенной области данных отсчета, может быть предсказан по другим векторам MV, например по тем, которые относятся к другой области данных отсчета, пространственно прилегающей к восстанавливаемой области и предшествующей этому вектору MV по очередности декодирования. Это позволяет существенно сократить объем данных, необходимых для кодирования MV и тем самым устранить избыточность и повысить степень сжатия. Эффективность предсказания MV объясняется, например, тем, что при кодировании входного видеосигнала, полученного от камеры (известного как естественное видео), существует статистическая вероятность того, что области, более крупные, чем область, к которой применяется один MV, движутся в аналогичном направлении и, следовательно, в некоторых случаях могут быть предсказаны с использованием аналогичного вектора движения, полученного на основе MV соседних областей. Это приводит к тому, что MV, определенный для данной области, похож или совпадает с MV, предсказанным на основе окружающих MV, и поэтому, соответственно, может быть представлен после энтропийного кодирования меньшим количеством битов, чем потребовалось бы при прямом кодировании MV. В некоторых случаях предсказание MV может служить примером сжатия без потерь сигнала (а именно векторов MV), полученного из исходного сигнала (а именно потока отсчетов). В других случаях само предсказание MV может осуществляться с потерями, например из-за ошибок округления при вычислении предсказателя по нескольким окружающим MV.
[0022] Различные механизмы предсказания MV описаны в стандарте H.265/HEVC (рекомендация МСЭ-Т Н.265 «Высокоэффективное кодирование видео», декабрь 2016 г.). Из множества механизмов предсказания MV, которые предлагаются в стандарте Н.265, здесь описан метод, который далее будет именоваться как «пространственное слияние».
[0023] На фиг. 1D текущий блок (110) содержит отсчеты, которые кодер в процессе поиска движения определил как предсказуемые по предыдущему блоку того же размера, который был пространственно смещен. Вместо непосредственного кодирования вектора MV он может быть получен из метаданных, относящихся к одному или более опорным изображениям, например последнему (по очередности декодирования) опорному изображению, с помощью MV, связанного с одним из пяти соседних отсчетов, обозначенных как А0, А1, и В0, B1, В2 (с 102 по 106, соответственно). В стандарте Н.265 для предсказания MV могут использоваться предсказатели из того же опорного изображения, которое использует соседний блок. Порядок формирования списка кандидатов может быть следующим: А0 → В0 → В1 →А1 → В2.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0024] В настоящем изобретении предлагается способ декодирования видео, осуществляемый в видеодекодере. Из битового потока кодированного видео получают элемент синтаксиса, который указывает, является ли последовательность изображений монохромной или содержит ли она три цветовые компоненты, которые кодированы по отдельности. Путем определения значения элемента синтаксиса инструмент кодирования может быть отключен, если элемент синтаксиса указывает на то, что последовательность изображений является монохромной или содержит три цветовые компоненты, которые кодированы по отдельности. Инструмент кодирования использует в качестве входных данных несколько цветовых компонент изображения или зависит от компоненты цветности изображения.
[0025] В одном из вариантов осуществления отключенный инструмент кодирования представляет собой один из инструментов совместного кодирования остатков цветности, активного цветового преобразования (ACT) или блочной дифференциально импульсной кодовой модуляции (BDPCM) для компоненты цветности.
[0026] В одном из вариантов осуществления значение элемента синтаксиса, который указывает, включено ли совместное кодирование остатков цветности, принимается равным нулю. В одном из вариантов осуществления значение элемента синтаксиса, который указывает, включено ли преобразование ACT, принимается равным нулю. В одном из вариантов осуществления значение элемента синтаксиса, который указывает, включена ли модуляция BDICM, принимается равным нулю.
[0027] В одном из вариантов осуществления значение переменной принимается равным нулю, если элемент синтаксиса указывает на то, что последовательность изображений является монохромной или содержит три цветовые компоненты, которые кодированы по отдельности. Переменная указывает на то, что последовательность изображений является массивом цветности. Если определено, что значение переменной равно нулю, может быть принято равным нулю значение одного из следующих элементов синтаксиса: элемента синтаксиса, указывающего, включено ли совместное кодирование остатков цветности, элемента синтаксиса, указывающего, включено ли преобразование ACT, или элемента синтаксиса, указывающего, включена ли модуляция BDPCM для компоненты цветности.
[0028] В некоторых вариантах осуществления, если определено, что последовательность изображений не является монохромной и содержит три цветовых компонента, которые не кодированы по отдельности, может быть получен элемент синтаксиса, указывающий, включено ли совместное кодирование остатков цветности; может быть получен элемент синтаксиса, указывающий, включено ли преобразование ACT; либо может быть получен элемент синтаксиса, указывающий, включена ли модуляция BDPCM для компоненты цветности.
[0029] В одном из вариантов осуществления, если определено, что последовательность изображений не является монохромной и содержит три цветовых компонента, которые не кодированы по отдельности, может быть определено значение переменной, указывающей на тип массива цветности последовательности изображений. Если определено, что значение переменной не равно нулю, может быть получен один из следующих элементов синтаксиса: элемент синтаксиса, указывающий, включено ли совместное кодирование остатков цветности, элемент синтаксиса, указывающий, включено ли преобразование ACT, или элемент синтаксиса, указывающий, включена ли модуляция BDPCM для компоненты цветности.
[0030] В одном из вариантов осуществления может быть определено значение переменной, указывающей на тип массива цветности последовательности изображений, если установлено, что последовательность изображений не является монохромной и содержит три цветовые компоненты, которые не кодированы по отдельности. Может быть получен элемент синтаксиса, указывающий, включена ли модуляция BDPCM для компоненты цветности, если определено, что значение переменной не равно нулю, и если для последовательности изображений включен режим без потерь.
[0031] В настоящем изобретении предлагается устройство декодирования видео, состоящее из схемных компонентов. Схемные компоненты могут быть сконфигурированы таким образом, чтобы получать элементы синтаксиса из битового потока кодированного видео. Элемент синтаксиса указывает, является ли последовательность изображений монохромной или содержит ли она три цветовые компоненты, которые кодированы по отдельности. Кроме того, схемные компоненты могут быть сконфигурированы таким образом, чтобы определять значение элемента синтаксиса так, чтобы отключить инструмент кодирования, который использует множественные цветовые компоненты изображения в качестве входных данных или зависит от компоненты цветности изображения, если элемент синтаксиса указывает на то, что последовательность изображений является монохромной или содержит три цветовые компоненты, которые кодированы по отдельности.
[0032] В настоящем изобретении предлагается машиночитаемый носитель, где хранятся инструкции, под управлением которых процессор выполняет способ декодирования видео.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0033] Другие признаки, характер и различные преимущества настоящего изобретения станут более понятными из последующего подробного описания и прилагаемых чертежей:
[0034] На фиг. 1А представлена схематическая иллюстрация типового
подмножества режимов внутрикадрового предсказания.
[0035] На фиг. 1В показаны примеры направлений внутрикадрового предсказания.
[0036] На фиг. 1С показаны примеры направлений внутрикадрового предсказания.
[0037] На фиг. 1D представлен пример текущего блока и окружающих его кандидатов для пространственного слияния.
[0038] На фиг. 2 представлена упрощенная структурная схема системы связи в соответствии с одним из вариантов осуществления.
[0039] На фиг. 3 представлена упрощенная структурная схема системы связи в соответствии с одним из вариантов осуществления.
[0040] На фиг. 4 представлена упрощенная структурная схема декодера в соответствии с одним из вариантов осуществления.
[0041] На фиг. 5 представлена упрощенная структурная схема кодера в соответствии с одним из вариантов осуществления.
[0042] На фиг. 6 представлена структурная схема кодера в соответствии с другим вариантом осуществления.
[0043] На фиг. 7 представлена структурная схема декодера в соответствии с другим вариантом осуществления.
[0044] На фиг. 8 показан вариант осуществления процесса, выполняемого декодером.
[0045] На фиг. 9 показан вариант осуществления другого процесса, выполняемого декодером.
[0046] На фиг. 10 представлена компьютерная система в соответствии с одним из вариантов осуществления настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
[0047] I. Системы кодера и декодера видео
[0048] На фиг. 2 представлена упрощенная структурная схема компьютерной системы (200) в соответствии с одним из вариантов осуществления настоящего изобретения. Система связи (200) содержит множество оконечных устройств, которые могут взаимодействовать друг с другом, в частности через сеть (250). Например, система связи (200) содержит первую пару оконечных устройств (210) и (220), которые связаны между собой через сеть (250). В примере на фиг. 2 первая пара оконечных устройств (210) и (220) осуществляет однонаправленную передачу данных. Так, оконечное устройство (210) может кодировать видеоданные (например поток видеоизображений, захваченных оконечным устройством (210)) для передачи на другое оконечное устройство (220) по сети (250). Кодированные видеоданные могут передаваться в виде одного или более битовых потоков кодированного видео. Оконечное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные, чтобы восстановить видеоизображения, и отображать видеоизображения в соответствии с восстановленными видеоданными. Однонаправленная передача данных может широко использоваться в приложениях для мультимедийных сервисов и им подобных.
[0049] В другом примере система связи (200) содержит вторую пару оконечных устройств (230) и (240), которые осуществляют двунаправленную передачу кодированных видеоданных, что может происходить, например, при проведении видеоконференций. В случае двунаправленной передачи данных в одном из примеров каждое устройство из пары оконечных устройств (230) и (240) может кодировать видеоданные (например поток видеоизображений, захваченных оконечным устройством) для передачи другому устройству из пары оконечных устройств (230) и (240) по сети (250). Каждое устройство из пары оконечных устройств (230) и (240) также может принимать кодированные видеоданные, переданные другим устройством из пары оконечных устройств (230) и (240), может декодировать кодированные видеоданные для восстановления видеоизображений и может отображать видеоизображения на доступном устройстве отображения в соответствии с восстановленными видеоданными.
[0050] В примере на фиг. 2 оконечные устройства (210), (220), (230) и (240) могут быть представлены как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. В вариантах осуществления настоящего изобретения могут использоваться ноутбуки, планшетные компьютеры, медиаплееры и/или специализированное оборудование для видеоконференций. Сеть (250) представляет собой любую совокупность сетей, по которым передаются кодированные видеоданные между оконечными устройствами (210), (220), (230) и (240), в том числе, например, проводные и/или беспроводные сети связи. Сеть связи (250) может осуществлять передачу данных в режиме коммутации каналов и/или коммутации пакетов. К числу используемых сетей принадлежат телекоммуникационные сети, локальные вычислительные сети, глобальные вычислительные сети и/или сеть Интернет. Архитектура и топология сети (250) не имеют значения для реализации настоящего изобретения, если иное не оговорено ниже в настоящем документе.
[0051] На фиг. 3 показан пример реализации настоящего изобретения, в котором видеокодер и видеодекодер размещаются в среде потоковой передачи данных. Описываемое изобретение может в равной степени использоваться в других приложениях с поддержкой видео, в частности, видеоконференциях, цифровом телевидении, хранении сжатого видео на цифровых носителях, включая CD, DVD, карты памяти и тому подобные устройства, и так далее.
[0052] Система потоковой передачи данных может содержать подсистему захвата (313), которая может включать в себя источник видео (301), например цифровую камеру, создающую, к примеру, поток несжатых видеоизображений (302). В одном из примеров поток видеоизображений (302) содержит отсчеты, сделанные цифровой камерой. Поток видеоизображений (302), показанный полужирной линией, подчеркивает большой объем данных по сравнению с кодированными видеоданными (304) (или битовыми потоками кодированного видео), может обрабатываться электронным устройством (320), которое содержит видеокодер (303), подключенный к источнику видео (301). Видеокодер (303) может содержать аппаратные средства, программное обеспечение или их комбинацию, позволяющие обеспечить или реализовать аспекты раскрываемого изобретения, как более подробно описывается ниже. Кодированные видеоданные (304) (или битовый поток кодированного видео (304)), изображенные тонкой линией, которая подчеркивает меньший объем данных по сравнению с потоком видеоизображений (302), могут быть сохранены на сервере потоковой передачи (305) для последующего использования. Одна или более клиентских подсистем потоковой передачи данных, например клиентские подсистемы (306) и (308) на фиг. 3, могут обращаться к серверу потоковой передачи данных (305), чтобы получить копии (307) и (309) кодированных видеоданных (304). Клиентская подсистема (306) может содержать видеодекодер (310), например, в составе электронного устройства (330). Видеодекодер (310) декодирует входящую копию (307) кодированных видеоданных и создает исходящий поток видеоизображений (311), которые могут быть воспроизведены на экране (312) (например экран монитора) или другом устройстве воспроизведения (не показано). В некоторых системах потоковой передачи данных кодированные видеоданные (304), (307) и (309) (например битовые потоки видео) могут кодироваться по определенным стандартам кодирования/сжатия видео. Примером такого стандарта является Рекомендация МСЭ-Т Н.265. Одним из примеров является разрабатываемый в настоящее время стандарт кодирования видео, получивший неофициальное название Versatile Video Coding (VVC). Описываемое изобретение может быть использовано в контексте стандарта VVC.
[0053] Следует отметить, что электронные устройства (320) и (330) могут содержать и другие компоненты (не показаны). Например, электронное устройство (320) может содержать видеодекодер (не показан), а электронное устройство (330) может содержать также видеокодер (не показан).
[0054] На фиг. 4 показана блок-схема видеодекодера (410) в соответствии с одним из вариантов осуществления настоящего изобретения. Видеодекодер (410) может входить в состав электронного устройства (430). Электронное устройство (430) может содержать приемник (431) (например схемные компоненты для приема). В примере на фиг. 3 вместо видеодекодера (310) может использоваться видеодекодер (410).
[0055] Приемник (431) может принимать одну или более кодированных последовательностей видео, которые должны декодироваться видеодекодером (410); в том же или другом варианте осуществления, по одной кодированной последовательности видео в один момент времени, при этом декодирование каждой кодированной последовательности видео осуществляется независимо от других кодированных последовательностей видео. Кодированная последовательность видео может быть получена из канала (401), который может быть аппаратно-программным соединением с устройством хранения, в котором хранятся кодированные видеоданные. Приемник (431) может принимать кодированные видеоданные наряду с другими данными, например кодированными аудиоданными и/или вспомогательными данными, которые могут передаваться использующим их соответствующим объектам (не показаны). Приемник (431) может отделить кодированную последовательность видео от других данных. Для устранения влияния сетевого джиттера между приемником (431) и энтропийным декодером/анализатором (420) (далее - анализатор (420)) может быть установлена буферная память (415). В некоторых случаях буферная память (415) является составной частью видеодекодера (410). В других случаях она может находиться вне видеодекодера (410) (не показано). В некоторых иных случаях помимо буферной памяти (не показана), которая может находиться вне видеодекодера (410), например для устранения влияния сетевого джиттера, может также присутствовать другая буферная память (415) внутри видеодекодера (410), например для управления временем воспроизведения. Если приемник (431) принимает данные от устройства хранения/передачи с достаточной пропускной способностью и возможностью управления или от изосинхронной сети, буферная память (415) может не потребоваться или иметь небольшой объем. При использовании в пакетных сетях с негарантированной доставкой данных, таких как Интернет, может потребоваться буферная память (415), которая будет иметь относительно большой объем и желательно будет адаптивной, а также будет по меньшей мере частично реализована в операционной системе или подобных ей элементах (не показаны) вне видеодекодера (410).
[0056] Видеодекодер (410) может содержать анализатор (420) для восстановления символов (421) из кодированной последовательности видео. Категории этих символов содержат информацию для управления работой видеодекодера (410), а также, возможно, информацию для управления устройством воспроизведения, в частности устройством воспроизведения (412) (например экран монитора), которое не является неотъемлемой частью электронного устройства (430), но может быть подключено к электронному устройству (430), как показано на фиг. 4. Управляющая информация для устройств(-а) воспроизведения может быть представлена в виде сообщений информации для дополнительной оптимизации (SEI) или фрагментов набора параметров информации об удобстве использования изображения (VUI) (не показано). Анализатор (420) может осуществлять анализ / энтропийное декодирование полученной кодированной последовательности видео. Кодирование кодированной последовательности видео может осуществляться в соответствии с технологией или стандартом кодирования видео и может следовать различным принципам, в частности, кодированию с переменной длиной, кодированию Хаффмана, арифметическому кодированию с учетом или без учета контекста и т.д. Анализатор (420) может извлекать из кодированной последовательности видео набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основании по меньшей мере одного параметра, соответствующего группе. В подгруппы могут входить группы изображений (GOP), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU), блоки, единицы преобразования (TU), единицы предсказания (PU) и т.д. Анализатор (420) может также извлекать из кодированной последовательности видео такую информацию, как коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[0057] Анализатор (420) может выполнять операцию энтропийного декодирования / анализа последовательности видео, полученной из буферной памяти (415), для создания символов (421).
[0058] Восстановление символов (421) может использовать множество различных единиц в зависимости от типа кодированного видеоизображения или его частей (например, интеркадр и интракадр, интерблок и интраблок) и других факторов. Состав и характер использования единиц может регулироваться управляющей информацией подгруппы, которая была извлечена анализатором (420) из кодированной последовательности видео. Поток такой управляющей информации подгруппы между анализатором (420) и различными блоками ниже для простоты не показан.
[0059] Помимо уже упомянутых функциональных блоков видеодекодер (410) может быть концептуально разделен на ряд функциональных блоков, как описано ниже. На практике, в условиях коммерческих ограничений, многие из этих блоков тесно взаимодействуют друг с другом и могут, по меньшей мере частично, интегрироваться друг с другом. Однако при описании настоящего изобретения целесообразно использовать концептуальное деление на указанные ниже функциональные единицы.
[0060] Первый блок представляет собой блок масштабирования / обратного преобразования (451). Блок масштабирования / обратного преобразования (451) получает от анализатора (420) квантованный коэффициент преобразования, а также управляющую информацию в виде символа(-ов) (421), включая данные об используемом типе преобразования, размере блока, коэффициенте квантования, матрице масштабирования квантования и т.д. На выходе блока масштабирования / обратного преобразования (451) могут быть получены блоки, включающие в себя значения отсчетов, которые могут быть поданы в агрегатор (455).
[0061] В некоторых случаях выходные отсчеты блока масштабирования / обратного преобразования (451) могут относиться к блоку внутреннего кодирования, то есть блоку, который не использует информацию предсказания на основе ранее восстановленных изображений, но может использовать информацию предсказания на основе ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена блоком внутрикадрового предсказания (452). В некоторых случаях блок внутрикадрового предсказания (452) формирует блок таких же размера и формы, как и восстанавливаемый блок, используя информацию об уже восстановленных соседних блоках, полученную из буфера текущего изображения (458). В буфере текущего изображения (458) хранится, например, частично и/или полностью восстановленное текущее изображение. В некоторых случаях агрегатор (455) добавляет индивидуально для каждого отсчета информацию для предсказания, которую создает блок внутрикадрового предсказания (452), к информации выходного отсчета, поступающей от блока масштабирования / обратного преобразования (451).
[0062] В других случаях выходные отсчеты блока масштабирования / обратного преобразования (451) могут относиться к блоку межкадрового кодирования с возможной компенсацией движения. В этом случае блок предсказания с компенсацией движения (453) может обращаться к памяти опорных изображений (457) для получения отсчетов, используемых для предсказания. После компенсации движения полученных отсчетов в соответствии с символами (421), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (455) к выходу блока масштабирования / обратного преобразования (451) (в данном случае называемому остаточными отсчетами или остаточным сигналом), чтобы сформировать информацию о выходных отсчетах. Адреса в памяти опорных изображений (457), по которым блок предсказания с компенсацией движения (453) извлекает отсчеты предсказания, могут управляться векторами движения, которые доступны блоку предсказания с компенсацией движения (453) в виде символов (421), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может предусматривать интерполяцию значений отсчетов, получаемых из памяти опорных изображений (457), когда используются точные векторы движения на уровне суботсчетов, механизмы предсказания вектора движения и т.д.
[0063] Выходные отсчеты агрегатора (455) могут подвергаться различным методам петлевой фильтрации в блоке петлевого фильтра (456). В технологиях сжатия видео могут использоваться технологии петлевой фильтрации под управлением параметров, содержащихся в кодированной последовательности видео (также называемой битовым потоком кодированного видео) и доступных блоку петлевого фильтра (456) в виде символов (421) от анализатора (420). Они также могут реагировать на метаинформацию, полученную в процессе декодирования предыдущих (по очередности декодирования) частей кодированного изображения или кодированной последовательности видео, а также реагировать на ранее восстановленные и прошедшие петлевую фильтрацию значения отсчетов.
[0064] На выходе блока петлевого фильтра (456) может присутствовать поток отсчетов, который может подаваться на устройство воспроизведения (412), а также сохраняться в памяти опорных изображений (457) с целью последующего использования для межкадрового предсказания.
[0065] Некоторые кодированные изображения после полной реконструкции могут служить в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью восстановлено и идентифицировано как опорное изображение (например анализатором (420)), буфер текущего изображения (458) может стать частью памяти опорных изображений (457), при этом буфер текущего изображения может быть перераспределен под свежее изображение до начала восстановления следующего кодированного изображения.
[0066] Видеодекодер (410) может выполнять операции декодирования в соответствии с предварительно выбранными стандартом или технологией сжатия видео, например рекомендацией МСЭ-Т Н.265. Кодированная последовательность видео может соответствовать синтаксису, установленному используемыми технологией или стандартом сжатия виде в том смысле, что кодированная последовательность видео соответствует как синтаксису технологии или стандарта сжатия видео, так и профилям, которые закреплены в этих технологии или стандарте сжатия видео. В частности, из всех инструментов, доступных в рамках данных технологии или стандарта сжатия видео, могут быть выбраны отдельные инструменты как единственно возможные для использования в рамках данного профиля. Для соответствия требованиям может также потребоваться, чтобы сложность кодированной последовательности видео не выходила за рамки, определяемые уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов восстановления (измеряемую, например, в миллионах отсчетов в секунду), максимальный размер опорного изображения и так далее. Ограничения, определяемые уровнями, в некоторых случаях могут быть дополнительно сужены спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, которые передаются в кодированной последовательности видео.
[0067] В одном из вариантов осуществления приемник (431) может принимать дополнительные (избыточные) данные вместе с кодированным видео. Дополнительные данные могут быть частью кодированной(-ых) последовательности(-ей) видео. Дополнительные данные могут использоваться видеодекодером (410) для правильного декодирования данных и/или более точного восстановления исходных видеоданных. Дополнительные данные могут быть представлены, например, в виде временных, пространственных слоев или слоев улучшения отношения сигнал-шум (SNR), избыточных слайсов, избыточных изображений, кодов прямой коррекции ошибок и так далее.
[0068] На фиг. 5 показана блок-схема видеокодера (503) в соответствии с одним из вариантов осуществления настоящего изобретения. Видеокодер (503) может входить в состав электронного устройства (520). Электронное устройство (520) может содержать передатчик (540) (например например схемные компоненты для передачи). В примере на фиг. 3 вместо видеокодера (303) может использоваться видеокодер (503).
[0069] Видеокодер (503) может принимать отсчеты видео от источника видео (501) (не являющегося частью электронного устройства (520) в примере на фиг. 5), который может захватывать видеоизображение(-я), подлежащее кодированию видеокодером (503). В другом примере источник видео (501) является частью электронного устройства (520).
[0070] Источник видео (501) может предоставить видеокодеру (503) для кодирования исходную последовательность видео в виде цифрового потока отсчетов видео, которые могут иметь любую подходящую разрядность (например 8 бит, 10 бит, 12 бит, …), любое цветовое пространство (например ВТ.601, Y CrCB, RGB, …), и любую подходящую структуру дискретизации (например Y CrCb 4:2:0, Y CrCb 4:4:4). В системах сервисов мультимедиа источником видео (501) может быть устройство хранения, в котором хранится предварительно подготовленное видео. В системе видеоконференцсвязи источником видео (501) может быть камера, которая захватывает локальное изображение в виде последовательности видео. Видеоданные могут предоставляться в виде множества отдельных изображений, которые передают движение при последовательном просмотре. Сами изображения могут быть представлены в виде пространственного массива пикселей, где каждый пиксель может состоять из одного или более отсчетов в зависимости от используемой структуры дискретизации, цветового пространства и т.д. Специалисту в данной области легко понять взаимосвязь между пикселями и отсчетами. В приведенном ниже описании фигурируют отсчеты.
[0071] Согласно одному из вариантов осуществления видеокодер (503) может кодировать и сжимать изображения исходной последовательности видео в кодированную последовательность видео (543) в режиме реального времени или в условиях любых других временных ограничений, какие требует приложение. Обеспечение надлежащей скорости кодирования является одной из функций контроллера (550). В некоторых вариантах осуществления контроллер (550) управляет другими функциональными блоками, как описано ниже, и функционально связан с другими функциональными блоками. Для большей наглядности эти связи не изображены. В число параметров, устанавливаемых контроллером (550), могут входить параметры, относящиеся к управлению скоростью (пропуск изображений, квантователь, значение лямбда в методах оптимизации по критерию скорость-искажения, …), размер изображения, компоновка группы изображений (GOP), максимальный диапазон поиска вектора движения и так далее. Контроллер (550) может быть сконфигурирован таким образом, чтобы выполнять другие подходящие функции, которые относятся к видеокодеру (503), оптимизированному под определенную конфигурацию системы.
[0072] В некоторых вариантах осуществления видеокодер (503) сконфигурирован для работы в петле кодирования. Если упростить описание, то в одном из примеров петля кодирования может включать кодер источника (530) (отвечающий, например, за создание символов, таких как поток символов на основе входного изображения, подлежащего кодированию, и опорного(-ых) изображения(-й)) и (локальный) декодер (533), встроенный в видеокодер (503). Декодер (533) восстанавливает символы, чтобы создать данные отсчетов подобно тому, как это сделал бы (удаленный) декодер (поскольку в технологиях сжатия видео, рассматриваемых в настоящем изобретении, любое сжатие между символами и битовым потоком кодированного видео происходит без потерь). Поток восстановленных отсчетов (данные отсчетов) вводится в память опорных изображений (534). Поскольку декодирование потока символов приводит к результатам с точностью до бита независимо от местоположения декодера (локального или удаленного), содержимое памяти опорных изображений (534) локального и удаленного кодера также совпадает с точностью до бита. Другими словами, часть кодера, отвечающая за предсказание, «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые «видит» декодер при использовании предсказания в процессе декодирования. Этот фундаментальный принцип синхронности опорного изображения (и смещения, возникающего в том случае, когда невозможно поддерживать синхронность, например, из-за ошибок в канале) используется также в некоторых смежных областях.
[0073] «Локальный» декодер (533) может функционировать так же, как и «удаленный» декодер, например, видеодекодер (410), который уже был подробно рассмотрен выше при описании фиг. 4. Однако при упоминании фиг. 4 следует заметить, что поскольку символы доступны и кодирование / декодирование символов энтропийным кодером (545) и анализатором (420) в кодированную последовательность видео может быть выполнено без потерь, в локальном декодере (533) части энтропийного декодирования видеодекодера (410), в том числе буферная память (415), и анализатор (420), могут быть реализованы не полностью.
[0074] Здесь следует оговориться, что любая технология декодирования, кроме анализа/энтропийного декодирования, которая применяется в декодере, обязательно должна присутствовать в соответствующем кодере в практически идентичном функциональном виде. По этой причине описание настоящего изобретения посвящено главным образом работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными по отношению к всесторонне описанным технологиям декодирования. Лишь некоторые аспекты требуют более подробного описания, которое приводится ниже.
[0075] В некоторых примерах кодер источника (530) во время работы может выполнять предиктивное кодирование с компенсацией движения, когда входное изображение кодируется с предсказанием по одному или более кодированным ранее изображениям из последовательности видео, которые были определены как "опорные изображения". В этом случае механизм кодирования (532) кодирует различия между блоками пикселей входного изображения и блоками пикселей опорного изображения(-й), которые могут быть выбраны в качестве источника(-ов) предсказания для входного изображения.
[0076] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, которые могут быть определены как опорные изображения, на основе символов, создаваемых кодером источника (530). Процессы, выполняемые в механизме кодирования (532), преимущественно могут быть процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг. 5), восстановленная последовательность видео обычно может быть копией исходной последовательности видео с некоторыми ошибками. Локальный видеодекодер (533) воспроизводит процессы декодирования, которые могут быть выполнены видеодекодером для опорных изображений, и может обеспечить хранение восстановленных опорных изображений в кеше опорных изображений (534). Таким образом видеокодер (503) может локально хранить копии восстановленных опорных изображений, которые по содержанию идентичны восстановленным опорным изображениям, получаемым удаленным видеодекодером (в отсутствие ошибок при передаче).
[0077] Предсказатель (535) может выполнять поиск предсказаний для механизма кодирования (532). То есть для нового кодируемого изображения предсказатель (535) может искать в памяти опорных изображений (534) данные отсчета (в виде кандидатов в опорные блоки пикселей) или определенные метаданные, такие как векторы движения опорного изображения, формы блоков и так далее, которые могут служить подходящим источником предсказания для новых изображений. При поиске подходящих источников предсказания предсказатель (535) может оперировать соотношением между блоками отсчетов и блоками пикселей. В некоторых случаях, в зависимости от результатов поиска, полученных предсказателем (535), источники предсказания для входного изображения могут быть получены из нескольких опорных изображений, хранящихся в памяти опорных изображений (534).
[0078] Контроллер (550) может управлять операциями кодирования кодера источника (530), в том числе, например, задавать параметры и параметры подгрупп, используемые для кодирования видеоданных.
[0079] Выходные данные всех упомянутых выше функциональных блоков могут быть подвергнуты энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) переводит символы, сформированные различными функциональными блоками, в кодированную последовательность видео, сжимая эти символы без потерь посредством таких технологий, как кодирование Хаффмана, кодирование переменной длины, арифметическое кодирование и так далее.
[0080] Передатчик (540) может буферизировать кодированную(-ые) последовательность(-и) видео, созданную(-ые) энтропийным кодером (545), для подготовки к передаче по каналу связи (560), который может быть аппаратным/программным подключением к устройству хранения, где будут храниться кодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные от видеокодера (503) с другими передаваемыми данными, например кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).
[0081] Контроллер (550) может управлять работой видеокодера (503). В процессе кодирования контроллер (550) может присвоить каждому кодированному изображению определенный тип, что может повлиять на методы кодирования, которые могут быть применены к соответствующему изображению. Например, изображениям часто могут быть присвоен один из следующих типов:
[0082] Интракадр (изображение типа I) может кодироваться и декодироваться без использования любого другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки позволяют использовать различные типы интракадров, включая, например, изображения независимого обновления декодера (IDR, Independent Decoder Refresh). Специалистам в данной области известны эти варианты изображений типа I и их соответствующие применения и признаки.
[0083] Изображение с предсказанием (изображение типа Р) может кодироваться и декодироваться с помощью внутрикадрового или межкадрового предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[0084] Изображение с двунаправленным предсказанием (изображение типа В) может кодироваться и декодироваться с помощью внутрикадрового или межкадрового предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогичным образом, изображения с множественным предсказанием для восстановления одного блока могут использовать более двух опорных изображений и связанных с ними метаданных.
[0085] Исходные изображения обычно могут быть пространственно разбиты на множество блоков отсчетов (например, блоки размером 4x4, 8x8, 4x8 или 16x16 отсчетов каждый) и кодироваться поблочно. Блоки могут быть кодироваться с предсказанием по другим (уже кодированным) блокам согласно типу кодирования, применяемому к соответствующим изображениям блоков. Например, блоки изображений типа I могут кодироваться без предсказания или с предсказанием по уже кодированным блокам того же изображения (пространственное предсказание или внутрикадровое предсказание). Блоки пикселей изображений типа Р могут кодироваться с пространственным или временным предсказанием по одному ранее кодированному опорному изображению. Блоки изображений типа В могут кодироваться с пространственным или временным предсказанием по одному или двух ранее кодированному опорному изображению.
[0086] Видеокодер (503) может выполнять операции кодирования в соответствии с предварительно выбранными стандартом или технологией кодирования видео, например рекомендацией МСЭ-Т Н.265. Видеокодер (503) в процессе своей работы может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной последовательности видео. Таким образом, кодированные видеоданные могут соответствовать синтаксису, определенному используемыми технологией или стандартом кодирования видео.
[0087] В одном из вариантов осуществления передатчик (540) может передавать дополнительные данные вместе с кодированным видео. Кодер источника (530) может включать в себя такие данные как часть кодированной последовательности видео. Дополнительные данные могут включать в себя временные, пространственные слои и слои улучшения SNR, другие формы избыточных данных, например избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и так далее.
[0088] Видео может захватываться как множество исходных изображений (видеоизображений) во временной последовательности. Внутрикадровое предсказание (часто сокращенно именуемое как внутреннее предсказание) использует пространственную корреляцию в конкретном изображении, а межкадровое предсказание использует (временную или иную) корреляцию между изображениями. В одном из примеров конкретное изображение, подвергаемое кодированию/декодированию, которое называется текущим изображением, разбивается на блоки. Когда блок в текущем изображении похож на опорный блок в ранее кодированном изображении, которое все еще находится в буфере, блок в текущем изображении может кодироваться вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении, а в случае использования нескольких опорных изображений он может иметь третье измерение, определяющее опорное изображение.
[0089] В некоторых вариантах осуществления при межкадровом предсказании может использоваться метод двунаправленного предсказания. Согласно методу двунаправленного предсказания, используются два опорных изображения, например первое опорное изображение и второе опорное изображение, которые оба предшествуют текущему изображению по очередности декодирования (но могут находиться, соответственно, раньше или позже по очередности воспроизведения). Блок в текущем изображении может кодироваться первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может быть предсказан на основе комбинации первого опорного блока и второго опорного блока.
[0090] Кроме того, для повышения эффективности кодирования при межкадровом предсказании может использоваться режим слияния.
[0091] Согласно некоторым вариантам осуществления изобретения межкадровые предсказания и внутрикадровые предсказания выполняются над единицей блоков. Например, согласно стандарту HEVC изображение в последовательности видеоизображений разбивается на единицы дерева кодирования (CTU) для сжатия, при этом CTU в изображении имеют одинаковый размер, например 64x64 пикселя, 32x32 пикселя или 16x16 пикселей. Как правило, CTU содержит три блока дерева кодирования (СТВ), которые состоят из одного блока СТВ компоненты яркости и двух блоков СТВ компонент цветности. Каждая CTU может быть рекурсивно разбита на один или несколько единиц кодирования (CU) с использованием структуры квадродерева. Например, CTU размером 64x64 пикселя можно разбить на одну CU размером 64x64 пикселя, 4 CU размером 32x32 пикселя или 16 CU размером 16x16 пикселей. В одном из примеров каждая CU анализируется для определения типа предсказания для CU, в частности внутрикадрового предсказания или межкадрового предсказания. CU разбивается на одну или более единиц предсказания (PU) в зависимости от возможности временного и/или пространственного предсказания. Как правило, каждая PU содержит блок предсказания яркости (РВ) и два блока РВ цветности. В одном из вариантов осуществления операция предсказания при кодировании (кодировании/декодировании) выполняется над единицей блока предсказания. Если использовать в качестве примера блок предсказания яркости, блок предсказания содержит матрицу значений (например значений яркости) для пикселей, например размером 8x8 пикселей, 16x16 пикселей, 8x16 пикселей, 16x8 пикселей и т.п.
[0092] На фиг. 6 показана схема видеокодера (603) в соответствии с другим вариантом осуществления настоящего изобретения. Видеокодер (603) сконфигурирован таким образом, чтобы принимать блок обработки (например блок предсказания) значений отсчетов в пределах текущего видеоизображения в последовательности видеоизображений и кодировать блок обработки в кодированное изображение, которое является частью кодированной последовательности видео. В одном из примеров вместо видеокодера (303), показанного на фиг. 3, может использоваться видеокодер (603).
[0093] В примере HEVC видеокодер (603) принимает матрицу значений отсчетов для блока обработки, например блок предсказания в размере 8x8 отсчетов и т.п. Видеокодер (603) определяет оптимальный режим кодирования блока обработки - внутрикадровый, межкадровый или двунаправленный, используя, например, оптимизацию по критерию скорость- искажение. Когда блок обработки кодируется во внутрикадровом режиме, видеокодер (603) может использовать метод внутрикадрового предсказания для кодирования блока обработки в кодированное изображение; а когда блок обработки кодируется в межкадровом режиме или режиме двунаправленного предсказания, видеокодер (603) может использовать, соответственно, метод межкадрового предсказания или метод двунаправленного предсказания для кодирования блока обработки в кодированное изображение. В некоторых технологиях кодирования видео режим слияния может быть подрежимом межкадрового предсказания, в котором вектор движения формируется из одного или более предсказателей вектора движения без преимущества кодированного компонента вектора движения вне предсказателей. В некоторых других технологиях кодирования видео может присутствовать компонент вектора движения, применяемый к рассматриваемому блоку. В одном из примеров видеокодер (603) содержит другие компоненты, в частности модуль принятия решения (не показан) для определения режима блоков обработки.
[0094] В примере на фиг. 6 видеокодер (603) содержит межкадровый кодер (630), внутрикадровый кодер (622), вычислитель остатка (623), переключатель (626), кодер остатка (624), общий контроллер (621) и энтропийный кодер (625), соединенные друг с другом, как показано на фиг. 6.
[0095] Межкадровый кодер (630) сконфигурирован таким образом, чтобы принимать отсчеты текущего блока (например блока обработки), сравнивать блок с одним или более опорными блоками в опорных изображениях (например блоки в предыдущих и последующих изображениях), генерировать информацию для межкадрового предсказания (например описание избыточной информации в соответствии с методом межкадрового кодирования, векторы движения, информацию о режиме слияния) и вычислять результаты межкадрового предсказания (например предсказанный блок) на основе информации для межкадрового предсказания, используя любой подходящий метод. В некоторых примерах опорные изображения представляют собой декодированные опорные изображения, которые декодируются на основе кодированной видеоинформации.
[0096] Внутрикадровый кодер (622) сконфигурирован таким образом, чтобы принимать отсчеты текущего блока (например блока обработки), в некоторых случаях сравнивать этот блок с уже кодированными блоками в том же изображении, генерировать квантованные коэффициенты после преобразования, а в некоторых случаях также информацию для внутрикадрового предсказания (например информацию о направлении внутрикадрового предсказания согласно одному или более методам внутрикадрового кодирования). В одном из примеров внутрикадровый кодер (622) также вычисляет результаты внутрикадрового предсказания (например предсказанный блок) на основе информации для внутрикадрового предсказания и опорных блоков в том же изображении.
[0097] Общий контроллер (621) сконфигурирован таким образом, чтобы определять общие управляющие данные и управлять другими компонентами видеокодера (603) на основании общих управляющих данных. В одном из примеров общий контроллер (621) определяет режим работы блока и подает сигнал управления на переключатель (626) в зависимости от режима. Например, когда выбран внутрикадровый режим, общий контроллер (621) дает команду переключателю (626) выбрать результаты внутрикадрового режима для использования вычислителем остатка (623) и дает команду энтропийному кодеру (625) выбрать информацию для внутрикадрового предсказания и включить ее в битовый поток; а когда выбран межкадровый режим, общий контроллер (621) дает команду переключателю (626) выбрать результат межкадрового предсказания для использования вычислителем остатка (623) и дает команду энтропийному кодеру (625) выбрать информацию для межкадрового предсказания и включить ее в битовый поток.
[0098] Вычислитель остатка (623) сконфигурирован таким образом, чтобы вычислять разницу (остаточные данные) между принятым блоком и результатами предсказания, выбранными из внутрикадрового кодера (622) или межкадрового кодера (630). Кодер остатка (624) сконфигурирован таким образом, чтобы кодировать остаточные данные для формирования коэффициентов преобразования. В одном из примеров кодер остатка (624) сконфигурирован таким образом, чтобы преобразовывать остаточные данные из пространственной области в частотную область и формировать коэффициенты преобразования. Затем коэффициенты преобразования подвергаются квантованию для получения квантованных коэффициентов преобразования. В различных вариантах осуществления видеокодер (603) также содержит декодер остатка (628). Декодер остатка (628) сконфигурирован таким образом, чтобы выполнять обратное преобразование и формировать декодированные остаточные данные. Декодированные остаточные данные могут использоваться внутрикадровым кодером (622) и межкадровым кодером (630). Например, межкадровый кодер (630) может формировать декодированные блоки на основе декодированных остаточных данных и информации для межкадрового предсказания, а внутрикадровый кодер (622) может формировать декодированные блоки на основе декодированных остаточных данных и информации для внутрикадрового предсказания. Декодированные блоки обрабатываются соответствующим образом для формирования декодированных изображений, а декодированные изображения можно буферизировать в схеме памяти (не показана) и использовать в качестве опорных изображений в некоторых примерах.
[0099] Энтропийный кодер (625) сконфигурирован таким образом, чтобы включать в битовый поток кодированный блок. Энтропийный кодер (625) сконфигурирован таким образом, чтобы включать различную информацию, соответствующую подходящему стандарту, например, стандарту HEVC. В одном из примеров энтропийный кодер (625) сконфигурирован таким образом, чтобы включать в битовый поток общие управляющие данные, информацию для выбранного режима предсказания (например для внутрикадрового предсказания или межкадрового предсказания), информацию об остатке и другую необходимую информацию. Следует отметить, что согласно настоящему изобретению при кодировании блока в подрежиме слияния режима межкадрового или двунаправленного предсказания информация об остатке отсутствует.
[0100] На фиг. 7 показана схема видеодекодера (710) в соответствии с другим вариантом осуществления настоящего изобретения. Видеодекодер (710) сконфигурирован таким образом, чтобы принимать кодированные изображения, которые являются частью кодированной последовательности видео, и декодировать кодированные изображения для формирования восстановленных изображений. В одном из примеров вместо видеодекодера (310), показанного на фиг. 3, может использоваться видеодекодер (710).
[0101] В примере на фиг. 7 видеодекодер (710) содержит энтропийный декодер (771), межкадровый декодер (780), декодер остатка (773), модуль восстановления (774) и внутрикадровый декодер (772), соединенные друг с другом, как показано на фиг. 7.
[0102] Энтропийный декодер (771) может быть сконфигурирован таким образом, чтобы восстанавливать из кодированного изображения определенные символы, которые представляют элементы синтаксиса, из которых состоит кодированное изображение. Такие символы могут включать, в частности, режим кодирования блока (например внутрикадровое кодирование, межкадровое кодирование, двунаправленное предсказание, последние два могут быть в подрежиме слияния или другом подрежиме), информацию для предсказания (например информация для межкадрового или внутрикадрового предсказания), которая может определять определенный отсчет или метаданные, используемые для предсказания соответственно внутрикадровый декодером (772) или межкадровым декодером (780), информацию об остатке в форме, например, квантованных коэффициентов преобразования, и тому подобное. В одном из примеров, когда используется межкадровый или двунаправленный режим предсказания, информация для межкадрового предсказания предоставляется межкадровому декодеру (780); а когда используется внутрикадровый режим предсказания, информация для внутрикадрового предсказания предоставляется внутрикадровому декодеру (772). Информация об остатке может подвергаться обратному квантованию и поступать в декодер остатка (773).
[0103] Межкадровый декодер (780) сконфигурирован таким образом, чтобы принимать информацию для межкадрового предсказания и формировать результаты предсказания на основе информации для межкадрового предсказания.
[0104] Внутрикадровый декодер (772) сконфигурирован таким образом, чтобы принимать информацию для внутрикадрового предсказания и формировать результаты предсказания на основе информации для внутрикадрового предсказания.
[0105] Декодер остатка (773) сконфигурирован таким образом, чтобы выполнять обратное квантование для извлечения деквантованных коэффициентов преобразования и обрабатывать деквантованные коэффициенты преобразования для преобразования остатка из частотной области в пространственную область. Декодеру остатка (773) может также требоваться определенная управляющая информация (включая параметр квантователя (QP)), которую может предоставить энтропийный декодер (771) (путь передачи данных не показан, поскольку эта управляющая информация может присутствовать только в малом объеме).
[0106] Модуль восстановления (774) сконфигурирован таким образом, чтобы объединить в пространственной области остаток на выходе декодера остатка (773) и результаты предсказания (на выходах модулей внутрикадрового или межкадрового предсказания в зависимости от конкретной ситуации) для формирования восстановленного блока, который может быть частью восстановленного изображения, которое, в свою очередь, может быть частью восстановленного видео. Следует отметить, что для улучшения качества изображения могут быть предприняты другие целесообразные операции, в частности, операция деблокирования и тому подобные.
[0107] Следует также отметить, что видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любых подходящих методов. В одном из вариантов осуществления видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления видеокодеры (303), (503) и (503) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, которые выполняют программные инструкции.
[0108] II. Раздельное кодирование цветовых компонент видео
[0109] В технологиях кодирования видео обычно предполагается, что подлежащая кодированию последовательность видео содержит нескольких цветовых плоскостей (например одна компонента яркости и две компоненты цветности). При использовании некоторых инструментов кодирования цветовые плоскости могут кодироваться совместно. Например, компоненты яркости и цветности одного и того же изображения могут использовать общее дерево разбиения. Кодированные компоненты яркости и цветности могут быть объединены в одну единицу CU. При кодировании компонентов цветности можно использовать для предсказания значения пикселей или остаточные значения компоненты яркости (например кросс-компонентная линейная модель (CCLM, cross component linear model). На этапе обработки в качестве входных данных могут использоваться три компоненты яркости и цветности (например, при активном цветовом преобразовании (ACT)). Или же можно кодировать совместно две компоненты цветности (например, при совместном кодировании остатков цветности (JCCR, Joint Coding of Chroma Residuals).
[0110] Однако в некоторых приложениях видео является либо монохромным, либо несколько цветовых плоскостей видео требуется кодировать независимо друг от друга. Например, может потребоваться независимо кодировать цветовые компоненты видео в формате 4:4:4. Например, каждая цветовая компонента видео обрабатывается как монохромное видео. При кодировании видео зависимость между этими цветовыми компонентами отсутствует. Инструменты кодирования, зависящие от нескольких компонент (например ACT и JCCR) или работающие с компонентами цветности (например блочная дифференциальная импульсно-кодовая модуляция (BDPCM)), не используются. Кодирование видео основано на использовании инструментов монохромного кодирования, работающих с компонентой яркости.
[0111] Для поддержки кодирования видео с различными форматами цветности и видео, включающих в себя одну или более монохромных компонент, в некоторых вариантах осуществления определены два элемента синтаксиса, показанные в таблице 1.
[0112] Элемент синтаксиса chroma_format_idc указывает на форматы цветности. Определенные форматы цветности соответствуют различным структурам дискретизации компонент цветности. В частности, при монохромной дискретизации имеется только один массив отсчетов, который формально считается массивом яркости. При дискретизации 4:2:0 каждый из двух массивов цветности может быть вдвое меньше по высоте и ширине массива яркости. При дискретизации 4:2:2 каждый из двух массивов цветности может быть равен массиву яркости по высоте и вдвое меньше по ширине. Для удобства обозначений и терминологии в настоящем описании переменные и термины, связанные с этими массивами, именуются яркостью (luma) и цветностью (chroma). Два массива цветности называются Cb и Cr независимо от используемого способа представления цвета. Используемый способ представления цвета может быть указан с помощью синтаксиса, передаваемого в битовом потоке.
[0113] Элемент синтаксиса separate_colour_plane_flag указывает, требуется ли отдельно кодировать цветовые компоненты последовательности видео. Например, если флаг separate_colour_plane_flag равен 1, то это означает, что три цветовые компоненты формата цветности 4:4:4 могут кодироваться отдельно. Если флаг separate_colour_plane_flag равен 0, то это означает, что цветовые компоненты не кодируют по отдельности. Если флаг separate_colour_plane_flag отсутствует, то его значение принимается равным 0.
[0114] Если флаг separate_colour_plane_flag равен 1, то кодированное изображение состоит из трех отдельных компонент, каждая из которых состоит из кодированных отсчетов одной цветовой плоскости (например Y, Cb или Cr) и использует синтаксис монохромного кодирования. В этом случае каждая цветовая плоскость связана с определенным значением идентификатора color_plane_id. В процессах декодирования отсутствует зависимость между цветовыми плоскостями с разными значениями идентификатора color_plane_id. Например, в процессе декодирования монохромного изображения с одним значением идентификатора color_plane_id для межкадрового или внутрикадрового предсказания не используются данные из монохромных изображений с другими значениями идентификатора color_plane_id.
[0115] При дискретизации 4:4:4 каждый из двух массивов цветности имеет такие же высоту и ширину, что и массив яркости, и в зависимости от значения флага separate_colour_plane_flag может происходить следующее. Если флаг separate colour_plane_flag_равен 0, то три цветовые плоскости не обрабатываются отдельно как монохромные дискретизированные изображения. В противном случае (если флаг separate_colour_plane_flag равен 1), три цветовые плоскости обрабатываются отдельно как монохромные дискретизированные изображения.
[0116] В одном из примеров элементы в наборе параметров последовательности (SPS) передаются элементы синтаксиса chroma_format_idc и separate_colour_plane_flag, как показано в таблице 2. В строке 11 таблицы 2 передается параметр chroma_format_idc. В строке 12 проверяется, указывает ли параметр chroma_forma_idc на структуру дискретизации формата цветности 4:4:4. Если параметр chroma_format_idc имеет значение 3, то в строке 13 передается флаг separate_colour_plane_flag, указывающий, кодированы ли отдельно компоненты последовательности видео, ссылающейся на SPS из таблицы 2.
[0117] Если видео является монохромным или требуется кодировать каждую цветовую компоненту видео, как если бы каждая компонента была монохромной, инструменты совместного кодирования цветовых плоскостей или инструменты кодирования на основе компонента цветности не применяются и могут быть отключены. Однако, как показано в таблице 2, несколько элементов синтаксиса, управляющих этими неприменяемыми инструментами кодирования, передаются независимо от того, включено (или требуется) ли отдельное кодирование цветовых компонент. В результате некоторые инструменты кодирования, не применяемые к монохромным видео, по-прежнему могут быть включены, если для текущего видео используется раздельное кодирование различных цветовых плоскостей как монохромных видео, что вызывает нежелательные конфликты.
[0118] В частности, в строке 86 таблицы 2 элемент синтаксиса sps_joint_cbcr_enabled_flag передается независимо от флага sperate_colour_plane_flag, передаваемого в строке 13. Флаг sps_joint_cbcr_enabled_flag может указывать, включен ли инструмент совместного кодирования остатков цветности (JCCR) для кодирования видео. Поскольку два компонента цветности CU кодируются совместно, инструмент кодирования JCCR не является инструментом монохромного кодирования. Значение 0 флага sps_joint_cbcr_enabled_flag указывает на то, что совместное кодирование остатков цветности отключено. Значение 1 флага sps_joint_cbcr_enabled_flag указывает на то, что совместное кодирование остатков цветности включено.
[0119] Если инструмент BDPCM включен и используется формат цветности 4:4:4, то в строках 104-105 передается элемент синтаксиса sps_bdpcm_chroma_enabled_flag независимо от флага sperate_colour_plane_flag, который передается в строке 13. Флаг sperate_colour_jtlane_flag может указывать, включен ли инструмент BDPCM для цветности для кодирования видео. BDPCM для цветности представляет собой инструмент кодирования, который применяется к компоненту цветности, и поэтому может быть отключен, если видео является монохромным либо требуется кодировать каждый цветовой компонент видео, как если бы каждая компонента была монохромной.
[0120] Что касается семантики, то значение 1 флага sps_bdpcm_chroma_enabled_flag указывает на то, что в синтаксисе единицы кодирования для внутрикадровых единиц может присутствовать флаг intra_bdpcm_chroma_flag. Значение 0 флага sps_bdpcm_chroma_enabled_flag указывает на то, что в синтаксисе единицы кодирования для внутрикадровых единиц флаг intra_bdpcm_chroma_flag отсутствует. В этом случае значение флага sps_bdpcm_chroma_enabled_flag принимается равным 0. Значение 1 флага intra_bdpcm_chroma_flag указывает на то, что к текущим блокам кодирования цветности применяется BDPCM, т.е. преобразование пропускается, а режим внутрикадрового предсказания цветности определяется значением флага intra_bdpcm_chroma_dir_flag. Значение 0 флага intra_bdpcm_chroma_flag указывает на то, что инструмент BDPCM не применяется к текущим блокам кодирования цветности. Если флаг intra_bdpcm_chroma_flag отсутствует, то его значение принимается равным 0.
[0121] Если используется формат цветности 4:4:4, то в строках 142 и 144 таблицы 2 передается элемент синтаксиса sps_act_enabled_flag независимо от флага sperate_colour_plane_flag, который передается в строке 13. Флаг sps_act_enabled_flag может указывать, включен ли инструмент ACT для кодирования видео. К примеру, в цветовом формате (например RGB) исходного цветового пространства может быть высокая корреляция между тремя цветовыми компонентами. Путем преобразования цветового пространства цветовой формат может быть переведен из исходного цветового пространства в целевое цветовое пространство для уменьшения избыточности трех цветовых компонент. Например, в стандартах HEVC или VCC преобразование ACT может выполняться в пространственной области остатков для преобразования остаточных блоков из цветового пространства RGB в цветовое пространство YCgCo. Остаточные блоки трех компонент используются в качестве входных данных. Таким образом, преобразование ACT не применяется к монохромному видео или видео, в котором цветовые компоненты обрабатываются отдельно.
[0122] Что касается семантики, то флаг sps_act_enabled_flag указывает, включено ли адаптивное преобразование цвета. Если флаг sps_act_enabled_flag равен 1, адаптивное преобразование цвета может использоваться и в синтаксисе единицы кодирования может присутствовать флаг cu_act_enabled_flag. Если флаг sps_act_enabled_flag равен 0, адаптивное преобразование цвета не используется и в синтаксисе единицы кодирования флаг cu_act_enabled_flag отсутствует. Если флаг sps_act_enabled_flag отсутствует, то его значение принимается равным 0.
[0123] III. Отключение инструментов кодирования, не применимых к монохромному видео или видео с раздельно кодируемыми компонентами
[0124] В некоторых вариантах осуществления для поддержки кодирования монохромного видео и раздельного кодирования трех цветовых компонент, например, для видео в формате цветности 4:4:4, определяется переменная, указывающая на тип массива цветности. Эта переменная обозначается как ChromaArrayType. Переменная ChromaArrayType может использоваться для отключения инструментов кодирования, которые не применяются, если видео монохромное и если цветовые компоненты видео требуется кодировать по отдельности и независимо. В зависимости от значения флага separate_colour_plane_flag значение переменной ChromaArrayType может быть назначено следующим образом:
- если флаг separate_colour_plane_flag равен 0, переменная ChromaArrayType устанавливается равной параметру chroma_format_idc (например, 0, 1, 2 или 3);
- в противном случае (если флаг separate_colour_plane_flag равен 0), переменная ChromaArrayType устанавливается равной 0.
Если переменная ChromaArrayType равна 0, инструменты кодирования, включаемые флагами sps_joint_cbcr_enabled_flag, sps_act_enabled_flag, sps_bdpcm_chroma_enabled_flag и им подобными, могут быть отключены.
[0125] В таблице 3 представлена модифицированная версия синтаксиса SPS, показанного в таблице 2. В строках 84-85 таблицы 3 передается флаг sps_joint_cbcr_enabled_flag, если переменная ChromaArrayType не равна нулю. Если переменная ChromaArrayType равна нулю, из чего следует, что текущее видео, связанное с SPS таблицы 2, является монохромным или содержит отдельно кодированные компоненты, флаг sps_joint_cbcr_enabled_flag не передается и может быть принят равным нулю. Соответственно, совместное кодирование остатков цветности может быть отключено. По сравнению с примерами из таблицы 2, семантика флага sps_joint_cbcr_enabled_flag может быть изменена следующим образом: значение 0 флага sps_joint_cbcr_enabled_flag указывает на то, что совместное кодирование остатков цветности отключено. Значение 1 флага sps_joint_cbcr_enabled_flag указывает на то, что совместное кодирование остатков цветности включено. Если флаг sps_joint_cbcr_enabled_flag отсутствует, то его значение принимается равным 0.
[0126] Если включен инструмент BDPCM и переменная ChromaArrayType не равна нулю, в строках 102-103 таблицы 3 передается флаг sps_bdpcm_chroma_enabled_flag. Если переменная ChromaArrayType равна нулю, флаг sps_bdpcm_chroma_enabled_flag не передается и может быть принят равным нулю. Соответственно, инструмент BDPCM для цветности может быть отключен. Семантика флага sps_bdpcm_chroma_enabled_flag может оставаться такой же, как в примере таблицы 2.
[0127] Если видео имеет формат цветности 4:4:4, а переменная ChromaArrayType не равна нулю, в строках 140, 142 и 143 таблицы 3 подается флаг sps_act_enabled_flag. Если переменная ChromaArrayType равна нулю, флаг sps_act_enabled_flag не передается и может быть принят равным нулю. Соответственно, инструмент ACT может быть отключен. Семантика флага sps_act_enabled_flag может оставаться такой же, как в примере таблицы 2.
[0128] В некоторых вариантах осуществления используются альтернативные реализации для отключения инструментов кодирования, которые не применяются к монохромному видео или видео, содержащему отдельно кодированные компоненты.
[0129] В одном из вариантов осуществления для установки значения флага sps_act_enabled_flag равным 0, если значение chroma_format_idc равно 3 и переменная ChromaArrayType равна нулю, синтаксис флага sps_act_enabled_flag в таблице 4 (который скопирован из таблицы 3) может быть представлен альтернативным синтаксисом, показанным в таблице 5. Поскольку chroma_format_idc = = 3 и separate_colour_plan_flag = = 0 предполагает, что ChromaArrayType не 0, синтаксис в таблице 4 и таблице 5 может иметь одинаковый эффект. Следует отметить, что передача сигнала sps_act_enabled_flag не зависит от передачи флага sps_palette_enabled_flag в строке 141.
[0130] В одном из вариантов осуществления для установки значения флага sps_bdpcm_chroma_enabled_flag равным 0, если переменная ChromaArrayType равна нулю, синтаксис флага sps_bdpcm_chroma_enabled_flag в таблице 6 (который скопирован из таблицы 3) может быть представлен альтернативным синтаксисом, показанным в таблице 7. В таблице 7 значение флага sps_bdpcm_chroma_enabled_flag принимается равным 0, если переменная ChromaArrayType равна нулю или флаг sps_transpquant_bypass_flag для поддержки BDPCM без потерь равен 0. Если флаг sps_tranquant_bypass_flag равен 1, то он указывает на то, что на уровне CU необходимо активировать обход преобразования и квантования. В противном случае, если флаг sps_tranquant_bypass_flag равен 0, обход преобразования и квантования активировать не следует. Флаг sps_tranquant_bypass_flag может передаваться в SPS или приниматься равным 1 для кодирования без потерь, на что указывает другой флаг индикации кодирования без потерь на уровне SPS.
[0131] В одном из вариантов осуществления используется синтаксис, приведенный в таблице 7. Однако, в отличие от описанного выше варианта осуществления, семантика элемента синтаксиса sps_tranquant_bypass_flag определяется следующим образом. Если флаг sps_tranquant_bypass_flag равен 1, то он указывает на то, что на уровне CU можно (а не необходимо) активировать обход преобразования и квантования. В противном случае, если флаг sps_tranquant_bypass_flag равен 0, обход преобразования и квантования активировать не следует. Флаг sps_tranquant_bypass_flag может передаваться в SPS или приниматься равным 1 для кодирования без потерь, на что указывает другой флаг индикации кодирования без потерь на уровне SPS.
[0132] На фиг. 8 показан пример процесса (800) получения флагов инструментов кросс-компонентного кодирования или инструментов кодирования на основе компоненты цветности в битовом потоке кодированного видео. Процесс (800) может выполняться декодером. Процесс (800) может начинаться с этапа (S801) и переходить к этапу (S810).
[0133] На этапе (S810) в битовом потоке может быть получен элемент синтаксиса, который указывает, являются ли изображения последовательности монохромными или имеют отдельно кодированные компоненты. Например, элементом синтаксиса может быть параметр chroma_format_idc или флаг separate_color_plane_flag. Если параметр chroma_format_idc равен 0, то это означает, что изображения являются монохромными. Значение 1 флага separate_color_plane_flag может указывать на то, что изображения содержат отдельно кодированные компоненты. В обоих случаях переменная ChromaArrayType может быть равна 0.
[0134] Примером может служить последовательность изображений, относящаяся к SPS в таблице 3. Параметр chroma_format_idc передается в строке 11 таблицы 3. Если параметр chroma_format_idc имеет значение 0, то можно определить, что изображения являются монохромными. Если параметр chroma_format_idc равен нулю, в одном из примеров флаг separate color_plane_flag может не передаваться в строке 13 и может полагаться равным нулю. Соответственно, переменная ChromaArrayType может быть установлена равной значению параметра chroma_format_idc, которое в данном случае равно нулю.
[0135] Когда параметр chroma_format_idc имеет значение 3, что указывает на формат цветности изображений последовательности 4:4:4, флаг separate_colour_plane_flag может быть получен в строке 13. Если флаг separate colour_plane_flag имеет значение 1, что указывает на необходимость отдельного кодирования компонент, то можно утверждать, что изображения содержат отдельно кодированные компоненты. Переменная ChromaArrayType может быть установлена равной нулю.
[0136] В других случаях, если параметр chroma_format_idc, полученный в строке 11, имеет значение 1 или 2, или если параметр chroma_format_idc, полученный в строке 11, имеет значение 3, но флаг separate colour_plane_flag имеет значение 0, можно утверждать, что изображения не являются монохромными и содержат компоненты, которые не кодированы по отдельности. К изображениям могут быть применены инструменты совместного кодирования компонент или инструменты кодирования на основе цветности. Если параметр chroma_format_idc, полученный в строке 11 таблицы 3, имеет значение 1 или 2 (изображения не являются монохромными), флаг separate_colour_plane_flag может быть принят равным нулю. Соответственно, переменная ChromeArrayType может принять значение параметра chroma_format_idc, который равен 1 или 2 (не нулю). В сценарии, когда полученный параметр chroma_format_idc имеет значение 3, но флаг separate_colour_plane_flag имеет значение 0, переменная ChromeArrayType может принять значение параметра chroma_format_idc, который равен 3 (не нулю).
[0137] Если определено, что изображения являются монохромными или содержат отдельно кодированные компоненты, либо переменная ChromaArrayType определена равной нулю, могут быть выполнены этапы с (S820) по (S840). Элементы синтаксиса для управления инструментами совместного кодирования компонент или инструментом кодирования на основе цветности могут быть приняты равными нулю, чтобы отключить эти инструменты кодирования. В частности, каждый из флагов sps_joint_cbcr_enabled_flag, sps_bdpcm_chroma_enabled_flag и sps_act_enabled_flag принимается равным нулю.
[0138] Если определено, что изображения не являются монохромными или содержат компоненты, которые не кодированы по отдельности, либо переменная ChromaArrayType определена не равной нулю, могут быть выполнены этапы с (S850) по (S870). Элементы синтаксиса для управления инструментами совместного кодирования компонент или инструментом кодирования на основе цветности могут быть получены из битового потока. В частности, могут быть последовательно получены флаги sps_joint_cbcr_enabled_flag, sps_bdpcm_chroma_enabled_flag и sps_act_enabled_flag.
[0139] После выполнения этапа (S840) или (S870) процесс (800) может перейти к этапу (S899) и завершиться на этапе (S899).
[0140] На фиг. 9 показан процесс (900) отключения инструментов кодирования, которые не применимы к монохромному видео или видео, содержащему отдельно кодированные компоненты, согласно одному из вариантов осуществления изобретения. Процесс (900) может выполняться декодером, например декодером (710). Процесс (900) может начинаться с этапа (S901) и переходить к этапу (S910).
[0141] На этапе (S910) в битовом потоке может быть получен элемент синтаксиса, который указывает, являются ли изображения последовательности монохромными или содержат отдельно кодированные компоненты. Так, элементом синтаксиса может быть параметр chroma_format_idc или флаг separate_color_plane_flag в примере из таблицы 3. Если параметр chroma_format_idc равен 0, то это означает, что изображения являются монохромными. Значение 1 флага separate color_plane_flag может указывать на то, что изображения содержат отдельно кодированные компоненты. В обоих случаях (параметр chroma_format_idc равен 0 или флаг separate_color_plane_flag равен 1) переменная ChromaArrayType может быть равна 0.
[0142] Если определено, что последовательность изображений является монохромной или содержит отдельно кодированные компоненты, могут быть выполнены этапы (S920) и (S930). На этапе (S920) инструменты кодирования, которые используют в качестве входных данных несколько компонент изображений, могут быть отключены, например, путем определения значения элемента синтаксиса, управляющего каждым соответствующим инструментом кодирования. Примерами таких инструментов кодирования могут быть ACT, совместное кодирование остатков цветности и т.п.
[0143] На этапе (S930) инструменты кодирования, которые зависят от компоненты цветности изображений, могут быть отключены, например, путем определения значения элемента синтаксиса, управляющего каждым соответствующим инструментом кодирования. Примерами таких инструментов кодирования могут быть инструменты BDPCM для цветности. Процесс (900) может начинаться с этапа (S999) и переходить к этапу (S999).
[0144] Если на этапе (S910) определено, что последовательность изображений не является монохромной или не содержит отдельно кодированные компоненты, может быть выполнен этап (S940). На этапе (S940) элементы синтаксиса для управления инструментами совместного кодирования компонент или инструментом кодирования на основе цветности могут быть получены из битового потока. Будут ли передаваться элементы синтаксиса в битовом потоке для включения этих средств кодирования, может зависеть от других условий или других элементов синтаксиса, передаваемых в битовом потоке. Процесс (900) может начинаться с этапа (S999) и переходить к этапу (S999).
[0145] IV. Компьютерная система
[0146] Описанные выше методы могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций и физически храниться на одном или более машиночитаемых носителях. На фиг. 10 представлен пример компьютерной системы (1000), которая подходит для реализации некоторых вариантов осуществления настоящего изобретения.
[0147] Компьютерное программное обеспечение может быть кодировано с помощью любого подходящего машинного кода или компьютерного языка, который может быть подвергнут сборке, компиляции, объединению или аналогичным механизмам для создания кода, содержащего инструкции, которые могут быть выполнены непосредственно или посредством интерпретации, выполнения микрокода и тому подобных действий одним или более центральными процессорами (CPU), графическими процессорами (GPU) и другими подобными устройствами.
[0148] Инструкции могут выполняться на различных типах компьютеров или их компонентов, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и другие подобные устройства.
[0149] Показанные на фиг. 10 компоненты компьютерной системы (1000) приведены в качестве примера и не подразумевают каких-либо ограничений в отношении области применения или функциональности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Также не следует трактовать конфигурацию компонентов с точки зрения каких-либо зависимостей или требований, относящихся к любому из компонентов, показанных в примере осуществления компьютерной системы (1000), или их комбинации.
[0150] Компьютерная система (1000) может содержать определенные устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода с человеко-машинным интерфейсом может реагировать на ввод данных одним или более пользователями посредством, например, тактильного ввода (в частности нажатием клавиш, пролистыванием, движением информационных перчаток), звукового ввода (в частности голосом, хлопками), визуального ввода (в частности жестами), обонятельного ввода (не показан). Устройства человеко-машинного интерфейса могут также использоваться для захвата информации от определенных носителей, не обязательно непосредственно связанных с сознательным вводом данных человеком, например аудио (в частности речь, музыка, звуки окружающей среды), изображения (в частности сканированные изображения, фотографические изображения, полученные с помощью фотокамеры), видео (в частности двухмерное видео, трехмерное видео, включая стереоскопическое видео).
[0151] Устройства ввода человеко-машинного интерфейса могут содержать одно или более (показано только по одному) из следующих устройств: клавиатура (1001), мышь (1002), трекпад (1003), сенсорный экран (1010), информационная перчатка (не показана), джойстик (1005), микрофон (1006), сканер (1007), камера (1008).
[0152] Компьютерная система (1000) может также содержать определенные устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода с человеко-машинным интерфейсом могут стимулировать органы чувств одного или более пользователей, используя, например, тактильный вывод, звук, свет и запах/вкус. Такие устройства вывода человеко-машинного интерфейса могут содержать тактильные устройства вывода (в частности тактильная обратная связь посредством сенсорного экрана (1010), информационная перчатка (не показана) или джойстик (1005), но также могут использоваться устройства тактильной обратной связи, которые не служат устройствами ввода), устройства вывода звука (в частности динамики (1009), наушники (не показаны)), устройства визуального вывода (в частности экраны (1010), в том числе ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждый из которых может иметь или не иметь возможности сенсорного ввода, каждый из которых может иметь или не иметь возможности тактильной обратной связи, причем некоторые из них могут быть способны обеспечивать двухмерный визуальный вывод или более чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не показаны), голографические дисплеи и дымовые баки (не показаны)), а также принтеры (не показаны).
[0153] Компьютерная система (1000) может также содержать доступные пользователю устройства хранения данных и связанные с ними носители, в частности, оптические носители, включая CD/DVD ROM/RW (1020) с CD/DVD или подобные им носители (1021), флеш-накопители (1022), съемные жесткие диски или твердотельные накопители (1023), устаревшие магнитные носители, например ленты и дискеты (не показаны), специализированные устройства на основе ПЗУ/ASIC/ПЛУ, например защитные ключи (не показаны), и тому подобные устройства.
[0154] Специалисты в данной области также должны понимать, что в контексте настоящего изобретения термин «машиночитаемый носитель» не охватывает среду передачи, электромагнитные волны или другие непостоянные сигналы.
[0155] Компьютерная система (1000) может также содержать интерфейс (1054) для подключения к одной или более сетям связи (1055). Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того сети могут быть локальными, глобальными, городскими, транспортными и промышленными, работающими в режиме реального времени, устойчивыми к задержкам и т.д. Примерами сетей могут служить локальные сети, например Ethernet, беспроводные локальные сети, сотовые сети, например GSM, 3G, 4G, 5G, LTE и т.п., телевизионные проводные или беспроводные глобальные цифровые сети, в том числе кабельное телевидение, спутниковое телевидение и наземное вещательное телевидение, транспортные и промышленные сети, в том числе CANBus, и т.п. Для некоторых сетей обычно требуются внешние адаптеры сетевого интерфейса, которые подключаются к определенным портам данных общего назначения или периферийным шинам (1049) (например порты USB компьютерной системы (1000)); другие обычно интегрируются в ядро компьютерной системы (1000) путем подключения к системной шине, как описано ниже (например интерфейс Ethernet в компьютерной системе ПК или интерфейс сотовой сети в компьютерной системе смартфона). С помощью любой из этих сетей компьютерная система (1000) может взаимодействовать с другими объектами. Такое взаимодействие может быть однонаправленным только для приема (например вещательного телевидения), однонаправленным только для передачи (например определенным устройствам CANbus по шине CANbus) или двунаправленным, например с другими компьютерными системами с использованием локальных или глобальных цифровых сетей. Для каждой из описанных выше сетей и сетевых интерфейсов могут использоваться определенные протоколы и стеки протоколов.
[0156] Упомянутые выше устройства человеко-машинного интерфейса, доступные пользователю устройства хранения данных и сетевые интерфейсы могут быть подключены к ядру (1040) компьютерной системы (1000).
[0157] Ядро (1040) может содержать один или более центральных процессоров (CPU) (1041), графических процессоров (GPU) (1042), специализированные программируемых блоков обработки в виде программируемых логических интегральных схем (FPGA) (1043), аппаратных ускорителей для определенных задач
(1044), графических адаптеров (1050) и т.д. Эти устройства, наряду с постоянным запоминающим устройством (ПЗУ) (1045), оперативным запоминающим устройством (ОЗУ) (1046), внутренними устройствами хранения большой емкости, такими как недоступные пользователю внутренние жесткие диски, твердотельные накопители и тому подобные устройства (1047), могут быть подключены через системную шину (1048). В некоторых компьютерных системах системная шина (1048) может быть доступна посредством одного или более физических разъемов для возможности расширения за счет дополнительных CPU, GPU и т.п. Периферийные устройства могут подключаться либо непосредственно к системной шине ядра (1048), либо через периферийную шину (1049). Например, экран (1010) может быть подключен к графическому адаптеру (1050). Периферийная шина может быть построена на архитектуре PCI, USB и т.п.
[0158] CPU (1041), GPU (1042), FPGA (1043) и ускорители (1044) могут выполнять определенные инструкции, которые в совокупности могут образовывать вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ПЗУ (1045) или ОЗУ (1046). В ОЗУ (1046) могут также храниться временные данные, тогда как постоянные данные могут храниться, например, во внутреннем запоминающем устройстве (1047). Быстрое сохранение и извлечение в любом из запоминающих устройств может обеспечиваться за счет использования кеш-памяти, которая может быть тесно связана с одним или более CPU (1041), GPU (1042), запоминающим устройством (1047), ПЗУ (1045), ОЗУ (1046) и пр.
[0159] На машиночитаемом носителе может храниться компьютерный код для выполнения различных операций, выполняемых компьютером. Носитель и компьютерный код могут быть специально разработаны и сконструированы для целей настоящего изобретения или могут быть хорошо известны и доступны специалистам в области компьютерного программного обеспечения.
[0160] В качестве примера и не в целях ограничения компьютерная система с архитектурой (1000) и, в частности, ядро (1040) могут обеспечивать функциональные возможности в результате того, что процессор(-ы) (включая CPU, GPU, FPGA, ускорители и пр.) выполняет(-ют) программное обеспечение, записанное на одном или более физических машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступными пользователю запоминающими устройствами большой емкости, как было описано выше, а также определенными физическими запоминающими устройствами ядра (1040), такими как внутреннее запоминающее устройство ядра (1047) или ПЗУ (1045). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (1040). Машиночитаемый носитель может состоять из одного или более запоминающих устройств или микросхем в зависимости от конкретных потребностей. Под управлением программного обеспечения ядро (1040) и, в частности, входящие в него процессоры (включая CPU, GPU, FPGA и т.п.) могут выполнять определенные процессы или отдельные части определенных процессов, описанные в настоящем документе, включая определение структур данных, хранящихся в ОЗУ (1046), и модификацию таких структур данных в соответствии с процессами, определенными программным обеспечением. В дополнение или в качестве альтернативы компьютерная система может обеспечивать функциональные возможности за счет аппаратной или иным образом реализованной в электрической схеме логики (например ускоритель (1044)), которая может работать вместо программного обеспечения или вместе с ним для выполнения отдельных процессов или отдельных частей отдельных процессов, описанных в настоящем документе. Под программным обеспечением может подразумеваться логика, и наоборот, когда это уместно. Под машиночитаемым носителем может пониматься схема (например интегральная схема (ИС)), в которой хранится программное обеспечение для выполнения, или схема, воплощающая логику для выполнения, или и то, и другое, когда это уместно. Настоящее изобретение распространяется на любую приемлемую комбинацию аппаратных средств и программного обеспечения.
Приложение А: Сокращения
VTM - Versatile Video Coding Test Model; тестовая модель универсального кодирования видео
SPS - Sequence Parameter Set; набор параметров последовательности
BDPCM - Block-based Delta Pulse Code Modulation; блочная дифференциальная импульсно-кодовая модуляция
ACT - Adaptive Colour Transform; адаптивное цветовое преобразование
JEM - Joint Exploration Model; объединенная исследовательская модель
VVC - Versatile Video Coding; универсальное кодирование видео
BMS - Benchmark Set; эталонный набор
MV - Motion Vector; вектор движения
HEVC - High Efficiency Video Coding; высокоэффективное кодирование видео
SEI - Supplementary Enhancement Information; информация дополнительного улучшения
VUI - Video Usability Information; информация для удобства использования видео
GOPs - Groups of Pictures; группы изображений
TUs - Transform Units; единицы преобразования
PUs - Prediction Units; единицы предсказания
CTUs - Coding Tree Units; единицы дерева кодирования
CTBs - Coding Tree Blocks; блоки дерева кодирования
PBs - Prediction Blocks; блоки предсказания
HRD - Hypothetical Reference Decoder; гипотетический эталонный декодер
SNR - Signal Noise Ratio; отношение сигнал/шум
CPUs - Central Processing Units; центральные процессоры (ЦП)
GPUs - Graphics Processing Units; графические процессоры
CRT - Cathode Ray Tube; электронно-лучевая трубка (ЭЛТ)
LCD - Li quid-Crystal Display; жидкокристаллический дисплей
OLED - Organic Light-Emitting Diode; органический светоизлучающий диод
CD - Compact Disc; компакт-диск
DVD - Digital Video Disc; цифровой видеодиск
ROM - Read-Only Memory; постоянное запоминающее устройство (ПЗУ)
RAM - Random Access Memory; оперативное запоминающее устройство (ОЗУ)
ASIC - Application-Specific Integrated Circuit; интегральная схема специального назначения
PLD - Programmable Logic Device; программируемое логическое устройство (ПЛУ)
LAN - Local Area Network; локальная вычислительная сеть (ЛВС)
GSM - Global System for Mobile communications; глобальная система подвижной связи
LTE - Long-Term Evolution; долговременное развитие
CANBus - Controller Area Network Bus; шина сети контроллеров (шина CAN)
USB - Universal Serial Bus; универсальная последовательная шина
PCI - Peripheral Component Interconnect; взаимосвязь периферийных компонентов
FPGA - Field Programmable Gate Areas; программируемые логические интегральные схемы (ПЛИС)
SSD - Solid-State Drive, твердотельный привод
IC - Integrated Circuit; интегральная схема
CU - Coding Unit; единица кодирования
[0161] Хотя в настоящем изобретении описано несколько типовых вариантов осуществления, в объем изобретения также включаются их возможные изменения, модификации и различные замещающие аналоги. Таким образом следует понимать, что специалисты в данной области смогут разработать многочисленные системы и способы, которые, несмотря на то, что они явно не представлены или не описаны в настоящем документе, реализуют принципы настоящего изобретения и, следовательно, соответствуют его сущности и объему.