СПОСОБ И УСТРОЙСТВО ДЛЯ ВИДЕОКОДИРОВАНИЯ
METHOD AND DEVICE FOR VIDEO ENCODING

ВКЛЮЧЕНИЕ ПОСРЕДСТВОМ ССЫЛКИ
[0001] Настоящее изобретение испрашивает приоритет патентной заявки США №16/838,755, "Method and Apparatus for Video Coding", поданной 2 апреля 2020 г., которая испрашивает приоритет предварительной заявки США №62/829,435, "Modifications on the Secondary Transform", поданной 4 апреля 2019. Содержание предыдущих заявок, таким образом, включено посредством ссылки в полном объеме.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] В настоящей заявке описаны варианты осуществления, в целом относящиеся к видеокодированию.
УРОВЕНЬ ТЕХНИКИ
[0003] Описание уровня техники приведено здесь с целью представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники, лежащим в основе настоящего изобретения.
[0004] Кодирование и декодирование видеосигнала может осуществляться с использованием предсказания между изображениями с компенсацией движения. Цифровое видео без сжатия может включать в себя последовательность изображений, каждое из которых имеет пространственный размер, например, 1920×1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. Видео без сжатия предъявляет значительные требования к битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920×1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с. Час такого видео требует объема памяти более 600 ГБ.
[0005] Одной целью кодирования и декодирования видеосигнала может быть снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе или объему памяти, в ряде случаев на два порядка величины или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так чтобы реконструированный сигнал можно было использовать для намеченного применения. Сжатие с потерями широко применяется для видео. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями, чем пользователи телевещательных приложений. Достижимая степень сжатия может отражать, что более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.
[0006] Кодер и декодер видеосигнала может использовать методы из нескольких широких категорий, включающих в себя, например, компенсацию движения, преобразование, квантование и энтропийное кодирование.
[0007] Технологии видеокодека могут включать в себя методы, известные как внутреннее кодирование. При внутреннем (интра-) кодировании значения отсчетов представляются без ссылки на отсчеты или другие данные из ранее реконструированных опорных изображений. В некоторых видеокодеках изображение пространственно разделяется на блоки отсчетов. Когда все блоки отсчетов кодируются в интра-режиме, изображение называется интра-изображением. Интра-изображения и их производные, например, изображения, полученные в режиме независимого обновления декодера, могут использоваться для сброса состояния декодера, что позволяет использовать их как первое изображение в битовом потоке кодированного видео и видеосеансе, или как неподвижное изображение. Отсчеты интра-блока могут подвергаться преобразованию, и коэффициенты преобразования могут квантоваться до энтропийного кодирования. Внутреннее предсказание может быть методом минимизации значений отсчетов в области предварительного преобразования. В ряде случаев, чем меньше значение DC (постоянной составляющей) после преобразования, и чем меньше коэффициенты АС (переменных составляющих), тем меньше битов требуется при данном размере шага квантования для представления блока после энтропийного кодирования.
[0008] Традиционное внутреннее кодирование, известное, например, из технологий кодирования поколения MPEG-2, не использует внутреннего предсказания. Однако некоторые более современные технологии сжатия видео включают в себя методы, которые пытаются, например, из данных окружающих отсчетов и/или метаданных, полученных в ходе кодирования/декодирования пространственно соседних и предшествующих в порядке декодирования, блоков данных. Такие методы далее именуются методами "внутреннего предсказания". Заметим, что по меньшей мере в некоторых случаях внутреннее предсказание осуществляется только с использованием опорных данных из текущего изображения, подлежащего реконструкции, но не из опорных изображений.
[0009] Может существовать много разных форм внутреннего предсказания. Когда в данной технологии видеокодирования может использоваться более одного из таких методов, используемый метод может кодироваться в режиме внутреннего предсказания. В некоторых случаях, режимы могут иметь подрежимы и/или параметры, которые могут кодироваться по отдельности или включаться в кодовое слово режима. Использование того или иного кодового слова для данной комбинации режимов/подрежимов/параметров может оказывать влияние на выигрыш в эффективности кодирования посредством внутреннего предсказания и, следовательно, на технологию энтропийного кодирования, используемую для перевода кодовых слов в битовый поток.
[0010] Определенный режим внутреннего предсказания впервые был задан в Н.264, уточнен в Н.265, и дополнительно уточнен в более современных технологиях кодирования, например, модели совместного исследования (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. Поскольку блок имеет размер 4×4 отсчета, S44 располагается внизу справа. Дополнительно показаны опорные отсчеты, которые следуют аналогичной схеме нумерации. Опорный отсчет обозначается буквой R, своей Y-позицией (например, индексом строки) и Х-позицией (индексом столбца) относительно блока (104). В обоих Н.264 и Н.265 предсказанные отсчеты соседствуют с блоком, подлежащим реконструкции; поэтому нет необходимости использовать отрицательные значения.
[0013] Предсказание внутри изображения может работать путем копирования опорных значений отсчетов из соседних отсчетов, указанных сигнализируемым направлением предсказания. Например, предположим, что битовый поток кодированного видео включает в себя сигнализацию, которая, для этого блока, указывает направление предсказания, обозначенное стрелкой (102) - то есть отсчеты предсказываются из предсказанного(ых) отсчета или отсчетов, расположенного(ых) вверху справа, под углом 45 градусов к горизонтали. В этом случае отсчеты S41, S32, S23 и S14 предсказываются из одного и того же опорного отсчета R05. Затем отсчет S44 предсказывается из опорного отсчета R08.
[0014] В некоторых случаях значения множества опорных отсчетов можно комбинировать, например посредством интерполяция, для вычисления опорного отсчета; в особенности, когда направления не кратны 45 градусам.
[0015] Количество возможных направлений увеличивается по мере развития технологий видеокодирования. В Н.264 (2003 год) можно было представлять девять разных направлений. В Н.265 это количество увеличилось до 33 (2013 год), и JEM/VVC/BMS, во время составления данного описания, может поддерживать до 65 направлений. Были проведены эксперименты для выявления наиболее вероятных направлений, и некоторые методы энтропийного кодирования используются для представления этих вероятных направлений малым количеством битов, ценой утраты некоторых менее вероятных направлений. Дополнительно, сами направления иногда можно предсказывать из соседних направлений, используемых в соседних, уже декодированных, блоках.
[0016] На фиг. 1В показана диаграмма (180), где изображено 65 направлений внутреннего предсказания согласно JEM для иллюстрации увеличения количества направлений предсказания с течением времени.
[0017] Картирование битов направлений внутреннего предсказания в битовом потоке кодированного видео, которые представляют направление, может отличаться от одной технологии видеокодирования к другой технологии видеокодирования; и может охватывать, например, от простого прямого отображения направления предсказания до режима внутреннего предсказания, кодовых слов, сложных адаптивных схем, задействующих наиболее вероятные режимы, и аналогичных методов. Однако во всех случаях могут существовать некоторые направления, возникновение которых в видеоконтенте статистически менее вероятно, чем для некоторых других направлений. Поскольку целью сжатия видео является снижение избыточности, эти менее вероятные направления, в хорошо работающей технологии видеокодирования, будут представляться большим количеством битов, чем более вероятные направления.
[0018] Видеокодирование и декодирование могут осуществляться с использованием предсказание между изображениями с компенсацией движения. Компенсация движения может представлять собой метод сжатия с потерями и может относятся к методам, где блок данных отсчетов из ранее реконструированного изображения или его части (опорного изображения), подвергнутый пространственному сдвигу в направлении, указанном вектором движения (далее MV, motion vector), используется для предсказания вновь реконструированного изображения или части изображения. В ряде случаев опорное изображение может быть идентично реконструируемому в данный момент изображению. MV могут иметь два измерения X и Y или три измерения, причем третье указывает используемое опорное изображение (последнее, косвенно, может быть временным измерением).
[0019] В некоторых методах сжатия видео, MV, применимый к определенной области данных отсчетов, можно предсказывать из других MV, например, связанных с другой областью данных отсчетов, пространственно соседствующих с реконструируемой областью, и предшествующих этому MV в порядке декодирования. Это позволяет существенно сократить объем данных, необходимый для кодирования MV, тем самым устраняя избыточность и повышая степень сжатия. Предсказание MV может работать эффективно, например, благодаря тому, что при кодировании входного видеосигнала, полученного от камеры (известного как естественное видео) существует статистическая вероятность того, что области, более обширные, чем область, к которой применим один-единственный MV, движутся в аналогичном направлении, и поэтому в ряде случаев могут предсказываться с использованием аналогичного вектора движения, полученного из MV соседней области. В результате MV, найденный для данной области, оказывается аналогичным или идентичным MV, предсказанному из окружающих MV, и который, в свою очередь, может быть представлен, после энтропийного кодирования, меньшим количеством битов, чем использовалось бы при кодировании MV напрямую. В ряде случаев, предсказание MV может служить примером сжатия без потерь сигнала (а именно, MV), полученного из исходного сигнала (а именно: потока отсчетов). В других случаях предсказание MV само может быть с потерями, например, ввиду ошибок округления при вычислении предсказателя из нескольких окружающих MV.
[0020] Различные механизмы предсказания MV описаны в H.265/HEVC (ITU-T Rec. Н.265, "High Efficiency Video Coding", декабрь 2016). Из множества механизмов предсказания MV, предлагаемых в Н.265, здесь описан метод далее именуемый "пространственным объединением ".
[0021] Согласно фиг. 2, текущий блок (201) содержит отсчеты, найденные кодером в процессе поиска движения, для предсказания из предыдущего блока того же размера, который был пространственно сдвинут.Вместо того, чтобы кодировать этот MV напрямую, MV можно получить из метаданных, связанных с одним или более опорными изображениями, например, из самого последнего (в порядке декодирования) опорного изображения, с использованием MV, связанного с любым из пяти окружающих отсчетов, обозначенных А0, А1, и В0, B1, В2 (202-206, соответственно). В Н.265 предсказание MV может использовать предсказатели из того же опорного изображения, которое использует соседний блок.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0022] Аспекты изобретения предусматривают способы и устройства для кодирования/декодирования видеосигнала. В некоторых примерах устройство для видеодекодирования включает в себя схему обработки. Схема обработки может декодировать кодированную информацию единицы кодирования (CU, coding unit) из битового потока кодированного видео. Кодированная информация может указывать последнюю позицию ненулевых коэффициентов преобразования первого блока кодирования (СВ, coding block) в CU. Схема обработки может определять, сигнализируется ли индекс вторичного преобразования в кодированной информации, на основании последней позиции. Схема обработки может определять, осуществлять ли вторичное преобразование на втором СВ на основании того, определено ли, что индекс вторичного преобразования подлежит сигнализации в кодированной информации. В ответ на определение, что вторичное преобразование подлежит осуществлению, схема обработки может осуществлять вторичное преобразование на втором СВ и реконструкцию второго СВ. В ответ на определение, что вторичное преобразование не подлежит осуществлению, схема обработки может реконструировать второй СВ без осуществления вторичного преобразования на втором СВ.
[0023] Согласно варианту осуществления, схема обработки может определять, меньше ли горизонтальная компонента последней позиции первого порога, и меньше ли вертикальная компонента последней позиции второго порога. В ответ на определение, что горизонтальная компонента меньше первого порога и определение, что вертикальная компонента меньше второго порога, схема обработки может определять, что индекс вторичного преобразования не сигнализируется в кодированной информации.
[0024] Согласно варианту осуществления, схема обработки может определять, меньше ли порога сумма горизонтальной компоненты и вертикальной компоненты последней позиции. В ответ на определение, что сумма меньше порога, схема обработки может определять, что индекс вторичного преобразования не сигнализируется в кодированной информации.
[0025] Согласно варианту осуществления, схема обработки может определять, меньше ли порога минимум одна из (i) горизонтальной компоненты и (ii) вертикальной компоненты последней позиции. В ответ на определение, что минимум одна из них меньше порога, схема обработки может определять, что индекс вторичного преобразования не сигнализируется в кодированной информации.
[0026] Согласно варианту осуществления, схема обработки может определять, меньше ли порога максимум одна из (i) горизонтальной компоненты и (ii) вертикальной компоненты последней позиции. В ответ на определение, что максимум одна из них меньше порога, схема обработки может определять, что индекс вторичного преобразования не сигнализируется в кодированной информации.
[0027] Согласно варианту осуществления, первый СВ является блоком яркости, последняя позиция является последней позицией яркости для блока яркости. Схема обработки может определять, сигнализируется ли индекс вторичного преобразования, на основании последней позиции яркости.
[0028] Согласно варианту осуществления, первый СВ является блоком яркости. Последняя позиция является последней позицией яркости для блока яркости. CU дополнительно включает в себя блок цветности. Информация кодирования дополнительно указывает последнюю позицию цветности ненулевых коэффициентов преобразования для блока цветности. Схема обработки может определять, сигнализируется ли индекс вторичного преобразования, на основании последней позиции яркости и последней позиции цветности.
[0029] В некоторых примерах, устройство для видеодекодирования включает в себя схему обработки. Схема обработки может декодировать информацию кодирования единицы кодирования (CU) из битового потока кодированного видео. Информация кодирования может указывать размер CU. Схема обработки может определять, разрешено ли вторичное преобразование, на основании размера CU и порога размера CU, причем когда размер CU меньше или равен порогу размера CU, определяется, что вторичное преобразование разрешено, и когда размер CU больше порога размера CU, определяется, что вторичное преобразование не разрешено.
[0030] Согласно варианту осуществления, порог размера CU является максимальным размером единицы преобразования в CU.
[0031] Согласно варианту осуществления, когда размер CU меньше или равен порогу размера CU, схема обработки может определять количество ненулевых коэффициентов преобразования для по меньшей мере одного СВ в CU, причем размер каждого из по меньшей мере одного СВ больше или равен первому порогу. Когда количество ненулевых коэффициентов преобразования меньше второго порога, схема обработки может определять, что индекс вторичного преобразования не сигнализируется в кодированной информации. В примере, информация кодирования указывает, что формат цвета для CU представляет собой YUV 4:2:0. CU включает в себя блок яркости и два блока цветности. Схема обработки может определять, равно ли первое измерение блока яркости 4, и второе измерение блока яркости равно ли N, где N больше или равно 4. В ответ на определение, что первое и второе измерения равны 4 и N, соответственно, схема обработки может определять количество ненулевых коэффициентов преобразования только из блока яркости, где по меньшей мере один СВ является блоком яркости.
[0032] Согласно варианту осуществления, информация кодирования указывает, что формат цвета для CU представляет собой YUV 4:2:2. CU включает в себя блок яркости и два блока цветности. Схема обработки может определять, равен ли размер блока яркости 4×N, где N больше или равно 4. В ответ на определение, что размер блока яркости равен 4×N, где N и 4 - высота и ширина блока яркости, соответственно, схема обработки может определять количество ненулевых коэффициентов преобразования только из блока яркости. По меньшей мере один СВ является блоком яркости.
[0033] Аспекты изобретения также предусматривают компьютерно-считываемый носитель, где хранятся инструкции, которые, при выполнении компьютером для видеодекодирования, предписывают компьютеру осуществлять любой из способов видеодекодирования.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0034] Дополнительные особенности, характер и различные преимущества раскрытого изобретения будут понятны из нижеследующего подробного описания и прилагаемых чертежей, на которых:
[0035] фиг. 1А - схема иллюстративного подмножества режимов внутреннего предсказания;
[0036] фиг. 1В - схема направлений внутреннего предсказания;
[0037] фиг. 2 - схема текущего блока и окружающих его кандидатов на пространственное объединение в одном примере;
[0038] фиг. 3 - упрощенная блок-схема системы (300) связи в соответствии с вариантом осуществления;
[0039] фиг. 4 - упрощенная блок-схема системы (400) связи в соответствии с вариантом осуществления;
[0040] фиг. 5 - упрощенная блок-схема декодера в соответствии с вариантом осуществления;
[0041] фиг. 6 - упрощенная блок-схема кодера в соответствии с вариантом осуществления;
[0042] фиг. 7 - блок-схема кодера в соответствии с другим вариантом осуществления;
[0043] фиг. 8 - блок-схема декодера в соответствии с другим вариантом осуществления;
[0044] фиг. 9 - пример синтаксиса единицы преобразования в соответствии с вариантом осуществления;
[0045] фиг. 10А-10С - пример синтаксиса кодирования остатка в соответствии с вариантом осуществления;
[0046] фиг. 11А-11В - примеры первичных преобразований в соответствии с вариантом осуществления;
[0047] фиг. 12А-12Е - пример процесса преобразования в соответствии с вариантом осуществления;
[0048] фиг. 13 - иллюстративный процесс (1300) кодирования преобразования;
[0049] фиг. 14 - иллюстративный процесс (1400) кодирования преобразования;
[0050] фиг. 15А - иллюстративный процесс (1501) сокращенного прямого преобразования и иллюстративный процесс (1502) сокращенного обратного преобразования;
[0051] фиг. 15В-15С - примеры сокращенных вторичных преобразований в соответствии с некоторыми вариантами осуществления;
[0052] фиг. 15D - иллюстративная таблица (1550) выбора набора преобразований;
[0053] фиг. 16А - иллюстративные направления внутреннего предсказания и режимы внутреннего предсказания в соответствии с вариантом осуществления;
[0054] фиг. 16В - иллюстративные направления внутреннего предсказания и соответствующие режимы внутреннего предсказания в соответствии с вариантом осуществления;
[0055] фиг. 17 - пример 4 опорных линий для блока (1710) кодирования в соответствии с вариантом осуществления;
[0056] фиг. 18 таблица, которая связывает количество частей, на которые разбивается блок, с его размером в соответствии с вариантом осуществления;
[0057] фиг. 19 - пример разбиения блока, имеющего размер 4×8 или 8×4;
[0058] фиг. 20 - другой пример разбиения блока, имеющего размер больший, чем 4×8 и 8×4;
[0059] фиг. 21A-21D - примеры разных YUV-форматов;
[0060] фиг. 22 - блок-схема операций процесса (2200) в соответствии с вариантом осуществления;
[0061] фиг. 23 - блок-схема операций процесса (2300) в соответствии с вариантом осуществления;
[0062] фиг. 24 - схема компьютерной системы в соответствии с вариантом осуществления.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0063] На фиг. 3 показана упрощенная блок-схема системы (300) связи согласно варианту осуществления настоящего изобретения. Система (300) связи включает в себя множество оконечных устройств, которые могут осуществлять связь друг с другом, например, через сеть (350). Например, система (300) связи включает в себя первую пару оконечных устройств (310) и (320), соединенных между собой через сеть (350). В примере, приведенном на фиг. 3, первая пара оконечных устройств (310) и (320) осуществляет однонаправленную передачу данных. Например, оконечное устройство (310) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством (310)), для передачи в другое оконечное устройство (320) через сеть (350). Кодированные видеоданные могут передаваться в форме одного или более битовых потоков кодированного видео. Оконечное устройство (320) может принимать кодированные видеоданные из сети (350), декодировать кодированные видеоданные для восстановления видеоизображений и отображения видеоизображений согласно восстановленным видеоданным. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.
[0064] В другом примере, система (300) связи включает в себя вторую пару оконечных устройств (330) и (340) которые осуществляют двунаправленную передачу кодированных видеоданных, которые могут возникать, например, в ходе видеоконференцсвязи. Для двунаправленной передачи данных, в порядке примера, каждое оконечное устройство из оконечных устройств (330) и (340) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством) для передачи в другое оконечное устройство из оконечных устройств (330) и (340) через сеть (350). Каждое оконечное устройство из оконечных устройств (330) и (340) также может принимать кодированные видеоданные, передаваемые другим оконечным устройством из оконечных устройств (330) и (340), и может декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения на доступном устройстве отображения согласно восстановленным видеоданным.
[0065] В примере, приведенном на фиг. 3, оконечные устройства (310), (320), (330) и (340) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. Варианты осуществления настоящего изобретения находят применение для портативных компьютеров, планшетных компьютеров, медиаплееров и/или специального оборудования для видеоконференцсвязи. Сеть (350) представляет любое количество сетей, которые переносят кодированные видеоданные между оконечными устройствами (310), (320), (330) и (340), включая, например, проводные и/или беспроводные сети связи. Сеть (350) связи позволяет обмениваться данными в режиме канальной коммутации и/или пакетной коммутации. Иллюстративные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или интернет. В целях настоящего рассмотрения, архитектура и топология сети (350) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.
[0066] На фиг. 4 показано, в порядке примера применения раскрытого изобретения, размещение видеокодера и видеодекодера в окружении потоковой передачи. Раскрытое изобретение может быть в равной степени применимо к другим применениям обработки видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, в том числе CD, DVD, карте памяти и т.п., и т.д.
[0067] Система потоковой передачи может включать в себя подсистему (413) захвата, которая может включать в себя источник (401) видеосигнала, например, цифровую камеру, создающую, например, поток (402) видеоизображений, не подвергнутых сжатию. Например, поток (402) видеоизображений включает в себя отсчеты, взятые цифровой камерой. Поток (402) видеоизображений, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (404) (или битовыми потоками кодированного видео), может обрабатываться электронным устройством (420), которое включает в себя видеокодер (403), подключенный к источнику (401) видеосигнала. Видеокодер (403) может включать в себя оборудование, программное обеспечение или их комбинацию для обеспечения или реализации аспектов раскрытого изобретения, как более подробно описано ниже. Кодированные видеоданные (404) (или битовый поток (404) кодированного видео), изображенные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком (402) видеоизображений, могут храниться на потоковом сервере (405) для использования в будущем. Одна или более клиентских подсистем потоковой передачи, например, клиентские подсистемы (406) и (408) на фиг. 4, могут осуществлять доступ к потоковому серверу (405) для извлечения копий (407) и (409) кодированных видеоданных (404). Клиентская подсистема (406) может включать в себя видеодекодер (410), например, в электронном устройстве (430). Видеодекодер (410) декодирует входящую копию (407) кодированных видеоданных и создает исходящий поток (411) видеоизображений, который может визуализироваться на дисплее (412) (например, отображающем экране) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи, кодированные видеоданные (404), (407) и (409) (например, битовые потоки видео) могут кодироваться согласно тем или иным стандартам кодирования/сжатия видео. Примеры этих стандартов включают в себя ITU-Т Recommendation Н.265. Например, разрабатывается стандарт видеокодирования под официальным названием "универсальное видеокодирование" (VVC, универсальное видеокодирование). Раскрытое изобретение может использоваться в контексте VVC.
[0068] Заметим, что электронные устройства (420) и (430) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (420) может включать в себя видеодекодер (не показан), и электронное устройство (430) также может включать в себя видеокодер (не показан).
[0069] На фиг. 5 показана блок-схема видеодекодера (510) согласно варианту осуществления настоящего изобретения. Видеодекодер (510) может входить в состав электронного устройства (530). Электронное устройство (530) может включать в себя приемник (531) (например, приемные схемы). Видеодекодер (510) может использоваться вместо видеодекодера (410) в примере, приведенном на фиг. 4.
[0070] Приемник (531) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (510); в том же или другом варианте осуществления, по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (501), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (531) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут ретранслироваться на соответствующие использующие и объекты (не показаны). Приемник (531) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети, буферная память (515) может быть подключена между приемником (531) и энтропийным декодером / анализатором (520) (далее "анализатором (520)"). В некоторых вариантах применения буферная память (515) входит в состав видеодекодера (510). В других она может не входить в состав видеодекодера (510) (не показан). В прочих вариантах может существовать буферная память (не показана) вне видеодекодера (510), например, для борьбы с джиттером сети, помимо другой буферной памяти (515) в составе видеодекодера (510), например, для управления хронированием проигрывания. Когда приемник (531) принимает данные от устройства хранения/ретрансляции с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (515) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшей попытки, например, Интернете, буферная память (515) может требоваться, может быть сравнительно большой и может иметь преимущественно адаптивный размер, и по меньшей мере частично может быть реализована в операционной системе или аналогичных элементах (не показаны) вне видеодекодера (510).
[0071] Видеодекодер (510) может включать в себя анализатор (520) для реконструкции символов (521) из кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (510), и возможно информацию для управления устройством визуализации, например, устройством (512) визуализации (например, отображающим экраном), которое не является неотъемлемой частью электронного устройства (530), но может быть подключено к электронному устройству (530), как показано на фиг.5. Информация управления для устройств(а) визуализации может представлять собой сообщения информации дополнительного улучшения (SEI, Supplemental Enhancement Information) или фрагменты набора параметров информации пригодности видео (VUI, Video Usability Information) (не показаны). Анализатор (520) может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать различным принципам, в том числе кодированию с переменной длиной серии, кодированию по Хаффману, арифметическому кодированию с контекстной чувствительностью или без нее и т.д. Анализатор (520) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основании по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP, Groups of Pictures), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU, Coding Units), блоки, единицы преобразования (TU, Transform Units), единицы предсказания (PU, Prediction Units) и т.д. Анализатор (520) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[0072] Анализатор (520) может осуществлять операцию энтропийного декодирования / анализа видеопоследовательности, принятой из буферной памяти (515), для создания символов (521).
[0073] Для реконструкции символов (521) могут использоваться несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например: интер- и интра-изображения, интер- и интра-блока) и других факторов. Какие модули используются, и как, может определяться информацией управления подгруппами, выделенной из кодированной видеопоследовательности анализатором (520). Поток такой информации управления подгруппами между анализатором (520) и множественными модулями для простоты в дальнейшем не показан.
[0074] Помимо ранее упомянутых функциональных блоков, видеодекодер (510) может принципиально делиться на несколько функциональных модулей, как описано ниже. В практической реализации, работающей в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания раскрытого изобретения уместно принципиальное деление на нижеперечисленные функциональные модули.
[0075] Первым модулем является модуль (551) масштабирования / обратного преобразования. Модуль (551) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую в себя используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (521) от анализатора (520). Модуль (551) масштабирования / обратного преобразования может выводить блоки, содержащие значения отсчетов, которые можно вводить в агрегатор (555).
[0076] В ряде случаев, выходные отсчеты блока (551) масштабирования / обратного преобразования могут относиться к внутренне-кодированному блоку; то есть блоку, который не использует предсказанную информацию из ранее реконструированных изображений, но может использовать предсказанную информацию из ранее реконструированных частей текущего изображения. Такая предсказанная информация может обеспечиваться модулем (552) предсказания внутри изображения. В ряде случаев модуль (552) предсказания внутри изображения генерирует блок такого же размера и формы, как блок, подлежащий реконструкции, с использованием информации ранее реконструированного окружения, извлеченной из буфера (558) текущего изображения. Буфер (558) текущего изображения буферизует, например, частично реконструированное текущее изображение и/или полностью реконструированное текущее изображение. Агрегатор (555) в ряде случаев добавляет, для каждого отсчета, информацию предсказания, сгенерированную модулем (552) внутреннего предсказания, в информацию выходных отсчетов, обеспеченную модулем (551) масштабирования / обратного преобразования.
[0077] В других случаях выходные отсчеты модуля (551) масштабирования / обратного преобразования могут относиться к внутренне кодированному блоку, возможно, с компенсацией движения. В таком случае, модуль (553) предсказания с компенсацией движения может осуществлять доступ к памяти (557) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (521), относящимися к блоку, эти отсчеты могут добавляться агрегатором (555) к выходному сигналу модуля (551) масштабирования / обратного преобразования (в этом случае именуемому остаточными отсчетами или остаточным сигналом) для генерации информации выходных отсчетов. Адреса в памяти (557) опорных изображений, откуда модуль (553) предсказания с компенсацией движения извлекает предсказанные отсчеты, могут регулироваться векторами движения, доступными модулю (553) предсказания с компенсацией движения, в форме символов (521), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (557) опорных изображений, когда используются точные векторы движения под-отсчетов, механизмы предсказания векторов движения и т.д.
[0078] К выходным отсчетам агрегатора (555) можно применять различные методы контурной фильтрации в модуле (556) контурного фильтра. Технологии сжатия видео могут включать в себя технологии деблокирующего фильтра под управлением параметров, включенных в кодированную видеопоследовательность (также именуемую битовым потоком кодированного видео) и становиться доступными модулю (556) контурного фильтра в качестве символов (521) от анализатора (520), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.
[0079] Модуль (556) контурного фильтра может выдавать поток отсчетов, который может поступать на устройство (512) визуализации, а также сохраняться в памяти (557) опорных изображений для использования в будущем предсказании между изображениями.
[0080] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью реконструировано, и кодированное изображение идентифицировано как опорное изображение (например, анализатором (520)), буфер (558) текущего изображения может становиться частью памяти (557) опорных изображений, и свежий буфер текущего изображения может повторно выделяться до начала реконструкции следующего кодированного изображения.
[0081] Видеодекодер (510) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видео, например, по стандарту ITU-T Rec. Н.265. Кодированная видеопоследовательность может согласовываться с синтаксисом, заданным используемой/ым технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность может придерживаться как синтаксиса технологии или стандарта сжатия видео, так и профилей, задокументированных в технологии или стандарте сжатия видео. В частности, профиль может выбирать некоторые инструменты как инструменты, доступные для использования только под этим профилем, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видео. В ряде случаев, уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемого в кодированной видеопоследовательности.
[0082] Согласно варианту осуществления, приемник (531) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (510) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, слои улучшения во времени, пространстве или отношения сигнал/шум (SNR, отношение сигнал-шум), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.
[0083] На фиг. 6 показана блок-схема видеокодера (603) согласно варианту осуществления настоящего изобретения. Видеокодер (603) входит в состав электронного устройства (620). Электронное устройство (620) включает в себя передатчик (640) (например, передающую схему). Видеокодер (603) может использоваться вместо видеокодера (403) в примере, приведенном на фиг. 4.
[0084] Видеокодер (603) может принимать отсчеты видео от источника (601) видеосигнала (который не входит в состав электронного устройства (620) в примере, показанном на фиг.6), который может захватывать видеоизображение(я), подлежащее(ие) кодированию видеокодером (603). В другом примере источник (601) видеосигнала входит в состав электронного устройства (620).
[0085] Источник (601) видеосигнала может обеспечивать исходную видеопоследовательность, подлежащую кодированию видеокодером (603) в форме потока отсчетов цифрового видео любой подходящей битовой глубины (например: 8 бит, 10 бит, 12 бит, …), любого цветового пространства (например, ВТ.601 Y CrCB, RGB, …), и любой подходящей структуры дискретизации (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе службы массовой информации источником (601) видеосигнала может быть запоминающее устройство, где хранится ранее подготовленное видео. В система видеоконференцсвязи источником (601) видеосигнала может быть камера, которая захватывает информацию локального изображения как видеопоследовательность. Видеоданные могут обеспечиваться как множество отдельных изображений, которые создают ощущение движения при наблюдении в последовательности. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемых структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники нетрудно понять соотношение между пикселями и отсчетами. Нижеследующее описание посвящено отсчетам.
[0086] Согласно варианту осуществления, видеокодер (603) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (643) в реальном времени или с учетом любых других временных ограничений, налагаемых применением. Установление надлежащей скорости кодирования является одной из функций контроллера (650). В некоторых вариантах осуществления контроллер (650) управляет другими функциональными модулями, как описано ниже, и функционально подключен к другим функциональным модулям. Подключение для простоты не показано. Параметры, установленные контроллером (650), могут включать в себя параметры, связанные с регулировкой скорости передачи (пропуск изображения, квантователь, значение лямбда, применяемое при оптимизации скорости-искажения, …), размер изображения, схему групп изображений (GOP), максимальную зону поиска вектора движения и т.д. Контроллер (650) может быть выполнен с возможностью иметь другие подходящие функции, относящиеся к видеокодеру (603), оптимизированному для той или иной конструкции системы.
[0087] В некоторых вариантах осуществления видеокодер (603) выполнен с возможностью работать в петле кодирования. В качестве очень упрощенного описания, в порядке примера, петля кодирования может включать в себя исходный кодер (630) (например, отвечающий за создание символов, например, потока символов, на основе входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локальный) декодер (633), встроенный в видеокодер (603). Декодер (633) реконструирует символы для создания данных отсчетов, аналогично тому, как это делал бы (удаленный) декодер (поскольку любое сжатие между символами и битовым потоком кодированного видео происходит без потерь в технологиях сжатия видео, рассматриваемых в раскрытом изобретении). Реконструированный поток отсчетов (данные отсчетов) поступают в память (634) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, не зависящим от положения декодера (локального или удаленного), содержимое памяти (634) опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, предсказанная часть кодера "видит" в качестве отсчетов опорного изображения точно такие же значения отсчетов, как "видел" бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронизма опорного изображения (и, в итоге, дрейф, если синхронизм не удается поддерживать, например, вследствие канальных ошибок) используется также в некоторых связанных областях техники.
[0088] "Локальный" декодер (633) может действовать таким же образом, как "удаленный" декодер, например, видеодекодер (510), подробно вышеописанный со ссылкой на фиг. 5. Однако, опять же, согласно фиг. 5, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (645) и анализатором (520) может осуществляться без потерь, части энтропийного декодирования видеодекодера (510), включающие в себя буферную память (515) и анализатор (520), могут быть не полностью реализованы в локальном декодере (633).
[0089] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализа/энтропийного декодирования, также обязательно должна присутствовать, по существу в идентичной функциональной форме, в соответствующем кодере. По этой причине раскрытое изобретение сконцентрировано на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодированная. Только в некоторых областях требуется более детальное описание, которое приведено ниже.
[0090] Согласно некоторым примерам, в ходе работы исходный кодер (630) может осуществлять кодирование с предсказанием и компенсацией движения, при котором входное изображение кодируется с предсказанием на основании одного или более ранее кодированных изображений из видеопоследовательности, указанных как "опорные изображения". Таким образом, машина (632) кодирования кодирует различия между пиксельными блоками входного изображения и пиксельными блоками опорного изображения(й), которое(ые) может(ут) выбираться в качестве предсказанной(ых) ссылки(ок) на входное изображение.
[0091] Локальный видеодекодер (633) может декодировать кодированные видеоданные изображений, которые могут быть указаны как опорные изображения, на основе символов, созданных исходным кодером (630). Операции машины (632) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 6), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (633) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных изображениях, и может предписывать сохранение реконструированных опорных изображений в кэш-памяти (634) опорных изображений. Таким образом, видеокодер (603) может локально сохранять копии реконструированных опорных изображений, имеющие такое же содержимое, как реконструированные опорные изображения, которые будут получены видеодекодером на стороне приемника (в отсутствие ошибок передачи).
[0092] Предсказатель (635) может осуществлять поиски предсказания для машины (632) кодирования. Таким образом, для нового изображения, подлежащего кодированию, предсказатель (635) может искать в памяти (634) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных пиксельных блоков) или те или иные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (635) может работать на основе "блоки отсчетов х пиксельные блоки" для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предсказателем (635), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (634) опорных изображений.
[0093] Контроллер (650) может управлять операциями кодирования исходного кодера (630), включая, например, установление параметров и параметров подгруппы, используемых для кодирования видеоданных.
[0094] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (645). Энтропийный кодер (645) переводит символы, сгенерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно технологиям, например, кодирования по Хаффману, кодирования с переменной длиной серии, арифметического кодирования и т.д.
[0095] Передатчик (640) может буферизовать кодированную(ые) видеопоследовательность(и), созданные энтропийным кодером (645), для подготовки к передаче через канал (660) связи, который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Передатчик (640) может объединять кодированные видеоданные от видеокодера (603) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).
[0096] Контроллер (650) может управлять работа видеокодера (603). В ходе кодирования контроллер (650) может назначать каждому кодированному изображению тот или иной тип кодированного изображения, который может определять методы кодирования, применимые к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы изображения:
[0097] Интра-изображение (I-изображение), которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают разные типы интра-изображений, включая, например, изображения в формате независимого обновления декодера ("IDR", Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.
[0098] Предсказанное изображение (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[0099] Двунаправленно-предсказанное изображение (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, мультипредсказанные изображения могут использовать более двух опорных изображений и связанные метаданные для реконструкции единого блока.
[0100] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться предиктивно со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки I-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (пространственным предсказанием или внутренним предсказанием). Пиксельные блоки Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[0101] Видеокодер (603) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, например, ITU-T Rec. Н.265. В своей работе видеокодер (603) может осуществлять различные операции сжатия, в том числе операции предиктивного кодирования, которые используют временные и пространственные избыточности во входной видеопоследовательности. Поэтому кодированные видеоданные могут согласовываться с синтаксисом, заданным используемой технологией или стандартом видеокодирования.
[0102] Согласно варианту осуществления, передатчик (640) может передавать дополнительные данные с кодированным видео. Исходный кодер (630) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR слои улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и т.д.
[0103] Видео может захватываться как множество исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно именуемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а предсказание между изображениями использует (временную или иную) корреляцию между изображениями. Например, конкретное изображение, подлежащее кодированию/декодированию, которое именуется текущим изображением, разбивается на блоки. Когда блок в текущем изображении аналогичен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может кодироваться вектором, который именуется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множественных опорных изображений.
[0104] В некоторых вариантах осуществления, метод двойного предсказания может использоваться в предсказании между изображениями. Согласно методу двойного предсказания, используются два опорных изображения, например, первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может предсказываться комбинацией первого опорного блока и второго опорного блока.
[0105] Дополнительно, метод режима объединения может использоваться в предсказании между изображениями для повышения эффективности кодирования.
[0106] Согласно некоторым вариантам осуществления изобретения, предсказания, например, предсказания между изображениями и предсказания внутри изображения, осуществляются поблочно. Например, согласно стандарту HEVC, изображение в последовательности видеоизображений разбивается на единицы дерева кодирования (CTU, coding tree units) для сжатия, CTU в изображении имеют одинаковый размер, например, 64×64 пикселя, 32×32 пикселя или 16×16 пикселей. В общем случае CTU включает в себя три блока дерева кодирования (СТВ, coding tree blocks), а именно, один СТВ яркости и два СТВ цветности. Каждый CTU может рекурсивно делиться квадрадеревом на одну или несколько единиц кодирования (CU). Например, CTU размером 64×64 пикселя может делиться на одну CU размером 64×64 пикселя или 4 CU размером 32×32 пикселя или 16 CU размером 16×16 пикселей. Например, каждая CU анализируется для определения типа предсказания для CU, например, типа внешнего предсказания или типа внутреннего предсказания. CU делится на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. В целом, каждая PU включает в себя блок (РВ) предсказания яркости и два РВ цветности. Согласно варианту осуществления, операция предсказания при кодировании (кодировании/декодировании) осуществляется в единице блока предсказания. Используя блок предсказания яркости в качестве примера блока предсказания, блок предсказания включает в себя матрицу значений (например, значений яркости) для пикселей, например, 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.
[0107] На фиг. 7 показана схема видеокодера (703) согласно другому варианту осуществления изобретения. Видеокодер (703) выполнен с возможностью приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое составляет часть кодированной видеопоследовательности. Например, видеокодер (703) используется вместо видеокодера (403) в примере, приведенном на фиг. 4.
[0108] В примере HEVC видеокодер (703) принимает матрицу значений отсчетов для блока обработки, например, блока предсказания 8×8 отсчетов и т.п. Видеокодер (703) определяет, наилучшим ли образом кодируется блок обработки в интра-режиме, интеррежиме или режиме двойного предсказания с использованием, например, оптимизации скорость-искажения. Когда блок обработки подлежит кодированию в интра-режиме, видеокодер (703) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение; и когда блок обработки подлежит кодированию в интер-режиме или режиме двойного предсказания, видеокодер (703) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях видеокодирования, режим объединения может быть подрежимом предсказания между изображениями, где вектор движения выводится из одного или более предсказателей вектора движения без привлечения кодированного компонента вектора движения вне предсказателей. В некоторых других технологиях видеокодирования может присутствовать компонент вектора движения, применимый к данному блоку. В порядке примера, видеокодер (703) включает в себя другие компоненты, например, модуль определения режима (не показан) для определения режима блоков обработки.
[0109] В примере, приведенном на фиг. 7, видеокодер (703) включает в себя интер-кодер (730), интра-кодер (722), вычислитель (723) остатка, переключатель (726), кодер (724) остатка, общий контроллер (721) и энтропийный кодер (725), соединенные друг с другом как показано на фиг. 7.
[0110] Интер-кодер (730) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоками в предыдущих изображениях и более поздних изображениях), генерации информации внешнего предсказания (например, описания избыточной информации согласно методу внутреннего кодирования, векторов движения, информации режима объединения), и вычисления результатов внешнего предсказания (например, блока предсказания) на основании информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорными изображениями являются декодированные опорные изображения, которые декодируются на основе информации кодированного видео.
[0111] Интра-кодер (722) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), в ряде случаев сравнения блока с блоками, ранее кодированными в том же изображении, генерирования квантованных коэффициентов после преобразования, и в ряде случаев также информации внутреннего предсказания (например, информации направления внутреннего предсказания согласно одному или более методам внутреннего кодирования). В порядке примера, интра-кодер (722) также вычисляет результаты внутреннего предсказания (например, блок предсказания) на основании информации внутреннего предсказания и опорных блоков в том же изображении.
[0112] Общий контроллер (721) выполнен с возможностью определения общих данных управления и управления другими компонентами видеокодера (703) на основе общих данных управления. Например, общий контроллер (721) определяет режим блока и выдает сигнал управления на переключатель (726) на основе режима. Например, когда режим является интра-режимом, общий контроллер (721) управляет переключателем (726) для выбора результата интра-режима для использования вычислителем (723) остатка, и управляет энтропийным кодером (725) для выбора информации внутреннего предсказания и включения информации внутреннего предсказания в битовый поток; и когда режим является интер-режимом, общий контроллер (721) управляет переключателем (726) для выбора результата внешнего предсказания для использования вычислителем (723) остатка, и управляет энтропийным кодером (725) для выбора информации внешнего предсказания и включения информации внешнего предсказания в битовый поток.
[0113] Вычислитель (723) остатка выполнен с возможностью вычисления разности (данных остатка) между принятым блоком и результатами предсказания, выбранными из интра-кодера (722) или интер-кодера (730). Кодер (724) остатка выполнен с возможностью действовать на основе данных остатка для кодирования данных остатка для генерации коэффициентов преобразования. Например, кодер (724) остатка выполнен с возможностью преобразования данных остатка из пространственной области в частотную область и генерирования коэффициентов преобразования. Затем коэффициенты преобразования подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления видеокодер (703) также включает в себя декодер (728) остатка. Декодер (728) остатка выполнен с возможностью осуществления обратного преобразования и генерирования декодированных данных остатка. Декодированные данные остатка могут надлежащим образом использоваться интра-кодером (722) и интер-кодером (730). Например, интеркодер (730) может генерировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, и интра-кодер (722) может генерировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки надлежащим образом обрабатываются для генерации декодированных изображений, и декодированные изображения могут буферизоваться в схеме памяти (не показана) и в некоторых примерах использоваться в качестве опорных изображений.
[0114] Энтропийный кодер (725) выполнен с возможностью форматирования битового потока так, чтобы он включал в себя кодированный блок. Энтропийный кодер (725) выполнен с возможностью включать различную информацию согласно подходящему стандарту, например, стандарту HEVC. Например, энтропийный кодер (725) выполнен с возможностью включать общие данные управления, выбранную информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), информацию остатка и другую подходящую информацию в битовый поток. Заметим, что, согласно раскрытому изобретению, при кодировании блока в подрежиме объединения любого из интер-режима и режима двойного предсказания, информация остатка отсутствует.
[0115] На фиг. 8 показана схема видеодекодера (810) согласно другому варианту осуществления изобретения. Видеодекодер (810) выполнен с возможностью приема кодированных изображений, составляющих часть кодированной
видеопоследовательности, и декодирования кодированных изображений для генерации реконструированных изображений. Например, видеодекодер (810) используется вместо видеодекодера (410) в примере, приведенном на фиг. 4.
[0116] В примере, приведенном на фиг. 8, видеодекодер (810) включает в себя энтропийный декодер (871), интер-декодер (880), декодер (873) остатка, модуль (874) реконструкции и интра-декодер (872), соединенные друг с другом как показано на фиг. 8.
[0117] Энтропийный декодер (871) может быть выполнен с возможностью реконструкции, из кодированного изображения, некоторых символов, которые представляют синтаксические элементы, образующие кодированное изображение. Такие символы могут включать в себя, например, режим кодирования блока (например, интра-режим, интер-режим, режим двойного предсказания, причем последние два в подрежиме объединения или другом подрежиме), информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, используемые для предсказания интра-декодером (872) или интер-декодером (880), соответственно, информацию остатка в форме, например, квантованных коэффициентов преобразования и т.п. Например, когда режим предсказания является режимом внутреннего или двойного предсказания, информация внешнего предсказания поступает на интер-декодер (880); а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания поступает на интра-декодер (872). Информация остатка может подвергаться обратному квантованию и поступать на декодер (873) остатка.
[0118] Интер-декодер (880) выполнен с возможностью приема информации внешнего предсказания и генерирования результатов внешнего предсказания на основании информации внешнего предсказания.
[0119] Интра-декодер (872) выполнен с возможностью приема информации внутреннего предсказания и генерирования результатов предсказания на основании информации внутреннего предсказания.
[0120] Декодер (873) остатка выполнен с возможностью осуществления обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (873) остатка также может требовать некоторой информации управления (включать параметр квантователя (QP, Quantizer Parameter)), и эта информация может обеспечиваться энтропийным декодером (871) (путь данных не показан, поскольку это может быть только информация управления малого объема).
[0121] Модуль (874) реконструкции выполнен с возможностью объединения, в пространственной области, остатка на выходе декодера (873) остатка и результатов предсказания (на выходе модулей внешнего или внутреннего предсказания, в зависимости от ситуации) для формирования реконструированного блока, который может входить в состав реконструированного изображения, которое, в свою очередь, может входить в состав реконструированного видео. Заметим, что другие подходящие операции, например, операция деблокирования и т.п., может осуществляться для повышения визуального качества.
[0122] Заметим, что видеокодеры (403), (603) и (703) и видеодекодеры (410), (510) и (810) могут быть реализованы с использованием любого подходящего метода. Согласно варианту осуществления, видео кодеры (403), (603) и (703) и видеодекодеры (410), (510) и (810) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления видеокодеры (403), (603) и (703) и видеодекодеры (410), (510) и (810) могут быть реализованы с использованием одного или более процессоров, которые выполняют программные инструкции.
[0123] Аспекты изобретения связаны с модификациями вторичного преобразования, например, реализациями обратного вторичного преобразования.
[0124] В некоторых вариантах осуществления, например, в HEVC, первичное преобразование может включать в себя 4-точечное, 8-точечное, 16-точечное и 32-точечное дискретное косинусное преобразование (DCT, discrete cosine transform) типа 2 (DCT-2), и матрицы ядра преобразования могут быть представлены с использованием 8-битовых целых чисел (т.е. 8-битового ядра преобразования). Матрицы ядра преобразования меньшего DCT-2 являются частью матриц ядра преобразования большего DCT-2, как показано в приложении I.
[0125] Матрицы ядра DCT-2 демонстрирует характеристики симметрии/антисимметрии. Поэтому может поддерживаться реализация "частичной бабочки" для уменьшения количества счетчиков операций (например, операций умножения, операций сложения, операций вычитания, сдвигов и т.п.), и идентичные результаты умножения матриц можно получать с использованием частичной бабочки.
[0126] В некоторых вариантах осуществления, например, в VVC, помимо вышеописанных 4-точечного, 8-точечного, 16-точечного и 32-точечного преобразований DCT-2, могут быть включены дополнительные 2-точечное и 64-точечное DCT-2. Пример ядра 64-точечного DCT-2, например, используемого в VVC, показан в приложении II как матрица 64×64.
[0127] Помимо DCT-2 и 4×4 DST-7, например, используемых в HEVC, схема адаптивного множественного преобразования (АМТ, Adaptive Multiple Transform) (также известного как расширенное множественное преобразование (ЕМТ, Enhanced Multiple Transform) или выбор множественных преобразований (MTS, Multiple Transform Selection)), может использоваться, например, в VVC, для кодирования остатка как для интер-, так и для интра-кодированных блоков. Схема АМТ может использовать множественные выбранные преобразования из семейств DCT/DST, отличный от текущих преобразований в HEVC. Впервые вводятся матрицы преобразования DST-7 и DCT-8. В таблице 1 показаны примеры базисных функций выбранного DST/DCT для N-точечного ввода.
[0128] Матрицы первичного преобразования, используемые, например, в VVC, могут использоваться с 8-битовым представлением. АМТ применяет матрицы преобразования к CU, ширина и высота которых меньше или равна 32. Применяется ли АМТ, может указывать флаг (например, mts_flag). Когда mts_flag равен 0, в некоторых примерах для кодирования остаточных данных применяется только DCT-2. Когда mts_flag равен 1, индекс (например, mts_idx) может дополнительно сигнализироваться с использованием 2 бинов для идентификации горизонтального и вертикального преобразования, подлежащих использованию согласно таблице 2, где значение типа, равное 1, означает использование DST-7, и значение типа, равное 2, означает использование DCT-8. В таблице 2, значение trTypeHor и trTypeVer зависит от mts_idx[x][y][cIdx].
[0129] В некоторых вариантах осуществления, неявный MTS может применяться, когда вышеупомянутый MTS на основе сигнализации (т.е. явный MTS) не используется. С неявным MTS выбор преобразования производится согласно ширине и высоте блока вместо сигнализации. Например, с неявным MTS, DST-7 выбирается для более короткой стороны (т.е. минимум одного из М и N) блока MxN, и DCT-2 выбирается для более длинной стороны (т.е. максимум одного из М и N) блока.
[0130] Иллюстративные ядра преобразования, каждое из которых является матрицей, образованной векторами базиса, для DST-7 и DCT-8 проиллюстрированы в приложении III.
[0131] В некоторых примерах, например, в VVC, когда и высота, и ширина блока кодирования меньше или равна 64, размер ТВ совпадает с размером блока кодирования. Если высота или ширина блока кодирования больше 64, при осуществлении преобразования (например, обратного преобразования, обратного первичного преобразования и т.п.) или внутреннего предсказания, блок кодирования дополнительно делится на множественные подблоки, где ширина и высота каждого подблока меньше или равен 64. На каждом подблоке может осуществляться одно преобразование.
[0132] Соответствующие синтаксис и семантика MTS в некоторых примерах в VVC могут быть описаны ниже (выделены серым цветом) на фиг. 9 и 10А-10С. На фиг. 9 показан пример синтаксиса единицы преобразования. На фиг. 10А-10С показан пример синтаксиса кодирования остатка.
[0133] Ниже приведен пример семантики единицы преобразования. cu_mts_flag[х0][у0], равный 1, указывает, что выбор множественных преобразований применяется к остаточным отсчетам соответствующего блока преобразования яркости, cu_mts_flag[х0][у0] равный 0, указывает, что выбор множественных преобразований не применяется к остаточным отсчетам соответствующего блока преобразования яркости. Индексы х0, у0 матрицы указывают положение (х0, у0) верхнего левого отсчета яркости рассматриваемого блока преобразования относительно верхнего левого отсчета яркости изображения. Когда cu_mts_flag[х0][у0] отсутствует, он предполагается равным 0.
[0134] Ниже приведен пример семантики кодирования остатка, mts_idx[х0][у0] указывает, какие ядра преобразования применяются к остаточным отсчетам яркости в горизонтальном и вертикальном направлении текущего блока преобразования. Индексы х0, у0 матрицы указывают положение (х0, у0) верхнего левого отсчета яркости рассматриваемого блока преобразования относительно верхнего левого отсчета яркости изображения. Когда mts_idx[х0][у0] отсутствует, он предполагается равным -1.
[0135] На фиг. 11А показано иллюстративное прямое преобразование (также именуемое прямым первичным преобразованием), осуществляемое кодером. Прямое преобразование может включать в себя прямое горизонтальное преобразование и прямое вертикальное преобразование. Прямое горизонтальное преобразование применяется сначала к остаточному блоку (1110), имеющему остаточные данные, для получения промежуточного блока. Затем прямое вертикальное преобразование применяется к промежуточному блоку для получения блока (1112) коэффициентов, имеющего коэффициенты преобразования.
[0136] На фиг. 11В показано иллюстративное обратное преобразование (также именуемое обратным первичным преобразованием или обратным преобразованием), осуществляемым декодером. Вообще говоря, обратное преобразование совпадает с прямым преобразованием. Обратное первичное преобразование может включать в себя обратное первичное горизонтальное преобразование (также именуемое обратным горизонтальным преобразованием) и обратное первичное вертикальное преобразование (также именуемое обратным вертикальным преобразованием). Для согласования прямого преобразования, порядок применения обратных горизонтального и вертикального преобразований переключается в обратном преобразовании. Соответственно, обратное вертикальное преобразование применяется сначала к блоку (1122) коэффициентов для получения промежуточного блока. Затем обратное горизонтальное преобразование применяется к промежуточному блоку для получения остаточного блока (1120).
[0137] Под первичным преобразованием можно понимать прямое первичное преобразование или обратное первичное преобразование. Под горизонтальным преобразованием можно понимать обратное горизонтальное преобразование или прямое горизонтальное преобразование. Аналогично, под вертикальным преобразованием можно понимать обратное вертикальное преобразование или прямое вертикальное преобразование.
[0138] В примере, например, в VVC, в декодере, сначала осуществляется обратное вертикальное первичное преобразование, затем, после применения обратного вертикального преобразования, осуществляется обратное горизонтальное первичное преобразование, как указано на фиг. 12А-12Е в текстах, выделенных серым цветом. На фиг. 12А-12Е показан пример процесса преобразования, например, для масштабированных коэффициентов преобразования. Тексты, выделенные серым цветом, показаны на фиг. 12Е.
[0139] Согласно варианту осуществления, режимозависимое несепарабельное вторичное преобразование (NSST, non-separable secondary transform) может использоваться между ядром прямого преобразования и квантованием на стороне кодера и между деквантованием и ядром обратного преобразование на стороне декодера. Например, для поддержания низкой сложности, NSST применяется к низкочастотным коэффициентам после первичного преобразование (или преобразования ядра). Когда и ширина (W), и высота (Н) блока коэффициентов преобразования больше или равны 8, NSST 8×8 применяется к верхней левой области 8x8 блока коэффициентов преобразования. В противном случае, когда ширина W или высота Н блока коэффициентов преобразования равна 4, применяется NSST 4×4, и NSST 4×4 осуществляется на верхней левой min(8,W)×min(8,H) области блока коэффициентов преобразования. Вышеупомянутый способ выбора преобразования применяется для обеих компонент яркости и цветности.
[0140] Реализация умножения матриц NSST описана ниже на примере входного блока 4×4. Входной блок X 4×4 записан в ур. (1) as
[0141] Входной блок X может быть представлен в виде вектора  в ур. (2), где
Несепарабельное преобразование вычисляется как  где  указывает вектор коэффициентов преобразования, и Т - матрица преобразования 16×16. Затем вектор  16×1 коэффициентов преобразования реорганизуется как блок 4×4 согласно порядку сканирования (например, горизонтальному порядку сканирования, вертикальному порядку сканирования или диагональному порядку сканирования) входного блока X. Коэффициенты с меньшими индексами могут располагаться в блоке 4×4 коэффициентов с меньшими индексами сканирования. В некоторых вариантах осуществления, для уменьшения сложности NSST вместо вышеописанного умножения матриц может использоваться преобразование гиперкуба Гивенса (HyGT) с реализацией бабочки.
[0142] В примере, несепарабельные вторичные преобразования 35×3 доступны для обоих размеров блока 4×4 и 8×8, где 35 - количество наборов преобразования, связанных с режимами внутреннего предсказания, и 3 - количество кандидатов NSST для каждого режима внутреннего предсказания. В таблице 3 показано иллюстративное отображение из режима внутреннего предсказания в соответствующий набор преобразований. Набор преобразований, применяемых к коэффициентам преобразования яркость/цветность, задается соответствующим режимом внутреннего предсказания яркости/цветности, согласно таблице 3, где показано отображение из режима внутреннего предсказания в индекс набора преобразований. Для режима внутреннего предсказания, большего 34, который соответствует диагональному направлению предсказания, блок коэффициентов преобразования транспонируется до/после NSST на кодере/декодере, соответственно.
[0143] Для каждого набора преобразований, выбранный кандидат NSST может дополнительно указываться путем явной сигнализации индекс NSST на уровне CU. Индекс NSST на уровне CU сигнализируется в битовом потоке для каждого интракодированного CU после того, как коэффициенты преобразования и усеченная унарная бинаризация используется для индекса NSST на уровне CU. Например, усеченное значение равно 2 для плоского или DC режима, и 3 для углового режима внутреннего предсказания. В примере, индекс NSST на уровне CU сигнализируется только при наличии более одного ненулевого коэффициента в CU. Значение по умолчанию равно нулю и не сигнализируется, указывая, что NSST не применяется к CU. Каждое из значений 1-3 указывает, какой кандидат NSST подлежит применению из набора преобразований.
[0144] В некоторых вариантах осуществления, NSST не применяется для блока, кодированного в режиме пропуска преобразования (transform skip mode). Когда индекс NSST на уровне CU сигнализируется для CU и не равен нулю, NSST не используется для блока, который кодируется в режиме пропуска преобразования в CU. Когда CU с блоками всех компонентов кодируются в режиме пропуска преобразования, или количество ненулевых коэффициентов СВ в режиме без пропуска преобразования меньше 2, индекс NSST на уровне CU не сигнализируется для CU.
[0145] В некоторых вариантах осуществления, используется разновидность NSST, например, преобразование сокращенного размера (RST, reduced size transform). RST использует схему обнуления преобразования. В примере, в RST, является ли режим внутреннего предсказания плоским или DC, проверяется для энтропийного кодирования индекса преобразования NSST.
[0146] В примере применяются 4 набора преобразования, и каждый набор преобразований включает в себя три ядра преобразования RST. Ядра преобразования RST могут иметь размер 16×48 (или 16×64) (применяемый для блока коэффициентов преобразования, высота и ширина которого больше или равны 8) или 16×16 (применяемый для блока коэффициентов преобразования, высота или ширина которого равна 4). Для удобства обозначения преобразование 16×48 (или 16×64) обозначается RST8×8 и преобразование 16×16 обозначается RST4×4.
[0147] На фиг. 13 и фиг. 14 показаны примеры двух процессов (1300) и (1400) кодирования преобразования с использованием преобразования 16×64 (или преобразования 64×16 в зависимости от того, является ли преобразование прямым или обратным вторичным преобразованием) и преобразования 16×48 (или преобразования 48×16 в зависимости от того, является ли преобразование прямым или обратным вторичным преобразованием), соответственно. Согласно фиг. 13, в процессе (1300), на стороне кодера, прямое первичное преобразование (1310) сначала может осуществляться над остаточным блоком для получения блока (1313) коэффициентов. Затем прямое вторичное преобразование (1312) можно применять к блоку (1313) коэффициентов. В прямом вторичном преобразовании (1312), 64 коэффициента подблоков A-D 4×4 в верхнем левом углу блока (1313) коэффициентов могут быть представлены вектором длиной 64, и вектор длиной 64 может перемножаться с матрицей преобразования 64×16 (т.е. шириной 64 и высотой 16) согласно ур.(2), что дает вектор длиной 16. Элементы вектора длиной 16 переносятся обратно в верхний левый подблок А 4×4 блока (1313) коэффициентов. Коэффициенты в подблоках B-D могут быть нулевыми. Коэффициенты, полученные после прямого вторичного преобразования (1312), затем квантуются на этапе (1314) и энтропийно кодируются для генерации кодированных битов в битовом потоке (1316).
[0148] Кодированные биты могут приниматься на стороне декодера и энтропийно декодируются, после чего деквантуются (1324) для генерации блока (1323) коэффициентов. Обратное вторичное преобразование (1322), например, обратное RST8x8, может осуществляться для получения 64 коэффициентов, например, из 16 коэффициентов на верхнем левом подблоке Е 4×4. 64 коэффициента могут переноситься обратно в подблоки Е-Н 4×4. Дополнительно, коэффициенты в блоке (1323) коэффициентов после обратного вторичного преобразования (1322) могут обрабатываться с помощью обратного первичного преобразования (1320) для получения восстановленного остаточного блока.
[0149] Процесс (1400), представленный на фиг. 14, аналогичен процессу (1300) за исключением того, что в ходе прямого вторичного преобразования (1412) обрабатывается меньше (т.е. 48) коэффициентов. В частности, 48 коэффициентов в подблоках А-С обрабатываются с меньшей матрицей преобразования размера 48×16. С использованием меньшей матрицы преобразования 48×16 можно уменьшать размер памяти для хранения матрицы преобразования и объем вычислений (например, операций умножения, операций сложения, операций вычитания и т.п) и, таким образом, можете снижать вычислительную сложность.
[0150] Сокращенное преобразование (RT, Reduced Transform) (также именуемое RST) может отображать N-мерный вектор в R-мерный вектор в другом пространстве, где R/N (R<N) - коэффициент сокращения.
[0151] Матрица RST (или RT) представляет собой следующую матрицу R×N:
где R строк преобразования представляют собой R баз N-мерного пространства. Матрица обратного преобразования для RT получается транспонированием матрицы прямого преобразования.
T
T
[0152] На фиг. 15А показаны процесс (1501) сокращенного прямого преобразования и процесс (1502) сокращенного обратного преобразования. Т выражает матрицу преобразования RST размером R×N, и T выражает матрицу, полученную транспонированием Т, и T имеет размер N×R.
[0153] В RST8×8 можно реализовать коэффициент сокращения 4 (1/4 размера). Например, вместо 64×64, который является размером традиционной матрицы несепарабельного преобразования 8×8, может использоваться прямая матрица 16×64. Матрица 64×16 обратного RST может использоваться на стороне декодера для генерации коэффициентов ядра (первичного) преобразования в верхней левой области 8×8. Прямое RST8×8 использует матрицы 16×64 (или 8×64 для блока 8×8), благодаря чему прямое RST8×8 создает ненулевые коэффициенты только в верхней левой области 4×4 в данной верхней левой области 8×8. Другими словами, когда применяется RST, область в верхней левой области 8×8, которая выходит за пределы верхней левой области 4×4, имеет только нулевые коэффициенты. Для RST4×4, 16×16 (или 8×16 для блока 4×4) может применяться прямое умножение матриц.
[0154] Кроме того, для RST8×8, для дополнительного уменьшения размера матрицы преобразования, вместо использования всех верхних левых 8×8 коэффициентов (64 коэффициентов в заштрихованных подблоках на фиг. 15В) остаточного блока (1510) в качестве ввода для вычисления вторичного преобразования, три верхних левых коэффициентов подблока 4×4 (48 коэффициентов в заштрихованных подблоках на фиг. 15С) остаточного блока (1510) используются в качестве ввода для вычисления вторичного преобразования. Соответственно, матрица 16×64 преобразования используется на фиг. 15В, и матрица 16×48 преобразования используется на фиг. 15С.
[0155] В примере, обратное RST применяется при выполнении следующих двух условий: (i) размер блока (например, ширина W и/или высота Н блока) больше или равен порогу (например, W>=4 и Н>=4), и (ii) флаг режима пропуска преобразования равен нулю. Например, если ширина (W) и высота (Н) блока коэффициентов преобразования больше 4, то RST8×8 применяется к верхней левой области 8×8 блока коэффициентов преобразования. В противном случае, RST4×4 применяется к верхней левой области min(8, W) × min(8, Н) блока коэффициентов преобразования.
[0156] В примере, когда индекс RST равен 0, RST не применяется. В противном случае RST применяется, и ядро выбирается с индексом RST. В примере, RST применяется для интра-CU (например, CU, кодированного с внутренним предсказанием или в интра-режиме) как в интра-, так и интер-слайсах, и для составляющих как яркости, так и цветности. Если разрешено дуальное дерево, индексы RST для яркости и цветности сигнализируются по отдельности. Для интер-слайса (дуальное дерево запрещено), единственный индекс RST сигнализируется и используется как для яркости, так и для цветности. При выборе режима ISP, RST запрещено, и индекс RST не сигнализируется.
[0157] В примере, матрица RST может выбираться из четырех наборов преобразования, каждый из которых состоит из двух преобразований. Какой набор преобразований применять, может определяться на основании режима внутреннего предсказания следующим образом. Когда указан один из трех режимов кросс-компонентной линейной модели (CCLM, cross component linear model), можно выбрать набор преобразований 0. В противном случае, выбор набора преобразований может осуществляться согласно таблице (1550), показанной на фиг. 15D. Индекс (например, IntraPredMode) для осуществления доступа к таблице (1550) может принимать значения в диапазоне [-14, 80] и является преобразованным индексом режима, используемым, например, для широкоугольного внутреннего предсказания. Пример режимов внутреннего предсказания показан на фиг. 16В. В примере, индекс для осуществления доступа к таблице (1550) может принимать значения в диапазоне [-14, 83] или любом подходящем диапазоне.
[0158] На фиг. 16А показаны иллюстративные направления внутреннего предсказания и режимы внутреннего предсказания, используемые в HEVC. В HEVC существует всего 35 режимов внутреннего предсказания (режимы 0 ~ 34). Режим 0 и режим 1 являются ненаправленными режимами, из которых режим 0 - плоский режим (обозначенный как Intra_Planar на фиг. 16А), и режим 1 - DC режим (обозначенный как Intra_DC на фиг. 16А). Режимы 2-34 являются направленными режимами, из которых режим 10 - горизонтальный режим, режим 26 - вертикальный режим, и режим 2, режим 18 и режим 34 - диагональные режимы. В некоторых примерах, режимы внутреннего предсказания сигнализируются тремя наиболее вероятным режимами (МРМ, most probable modes) и 32 оставшимися режимами.
[0159] На фиг. 16В показаны иллюстративные направления внутреннего предсказания и режимы внутреннего предсказания в некоторых примерах (например, VVC). Существует всего 95 режимов внутреннего предсказания (режимы -14 ~ 80), из которых режим 18 - горизонтальный режим, режим 50 - вертикальный режим, и режим 2, режим 34 и режим 66 - диагональные режимы. Режимы -1 ~ -14 и режимы 67 ~ 80 называются режимами широкоугольного внутреннего предсказания (WAIP, wide-angle intra prediction).
[0160] Мультилинейное внутреннее предсказание может использовать больше опорных линий для внутреннего предсказания. Опорная линия может включать в себя множественные отсчеты в изображении. В примере, опорная линия включает в себя отсчеты в строке и отсчеты в столбце. В примере, кодер может определять и сигнализировать опорную линию, используемую для генерации интра-предсказателя. Индекс (также именуемый индексом опорной линии), указывающий опорную линию, может сигнализироваться до сигнализации режима(ов) внутреннего предсказания. В примере, МРМ разрешены только тогда, когда сигнализируется ненулевой индекс опорной линии. На фиг. 17 показан пример 4 опорных линий для блока (1710) кодирования. В примере, показанном на фиг. 17, опорная линия может включать в себя шесть сегментов, т.е. сегменты А - F. Опорная линия 3 может включать в себя верхний левый опорный отсчет. Сегменты А и F могут быть заполнены ближайшими отсчетами из сегментов В и Е, соответственно. В некоторых примерах, например, в HEVC, для внутреннего предсказания используется единственная опорная линия (например, опорная линия 0, которая соседствует с блоком (1710) кодирования). В некоторых примерах, например, в VVC, для внутреннего предсказания используются множественные опорные линии (например, опорные линии 0, 1 и 3).
[0161] Может использоваться режим кодирования с интра-разбиением (ISP, Intra sub-partition). В режиме кодирования с ISP, внутренне предсказанный блок яркости может делиться вертикально или горизонтально на 2 или 4 части в зависимости от размера блока.
[0162] На фиг. 18 показана таблица 4, которая связывает количество частей, на которые разбивается блок, с его размером. Например, когда размер блока составляет 4×4, разбиение блока в режиме кодирования с ISP не осуществляется. Когда размер блока составляет 4×8 или 8×4, блок разбивается на две части в режиме кодирования с ISP. Для всех остальных размеров блока, превышающих 4×8 или 8×4, блок разбивается на четыре части. На фиг. 19 показан пример разбиения блока, имеющего размер 4×8 или 8×4. На фиг. 20 показан другой пример разбиения блока, имеющего размер отличный от 4×8, 8×4 и 4×4, например, размер блока более 4×8 и 8×4. В примере, все части удовлетворяют условию наличия по меньшей мере 16 отсчетов. Для компонента цветности ISP не применяется.
[0163] В некоторых примерах, для каждой из частей, декодер может энтропийно декодировать коэффициенты, отправляемые с кодера на декодер, затем декодер выполняет обратное квантование и обратное преобразование коэффициентов для генерации остатков (или остаточных данных) для части. Дополнительно, когда часть внутреннее предсказывается декодером, декодер может суммировать остатки с результатами внутреннего предсказания для получения реконструированных отсчетов части. Поэтому реконструированные отсчеты каждой части могут быть доступны для генерации предсказания следующей(их) части(ей), подлежащей(их) реконструкции. Вышеописанный процесс может повторяться для следующей(их) части(ей) и т.д. Все части совместно используют один и тот же режим внутреннего предсказания, в одном примере. В некоторых примерах, в ISP, каждую часть можно рассматривать как TU, поскольку преобразование и реконструкция осуществляются по отдельности для каждой части.
[0164] В некоторых примерах алгоритм ISP тестируется только с режимами внутреннего предсказания, которые являются частью списка МРМ. По этой причине, когда блок использует ISP, предполагается, что флаг МРМ равен единице. Помимо этого, когда ISP используется для определенного блока, список МРМ может модифицироваться для исключения режима DC и для отдания приоритета режимам горизонтального внутреннего предсказания для горизонтального разбиения (или горизонтального разделения) ISP и режимам вертикального внутреннего предсказания для вертикального разбиения (или вертикального разделения) в некоторых примерах.
[0165] На фиг. 21A-21D показаны примеры разных YUV-форматов или форматов цветности. Каждый формат цветности может задавать разные сетки понижающей дискретизации для разных цветовых компонентов.
[0166] Под вторичным преобразованием можно понимать NSST, RST (или RT) и т.п. Под индексом вторичного преобразования можно понимать индекс NSST, индекс RST и т.п. В примере, индекс вторичного преобразования указывает вторичное преобразование (также именуемое кандидатом вторичного преобразования). Индекс вторичного преобразования может сигнализироваться на уровне CU. Например, индекс NSST или индекс RST сигнализируется на уровне CU для CU. Следует ли сигнализировать индекс вторичного преобразования, может зависеть от количества ненулевых коэффициентов CU. Таким образом, декодер может циклически перебирать все TU, включенные в CU, для определения количества ненулевых коэффициентов CU. В некоторых вариантах осуществления, процесс сравнительно сложен.
[0167] В определенных конструкциях вторичного преобразования (например, RST), когда единственное расщепляющееся дерево используется среди разных цветовых компонент в CU, включающих в себя, например, компоненту яркости и две компоненты цветности, можно сосчитать количество ненулевых коэффициентов в CU для определения, сигнализируется ли индекс вторичного преобразования. Однако, для блока яркости 4×N или N×4, соответствующий блок цветности имеет размер 2×N/2 или N/2×2 в формате YUV4:2:0. Таким образом, вторичное преобразование, например, RST не применяется для блока цветности, и количество ненулевых коэффициентов блока цветности не нужно подсчитывать.
[0168] В некоторых примерах, второе преобразование, например NSST или RST, не разрешено для ISP. Это может ограничивать полное преимущество вторичных преобразований в отношении эффективности кодирования.
[0169] Описанные здесь варианты осуществления могут использоваться по отдельности или объединенными в любом порядке. Дополнительно, варианты осуществления могут быть реализованы схемой обработки (например, одним или более процессорами или одной или более интегральными схемами) в кодере, декодере и т.п.В одном примере, один или более процессоров могут выполнять программу, которая хранится на компьютерно-считываемом носитель. В некоторых примерах, блок может быть блоком предсказания, блоком кодирования, CU и т.п.
[0170] В описании изобретения, варианты осуществления для DST-7 кандидата MTS можно применять к DST-4, и варианты осуществления для DCT-8 кандидата MTS можно применять к DCT-4. Дополнительно, в некоторых вариантах осуществления, ссылки на NSST также могут применяться к RST, которая является примером альтернативной конструкции несепарабельного вторичного преобразования.
[0171] Элемент высокоуровневого синтаксиса (HLS, high-level syntax) может относиться к набору параметров видео (VPS, Video Parameter Set), набору параметров последовательности (SPS, Sequence Parameter Set), набору параметров изображения (PPS, Picture Parameter Set), заголовку слайса, заголовку таила, заголовку группы тайлов и т.п. Заголовок CTU может относиться к синтаксическому(им) элементу(ам), сигнализируемому(ым) для CTU, например, в качестве информации заголовка. В примере, размер CTU является максимальным размером CU. Размер TU может относиться к максимальной ширине и/или высоте TU или области TU.
[0172] В целом, когда размер компоненты яркости (представленный отсчетами яркости) определенной единицы (например, TU, CU), известен, можно получить соответствующий размер компоненты цветности, который задается количеством отсчетов цветности. В примере используется YUV формат 4:2:0, и CU имеет размер CU 64×64 отсчетов яркости (или 64×64-L). Соответственно, CU имеет размер CU 32×32 отсчета цветности (или 32×32-С). Размер CU может именоваться 64×64-L, 32×32-С или 64×64-L/32×32-C. CU может включать в себя блок яркости и два блока цветности, где блок яркости имеет 64×64 отсчета яркости, и каждый из двух блоков цветности имеет 32×32 отсчета цветности. Описание можно адаптировать для TU. Для краткости, такое описание опущено.
[0173] Размер TU может быть представлен с использованием отсчетов яркости в TU. Например, максимальный размер TU, составляющий М отсчетов, означает максимальный размер TU, составляющий М отсчетов яркости. Аналогично, размер CU может быть представлен с использованием отсчетов яркости в CU. Размер TU и размер CU можно представить с использованием отсчетов цветности или комбинации отсчетов яркости и цветности в других вариантах осуществления.
[0174] Размер может относиться к ширине, высоте, и/или площади. Например, максимальный размер TU может относиться к ширине, высоте и/или площади максимальной TU. В целом, TU, CU и т.п. может иметь любую подходящую форму, включая прямоугольную форму, квадратную форму, L-образную форму или любую подходящую форму. В случае неправильной формы блока, например, L-образной формы, размер блока может указывать площадь блока.
[0175] В некоторых вариантах осуществления, максимальный размер TU (также именуемый максимальным размером TU) может сигнализироваться в битовом потоке кодированного видео, например в HLS (например, SPS и PPS). Максимальный размер TU может выражаться в отсчетах яркости или отсчетах цветности.
[0176] В некоторых вариантах осуществления, максимальный размер TU может храниться в кодере и/или декодере, таким образом, максимальный размер TU не сигнализируется. В одном примере, максимальный размер TU может храниться в определениях профиля и/или уровня. Максимальный размер TU может храниться в виде числа отсчетов яркости или цветности.
[0177] Согласно аспектам изобретения, разрешено ли вторичное преобразование для CU, можно определять на основании размера CU. В примере, разрешено ли вторичное преобразование для CU, можно определять на основании размера CU и порога размера CU. Когда размер CU меньше или равен порогу размера CU, определяется, что вторичное преобразование разрешено, и когда размер CU больше порога размера CU, определяется, что вторичное преобразование не разрешено. В примере, когда определяется, что вторичное преобразование не разрешено, индекс вторичного преобразования не сигнализируется. Таким образом, когда декодер определяет, что вторичное преобразование не разрешено, декодер также может определить, что индекс вторичного преобразования не сигнализируется. В примере, размер CU может относиться к ширине и/или высоте CU, например, может составлять 64 отсчета. В примере, размер CU может относиться к площади CU, например, 64×64 отсчета.
[0178] В примере, порог размера CU (например, порог ширины CU, порог высоты CU или порог площади CU) ограничивается максимальным размером TU в CU. Максимальный размер TU может сигнализироваться в HLS. Максимальный размер TU также может быть заранее задан и храниться в декодере.
[0179] Как описано выше, в некоторых примерах, декодер может циклически перебирать TU в CU для определения количества ненулевых коэффициентов CU и затем определять, сигнализируется ли индекс вторичного преобразования. Согласно аспектам изобретения, вместо подсчета количества ненулевых коэффициентов CU, можно определять, сигнализируется ли индекс вторичного преобразования, на основании последней позиции ненулевых коэффициентов преобразования (или позиции последних ненулевых коэффициентов) первого СВ в CU. Первым СВ может быть любой подходящий блок, например, блок яркости, блок цветности и т.п., находящийся в CU. Индекс вторичного преобразования может указывать выбранное вторичное преобразование для второго СВ в CU.
[0180] Согласно аспектам изобретения, можно определять, осуществлять ли вторичное преобразование на втором СВ в CU, на основании определения того, что сигнализирован индекс вторичного преобразования. Далее, когда определено, что вторичное преобразование подлежит осуществлению, отсчет во втором СВ может реконструироваться после осуществления на втором СВ вторичного преобразования, указанного индексом вторичного преобразования. Альтернативно, когда определено, что вторичное преобразование не подлежит осуществлению, отсчет во втором СВ может реконструироваться без осуществления вторичного преобразования на втором СВ. Вторым СВ может быть любой подходящий блок, например, блок яркости, блок цветности и т.п., находящийся в CU. В примере, первый СВ идентичен второму СВ. В другом примере, первый СВ отличается от второго СВ.
[0181] В примере, CU включает в себя блок яркости. Первым СВ является блоком яркости. Последняя позиция является позицией последнего ненулевого коэффициента яркости для блока яркости. Соответственно, определение, сигнализируется ли индекс вторичного преобразования, производится на основании последней позиции яркости. Второй СВ также является блоком яркости или первым СВ.
[0182] В некоторых вариантах осуществления, дополнительная информация может быть включена для определения, сигнализируется ли индекс вторичного преобразования, как описано ниже.
[0183] В примере, CU включает в себя блок яркости и блок цветности. Первый СВ является блоком яркости. Последняя позиция является позицией последнего ненулевого коэффициента яркости для блока яркости. Дополнительная информация может включать в себя позицию последнего ненулевого коэффициента цветности для блока цветности. Соответственно, определение, сигнализируется ли индекс вторичного преобразования, производится на основании позиции последнего ненулевого коэффициента яркости и позиции последнего ненулевого коэффициента цветности для блока цветности. Второй СВ может быть одним из блока яркости и блока цветности.
[0184] В примере, CU включает в себя блок яркости и два блока цветности (например, блок цветности I и блок цветности II). Первый СВ является блоком яркости. Последняя позиция является позицией последнего ненулевого коэффициента яркости для блока яркости. Дополнительная информация может включать в себя позицию I последнего ненулевого коэффициента цветности для блока цветности I и позицию II последнего ненулевого коэффициента цветности для блока цветности П. Соответственно, сигнализируется ли индекс вторичного преобразования, может определяться на основании позиции последнего ненулевого коэффициента яркости, позиции I последнего ненулевого коэффициента цветности ненулевых коэффициентов преобразования для блока цветности I и позиции II последнего ненулевого коэффициента цветности ненулевых коэффициентов преобразования для блока цветности II. Второй СВ может быть одним из блока яркости, блока цветности I и блока цветности II.
[0185] Как описано выше, определять, сигнализируется ли индекс вторичного преобразования, можно на основании позиции последнего ненулевого коэффициента первого СВ из CU. Позиция последнего ненулевого коэффициента может включать в себя горизонтальную компоненту (например, last_pos_x) и вертикальную компоненту (например, last_pos у), и, таким образом определять, сигнализируется ли индекс вторичного преобразования, можно на основании горизонтальной компоненты и/или вертикальной компоненты. Горизонтальная компонента и вертикальная компонента может быть целым числом, равным 0 или превышающим 0. Вертикальная компонента может быть целым числом, равным 0 или превышающим 0.
[0186] Согласно варианту осуществления, горизонтальную компоненту можно сравнивать с первым порогом и/или вертикальную компоненту можно сравнивать со вторым порогом. Первый порог может быть идентичен второму порогу. Альтернативно, первый порог может отличаться от второго порога. Первый порог и/или второй порог может быть положительным целым числом, например, 1, 2, 3 и т.п.
[0187] В примере, может определяться, меньше ли горизонтальная компонента первого порога, и меньше ли вертикальная компонента второго порога. Когда определено, что горизонтальная компонента меньше первого порога, и вертикальная компонента меньше второго порога, может определяться, что индекс вторичного преобразования не сигнализируется.
[0188] В примере может определяться, больше или равна ли горизонтальная компонента первому порогу. Дополнительно может определяться, больше или равна ли вертикальная компонента второму порогу. Когда определено, что горизонтальная компонента больше или равна первому порогу, и вертикальная компонента больше или равна второму порогу, может определяться, что индекс вторичного преобразования сигнализируется.
[0189] Согласно варианту осуществления, можно определять, меньше ли сумма горизонтальной компоненты и вертикальной компоненты последней позиции третьего порога. Когда определено, что сумма меньше третьего порога, может определяться, что индекс вторичного преобразования не сигнализируется. Третий порог может быть положительным целым числом, например, 1, 2, 3 и т.п. Когда определено, что сумма больше или равна третьему порогу, может определяться, что индекс вторичного преобразования сигнализируется.
[0190] Согласно варианту осуществления, можно определять, меньше ли четвертого порога как минимум одна из горизонтальной компоненты и вертикальной компоненты. Когда определено, что как минимум одна из горизонтальной компоненты и вертикальной компоненты меньше четвертого порога, определяется, что индекс вторичного преобразования не сигнализируется. Четвертый порог может быть положительным целым числом, например, 1, 2, 3 и т.п.
[0191] Согласно варианту осуществления, можно определять, меньше ли максимум одна из горизонтальной компоненты и вертикальной компоненты пятого порога. Когда определено, что максимум одна меньше пятого порога, определяется, что индекс вторичного преобразования не сигнализируется. Пятый порог может быть положительным целым числом, например, 1, 2, 3 и т.п. Четвертый порог может быть идентичен пятому порогу. Альтернативно, четвертый порог может отличаться от пятого порога.
[0192] Согласно варианту осуществления, первый СВ является блоком яркости в CU. Дополнительно, CU включает в себя блок цветности. Однако, сигнализируется ли индекс вторичного преобразования, определяется на основании только позиции последнего ненулевого коэффициента яркости блока яркости CU. Поэтому позиция последнего ненулевого коэффициента цветности для блока цветности не рассматривается при определении, сигнализируется ли индекс вторичного преобразования.
[0193] Согласно варианту осуществления, CU включает в себя блок яркости и блок цветности, как описано выше. Определение, сигнализируется ли индекс вторичного преобразования, производится на основании позиции последнего ненулевого коэффициента яркости для блока яркости и позиции последнего ненулевого коэффициента цветности для блока цветности. Аналогично, позиция последнего ненулевого коэффициента яркости может включать в себя горизонтальную компоненту яркости и вертикальную компоненту яркости, и позиция последнего ненулевого коэффициента цветности может включать в себя горизонтальную компоненту цветности и вертикальную компоненту цветности. Таким образом, можно определять, сигнализируется ли индекс вторичного преобразования, на основании горизонтальной компоненты яркости, вертикальной компоненты яркости, горизонтальной компоненты цветности и/или вертикальной компоненты цветности.
[0194] Согласно варианту осуществления, одну или более из соответствующих горизонтальной компоненты и вертикальной компоненты каждой из позиций последних ненулевых коэффициентов яркости и цветности можно сравнивать с соответствующим порогом, например, 1, 2, 3 и т.п. В примере может определяться, меньше ли соответствующего порога одна или более из соответствующих горизонтальной компоненты и вертикальной компоненты каждой из позиций последних ненулевых коэффициентов яркости и цветности. Когда одна или более из соответствующих горизонтальной компоненты и вертикальной компоненты каждой из позиций последних ненулевых коэффициентов яркости и цветности меньше соответствующего порога, может определяться, что индекс вторичного преобразования не сигнализируется.
[0195] Согласно варианту осуществления, горизонтальная сумма получается суммированием горизонтальной компоненты яркости и горизонтальной компоненты цветности, и вертикальная сумма получается суммированием вертикальной компоненты яркости и вертикальной компоненты цветности. Может определять меньше ли соответствующего порога каждая из горизонтальной суммы и вертикальной суммы. Когда каждая из горизонтальной суммы и вертикальной суммы меньше соответствующего порога, может определяться, что индекс вторичного преобразования не сигнализируется.
[0196] В примере, определяется первая сумма горизонтальной компоненты яркости и вертикальной компоненты яркости, и определяется вторая сумма горизонтальной компоненты цветности и вертикальной компоненты цветности. Может определяться, меньше ли соответствующего порога каждая из первой суммы и второй суммы. Когда определено, что каждая из первой суммы и второй суммы меньше соответствующего порога, может определяться, что индекс вторичного преобразования не сигнализируется.
[0197] Согласно варианту осуществления, полная сумма получается суммированием первой суммы и второй суммы, когда определено, что полная сумма меньше порога, может определяться, что индекс вторичного преобразования не сигнализируется.
[0198] Согласно варианту осуществления, определяется первый минимум горизонтальной компоненты яркости и вертикальной компоненты яркости, и определяется второй минимум горизонтальной компоненты цветности и вертикальной компоненты цветности. Можно определять меньше ли каждый из первого минимума и второго минимума соответствующего порога. Когда определено, что каждый из первого минимума и второго минимума меньше соответствующего порога, может определяться, что индекс вторичного преобразования не сигнализируется. Вышеприведенное описание можно адаптировать для использования первого максимума горизонтальной компоненты яркости и вертикальной компоненты яркости и второго максимума горизонтальной компоненты цветности и вертикальной компоненты цветности для определения, сигнализируется ли индекс вторичного преобразования.
[0199] Аналогично, для определения, сигнализируется ли индекс вторичного преобразования, может использоваться минимум горизонтальной суммы и вертикальной суммы. Для определения, сигнализируется ли индекс вторичного преобразования, может использоваться максимум горизонтальной суммы и вертикальной суммы.
[0200] Согласно аспектам изобретения, при определении количества ненулевых коэффициентов преобразования для CU, ненулевые коэффициенты преобразования в СВ из CU можно подсчитать, когда размер СВ (также именуемый размером СВ) больше или равен порогу размера, например 4. В примере, когда размер СВ меньше порога размера, ненулевые коэффициенты преобразования в СВ не подсчитываются, т.е. не включают в количество ненулевых коэффициентов преобразования для CU. Порог размера может заранее задаваться и храниться в декодере. Порог размера может сигнализироваться явно, например, из кодера в декодер. Дополнительно, когда количество ненулевых коэффициентов преобразования в CU меньше порогового количества, можно определять, что индекс вторичного преобразования не сигнализируется.
[0201] В примере, формат цвета для CU представляет собой YUV 4:2:0. CU включает в себя блок яркости и два блока цветности, которые совмещены с блоком яркости. Порог размера равен 4. Когда блок яркости имеет размер 4×N или N×4, где N может означать ширину или высоту блока яркости и может быть больше или равно 4, два блока цветности имеют размер 2×N/2 или N/2×2. В примере, N - положительное четное число. Количество ненулевых коэффициентов преобразования для CU определяется только из блока яркости без учета двух блоков цветности. Ширина или высота каждого из двух блоков цветности меньше порога размера. В другом примере, порог размера равен 4×4, и размер СВ 2×N/2 или N/2×2 также меньше порога размера, где N могут быть положительным четным числом. Вторичное преобразование не осуществляется на двух блоках цветности.
[0202] В примере, формат цвета для CU представляет собой YUV 4:2:2. CU включает в себя блок яркости и два блока цветности, которые совмещены с блоком яркости. Порог размера равен 4. Когда блок яркости имеет размер 4×N, где N больше или равно 4, два блока цветности имеют размер 2×N. Количество ненулевых коэффициентов преобразования для CU определяется только из блока яркости без учета двух блоков цветности. Ширина (например, 2) каждого из двух блоков цветности меньше порога размера. Вторичное преобразование не осуществляется на двух блоках цветности.
[0203] Вторичное преобразование может осуществляться на первом блоке коэффициентов (например, ТВ) для получения первого подблока 4×2 (или 2×4), который включает в себя по меньшей мере один ненулевой коэффициент. Например, RST применяется на первом ТВ 4×4 (например, первом блоке коэффициентов) для получения второго ТВ, который включает в себя первый подблок и второй подблок. Первый подблок 4×2 (или 2×4) включает в себя по меньшей мере один ненулевой коэффициент. Коэффициенты во втором подблоке 4×2 (или 2×4) заданы равными 0. Таким образом, сканирование подблока 4×2 (или 2×4) для первого подблока (т.е. порядок сканирования коэффициентов 4×2 (или 2×4)) применяется для энтропийного кодирования второго ТВ. В примере, порядок сканирования коэффициентов 4×2 (или 2×4) идентичен порядку сканирования, который применяется для энтропийного кодирования блока цветности 4×2 (или 2×4).
[0204] Аналогично, вторичное преобразование может осуществляться на первом блоке коэффициентов (например, ТВ) для получения первого подблока 8×4 (или 4×8), который включает в себя по меньшей мере один ненулевой коэффициент, например, когда первый блок коэффициентов больше 8×4 (или 4×8). Например, RST применяется на первом ТВ 8×8 (например, первом блоке коэффициентов) для получения второго ТВ, который включает в себя первый подблок и второй подблок. Первый подблок 8×4 (или 4×8) включает в себя по меньшей мере один ненулевой коэффициент. Коэффициенты во втором подблоке 8×4 (или 4×8) заданы равными 0. Таким образом, сканирование блока 8×4 (или 4×8) для первого подблока (т.е. порядок сканирования коэффициентов 8×4 (или 4×8)) применяется для энтропийного кодирования второго ТВ. В примере, порядок сканирования коэффициентов 8×4 (или 4×8) идентичен порядку сканирования, который применяется для энтропийного кодирования блока цветности 8×4 (или 4×8).
[0205] На фиг. 22 показана блок-схема операций процесса (2200) согласно варианту осуществления изобретения. Процесс (2200) может использоваться в реконструкции блока, кодированного в интра-режиме, для генерации блока предсказания для реконструируемого блока. В некоторых примерах, процесс (2200) может использоваться в реконструкции блока, кодированного в интер-режиме. В различных вариантах осуществления, процесс (2200) выполняется схемой обработки, например, схемой обработки в оконечных устройствах (310), (320), (330) и (340), схемой обработки, которая осуществляет функции видеокодера (403), схемой обработки, которая осуществляет функции видеодекодера (410), схемой обработки, которая осуществляет функции видеодекодера (510), схемой обработки, которая осуществляет функции видеокодера (603), и т.п. В некоторых вариантах осуществления, процесс (2200) реализован в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки осуществляет процесс (2200). Процесс начинается на этапе (S2201) и переходит к этапу (S2210).
[0206] На этапе (S2210), кодированная информация CU может декодироваться из битового потока кодированного видео. Кодированная информация может указывать последнюю позицию ненулевых коэффициентов преобразования (или позицию последнего ненулевого коэффициента) первого СВ из CU. В примере, CU может включать в себя блок яркости и блок цветности. Первый СВ может быть блоком яркости или блоком цветности.
[0207] На этапе (S2220), может определяться, сигнализируется ли индекс вторичного преобразования в кодированной информации, на основании позиции последнего ненулевого коэффициента, как описано выше. Индекс вторичного преобразования может указывать вторичное преобразование, подлежащее осуществлению на втором СВ в CU. Второй СВ может быть блоком яркости или блоком цветности.
[0208] В примере, позиция последнего ненулевого коэффициента может включать в себя горизонтальную компоненту и вертикальную компоненту, и сигнализируется ли индекс вторичного преобразования в кодированной информации, может определяться на основании горизонтальной компоненты и/или вертикальной компоненту. Как описано выше, дополнительная информация может использоваться для определения, сигнализируется ли индекс вторичного преобразования, и этап (S2220) может быть надлежащим образом адаптирован для включения дополнительной информации. В примере, когда определено, что индекс вторичного преобразования сигнализируется, процесс (2200) переходит к этапу (S2230). В противном случае, процесс (2200) переходит к этапу (S2250)
[0209] На этапе (S2230), осуществлять ли вторичное преобразование на втором СВ, может определяться на основании того, определено ли, что индекс вторичного преобразования сигнализируется в кодированной информации. В некоторых примерах, когда определено, что индекс вторичного преобразования сигнализируется, вторичное преобразование определяется подлежащим осуществлению. Когда определено, что вторичное преобразование подлежит осуществлению, процесс (2200) переходит к этапу (S2240). В противном случае, процесс (2200) переходит к этапу (S2250).
[0210] На этапе (S2240), вторичное преобразование, указанное индексом вторичного преобразования, осуществляется на втором СВ. Вторичное преобразование может быть NSST. Вторичное преобразование может быть RST, включающее в себя способ обнуления. Например, когда второй СВ равен 8×8, RST применяется на втором СВ для получения преобразованного блока, который включает в себя первый подблок 8×4 и второй подблок 8×4. Первый подблок включает в себя по меньшей мере один ненулевой коэффициент. Коэффициенты во втором подблоке не вычисляются и задаются равными 0.
[0211] На этапе (S2250), отсчет во втором СВ может реконструироваться. Затем процесс (2200) переходит к этапу (S2299) и заканчивается.
[0212] Процесс (2200) может быть надлежащим образом адаптирован, как описано выше. Например, один или более этапов можно модифицировать, исключать или объединять. В примере, этапы (S2220) и (S2230) объединены. Также можно добавлять дополнительный(е) этап(ы). Порядок, в котором выполняется процесс (2200), также можно модифицировать.
[0213] На фиг. 23 показана блок-схема операций процесса (2300) согласно варианту осуществления изобретения. Процесс (2300) может использоваться в реконструкции блока, кодированного в интра-режиме, для генерации блока предсказания для реконструируемого блока. В некоторых примерах, процесс (2300) может использоваться в реконструкции блока, кодированного в интер-режиме. В различных вариантах осуществления, процесс (2300) выполняется схемой обработки, например, схемой обработки в оконечных устройствах (310), (320), (330) и (340), схемой обработки, которая осуществляет функции видеокодера (403), схемой обработки, которая осуществляет функции видеодекодера (410), схемой обработки, которая осуществляет функции видеодекодера (510), схемой обработки, которая осуществляет функции видеокодера (603), и т.п. В некоторых вариантах осуществления, процесс (2300) реализован в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки осуществляет процесс (2300). Процесс начинается на этапе (S2301) и переходит к этапу (S2310).
[0214] На этапе (S2310), информация кодирования CU может декодироваться из битового потока кодированного видео, где информация кодирования указывает размер CU.
[0215] На этапе (S2320), разрешено ли вторичное преобразование, может определяться на основании размера CU и порога размера CU. Когда размер CU меньше или равен порогу размера CU, определяется, что вторичное преобразование разрешено. Процесс (2300) переходит к этапу (S2330). Когда размер CU больше порога размера CU, определяется, что вторичное преобразование не разрешено, и процесс (2300) переходит к этапу (S2350).
[0216] На этапе (S2330) может определяться, осуществлять ли вторичное преобразование на СВ в CU, например, на основании того, сигнализируется ли индекс вторичного преобразования, как описано выше. Когда определено, что вторичное преобразование подлежит осуществлению, процесс (2300) переходит к этапу (S2340). В противном случае, процесс (2300) переходит к этапу (S2350).
[0217] На этапе (S2340), вторичное преобразование, указанное индексом вторичного преобразования, осуществляется на СВ, аналогично этапу (S2240).
[0218] На этапе (S2350), отсчет в СВ может реконструироваться. Затем процесс (2300) переходит к этапу (S2399) и заканчивается.
[0219] Процесс (2300) может быть надлежащим образом адаптирован. Например, один или более этапов может модифицироваться. Также можно добавлять дополнительный(е) этап(ы).
[0220] Процесс (2200) и процесс (2300) могут надлежащим образом объединяться. Например, сначала могут осуществляться (S2310) и (S2320), а затем (S2210)-(S2250).
[0221] Вышеописанные методы могут быть реализованы в виде компьютерного программного обеспечения, использующего компьютерно-считываемые инструкции и физически хранящегося на одном или более компьютерно-считываемых носителях. Например, на фиг. 24 показана компьютерная система (2400), пригодная для реализации некоторых вариантов осуществления раскрытого изобретения.
[0222] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую, или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing units), графическими процессорами (GPU, Graphics Processing Units) и т.п.
[0223] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0224] Компоненты компьютерной системы (2400), показанные на фиг. 24, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым одним или комбинацией компонентов, показанных в иллюстративном варианте осуществления компьютерной системы (2400).
[0225] Компьютерная система (2400) может включать в себя некоторые устройства ввода интерфейса с человеком. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двухмерного видео, трехмерного видео, включающего в себя стереоскопическое видео).
[0226] Устройства ввода интерфейса с человеком могут включать в себя один или более из (по одному из изображенных): клавиатуры (2401), мыши (2402), сенсорной панели (2403), сенсорного экрана (2410), информационной перчатки (не показана), джойстика (2405), микрофона (2406), сканера (2407), камеры (2408).
[0227] Компьютерная система (2400) также может включать в себя некоторые устройства вывода интерфейса с человеком. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать в себя устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (2410), информационной перчатки (не показана) или джойстика (2405), но также могут быть устройствами тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: громкоговорители (2409), наушники (не показаны)), устройства визуального вывода (например, экраны (2410), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из которых способны к двухмерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографического вывода; очков виртуальной реальности (не показаны), голографических дисплеев и дымовых баков (не показаны)) и принтеров (не показаны).
[0228] Компьютерная система (2400) также может включать в себя доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие в себя CD/DVD ROM/RW (2420) с носителями (2421) CD/DVD и т.п., карты (2422) флэш-памяти, сменный жесткий диск или твердотельный диск (243), традиционные магнитные носители, например, ленту и флоппи-диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.
[0229] Специалисты в данной области техники также должны понимать, что термин "компьютерно-считываемые носители", используемый в связи с раскрытым здесь изобретением, не охватывает среды передачи, несущие волны или другие кратковременные сигналы.
[0230] Компьютерная система (2400) также может включать в себя интерфейс к одной или более сетям связи. Сети могут быть, например, беспроводными, проводными, оптическими. Сети могут быть, дополнительно, локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают в себя локальные сети, например, Ethernet, беспроводные LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные включают в себя CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (2449) (например, USB-порты компьютерной системы (2400)); другие обычно встраиваются в ядро компьютерной системы (2400) путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (2400) может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.
[0231] Вышеупомянутые устройства человеческого интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (2440) компьютерной системы (2400).
[0232] Ядро (2440) может включать в себя один или более центральных процессоров (CPU) (2441), графические процессоры (GPU) (2442), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Arrays) (2443), аппаратные ускорители (2444) для некоторых задач и т.д. Эти устройства, совместно с постоянной памятью (ROM) (2445), оперативной памятью (2446), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками (2447), недоступными пользователю, SSD и т.п., могут соединяться посредством системной шины (2448). В некоторых компьютерных системах системная шина (2448) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (2448) ядра, либо через периферийную шину (2449). Архитектуры периферийной шины включают в себя PCI, USB и т.п.
[0233] CPU (2441), GPU (2442), FPGA (2443) и ускорители (2444) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM
(2445) или RAM (2446). Переходные данные также могут храниться в RAM (2446), тогда как постоянные данные могут храниться, например, во внутреннем хранилище (2447) данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с один или более CPU (2441), GPU (2442), хранилищем (2447) данных большой емкости, ROM (2445), RAM (2446) и т.п.
[0234] На компьютерно-считываемых носителях может храниться компьютерный код для осуществления различных компьютерно-реализуемых операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.
[0235] В порядке примера, но не ограничения, компьютерная система, имеющая архитектуру (2400), и, в частности, ядро (2440) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных компьютерно-считываемых носителей. Такие компьютерно-считываемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым хранилищем ядра (2440), носящим долговременный характер, например, внутренним хранилищем (2447) данных большой емкости или ROM (2445). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (2440). Компьютерно-считываемый носитель может включать в себя одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (2440) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные процессы или конкретные части описанных здесь конкретных процессов, включая задание структур данных, хранящихся в RAM (2446), и модификацию таких структур данных согласно процессам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (2444)), который может действовать вместо или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей описанных здесь конкретных процессов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на компьютерно-считываемые носители может охватывать схему (например, интегральную схему (IC, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе из них, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию оборудования и программного обеспечения.
Приложение А: аббревиатуры
JEM: модель совместного исследования
VVC: универсальное видеокодирование
BMS: набор эталонов
MV: вектор движения
HEVC: высокопроизводительное видеокодирование
SEI: информация дополнительного улучшения
VUI: информация пригодности видео
GOP: группа изображений
TU: единица преобразования,
PU: единица предсказания
CTU: единица дерева кодирования
СТВ: блок дерева кодирования
РВ: блок предсказания
HRD: гипотетический опорный декодер
SNR: отношение сигнал-шум
CPU: центральный процессор
GPU: графический процессор
CRT: кинескоп
LCD: жидкокристаллический дисплей
OLED: органический светодиод
CD: компакт-диск
DVD: цифровой видеодиск
ROM: постоянная память
RAM: оперативная память
ASIC: специализированная интегральная схема
PLD: программируемое логическое устройство
LAN: локальная сеть
GSM: глобальная система мобильной связи
LTE: проект долгосрочного развития систем связи
CANBus: шина контроллерной сети
USB: универсальная последовательная шина
PCI: межсоединение периферийных компонентов
FPGA: вентильная матрица, программируемая пользователем
SSD: твердотельный привод
IC: интегральная схема
CU: единица кодирования.
[0236] Хотя здесь описано несколько иллюстративных вариантов осуществления, возможны изменения, перестановки и различные эквиваленты для замены в объеме изобретения. Таким образом, специалисты в данной области техники могут предложить многочисленные системы и способы, которые, хотя в явном виде здесь не показаны и не описаны, воплощают принципы изобретения и, таким образом, соответствуют его сущности и объему.
Приложение I
Преобразование 4×4
Преобразование 8×8
Преобразование 16×16
Преобразование 32×32
Приложение II
Ядро 64-точечного DCT-2
где
Приложение III
4-точечное DST-7
где {а, b, с, d}={29, 55, 74, 84}
8-точечное DST-7:
где {a, b, с, d, е, f, g, h}={17, 32, 46, 60, 71, 78, 85, 86}
16-точечное DST-7
где {a, b, с, d, e, f, g, h, i, j, k, l, m, n, o, p}={9, 17, 25, 33, 41, 49, 56, 62, 66, 72, 77, 81, 83, 87, 89, 90}
32-точечное DST-7
где {a, b, с, d, е, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, А, В, C, D, E, F}={4, 9, 13, 17, 21, 26, 30, 34, 38, 42, 45, 50, 53, 56, 60, 63, 66, 68, 72, 74, 77, 78, 80, 82, 84, 85, 86, 88, 88, 89, 90, 90}
4-точечное DCT-8
где {a, b, c, d}={84, 74, 55, 29}
8-точечное DCT-8:
где {a, b, с, d, е, f, g, h}={86, 85, 78, 71, 60, 46, 32, 17}
16-точечное DCT-8
где {a, b, с, d, e, f, g, h, i, j, k, l, m, n, o, p}={90, 89, 87, 83, 81, 77, 72, 66, 62, 56, 49, 41, 33, 25, 17, 9}
32-точечное DCT-8
где {a, b, с, d, е, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, А, В, C, D, E, F}={90, 90, 89, 88, 88, 86, 85, 84, 82, 80, 78, 77, 74, 72, 68, 66, 63, 60, 56, 53, 50, 45, 42, 38, 34, 30, 26, 21, 17, 13, 9, 4}