Область техники
[0001] Настоящее раскрытие относится к кодированию видео, в частности, к системам, компонентам и способам кодирования и декодирования видео.
Предшествующий уровень техники
[0002] С прогрессом в технологии кодирования видео, от H.261 и MPEG-1 до H.264/AVC (Расширенное кодирование видео), MPEG-LA, H.265/HEVC (Высокоэффективное кодирование видео) и H.266/VVC (Многоцелевое кодирование видео), сохраняется постоянная потребность в обеспечении усовершенствований и оптимизаций в технологии кодирования видео, чтобы обрабатывать все возрастающее количество цифровых данных видео в различных приложениях.
[0003] Следует отметить, что непатентный документ (NPL) 1 относится к одному примеру традиционного стандарта по вышеупомянутой технологии кодирования видео.
Список цитированных документов
Непатентные документы
[0004] NPL 1: H.265(ISO/IEC 23008-2 HEVC)/HEVC(High Efficiency Video Coding)
Краткое описание сущности изобретения
Техническая проблема
[0005] Для такого способа кодирования, желательно предоставить новую схему, чтобы повысить эффективность кодирования, улучшить качество изображения, уменьшить объем обработки, сократить масштаб схем или соответствующим образом выбрать компонент/операцию для фильтра, блока, размера, вектора движения, опорной картинки, опорного блока и т.д.
[0006] Настоящее раскрытие обеспечивает конфигурации или способы, способствующие, например, по меньшей мере одному из следующего: повышению эффективности кодирования; улучшению качества изображения; уменьшению объема обработки; уменьшению масштаба схем; повышению скорости обработки; соответствующему выбору компонента/операции. Следует отметить, что настоящее раскрытие может включать конфигурации или способы, способствующие достижению преимуществ иных, чем вышеупомянутые преимущества.
РЕШЕНИЯ ПРОБЛЕМ
[0007] Кодер в соответствии с одним аспектом настоящего раскрытия представляет кодер, который кодирует изображение. Кодер включает в себя: схему и память, связанную со схемой, при этом, при функционировании, схема: выводит ошибку предсказания изображения путем вычитания изображения предсказания изображения из изображения, причем изображение предсказания генерируется с использованием интра-предсказания или интер-предсказания; выполняет первичное преобразование над ошибкой предсказания и выполняет вторичное преобразование над результатом первичного преобразования; выполняет квантование над результатом вторичного преобразования и кодирует результат квантования как данные изображения, и при выполнении вторичного преобразования, когда используется матрично-взвешенное интра-предсказание, включенное в интра-предсказание и имеющее множество режимов предсказания, схема использует, в качестве набора преобразований для вторичного преобразования, общий набор преобразований, совместно используемый среди множества режимов предсказания, матрично-взвешенное интра-предсказание генерирует изображение предсказания путем выполнения матричного вычисления над пиксельной последовательностью, полученной из пиксельных значений окружающих пикселов текущего блока, причем набор преобразований для вторичного преобразования применяется к коэффициентам первичного преобразования, полученным из результата первичного преобразования.
[0008] Некоторые реализации вариантов осуществления настоящего раскрытия могут повысить эффективность кодирования, могут быть просто процессом кодирования/декодирования, могут ускорять скорость процесса кодирования/декодирования, могут эффективно выбирать соответствующие компоненты/операции, используемые в кодировании и декодировании, такие как соответствующий фильтр, размер блока, вектор движения, опорная картинка, опорный блок и т.д.
[0009] Дополнительные выгоды и преимущества раскрытых вариантов осуществления будут очевидны из спецификации и чертежей. Выгоды и/или преимущества могут быть индивидуально получены посредством различных вариантов осуществления и признаков из спецификации и чертежей, не все из которых должны быть обеспечены, чтобы получить одно или более из таких выгод и/или преимуществ.
[0010] Следует отметить, что общие или конкретные варианты осуществления могут быть реализованы как система, способ, интегральная схема, компьютерная программа, носитель хранения или любая выборочная их комбинация.
Полезный результат изобретения
[0011] Конфигурация или способ в соответствии с аспектом настоящего раскрытия способствуют, например, по меньшей мере одному из: повышения эффективности кодирования; улучшения качества изображения; уменьшения объема обработки; уменьшения масштаба схемы; повышения скорости обработки; соответствующего выбора компонента/операции. Следует отметить, что конфигурация или способ в соответствии с аспектом настоящего раскрытия могут способствовать преимуществам иным, чем вышеупомянутые преимущества.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0012] Фиг. 1 представляет собой блок-схему, иллюстрирующую функциональную конфигурацию кодера в соответствии с вариантом осуществления.
Фиг. 2 представляет собой блок-схему последовательности операций, показывающую один пример общего процесса кодирования, выполняемого кодером.
Фиг. 3 представляет собой концептуальную диаграмму, иллюстрирующую один пример разбиения блока.
Фиг. 4A представляет собой концептуальную диаграмму, иллюстрирующую один пример конфигурации слайса.
Фиг. 4B представляет собой концептуальную диаграмму, иллюстрирующую один пример конфигурации мозаичного элемента.
Фиг. 5A представляет собой схему, показывающую базовые функции преобразования для различных типов преобразования.
Фиг. 5B представляет собой концептуальную диаграмму, иллюстрирующую пример пространственно варьирующихся преобразований (SVT).
Фиг. 6A представляет собой концептуальную диаграмму, иллюстрирующую один пример формы фильтра, используемой в адаптивном контурном фильтре (ALF).
Фиг. 6B представляет собой концептуальную диаграмму, иллюстрирующую другой пример формы фильтра, используемой в ALF.
Фиг. 6C представляет собой концептуальную диаграмму, иллюстрирующую другой пример формы фильтра, используемой в ALF.
Фиг. 7 представляет собой блок-схему, указывающую один пример конкретной конфигурации контурного фильтра, который функционирует как фильтр устранения блочности (DBF).
Фиг. 8 представляет собой концептуальную диаграмму, указывающую пример фильтра устранения блочности, имеющего симметричную характеристику фильтрации относительно границы блока.
Фиг. 9 представляет собой концептуальную диаграмму для иллюстрации границы блока, по которой выполняется процесс фильтрации устранения блочности.
Фиг. 10 представляет собой концептуальную диаграмму, показывающую примеры значений Bs.
Фиг. 11 представляет собой блок-схему последовательности операций, иллюстрирующую один пример процесса, выполняемого процессором предсказания кодера.
Фиг. 12 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример процесса, выполняемого процессором предсказания кодера.
Фиг. 13 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример процесса, выполняемого процессором предсказания кодера.
Фиг. 14 представляет собой концептуальную диаграмму, иллюстрирующую 67 режимов интра-предсказания, используемых в интра-предсказании в варианте осуществления.
Фиг. 15 представляет собой блок-схему последовательности операций, иллюстрирующую примерный поток базовой обработки интер-предсказания.
Фиг. 16 представляет собой блок-схему последовательности операций, иллюстрирующую один пример выведения векторов движения.
Фиг. 17 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример выведения векторов движения.
Фиг. 18 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример выведения векторов движения.
Фиг. 19 представляет собой блок-схему последовательности операций, иллюстрирующую пример интер-предсказания в нормальном интер-режиме.
Фиг. 20 представляет собой блок-схему последовательности операций, иллюстрирующую пример интер-предсказания в режиме объединения.
Фиг. 21 представляет собой концептуальную диаграмму для иллюстрации одного примера процесса выведения вектора движения в режиме объединения.
Фиг. 22 представляет собой блок-схему последовательности операций, иллюстрирующую один пример процесса повышающего преобразования частоты кадров (FRUC).
Фиг. 23 представляет собой концептуальную диаграмму для иллюстрации одного примера согласования образца (паттерна) (двунаправленного согласования) между двумя блоками вдоль траектории движения.
Фиг. 24 представляет собой концептуальную диаграмму для иллюстрации одного примера согласования образца (согласования шаблона (темплета)) между шаблоном в текущей картинке и блоком в опорной картинке.
Фиг. 25A представляет собой концептуальную диаграмму для иллюстрации одного примера выведения вектора движения каждого подблока на основе векторов движения множества соседних блоков.
Фиг. 25B представляет собой концептуальную диаграмму для иллюстрации одного примера выведения вектора движения каждого подблока в аффинном режиме, в котором используются три контрольные точки.
Фиг. 26A представляет собой концептуальную диаграмму для иллюстрации аффинного режима объединения.
Фиг. 26B представляет собой концептуальную диаграмму для иллюстрации аффинного режима объединения, в котором используются две контрольные точки.
Фиг. 26C представляет собой концептуальную диаграмму для иллюстрации аффинного режима объединения, в котором используются три контрольные точки.
Фиг. 27 представляет собой блок-схему последовательности операций, иллюстрирующую один пример процесса в аффинном режиме объединения.
Фиг. 28A представляет собой концептуальную диаграмму для иллюстрации аффинного интер-режима, в котором используются две контрольные точки.
Фиг. 28B представляет собой концептуальную диаграмму для иллюстрации аффинного интер-режима, в котором используются три контрольные точки.
Фиг. 29 представляет собой блок-схему последовательности операций, иллюстрирующую один пример процесса в аффинном интер-режиме.
Фиг. 30A представляет собой концептуальную диаграмму для иллюстрации аффинного интер-режима, в котором текущий блок имеет три контрольные точки и соседний блок имеет две контрольные точки.
Фиг. 30B представляет собой концептуальную диаграмму для иллюстрации аффинного интер-режима, в котором текущий блок имеет две контрольные точки и соседний блок имеет три контрольные точки.
Фиг. 31A представляет собой блок-схему последовательности операций, иллюстрирующую процесс режима объединения, включающий уточнение вектора движения декодера (DMVR).
Фиг. 31B представляет собой концептуальную диаграмму для иллюстрации одного примера процесса DMVR.
Фиг. 32 представляет собой блок-схему последовательности операций, иллюстрирующую один пример генерации изображения предсказания.
Фиг. 33 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример генерации изображения предсказания.
Фиг. 34 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример генерации изображения предсказания.
Фиг. 35 представляет собой блок-схему последовательности операций, иллюстрирующую один пример процесса коррекции изображения предсказания, выполняемого посредством процесса компенсации движения перекрывающегося блока (OBMC).
Фиг. 36 представляет собой концептуальную диаграмму для иллюстрации одного примера процесса коррекции изображения предсказания, выполняемого посредством процесса OBMC.
Фиг. 37 представляет собой концептуальную диаграмму для иллюстрации генерации двух треугольных изображений предсказания.
Фиг. 38 представляет собой концептуальную диаграмму для иллюстрации модели, предполагающей равномерное линейное движение.
Фиг. 39 представляет собой концептуальную диаграмму для иллюстрации одного примера способа генерации изображения предсказания с использованием процесса коррекции яркости выполняемого посредством процесса компенсации локальной освещенности (LIC).
Фиг. 40 представляет собой блок-схему, иллюстрирующую пример установки кодера.
Фиг. 41 представляет собой блок-схему, иллюстрирующую функциональную конфигурацию декодера в соответствии с вариантом осуществления.
Фиг. 42 представляет собой блок-схему последовательности операций, иллюстрирующую один пример общего процесса декодирования, выполняемого посредством декодера.
Фиг. 43 представляет собой блок-схему последовательности операций, иллюстрирующую один пример процесса, выполняемого посредством процессора предсказания декодера.
Фиг. 44 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример процесса, выполняемого процессором предсказания декодера.
Фиг. 45 представляет собой блок-схему последовательности операций, иллюстрирующую пример интер-предсказания в нормальном интер-режиме в декодере.
Фиг. 46 представляет собой блок-схему, иллюстрирующую пример установки декодера.
Фиг. 47 представляет собой диаграмму для иллюстрации способа предсказания пиксельного значения с использованием матрично-взвешенного интра-предсказания (MIP).
Фиг. 48 представляет собой блок-схему последовательности операций, иллюстрирующую один пример процесса выбора набора преобразований NSST, выполняемого посредством преобразователя кодера в соответствии с Аспектом 1 варианта осуществления.
Фиг. 49 представляет собой блок-схему последовательности операций, иллюстрирующую один пример процесса выбора набора преобразований NSST, выполняемого посредством преобразователя кодера в соответствии с Аспектом 2 варианта осуществления.
Фиг. 50 представляет собой блок-схему, иллюстрирующую пример реализации кодера в соответствии с вариантом осуществления.
Фиг. 51 представляет собой блок-схему последовательности операций, иллюстрирующую пример операции кодера, показанного на фиг. 50.
Фиг. 52 представляет собой блок-схему, иллюстрирующую пример реализации декодера в соответствии с вариантом осуществления.
Фиг. 53 представляет собой блок-схему последовательности операций, иллюстрирующую пример операции декодера, показанного на фиг. 52.
Фиг. 54 представляет собой блок-схему, иллюстрирующую общую конфигурацию системы предоставления контента для реализации услуги распространения контента.
Фиг. 55 представляет собой концептуальную диаграмму, иллюстрирующую один пример структуры кодирования в масштабируемом кодировании.
Фиг. 56 представляет собой концептуальную диаграмму, иллюстрирующую один пример структуры кодирования в масштабируемом кодировании.
Фиг. 57 представляет собой концептуальную диаграмму, иллюстрирующую пример экранного изображения веб-страницы.
Фиг. 58 представляет собой концептуальную диаграмму, иллюстрирующую пример экранного изображения веб-страницы.
Фиг. 59 представляет собой блок-схему, иллюстрирующую один пример смартфона.
Фиг. 60 представляет собой блок-схему, иллюстрирующую пример конфигурации смартфона.
ОПИСАНИЕ ПРИМЕРНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0013] Например, кодер в соответствии с одним аспектом настоящего раскрытия представляет собой кодер, который кодирует изображение. Кодер включает в себя: схему и память, связанную со схемой, при этом, при функционировании, схема: выводит ошибку предсказания изображения путем вычитания изображения предсказания изображения из изображения, причем изображение предсказания генерируется с использованием интра-предсказания или интер-предсказания; выполняет первичное преобразование над ошибкой предсказания и выполняет вторичное преобразование над результатом первичного преобразования; выполняет квантование над результатом вторичного преобразования и кодирует результат квантования как данные изображения, и при выполнении вторичного преобразования, когда используется матрично-взвешенное интра-предсказание, включенное в интра-предсказание и имеющее множество режимов предсказания, схема использует, в качестве набора преобразований для вторичного преобразования, общий набор преобразований, совместно используемый среди множества режимов предсказания, матрично-взвешенное интра-предсказание генерирует изображение предсказания путем выполнения матричного вычисления над пиксельной последовательностью, полученной из пиксельных значений окружающих пикселов текущего блока, набор преобразований для вторичного преобразования применяется к коэффициентам первичного преобразования, полученным из результата первичного преобразования.
[0014] Таким образом, когда матрично-взвешенное интра-предсказание используется при выполнении вторичного преобразования, кодер может использовать общий набор преобразований, чтобы уменьшить размер ROM, требуемый для хранения коэффициентов для вторичного преобразования. При этом, в кодере, можно уменьшить размер схемы и повысить эффективность кодирования.
[0015] Здесь, например, общий набор преобразований может быть идентичен набору преобразований для использования в планарном режиме в интра-предсказании ином, чем матрично-взвешенное интра-предсказание.
[0016] Кроме того, например, при выполнении вторичного преобразования, когда изображение предсказания генерируется с использованием матрично-взвешенного интра-предсказания только для сигнала яркости, схема может использовать, в качестве набора преобразований для вторичного преобразования, общий набор преобразований только для сигнала яркости.
[0017] Кроме того, например, при выполнении вторичного преобразования, как для сигнала яркости, так и сигнала цветности, схема может использовать, в качестве общего набора преобразований, набор преобразований для использования в планарном режиме.
[0018] Кроме того, например, при выполнении вторичного преобразования: для сигнала яркости, схема может использовать, в качестве общего набора преобразований, набор преобразований для использования в планарном режиме в интра-предсказании ином, чем матрично-взвешенное интра-предсказание; и для сигнала цветности, схема может использовать, в качестве общего набора преобразований, набор преобразований для использования в режиме CCLM в интра-предсказании ином, чем матрично-взвешенное интра-предсказание.
[0019] Кроме того, декодер в соответствии с одним аспектом настоящего раскрытия представляет собой декодер, который декодирует изображение. Декодер включает в себя: схему и память, связанную со схемой, причем, при функционировании, схема: декодирует данные изображения; выполняет обратное квантование на данных; выполняет вторичное обратное преобразование над результатом обратного квантования и выполняет первичное обратное преобразование над результатом вторичного обратного преобразования; и выводит изображение путем добавления, к изображению предсказания изображения, результата первичного обратного преобразования в качестве ошибки предсказания изображения, и при выполнении вторичного обратного преобразования, когда используется матрично-взвешенное интра-предсказание, включенное в интра-предсказание и имеющее множество режимов предсказания, схема использует, в качестве набора обратных преобразований для вторичного обратного преобразования, общий набор обратных преобразований, совместно используемый среди множества режимов предсказания, матрично-взвешенное интра-предсказание генерирует изображение предсказания путем выполнения матричного вычисления над пиксельной последовательностью, полученной из пиксельных значений окружающих пикселов текущего блока, причем набор обратных преобразований для вторичного обратного преобразования применяется к квантованным коэффициентам, полученным из результата обратного квантования.
[0020] Таким образом, когда матрично-взвешенное интра-предсказание используется при выполнении вторичного обратного преобразования, декодер может использовать общий набор обратных преобразований, чтобы уменьшить размер ROM, требуемый для хранения коэффициентов для вторичного обратного преобразования. При этом, в декодере, можно уменьшить размер схемы и повысить эффективность кодирования.
[0021] Здесь, например, общий набор обратных преобразований может быть идентичен набору обратных преобразований для использования в планарном режиме в интра-предсказании ином, чем матрично-взвешенное интра-предсказание.
[0022] Кроме того, например, при выполнении вторичного обратного преобразования, когда изображение предсказания генерируется с использованием матрично-взвешенного интра-предсказания только для сигнала яркости, схема может использовать, в качестве набора обратных преобразований для вторичного обратного преобразования, общий набор обратных преобразований только для сигнала яркости.
[0023] Кроме того, например, при выполнении вторичного обратного преобразования, как для сигнала яркости, так и сигнала цветности, схема может использовать, в качестве общего набора обратных преобразований, набор обратных преобразований для использования в планарном режиме.
[0024] Кроме того, например, при выполнении вторичного обратного преобразования: для сигнала яркости, схема может использовать, в качестве общего набора обратных преобразований, набор обратных преобразований для использования в планарном режиме в интра-предсказании ином, чем матрично-взвешенное интра-предсказание; и для сигнала цветности, схема может использовать, в качестве общего набора обратных преобразований, набор обратных преобразований для использования в режиме CCLM в интра-предсказании ином, чем матрично-взвешенное интра-предсказание.
[0025] Кроме того, например, способ кодирования в соответствии с одним аспектом настоящего раскрытия представляет собой способ кодирования изображения. Способ кодирования включает в себя: выведение ошибки предсказания изображения путем вычитания изображения предсказания изображения из изображения, причем изображение предсказания генерируется с использованием интра-предсказания или интер-предсказания; выполнение первичного преобразования над ошибкой предсказания и выполнение вторичного преобразования над результатом первичного преобразования; выполнение квантования над результатом вторичного преобразования; и кодирование результата квантования в качестве данных изображения, при этом, при выполнении вторичного преобразования, когда используется матрично-взвешенное интра-предсказание, включенное в интра-предсказание и имеющее множество режимов предсказания, общий набор преобразований, совместно используемый среди множества режимов предсказания, используется в качестве набора преобразований для вторичного преобразования, матрично-взвешенное интра-предсказание генерирует изображение предсказания путем выполнения матричного вычисления над пиксельной последовательностью, полученной из пиксельных значений окружающих пикселов текущего блока, набор преобразований для вторичного преобразования применяется к коэффициентам первичного преобразования, полученным из результата первичного преобразования.
[0026] Таким образом, когда матрично-взвешенное интра-предсказание используется при выполнении вторичного преобразования, можно использовать общий набор преобразований, чтобы уменьшить размер ROM, требуемый для хранения коэффициентов для вторичного преобразования. При этом, в способе кодирования, можно уменьшить размер схемы и повысить эффективность кодирования.
[0027] Кроме того, например, способ декодирования в соответствии с одним аспектом настоящего раскрытия представляет собой способ декодирования для декодирования изображения. Способ декодирования включает в себя: декодирование данных изображения; выполнение обратного квантования над данными; выполнение вторичного обратного преобразования над результатом обратного квантования и выполнение первичного обратного преобразования над результатом вторичного обратного преобразования; и выведение изображения путем добавления, к изображению предсказания изображения, результата первичного обратного преобразования в качестве ошибки предсказания изображения, при этом, при выполнении вторичного обратного преобразования, когда используется матрично-взвешенное интра-предсказание, включенное в интра-предсказание и имеющее множество режимов предсказания, общий набор обратных преобразований, совместно используемый среди множества режимов предсказания, используется в качестве набора обратных преобразований для вторичного обратного преобразования, матрично-взвешенное интра-предсказание генерирует изображение предсказания путем выполнения матричного вычисления над пиксельной последовательностью, полученной из пиксельных значений окружающих пикселов текущего блока, набор обратных преобразований для вторичного обратного преобразования применяется к квантованным коэффициентам, полученным из результата обратного квантования.
[0028] Таким образом, когда матрично-взвешенное интра-предсказание используется при выполнении вторичного обратного преобразования, можно использовать общий набор обратных преобразований, чтобы уменьшить размер ROM, требуемый для хранения коэффициентов для вторичного обратного преобразования. При этом, в способе декодирования, можно уменьшить размер схемы и повысить эффективность кодирования.
[0029] Более того, эти обобщенные и конкретные аспекты могут быть реализованы с использованием системы, устройства, способа, интегральной схемы, компьютерной программы, считываемого компьютером носителя хранения, такого как CD-ROM, или любая комбинация систем, устройств, способов, интегральных схем, компьютерных программ или носителей записи.
[0030] Далее, варианты осуществления будут описаны со ссылкой на чертежи. Отметим, что варианты осуществления, описанные ниже, показывают, каждый, обобщенный или конкретный пример. Числовые значения, формы, материалы, компоненты, компоновка и соединение компонентов, этапы, отношение и порядок этапов и т.д., указанные в следующих вариантах осуществления, являются лишь примерами и не подразумевают ограничения объема формулы изобретения.
[0031] Варианты осуществления кодера и декодера будут описаны ниже. Варианты осуществления являются примерами кодера и декодера, к которым могут быть применены процессы и/или конфигурации, представленные в описании аспектов настоящего раскрытия. Процессы и/или конфигурации могут также быть реализованы в кодере и декодере, отличных от тех, которые соответствуют вариантам осуществления. Например, касательно процессов и/или конфигураций, как применяется к вариантам осуществления, может быть реализовано любое из следующего:
[0032] (1) Любой из компонентов кодера или декодера в соответствии с вариантами осуществления, представленными в описании аспектов настоящего раскрытия, может быть заменен или скомбинирован с другим компонентом, представленным где-либо в описании аспектов настоящего раскрытия.
[0033] (2) В кодере или декодере в соответствии с вариантами осуществления, могут быть выполнены предоставленные на собственное усмотрение изменения в отношении функций или процессов, выполняемых посредством одного или более компонентов кодера или декодера, такие как добавление, подстановка, удаление и т.д. для функций или процессов. Например, любая функция или процесс могут быть заменены или скомбинированы с другой функцией или процессом, представленными где-либо в описании аспектов настоящего раскрытия.
[0034] (3) В способах, реализуемых кодером или декодером в соответствии с вариантами осуществления, могут быть выполнены предоставленные на собственное усмотрение изменения, такие как добавление, подстановка, удаление одного или более процессов, включенных в способ. Например, любой процесс в способе может быть заменен или скомбинирован с другим процессом, представленным где-либо в описании аспектов настоящего раскрытия.
[0035] (4) Один или более компонентов, включенных в кодер или декодер в соответствии с вариантами осуществления, могут быть скомбинированы с компонентом, представленным где-либо в описании аспектов настоящего раскрытия, могут быть скомбинированы с компонентом, включающим одну или более функций, представленных где-либо в описании аспектов настоящего раскрытия, и могут быть скомбинированы с компонентом, который реализует один или более процессов, реализуемых компонентом, представленным в описании аспектов настоящего раскрытия.
[0036] (5) Компонент, включающий одну или более функций кодера или декодера в соответствии с вариантами осуществления, или компонент, который реализует один или более процессов кодера или декодера в соответствии с вариантами осуществления, может быть скомбинирован или заменен компонентом, представленным где-либо в описании аспектов настоящего раскрытия, компонентом, включающим одну или более функций, представленных где-либо в описании аспектов настоящего раскрытия, или компонентом, который реализует один или более процессов, представленных где-либо в описании аспектов настоящего раскрытия.
[0037] (6) В способах, реализуемых кодером или декодером в соответствии с вариантами осуществления, любой из процессов, включенных в способ, может быть заменен или скомбинирован с процессом, представленным где-либо в описании аспектов настоящего раскрытия, или с любым соответствующим или эквивалентным процессом.
[0038] (7) Один или более процессов, включенных в способы, реализуемые кодером или декодером в соответствии с вариантами осуществления, могут быть скомбинированы с процессом, представленным где-либо в описании аспектов настоящего раскрытия.
[0039] (8) Реализация процессов и/или конфигураций, представленных в описании аспектов настоящего раскрытия, не ограничена кодером или декодером в соответствии с вариантами осуществления. Например, процессы и/или конфигурации могут быть реализованы в устройстве, используемом для целей, отличных от кодера движущегося изображения или декодера движущегося изображения, раскрытых в вариантах осуществления.
[Кодер]
[0040] Сначала будет описан кодер в соответствии с вариантом осуществления. Фиг. 1 представляет собой блок-схему, иллюстрирующую функциональную конфигурацию кодера 100 в соответствии с вариантом осуществления. Кодер 100 представляет собой кодер видео, который кодирует видео в единицах блока.
[0041] Как иллюстрируется на фиг. 1, кодер 100 представляет собой устройство, которое кодирует изображение в единицах блока, и включает в себя модуль 102 разбиения, вычитатель 104, преобразователь 106, квантователь 108, энтропийный кодер 110, обратный квантователь 112, обратный преобразователь 114, сумматор 116, память 118 блоков, контурный фильтр 120, память 122 кадров, интра-предсказатель 124, интер-предсказатель 126 и контроллер 128 предсказания.
[0042] Кодер 100 реализуется, например, как типовой процессор и память. В этом случае, когда программа программного обеспечения, сохраненная в памяти, исполняется процессором, процессор функционирует как модуль 102 разбиения, вычитатель 104, преобразователь 106, квантователь 108, энтропийный кодер 110, обратный квантователь 112, обратный преобразователь 114, сумматор 116, контурный фильтр 120, интра-предсказатель 124, интер-предсказатель 126 и контроллер 128 предсказания. Альтернативно, кодер 100 может быть реализован как одна или более специализированных электронных схем, соответствующих модулю 102 разбиения, вычитателю 104, преобразователю 106, квантователю 108, энтропийному кодеру 110, обратному квантователю 112, обратному преобразователю 114, сумматору 116, контурному фильтру 120, интра-предсказателю 124, интер-предсказателю 126 и контроллеру 128 предсказания.
[0043] Далее, описывается общий поток процессов, выполняемых посредством кодера 100, и затем будет описан каждый из составных элементов, включенных в кодер 100.
[Общий поток процесса кодирования]
[0044] Фиг. 2 представляет собой блок-схему последовательности операций, показывающую один пример общего процесса кодирования, выполняемого кодером 100.
[0045] Сначала, модуль 102 разбиения кодера 100 разбивает каждую из картинок, включенных во входное изображение, которое представляет собой видео, на множество блоков, имеющих фиксированный размер (например, 128×128 пикселов) (этап Sa_1). Модуль 102 разбиения затем выбирает образец (шаблон) разбиения для блока фиксированного размера (также упоминается как форма блока) (этап Sa_2). Иными словами, модуль 102 разбиения дополнительно разбивает блок фиксированного размера на множество блоков, которые формируют выбранный образец разбиения. Кодер 100 выполняет, для каждого из множества блоков, этапы Sa_3 - Sa_9 для блока (который является текущим блоком, подлежащим кодированию).
[0046] Иными словами, процессор предсказания, который включает в себя все или часть интра-предсказателя 124, интер-предсказателя 126 и контроллера 128 предсказания, генерирует сигнал предсказания (также упоминается как блок предсказания) текущего блока, подлежащего кодированию (также упоминается как текущий блок) (этап Sa_3).
[0047] Затем, вычитатель 104 генерирует разность между текущим блоком и блоком предсказания как остаток предсказания (также упоминается как разностный блок) (этап Sa_4).
[0048] Затем, преобразователь 106 преобразует разностный блок, и квантователь 108 квантует результат, чтобы сгенерировать множество квантованных коэффициентов (этап Sa_5). Следует отметить, что блок, имеющий множество квантованных коэффициентов, также упоминается как блок коэффициентов.
[0049] Затем, энтропийный кодер 110 кодирует (конкретно, энтропийно кодирует) блок коэффициентов и параметр предсказания, относящийся к генерации сигнала предсказания, чтобы сгенерировать закодированный сигнал (этап Sa_6). Следует отметить, что закодированный сигнал также упоминается как закодированный битовый поток, сжатый битовый поток или поток.
[0050] Затем, обратный квантователь 112 выполняет обратное квантование блока коэффициентов, и обратный преобразователь 114 выполняет обратное преобразование результата, чтобы восстановить множество остатков предсказания (то есть, разностный блок) (этап Sa_7).
[0051] Затем, сумматор 116 добавляет блок предсказания к восстановленному разностному блоку, чтобы восстановить текущий блок в качестве восстановленного изображения (также упоминается как восстановленный блок или блок декодированного изображения) (этап Sa_8). Таким путем генерируется восстановленное изображение.
[0052] Когда восстановленное изображение сгенерировано, контурный фильтр 120 выполняет фильтрацию восстановленного изображения по мере необходимости (этап Sa_9).
[0053] Кодер 100 затем определяет, закончено ли кодирование всей картинки (этап Sa_10). При определении, что кодирование еще не закончено (Нет на этапе Sa_10), процессы от этапа Sa_2 исполняются повторно.
[0054] Хотя кодер 100 выбирает один образец разбиения для блока фиксированного размера и кодирует каждый блок в соответствии с образцом разбиения в вышеописанном примере, следует отметить, что каждый блок может кодироваться в соответствии с соответствующим одним из множества образцов разбиения. В этом случае, кодер 100 может оценивать стоимость для каждого из множества образцов разбиения, и, например, может выбрать закодированный сигнал, получаемый кодированием в соответствии с образцом разбиения, который дает наименьшую стоимость, в качестве закодированного сигнала, который выводится.
[0055] Как иллюстрируется, процессы на этапах Sa_1 - Sa_10 выполняются последовательно кодером 100. Альтернативно, два или более процессов могут выполняться параллельно, процессы могут быть переупорядочены и т.д.
[Модуль разбиения]
[0056] Модуль 102 разбиения разбивает каждую из картинок, включенных во входное видео, на множество блоков и выводит каждый блок на вычитатель 104. Например, модуль 102 разбиения сначала разбивает картинку на блоки фиксированного размера (например, 128×128). Могут использоваться другие фиксированные размеры блока. Блок фиксированного размера также упоминается как единица дерева кодирования (CTU). Модуль 102 разбиения затем разбивает каждый блок фиксированного размера на блоки переменных размеров (например, 64×64 или меньше), на основе рекурсивного разбиения на блоки квадродерева и/или двоичного дерева. Иными словами, модуль 102 разбиения выбирает образец разбиения. Блок переменного размера также упоминается как единица кодирования (CU), единица предсказания (PU) или единица преобразования (TU). Следует отметить, что, в различных видах примеров обработки, нет необходимости проводить различие между CU, PU и TU; все или некоторые из блоков в картинке могут быть обработаны в единицах CU, PU или TU.
[0057] Фиг. 3 представляет собой концептуальную диаграмму, иллюстрирующую один пример блочного разбиения в соответствии с вариантом осуществления. На фиг. 3, сплошные линии представляют блочные границы блоков, разделенных путем блочного разбиения квадродерева, и пунктирные линии представляют блочные границы блоков, разделенных путем блочного разбиения двоичного дерева.
[0058] Здесь, блок 10 является квадратным блоком, имеющим 128×128 пикселов (128×128 блок). Этот 128×128 блок 10 сначала разделен на четыре квадратных 64×64 блока (блочное разбиение квадродерева).
[0059] Верхний-левый 64×64 блок дополнительно вертикально разделен на два прямоугольных 32×64 блока, и левый 32×64 блок дополнительно вертикально разделен на два прямоугольных 16×64 блока (блочное разбиение двоичного дерева). В результате, верхний-левый 64×64 блок разделен на два 16×64 блока 11 и 12 и один 32×64 блок 13.
[0060] Верхний-правый 64×64 блок горизонтально разделен на два прямоугольных 64×32 блока 14 и 15 (блочное разбиение двоичного дерева).
[0061] Нижний-левый 64×64 блок сначала разделен на четыре квадратных 32×32 блока (блочное разбиение квадродерева). Верхний-левый блок и нижний-правый блок среди четырех 32×32 блоков дополнительно разделены. Верхний-левый 32×32 блок вертикально разделен на два прямоугольные 16×32 блока, и правый 16×32 блок дополнительно горизонтально разделен на два 16×16 блока (блочное разбиение двоичного дерева). Нижний-правый 32×32 блок горизонтально разделен на два 32×16 блока (блочное разбиение двоичного дерева). В результате, нижний-левый 64×64 блок разделен на 16×32 блок 16, два 16×16 блока 17 и 18, два 32×32 блока 19 и 20 и два 32×16 блока 21 и 22.
[0062] Нижний-правый 64×64 блок 23 не разделяется.
[0063] Как описано выше, на фиг. 3, блок 10 разделен на тринадцать блоков 11-23 переменного размера на основе рекурсивного блочного разбиения квадродерева и двоичного дерева. Этот тип разбиения также упоминается как разбиение квадродерева плюс двоичного дерева (QTBT).
[0064] Следует отметить, что, на фиг. 3, один блок разделен на четыре или два блока (блочное разбиение квадродерева или двоичного дерева), но разбиение не ограничено этими примерами. Например, один блок может быть разделен на три блока (троичное блочное разбиение). Разбиение, включающее такое троичное блочное разбиение, также упоминается как разбиение дерева множества типов (MBT).
[Структура картинки: слайса/мозаичный элемент]
[0065] Картинка может быть сконфигурирована в единицах одного или более слайсов или мозаичных элементов, чтобы декодировать картинку параллельно. Картинка, сконфигурированная в единицах одного или более слайсов или мозаичных элементов, может быть сконфигурирована модулем 102 разбиения.
[0066] Слайсы являются базовыми единицами кодирования, включенными в картинку. Картинка может включать, например, один или более слайсов. Кроме того, слайс включает в себя одну или более последовательных единиц дерева кодирования (CTU).
[0067] Фиг. 4A представляет собой концептуальную диаграмму, иллюстрирующую один пример конфигурации слайса. Например, картинка включает в себя 11×8 CTU и разделена на четыре слайса (слайсы 1-4). Слайс 1 включает в себя шестнадцать CTU, слайс 2 включает в себя двадцать одну CTU, слайс 3 включает в себя двадцать девять CTU, и слайс 4 включает в себя двадцать две CU. Здесь, каждая CTU в картинке принадлежит одному из слайсов. Форма каждого слайса представляет собой форму, получаемую разбиением картинки горизонтально. Граница каждого слайса не обязательно должна совпадать с концом изображения и может совпадать с любой из границ между CTU в изображении. Порядок обработки CTU в слайсе (порядок кодирования или порядок декодирования) представляет собой, например, порядок растрового сканирования. Слайс включает в себя информацию заголовка и закодированные данные. Признаки слайса могут быть описаны в информации заголовка. Признаки включают адрес CTU верхней CTU в слайсе, тип слайса и т.д.
[0068] Мозаичный элемент является единицей прямоугольной области, включенной в картинку. Каждому из мозаичных элементов может быть присвоен номер, упоминаемый как TileId в порядке растрового сканирования.
[0069] Фиг. 4B представляет собой концептуальную диаграмму, показывающую пример конфигурации мозаичных элементов. Например, картинка включает в себя 11×8 CTU и разделена на четыре мозаичных элемента прямоугольной области (мозаичные элементы 1-4). Когда используются мозаичные элементы, порядок обработки CTU изменяется относительно порядка обработки в случае, когда никакой мозаичный элемент не используется. Когда никакой мозаичный элемент не используется, CTU в картинке обрабатываются в порядке растрового сканирования. Когда мозаичные элементы используются, по меньшей мере одна CTU в каждом из мозаичных элементов обрабатывается в порядке растрового сканирования. Например, как иллюстрируется на фиг. 4B, порядок обработки CTU, включенных в мозаичный элемент 1, представляет собой порядок, который начинается с левого конца первой строки мозаичного элемента 1 в направлении правого конца первой строки мозаичного элемента 1 и затем начинается с левого конца второй строки мозаичного элемента 1 в направлении правого конца второй строки мозаичного элемента 1.
[0070] Следует отметить, что один мозаичный элемент может включать в себя один или более слайсов, и один слайс может включать в себя один или более мозаичных элементов.
[Вычитатель]
[0071] Вычитатель 104 вычитает сигнал предсказания (выборку предсказания, которая введена из контроллера 128 предсказания, указанного ниже) из исходного сигнала (исходной выборки) в единицах блока, введенных из модуля 102 разбиения и разделенных модулем 102 разбиения. Иными словами, вычитатель 104 вычисляет ошибки предсказания (также упоминаются как остатки) блока, подлежащего кодированию (далее также упоминается как текущий блок). Вычитатель 104 затем выводит вычисленные ошибки предсказания (остатки) на преобразователь 106.
[0072] Исходный сигнал является сигналом, который был введен в кодер 100, и представляет изображение каждой картинки, включенной в видео (например, сигнал яркости и два сигнала цветности). Далее, сигнал, представляющий изображение, также упоминается как выборка.
[Преобразователь]
[0073] Преобразователь 106 преобразует ошибки предсказания в пространственной области в коэффициенты преобразования в частотной области и выводит коэффициенты преобразования на квантователь 108. Более конкретно, преобразователь 106 применяет, например, определенное дискретное косинусное преобразование (DCT) или дискретное синусное преобразование (DST) к ошибкам предсказания в пространственной области. Определенное DCT или DST может быть предварительно определенным.
[0074] Следует отметить, что преобразователь 106 может адаптивно выбирать тип преобразования среди множества типов преобразования и преобразовывать ошибки предсказания в коэффициенты преобразования с использованием базовой функции преобразования, соответствующей выбранному типу преобразования. Этот вид преобразования также упоминается как явное многоядерное преобразование (EMT) или адаптивное множественное преобразование (AMT).
[0075] Типы преобразования включают, например, DCT-II, DCT-V, DCT-VIII, DST-I и DST-VII. Фиг. 5A представляет собой схему, показывающую базовые функции преобразования для примерных типов преобразования. На фиг. 5A, N указывает число входных пикселов. Например, выбор типа преобразования среди множества типов преобразования может зависеть от типа предсказания (одного из интра-предсказания и интер-предсказания) и может зависеть от режима интра-предсказания.
[0076] Информация, указывающая, следует ли применять такое EMT или AMT (упоминается, например, как флаг EMT или флаг AMT), и информация, указывающая выбранный тип преобразования, обычно сигнализируется на уровне CU. Следует отметить, что сигнализация такой информации не обязательно должна выполняться на уровне CU и может выполняться на другом уровне (например, на уровне битовой последовательности, на уровне картинки, уровне слайса, уровне мозаичного элемента или на уровне CTU).
[0077] Кроме того, преобразователь 106 может повторно преобразовывать коэффициенты преобразования (результат преобразования). Такое повторное преобразование также упоминается как адаптивное вторичное преобразование (AST) или неразделяемое вторичное преобразование (NSST). Например, преобразователь 106 выполняет повторное преобразование в единицах подблока (например, 4×4 подблока), включенного в блок коэффициентов преобразования, соответствующий ошибке интра-предсказания. Информация, указывающая, применять ли NSST, и информация, относящаяся к матрице преобразования для использования в NSST, обычно сигнализируются на уровне CU. Следует отметить, что сигнализация такой информации не обязательно должна выполняться на уровне CU и может выполняться на другом уровне (например, на уровне последовательности, уровне картинки, уровне слайса, уровне мозаичного элемента или на уровне CTU).
[0078] Преобразователь 106 может использовать разделяемое преобразование и неразделяемое преобразование. Разделяемое преобразование является способом, в котором преобразование выполняется множество раз путем отдельного выполнения преобразования для каждого из ряда направлений в соответствии с числом измерений (размерностей) входов. Неразделяемое преобразование является способом выполнения совместного преобразования, в котором два или более измерений в многомерных входах совместно рассматриваются как одно измерение.
[0079] В одном примере неразделяемого преобразования, когда входом является 4×4 блок, 4×4 блок рассматривается как один массив, включающий шестнадцать элементов, и преобразование применяет 16×16 матрицу преобразования к массиву.
[0080] В другом примере неразделяемого преобразования, 4×4 входной блок рассматривается как один массив, включающий шестнадцать элементов, и затем может выполняться преобразование (преобразование гиперкуба Гивенса (hypercube givens)), в котором поворот Гивенса в отношении массива выполняется множество раз.
[0081] При преобразовании в преобразователе 106, типы баз, подлежащих преобразованию в частотную область в соответствии с областями в CU, могут переключаться. Примеры включают в себя пространственно варьирующиеся преобразования (SVT). В SVT, как иллюстрируется на фиг. 5B, CU разделяются на две равных области горизонтально или вертикально, и только одна из областей преобразуется в частотную область. Тип базы преобразования может устанавливаться для каждой области. Например, используются DST7 и DST8. В этом примере, только одна из этих двух областей в CU преобразуется, а другая не преобразуется. Однако обе из этих областей могут быть преобразованы. Кроме того, способ разбиения не ограничен разбиением на две равные области и может быть более гибким. Например, CU может разбиваться на четыре равных области, или информация, указывающая разбиение, может кодироваться отдельно и может сигнализироваться таким же способом, как разбиение CU. Следует отметить, что SVT также упоминается как подблочное преобразование (SBT).
[Квантователь]
[0082] Квантователь 108 квантует коэффициенты преобразования, выведенные из преобразователя 106. Более конкретно, квантователь 108 сканирует, в определенном порядке сканирования, коэффициенты преобразования текущего блока и квантует просканированные коэффициенты преобразования на основе параметров квантования (QP), соответствующих коэффициентам преобразования. Квантователь 108 затем выводит квантованные коэффициенты преобразования (далее также упоминаются как квантованные коэффициенты) текущего блока на энтропийный кодер 110 и обратный квантователь 112. Определенный порядок сканирования может быть предварительно определенным.
[0083] Определенный порядок сканирования является порядком для квантования/обратного квантования коэффициентов преобразования. Например, определенный порядок сканирования может быть определен как порядок возрастания частоты (от низкой к высокой частоте) или порядок снижения частоты (от высокой к низкой частоте).
[0084] Параметр квантования (QP) является параметром, определяющим шаг квантования (ширину квантования). Например, когда значение параметра квантования увеличивается, шаг квантования также увеличивается. Иными словами, когда значение параметра квантования увеличивается, ошибка квантования увеличивается.
[0085] Кроме того, матрица квантования может использоваться для квантования. Например, различные виды матриц квантования могут использоваться соответственно размерам частотного преобразования, таким как 4×4 и 8×8, режимам предсказания, таким как интра-предсказание и интер-предсказание, и пиксельным компонентам, таким как пиксельные компоненты яркости и цветности. Следует отметить, что квантование означает оцифровку значений, дискретизированных с определенными интервалами, соответственно определенным уровням. В этой области техники, квантование может упоминаться с использованием других выражений, таких как округление и масштабирование, и может применять округление и масштабирование. Определенные интервалы и уровни могут быть предварительно определенными.
[0086] Способы, использующие матрицы квантования, включают способ, использующий матрицу квантования, которая установлена непосредственно на стороне кодера, и способ, использующий матрицу квантования, которая установлена по умолчанию (матрица по умолчанию). На стороне кодера, матрица квантования, пригодная для признаков изображения, может быть установлена путем непосредственной установки матрицы квантования. Этот случай, однако, имеет недостаток увеличения объема кодирования для кодирования матрицы квантования.
[0087] Имеется способ для квантования высокочастотного коэффициента и низкочастотного коэффициента без использования матрицы квантования. Следует отметить, что этот способ эквивалентен способу, использующему матрицу квантования (плоскую матрицу), коэффициенты которой имеют одно и то же значение.
[0088] Матрица квантования может быть задана с использованием, например, набора параметров последовательности (SPS) или набора параметров картинки (PPS). SPS включает в себя параметр, который используется для последовательности, и PPS включает в себя параметр, который используется для картинки. Каждый из SPS и PPS может просто упоминаться как набор параметров.
[Энтропийный кодер]
[0089] Энтропийный кодер 110 генерирует закодированный сигнал (закодированный битовый поток) на основе квантованных коэффициентов, которые были введены из квантователя 108. Более конкретно, энтропийный кодер 110, например, бинаризует квантованные коэффициенты и арифметически кодирует двоичный сигнал и выводит сжатый битовый поток или последовательность.
[Обратный квантователь]
[0090] Обратный квантователь 112 обратно квантует квантованные коэффициенты, которые были введены из квантователя 108. Более конкретно, обратный квантователь 112 обратно квантует, в определенном порядке сканирования, квантованные коэффициенты текущего блока. Обратный квантователь 112 затем выводит обратно квантованные коэффициенты преобразования текущего блока на обратный преобразователь 114. Определенный порядок сканирования может быть предварительно определенным.
[Обратный преобразователь]
[0091] Обратный преобразователь 114 восстанавливает ошибки предсказания (остатки) путем обратного преобразования коэффициентов преобразования, которые были введены из обратного квантователя 112. Более конкретно, обратный преобразователь 114 восстанавливает ошибки предсказания текущего блока путем применения обратного преобразования, соответствующего преобразованию, примененному преобразователем 106, к коэффициентам преобразования. Обратный преобразователь 114 затем выводит восстановленные ошибки предсказания на сумматор 116.
[0092] Следует отметить, что поскольку информация теряется при квантовании, восстановленные ошибки предсказания не соответствуют ошибкам предсказания, вычисленным вычитателем 104. Иными словами, восстановленные ошибки предсказания обычно включают ошибки квантования.
[Сумматор]
[0093] Сумматор 116 восстанавливает текущий блок путем суммирования ошибок предсказания, которые были введены из обратного преобразователя 114, и выборок предсказания, которые были введены из контроллера 128 предсказания. Сумматор 116 затем выводит восстановленный блок в память 118 блоков и контурный фильтр 120. Восстановленный блок также упоминается как локально декодированный блок.
[Память блоков]
[0094] Память 118 блоков представляет собой, например, память для хранения блоков в картинке, подлежащей кодированию (далее упоминается как текущая картинка), к которой обращаются при интра-предсказании. Более конкретно, память 118 блоков сохраняет восстановленные блоки, выведенные из сумматора 116.
[Память кадров]
[0095] Память 122 кадров представляет собой, например, память для хранения опорных картинок для использования в интер-предсказании и также упоминается как буфер кадров. Более конкретно, память 122 кадров сохраняет восстановленные блоки, отфильтрованные контурным фильтром 120.
[Контурный фильтр]
[0096] Контурный фильтр 120 применяет контурный фильтр к блокам, восстановленным сумматором 116, и выводит отфильтрованные восстановленные блоки в память 122 кадров. Контурный фильтр является фильтром, используемым в контуре кодирования (внутриконтурный фильтр), и включает в себя, например, фильтр устранения блочности (DF или DBF), адаптивное смещение выборки (SAO) и адаптивный контурный фильтр (ALF).
[0097] В ALF, применяется фильтр наименьшей квадратичной ошибки для устранения артефактов сжатия. Например, один фильтр, выбранный среди множества фильтров на основе направления и активности локальных градиентов, применяется для каждого из 2×2 подблоков в текущем блоке.
[0098] Более конкретно, сначала, каждый подблок (например, каждый 2×2 подблок) классифицируется в один из множества классов (например, пятнадцати или двадцати пяти классов). Классификация подблока основана на направленности и активности градиента. Например, индекс С классификации (например, C=5D+A) выводится на основе направленности D градиента (например, от 0 до 2 или от 0 до 4) и активности А градиента (например, от 0 до 4). Затем, на основе индекса С классификации, каждый подблок классифицируется в один из множества классов.
[0099] Например, направленность D градиента вычисляется путем сравнения градиентов множества направлений (например, горизонтального, вертикального и двух диагональных направлений). Кроме того, например, активность А градиента вычисляется путем суммирования градиентов множества направлений и квантования результата суммирования.
[0100] Фильтр, подлежащий использованию для каждого подблока, определяется из множества фильтров на основе результата такой классификации.
[0101] Форма фильтра, подлежащая использованию в ALF, представляет собой, например, круговую симметричную форму фильтра. Фиг. 6A - фиг. 6C иллюстрируют примеры форм фильтра, используемых в ALF. Фиг. 6A иллюстрирует 5×5 фильтр ромбовидной формы, фиг. 6B иллюстрирует 7×7 фильтр ромбовидной формы, и фиг. 6C иллюстрирует 9×9 фильтр ромбовидной формы. Информация, указывающая форма фильтра, обычно сигнализируется на уровне картинки. Следует отметить, что сигнализация такой информации, указывающей форму фильтра, не обязательно должна выполняться на уровне картинки и может выполняться на другом уровне (например, на уровне последовательности, уровне слайса, уровне мозаичного элемента, уровне CTU или на уровне CU).
[0102] ON (включение) или OFF (отключение) ALF определяется, например, на уровне картинки или уровне CU. Например, решение, следует ли применять ALF к яркости, может быть принято на уровне CU, а решение, следует ли применять ALF к цветности, может быть принято на уровне картинки. Информация, указывающая ON или OFF для ALF, обычно сигнализируется на уровне картинки или уровне CU. Следует отметить, что сигнализация информации, указывающей ON или OFF для ALF, не обязательно должна выполняться на уровне картинки или уровне CU и может выполняться на другом уровне (например, на уровне последовательности, уровне слайса, уровне мозаичного элемента или на уровне CTU).
[0103] Набор коэффициентов для множества выбираемых фильтров (например, пятнадцати или двадцати пяти фильтров) обычно сигнализируется на уровне картинки. Следует отметить, что сигнализация набора коэффициентов не обязательно должна выполняться на уровне картинки и может выполняться на другом уровне (например, на уровне последовательности, уровне слайса, уровне мозаичного элемента, уровне CTU, уровне CU или на уровне подблока).
[Контурный фильтр > фильтр устранения блочности]
[0104] В фильтре устранения блочности, контурный фильтр 120 выполняет процесс фильтрации в отношении границы блока в восстановленном изображении, чтобы уменьшить искажение, которое возникает в отношении границы блока.
[0105] Фиг. 7 представляет собой блок-схему, иллюстрирующую один пример конкретной конфигурации контурного фильтра 120, который функционирует как фильтр устранения блочности.
[0106] Контурный фильтр 120 включает в себя: определитель 1201 границы; определитель 1203 фильтра; модуль 1205 исполнения фильтрации; определитель 1208 процесса; определитель 1207 характеристики фильтра и переключатели 1202, 1204 и 1206.
[0107] Определитель 1201 границы определяет, присутствует ли пиксел, подлежащий фильтрации устранения блочности (то есть, текущий пиксел) вокруг границы блока. Определитель 1201 границы затем выводит результат определения на переключатель 1202 и определитель 1208 обработки.
[0108] В случае, когда определитель 1201 границы определил, что текущий пиксел присутствует вокруг границы, переключатель 1202 выводит нефильтрованное изображение на переключатель 1204. В противном случае, когда определитель 1201 границы определил, что никакой текущий пиксел не присутствует вокруг границы блока, переключатель 1202 выводит нефильтрованное изображение на переключатель 1206.
[0109] Определитель 1203 фильтра определяет, следует ли выполнять фильтрацию устранения блочности текущего пиксела, на основе пиксельного значения по меньшей мере одного окружающего пиксела, расположенного вокруг текущего пиксела. Определитель 1203 фильтра затем выводит результат определения на переключатель 1204 и определитель 1208 обработки.
[0110] В случае, когда определитель 1203 фильтра определил выполнять фильтрацию устранения блочности текущего пиксела, переключатель 1204 выводит нефильтрованное изображение, полученное через переключатель 1202, на модуль 1205 исполнения фильтрации. В противном случае, когда определитель 1203 фильтра определил не выполнять фильтрацию устранения блочности текущего пиксела, переключатель 1204 выводит нефильтрованное изображение, полученное через переключатель 1202, на переключатель 1206.
[0111] При получении нефильтрованного изображения через переключатели 1202 и 1204, модуль 1205 исполнения фильтрации исполняет, для текущего пиксела, фильтрацию устранения блочности с характеристикой фильтра, определенной определителем 1207 характеристики фильтра. Модуль 1205 исполнения фильтрации затем выводит отфильтрованный пиксел на переключатель 1206.
[0112] Под управлением определителем 1208 обработки, переключатель 1206 избирательно выводит пиксел, который еще не был отфильтрован для устранения блочности, и пиксел, который был отфильтрован для устранения блочности модулем 1205 исполнения фильтрации.
[0113] Определитель 1208 обработки управляет переключателем 1206 на основе результатов определений, выполненных определителем 1201 границы и определителем 1203 фильтра. Иными словами, определитель 1208 обработки побуждает переключатель 1206 выводить пиксел, который был отфильтрован для устранения блочности, когда определитель 1201 границы определил, что текущий пиксел присутствует вокруг границы блока, и определитель 1203 фильтра определил выполнять фильтрацию устранения блочности текущего пиксела. Кроме того, в другом случае, определитель 1208 обработки побуждает переключатель 1206 выводить пиксел, который не был отфильтрован для устранения блочности. Отфильтрованное изображение выводится с переключателя 1206 путем повторения вывода пиксела таким образом.
[0114] Фиг. 8 представляет собой концептуальную диаграмму, показывающую пример фильтра устранения блочности, имеющего симметричную характеристику фильтрации по отношению к границе блока.
[0115] В фильтре устранения блочности процесс, один из двух фильтров устранения блочности, имеющих различные характеристики, то есть, сильный фильтр и слабый фильтр выбирается с использованием пиксельных значений и параметров квантования. В случае сильного фильтра, пикселы от p0 до p2 и пикселы от q0 до q2 присутствуют вокруг границы блока, как иллюстрируется на фиг. 8, пиксельные значения соответствующего пиксела от q0 до q2 заменяются на пиксельные значения от q’0 до q’2 путем выполнения, например, вычислений в соответствии с выражениями ниже.
[0116]
q’0 = (p1+2 × p0+2 × q0+2 × q1+q2+4)/8
q’1 = (p0 +q0+q1+q2+2)/4
q’2 = (p0+q0+q1 +3 × q2+2 × q3 +4)/8
[0117] Следует отметить, что, в приведенных выше выражениях, p0 до p2 и q0 до q2 являются пиксельными значениями соответствующих пикселов p0 до p2 и пикселов q0 до q2. Кроме того, q3 является пиксельным значением соседнего пиксела q3, расположенного на противоположной стороне от пиксела q2 относительно границы блока. Кроме того, в правой стороне каждого из выражений, коэффициенты, которые умножены на соответствующие пиксельные значения пикселов, подлежащих использованию для фильтрации устранения блочности, являются коэффициентами фильтра.
[0118] Более того, при фильтрации устранения блочности, может выполняться ограничение, так что вычисленные пиксельные значения не превышают порогового значения. В процессе ограничения, пиксельные значения, вычисленные в соответствии с приведенными выше выражениями, ограничиваются до значения, полученного в соответствии с “пиксельным значением вычисления ±2 × пороговое значение” с использованием порогового значения, определенного на основе параметра квантования. Таким образом, можно предотвратить избыточное сглаживание.
[0119] Фиг. 9 представляет собой концептуальную диаграмму для иллюстрации границы блока, в отношении которой выполняется процесс фильтрации устранения блочности. Фиг. 10 представляет собой концептуальную диаграмму, показывающую примеры значений Bs.
[0120] Граница блока, по которой выполняется процесс фильтрации устранения блочности, представляет собой, например, границу между единицами предсказания (PU), имеющими блоки 8×8 пикселов, как иллюстрируется на фиг. 9, или границу между единицами преобразования (TU). Процесс фильтрации устранения блочности может выполняться в единицах четырех строк и четырех столбцов. Сначала определяются значения интенсивности (силы) границы (Bs), как указано на фиг. 10 для блока P и блока Q, иллюстрируемых на фиг. 9.
[0121] В соответствии со значениями Bs на фиг. 10, определяется, следует ли выполнять процессы фильтрации устранения блочности границ блока, принадлежащих тому же самому изображению, с использованием различных интенсивностей. Процесс фильтрации устранения блочности для сигнала цветности выполняется, когда значение Bs равно 2. Процесс фильтрации устранения блочности для сигнала яркости выполняется, когда значение Bs равно 1 или более и определенное условие удовлетворяется. Определенное условие может быть предварительно определенным. Следует отметить, что условия для определения значения Bs не ограничены теми, которые показаны на фиг. 10, и значение Bs может определяться на основе другого параметра.
[Процессор предсказания (интра-предсказатель, интер-предсказатель, контроллер предсказания)]
[0122] Фиг. 11 представляет собой блок-схему последовательности операций, иллюстрирующую один пример процесса, выполняемого процессором предсказания кодера 100. Следует отметить, что процессор предсказания включает в себя все или часть следующих компонентов: интра-предсказатель 124; интер-предсказатель 126 и контроллер 128 предсказания.
[0123] Процессор предсказания генерирует изображение предсказания текущего блока (этап Sb_1). Это изображение предсказания также упоминается как сигнал предсказания или блок предсказания. Следует отметить, что сигнал предсказания представляет собой, например, сигнал интра-предсказания или сигнал интер-предсказания. Конкретно, процессор предсказания генерирует изображение предсказания текущего блока с использованием восстановленного изображения, которое уже было получено посредством генерации блока предсказания, генерации разностного блока, генерации блока коэффициентов, восстановления разностного блока и генерации блока декодированного изображения.
[0124] Восстановленное изображение может быть, например, изображением в опорной картинке или изображением закодированного блока в текущей картинке, которая представляет собой картинку, включающую в себя текущий блок. Закодированный блок в текущей картинке представляет собой, например, соседний блок текущего блока.
[0125] Фиг. 12 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример процесса, выполняемого процессором предсказания кодера 100.
[0126] Процессор предсказания генерирует изображение предсказания с использованием первого способа (этап Sc_1a), генерирует изображение предсказания с использованием второго способа (этап Sc_1b) и генерирует изображение предсказания с использованием третьего способа (этап Sc_1c). Первый способ, второй способ и третий способ могут быть взаимно различными способами для генерации изображения предсказания. Каждый из первого по третий способы могут представлять собой способ интер-предсказания, способ интра-предсказания или другой способ предсказания. Вышеописанное восстановленное изображение может быть использовано в этих способах предсказания.
[0127] Затем, процессор предсказания выбирает любой один из множества способов предсказания, генерируемых на этапах Sc_1a, Sc_1b и Sc_1c (этап Sc_2). Выбор изображения предсказания, который представляет собой выбор способа или режима для получения конечного изображения предсказания, может быть сделан путем вычисления стоимости для каждого из сгенерированных изображений предсказания и на основе стоимости. Альтернативно, выбор изображения предсказания может быть сделан на основе параметра, который используется в процессе кодирования. Кодер 100 может преобразовывать информацию для идентификации выбранного изображения предсказания, способа или режима в закодированный сигнал (также упоминается как закодированный битовый поток). Информация может представлять собой, например, флаг или тому подобное. Таким образом, декодер способен генерировать изображение предсказания в соответствии со способом или режимом, выбранным на основе информации в кодере 100. Следует отметить, что, в примере, проиллюстрированном на фиг. 12, процессор предсказания выбирает любое из изображений предсказания после того, как изображения предсказания сгенерированы с использованием соответствующих способов. Однако процессор предсказания может выбрать способ или режим на основе параметра для использования в вышеописанном процессе кодирования перед генерацией изображений предсказания и может генерировать изображение предсказания в соответствии с выбранным способом или режимом.
[0128] Например, первый способ и второй способ могут представлять собой интра-предсказание и интер-предсказание, соответственно, и процессор предсказания может выбрать конечное изображение предсказания для текущего блока из изображений предсказания, сгенерированных в соответствии со способами предсказания.
[0129] Фиг. 13 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример процесса, выполняемого процессором предсказания кодера 100.
[0130] Сначала, процессор предсказания генерирует изображение предсказания с использованием интра-предсказания (этап Sd_1a) и генерирует изображение предсказания с использованием интер-предсказания (этап Sd_1b). Следует отметить, что изображение предсказания, генерируемое посредством интра-предсказания, также упоминается как изображение интра-предсказания, и изображение предсказания, генерируемое посредством интер-предсказания, также упоминается как изображение интер-предсказания.
[0131] Затем, процессор предсказания оценивает каждое из изображения интра-предсказания и изображения интер-предсказания (этап Sd_2). Стоимость может использоваться при оценивании. Иными словами, процессор предсказания вычисляет стоимость C для каждого из изображения интра-предсказания и изображения интер-предсказания. Стоимость C может оцениваться в соответствии с выражением модели оптимизации R-D, например, C=D+λ×R. В этом выражении, D указывает искажение кодирования изображения предсказания и представляется как, например, сумма абсолютных разностей между пиксельным значением текущего блока и пиксельным значением изображения предсказания. Кроме того, R указывает предсказанную величину кодирования изображения предсказания, конкретно, величину кодирования, требуемую для кодирования информации движения для генерации изображения предсказания, и т.д. Кроме того, λ указывает, например, множитель в соответствии со способом множителя Лагранжа.
[0132] Процессор предсказания затем выбирает изображение предсказания, для которого вычислена наименьшая стоимость C среди изображения интра-предсказания и изображения интер-предсказания, в качестве конечного изображения предсказания для текущего блока (этап Sd_3). Иными словами, выбирается способ предсказания или режим для генерации изображения предсказания для текущего блока.
[Интра-предсказатель]
[0133] Интра-предсказатель 124 генерирует сигнал предсказания (сигнал интер-предсказания) путем выполнения интра-предсказания (также упоминается как внутрикадровое предсказание) текущего блока путем обращения к блоку или блокам в текущей картинке и сохраненных в памяти 118 блоков. Более конкретно, интра-предсказатель 124 генерирует сигнал интра-предсказания посредством выполнения интра-предсказания путем обращения к выборкам (например, значениям яркости и/или цветности) блока или блоков, соседних с текущим блоком, и затем выводит сигнал интра- предсказания на контроллер 128 предсказания.
[0134] Например, интра-предсказатель 124 выполняет интра-предсказание с использованием одного режима среди множества режимов интра-предсказания, которые были определены. Режимы интра-предсказания включают один или более ненаправленных режимов предсказания и множество направленных режимов предсказания. Определенные режимы могут быть предварительно определенными.
[0135] Один или более ненаправленных режимов предсказания включают, например, планарный режим предсказания и DC режим предсказания, определенный в стандарте H.265/высокоэффективного кодирования видео (HEVC).
[0136] Множество направленных режимов предсказания включают, например, тридцать три направленных режима предсказания, определенных в стандарте H.265/HEVC. Следует отметить, что множество направленных режимов предсказания могут дополнительно включать тридцать два направленных режима предсказания в дополнение к тридцати трем направленным режимам предсказания (для всего шестидесяти пяти направленных режимов предсказания). Фиг. 14 представляет собой концептуальную диаграмму, иллюстрирующую шестьдесят семь режимов интра-предсказания в целом, которые могут быть использованы в интра-предсказании (два ненаправленных режима предсказания и шестьдесят пять направленных режимов предсказания). Сплошные стрелки представляют тридцать три направления, определенные в стандарте H.265/HEVC, и пунктирные линии представляют дополнительные тридцать два направления (два ненаправленных режима предсказания не иллюстрируются на фиг. 14).
[0137] В различных видах примеров обработки, к блоку яркости можно обращаться при интра-предсказания блока цветности. Иными словами, компонент цветности текущего блока может предсказываться на основе компонента яркости текущего блока. Такое интра-предсказание также упоминается как предсказание кросс-компонентной линейной модели (CCLM). Режим интра-предсказания для блока цветности, в котором обращаются к такому блоку яркости (также упоминается как, например, режим CCLM), может быть добавлен в качестве одного из режимов интра-предсказания для блоков цветности.
[0138] Интра-предсказатель 124 может корректировать интра-предсказанные пиксельные значения на основе горизонтального/ вертикального градиентов опорных пикселов. Интра-предсказание, сопровождаемое таким видом коррекции, также упоминается как позиционно-зависимая комбинация интра-предсказания (PDPC). Информация, указывающая, следует ли применять PDPC (упоминается, например, как флаг PDPC), обычно сигнализируется на уровне CU. Следует отметить, что сигнализация такой информации не обязательно должна выполняться на уровне CU и может выполняться на другом уровне (например, на уровне последовательности, уровне картинки, уровне слайса, уровне мозаичного элемента или уровне CTU).
[Интер-предсказатель]
[0139] Интер-предсказатель 126 генерирует сигнал предсказания (сигнал интер-предсказания) посредством выполнения интер-предсказания (также упоминается как межкадровое предсказание) текущего блока путем обращения к блоку или блокам в опорной картинке, которая отличается от текущей картинки и сохранена в памяти 122 кадров. Интер-предсказание выполняется в единицах текущего блока или текущего подблока (например, 4×4 блока) в текущем блоке. Например, интер-предсказатель 126 выполняет оценку движения в опорной картинке для текущего блока или текущего подблока и отыскивает опорный блок или подблок, который наилучшим образом совпадает с текущим блоком или текущим подблоком. Интер-предсказатель 126 затем получает информацию движения (например, вектор движения), которая компенсирует движение или изменение от опорного блока или подблока к текущему блоку или подблоку. Интер-предсказатель 126 генерирует сигнал интер-предсказания текущего блока или подблока путем выполнения компенсации движения (или предсказания движения) на основе информации движения. Интер-предсказатель 126 выводит сгенерированный сигнал интер-предсказания на контроллер 128 предсказания.
[0140] Информация движения, используемая в компенсации движения, может сигнализироваться как сигналы интер-предсказания в различных формах. Например, может сигнализироваться вектор движения. В качестве другого примера, может сигнализироваться разность между вектором движения и предсказателем вектора движения.
[Базовый поток интер-предсказания]
[0141] Фиг. 15 представляет собой блок-схему последовательности операций, иллюстрирующую примерный поток базовой обработки интер-предсказания.
[0142] Сначала, интер-предсказатель 126 генерирует сигнал предсказания (этапы Se_1 - Se_3). Затем, вычитатель 104 генерирует разность между текущим блоком и изображением предсказания как остаток предсказания (этап Se_4).
[0143] Здесь, при генерации изображения предсказания, интер-предсказатель 126 генерирует изображение предсказания посредством определения вектора движения (MV) текущего блока (этапы Se_1 и Se_2) и компенсации движения (этап Se_3). Более того, при определении MV, интер-предсказатель 126 определяет MV посредством выбора вектора движения-кандидата (MV-кандидата) (этап Se_1) и вывода MV (этап Se_2). Выбор MV-кандидата делается посредством, например, выбора по меньшей мере одного MV-кандидата из списка MV-кандидатов. Альтернативно, при выводе MV, интер-предсказатель 126 может дополнительно выбрать по меньшей мере одного MV-кандидата из по меньшей мере одного MV-кандидата и определить выбранного по меньшей мере одного MV-кандидата как MV для текущего блока. Альтернативно, интер-предсказатель 126 может определить MV для текущего блока путем выполнения оценки в области опорной картинки, задаваемой каждым из выбранных по меньшей мере одним MV-кандидатом. Следует отметить, что оценка в области опорной картинки может упоминаться как оценка движения.
[0144] Кроме того, хотя этапы Se_1 - Se_3 выполняются посредством интер-предсказателя 126 в вышеописанном примере, процесс, который представляет собой, например, этап Se_1, этап Se_2 или тому подобное, может выполняться посредством другого составного элемента, включенного в кодер 100.
[Поток выведения вектора движения]
[0145] Фиг. 16 представляет собой блок-схему последовательности операций, иллюстрирующую один пример выведения векторов движения.
[0146] Интер-предсказатель 126 выводит MV текущего блока в режиме для кодирования информации движения (например, MV). В этом случае, например, информация движения кодируется как параметр предсказания и сигнализируется. Иными словами, закодированная информация движения включается в закодированный сигнал (также упоминается как закодированный битовый поток).
[0147] Альтернативно, интер-предсказатель 126 выводит MV в режиме, в котором информация движения не закодирована. В этом случае, никакая информация движения не включается в закодированный сигнал.
[0148] Здесь, режимы выведения MV могут включать нормальный интер-режим, режим объединения, режим FRUC, аффинный режим и т.д., которые будут описаны далее. Режимы, в которых закодирована информация движения среди режимов, включают нормальный интер-режим, режим объединения, аффинный режим (конкретно, аффинный интер-режим и аффинный режим объединения) и т.д. Следует отметить, что информация движения может включать не только MV, но и информацию выбора предсказателя вектора движения, которая будет описана далее. Режимы, в которых информация движения не закодирована, включают режим FRUC и т.д. Интер-предсказатель 126 выбирает режим для выведения MV текущего блока из режимов и выводит MV текущего блока с использованием выбранного режима.
[0149] Фиг. 17 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример выведения векторов движения.
[0150] Интер-предсказатель 126 выводит MV текущего блока в режиме, в котором разность MV кодируется. В этом случае, например, разность MV кодируется как параметр предсказания и сигнализируется. Иными словами, закодированная разность MV разность включается в закодированный сигнал. Разность MV представляет собой разность между MV текущего блока предсказателем MV.
[0151] Альтернативно, интер-предсказатель 126 выводит MV в режиме, в котором разность MV не кодируется. В этом случае, никакая закодированная разность MV не включается в закодированный сигнал.
[0152] Здесь, как описано выше, режимы выведения MV включают нормальный интер-режим, режим объединения, режим FRUC, аффинный режим и т.д., которые описаны далее. Режимы, в которых разность MV кодируется среди режимов, включают нормальный интер-режим, аффинный режим (конкретно, аффинный интер-режим) и т.д. Режимы, в которых разность MV не кодируется, включают режим FRUC, режим объединения, аффинный режим (конкретно, аффинный режим объединения) и т.д. Интер-предсказатель 126 выбирает режим для выведения MV текущего блока из множества режимов и выводит MV текущего блока с использованием выбранного режима.
[Поток выведения вектора движения]
[0153] Фиг. 18 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример выведения векторов движения. Режимы выведения MV, которые представляют собой режимы интер-предсказания, включают множество режимов и грубо делятся на режимы, в которых разность MV кодируется, и режимы, в которых разность векторов движения не кодируется. Режимы, в которых разность MV не кодируется, включают режим объединения, режим FRUC, аффинный режим (конкретно, аффинный режим объединения) и т.д. Эти режимы подробно описаны далее. Просто, режим объединения является режимом для выведения MV текущего блока путем выбора вектора движения из закодированного окружающего блока, а режим FRUC является режимом для выведения MV текущего блока путем выполнения оценки между закодированными областями. Аффинный режим является режимом для выведения, в качестве MV текущего блока, вектора движения каждого из множества подблоков, включенных в текущий блок, предполагая аффинное преобразование.
[0154] Более конкретно, как иллюстрируется, когда информация режима интер-предсказания указывает 0 (0 в Sf_1), интер-предсказатель 126 выводит вектор движения с использованием режима объединения (Sf_2). Когда информация режима интер-предсказания указывает 1 (1 в Sf_1), интер-предсказатель 126 выводит вектор движения с использованием режима FRUC (Sf_3). Когда информация режима интер-предсказания указывает 2 (2 в Sf_1), интер-предсказатель 126 выводит вектор движения с использованием аффинного режима (конкретно, аффинного режима объединения) (Sf_4). Когда информация режима интер-предсказания указывает 3 (3 в Sf_1), интер-предсказатель 126 выводит вектор движения с использованием режима, в котором разность MV кодируется (например, нормальный интер-режим (Sf_5).
[Выведение MV > нормальный интер-режим]
[0155] Нормальный интер-режим является режимом интер-предсказания для выведения MV текущего блока на основе блока, подобного изображению текущего блока из области опорной картинки, заданной MV-кандидатом. В этом нормальном интер-режиме, кодируется разность MV.
[0156] Фиг. 19 представляет собой блок-схему последовательности операций, иллюстрирующую пример интер-предсказания в нормальном интер-режиме.
[0157] Сначала, интер-предсказатель 126 получает множество MV-кандидатов для текущего блока на основе информации такой, как MV множества закодированных блоков, окружающих по времени или по пространству текущий блок (этап Sg_1). Иными словами, интер-предсказатель 126 генерирует список MV-кандидатов.
[0158] Затем, интер-предсказатель 126 извлекает N (целое число 2 или больше) MV-кандидатов из множества MV-кандидатов, полученных на этапе Sg_1, в качестве кандидатов предсказателей вектора движения (также упоминаются как кандидаты предсказателя MV) в соответствии с определенным порядком приоритета (этап Sg_2). Следует отметить, что порядок приоритета может быть определен заранее для каждого из N MV-кандидатов.
[0159] Затем, интер-предсказатель 126 выбирает один кандидат предсказателя вектора движения из N кандидатов предсказателя вектора движения, в качестве предсказателя вектора движения (также упоминается как предсказатель MV) текущего блока (этап Sg_3). При этом интер-предсказатель 126 кодирует, в потоке, информацию выбора предсказателя вектора движения для идентификации выбранного предсказателя вектора движения. Следует отметить, что поток представляет собой закодированный сигнал или закодированный битовый поток, как описано выше.
[0160] Затем, интер-предсказатель 126 выводит MV текущего блока путем обращения к закодированной опорной картинке (этап Sg_4). При этом интер-предсказатель 126 дополнительно кодирует, в потоке, значение разности между выведенным MV и предсказателем вектора движения в качестве разности MV. Следует отметить, что закодированная опорная картинка представляет собой картинку, включающую множество блоков, которые были восстановлены после кодирования.
[0161] Наконец, интер-предсказатель 126 генерирует изображение предсказания для текущего блока путем выполнения компенсации движения текущего блока с использованием выведенного MV и закодированной опорной картинки (этап Sg_5). Следует отметить, что изображение предсказания представляет собой сигнал интер-предсказания, как описано выше.
[0162] Кроме того, информация, указывающая режим интер-предсказания (нормальный интер-режим в приведенном выше примере), используемая, чтобы сгенерировать изображение предсказания, например, кодируется как параметр предсказания.
[0163] Следует отметить, что список MV-кандидатов может также использоваться как список для использования в другом режиме. Кроме того, процессы, относящиеся к списку MV-кандидатов, могут применяться к процессам, относящимся к списку для использования в другом режиме. Процессы, относящиеся к списку MV-кандидатов, включают, например, извлечение или выбор MV-кандидата из списка MV-кандидатов, переупорядочение MV-кандидатов или удаление MV-кандидата.
[Выведение MV > режим объединения]
[0164] Режим объединения представляет собой режим интер-предсказания для выбора MV-кандидата из списка MV-кандидатов в качестве MV текущего блока, получая при этом MV.
[0165] Фиг. 20 представляет собой блок-схему последовательности операций, иллюстрирующую пример интер-предсказания в режиме объединения.
[0166] Сначала, интер-предсказатель 126 получает множество MV-кандидатов для текущего блока на основе информации, такой как MV множества закодированных блоков, окружающих по времени или по пространству текущий блок (этап Sh_1). Иными словами, интер-предсказатель 126 генерирует список MV-кандидатов.
[0167] Затем, интер-предсказатель 126 выбирает один MV-кандидат из множества MV-кандидатов, полученных на этапе Sh_1, получая при этом MV текущего блока (этап Sh_2). При этом интер-предсказатель 126 кодирует, в потоке, информацию выбора MV для идентификации выбранного MV-кандидата.
[0168] Наконец, интер-предсказатель 126 генерирует изображение предсказания для текущего блока путем выполнения компенсации движения текущего блока с использованием выведенного MV и закодированной опорной картинки (этап Sh_3).
[0169] Кроме того, информация, указывающая режим интер-предсказания (режим объединения в примере выше), используемая, чтобы сгенерировать изображение предсказания, и включенная в закодированный сигнал, например, кодируется как параметр предсказания.
[0170] Фиг. 21 представляет собой концептуальную диаграмму для иллюстрации одного примера процесса выведения вектора движения текущей картинки в режиме объединения.
[0171] Сначала, генерируется список MV-кандидатов, в котором зарегистрированы кандидаты предсказателя MV. Примеры кандидатов предсказателя MV включают: пространственно соседние предсказатели MV, которые представляют собой MV множества закодированных блоков, расположенных пространственно окружая текущий блок; соседние по времени предсказатели MV, которые представляют собой MV окружающих блоков, на которые проецируется положение текущего блока в закодированной опорной картинке; комбинированные предсказатели MV, которые представляют собой MV, генерируемые посредством комбинирования значения MV пространственно соседнего предсказателя MV и MV соседнего по времени предсказателя MV; и нулевой предсказатель MV, который представляет собой MV, имеющий нулевое значение.
[0172] Затем, один предсказатель MV выбирается из множества предсказателей MV, зарегистрированных в списке предсказателей MV, и выбранный предсказатель MV определяется как MV текущего блока.
[0173] Более того, кодер переменной длины описывает и кодирует, в потоке, merge_idx, который представляет собой сигнал, указывающий, какой предсказатель MV выбран.
[0174] Следует отметить, что предсказатели MV, зарегистрированные в списке предсказателей MV, описанном на фиг. 21, являются примерами. Количество предсказателей MV может отличаться от количества предсказателей MV в диаграмме, список предсказателей MV может быть сконфигурирован таким образом, что некоторые из видов предсказателей MV на диаграмме могут не включаться, или что включаются один или более предсказателей MV иных, чем виды предсказателей MV на диаграмме.
[0175] Окончательный MV может быть определен путем выполнения процесса уточнения вектора движения декодера (DMVR), описываемого далее, с использованием MV текущего блока, выведенного в режиме объединения.
[0176] Следует отметить, что кандидаты предсказателя MV представляют собой MV-кандидаты, описанные выше, и список предсказателей MV представляет собой список MV-кандидатов, описанный выше. Следует отметить, что список MV-кандидатов может упоминаться как список кандидатов. Кроме того, merge_idx представляет собой информацию выбора MV.
[Выведение MV > режим FRUC]
[0177] Информация движения может быть выведена на стороне декодера без сигнализации от стороны кодера. Следует отметить, что, как описано выше, может использоваться режим объединения, определенный в стандарте H.265/HEVC. Кроме того, например, информация движения может быть выведена путем выполнения оценки движения на стороне декодера. В варианте осуществления, на стороне декодера, оценка движения выполняется без использования какого-либо пиксельного значения в текущем блоке.
[0178] Здесь описывается режим для выполнения оценки движения на стороне декодера. Режим для выполнения оценки движения на стороне декодера может упоминаться как режим выведения вектора движения согласованного образца (PMMVD) или режим повышающего преобразования частоты кадров (FRUC).
[0179] Один пример процесса FRUC в форме блок-схемы последовательности операций иллюстрируется на фиг. 22. Сначала, список множества кандидатов, каждый из которых имеет предсказатель вектора движения (MV) (то есть, список MV-кандидатов, который может также использоваться как список объединения), генерируется путем обращения к вектору движения в закодированном блоке, который пространственно или по времени соседствует с текущим блоком (этап Si_1). Затем, наилучший MV-кандидат выбирается из множества MV-кандидатов, зарегистрированных в списке MV-кандидатов (этап Si_2). Например, вычисляются значения оценки соответствующих MV-кандидатов, включенных в список MV-кандидатов, и выбирается один MV-кандидат на основе значений оценки. На основе выбранных векторов движения-кандидатов затем выводится вектор движения для текущего блока (этап Si_4). Более конкретно, например, выбранный вектор движения-кандидат (наилучший MV-кандидат) выводится непосредственно как вектор движения для текущего блока. Кроме того, например, вектор движения для текущего блока может быть выведен с использованием согласования образцов в окружающей области положения в опорной картинке, где положение в опорной картинке соответствует выбранному вектору движения-кандидату. Иными словами, оценка с использованием согласования образцов и значений оценки может выполняться в окружающей области наилучшего MV-кандидата, и когда имеется MV, который дает лучшее значение оценки, наилучший MV-кандидат может быть обновлен на MV, который дает лучшее значение оценки, и обновленный MV может быть определен как окончательный MV для текущего блока. Также возможна конфигурация, в которой не выполняется такой процесс для обновления наилучшего MV-кандидата на MV, имеющий лучшее значение оценки.
[0180] Наконец, интер-предсказатель 126 генерирует изображение предсказания для текущего блока путем выполнения компенсации движения текущего блока с использованием выведенного MV и закодированной опорной картинки (этап Si_5).
[0181] Подобный процесс может выполняться в единицах подблока.
[0182] Значения оценки могут вычисляться в соответствии с различными видами способов. Например, выполняется сравнение между восстановленным изображением в области в опорной картинке, соответствующей вектору движения, и восстановленным изображением в определенной области (область может быть, например, областью в другой опорной картинке или областью в соседнем блоке текущей картинки, как указано ниже). Определенная область может быть предварительно определенной.
[0183] Разность между пиксельными значениями двух восстановленных изображений может использоваться для значения оценки векторов движения. Следует отметить, что значение оценки может оцениваться с использованием информации иной, чем значение разности.
[0184] Далее детально описан пример согласования образцов. Сначала, один MV-кандидат, включенный в список MV-кандидатов (например, список объединения), выбирается как начальная точка оценивания путем согласования образцов. Например, в качестве согласования образцов, может использоваться либо первое согласование образцов, либо второе согласование образцов. Первое согласование образцов и второе согласование образцов также упоминаются как двунаправленное согласование и согласование шаблонов, соответственно.
[Выведение MV > FRUC > двунаправленное согласование]
[0185] В первом согласовании образцов, согласование образцов выполняется между двумя блоками вдоль траектории движения текущего блока, которые являются двумя блоками в различных двух опорных картинках. Соответственно, в первом согласовании образцов, область в другой опорной картинке вдоль траектории движения текущего блока используется как определенная область для вычисления значения оценки вышеописанного кандидата. Определенная область может быть предварительно определенной.
[0186] Фиг. 23 представляет собой концептуальную диаграмму для иллюстрации одного примера первого согласование образцов (двунаправленного согласования) между двумя блоками в двух опорных картинках вдоль траектории движения. Как иллюстрируется на фиг. 23, в первом согласовании образцов, два вектора движения (MV0, MV1) выводятся путем оценивания пары, которая наилучшим образом согласуется среди пар в двух блоках в двух различных опорных картинках (Ref0, Ref1), которые являются двумя блоками вдоль траектории движения текущего блока (Cur block). Более конкретно, разность между восстановленным изображением в заданном местоположении в первой закодированной опорной картинке (Ref0), заданной посредством MV-кандидата, и восстановленным изображением в заданном местоположении во второй закодированной опорной картинке (Ref1), заданной симметричным MV, полученным посредством масштабирования MV-кандидата с интервалом времени отображения, выводится для текущего блока, и значение оценки вычисляется с использованием значения полученной разности. Возможно выбрать, в качестве окончательного MV, MV-кандидат, который дает наилучшее значение оценки среди множества MV-кандидатов и который, вероятно, даст хорошие результаты.
[0187] В предположении непрерывной траектории движения, вектора движения (MV0, MV1), задающие два опорных блока, пропорциональны временным расстояниям (TD0, TD1) между текущей картинкой (Cur Pic) и двумя опорными картинками (Ref0, Ref1). Например, когда текущая картинка по времени расположена между двумя опорными картинками и временные расстояния от текущей картинки до соответствующих двух опорных картинок равны друг другу, зеркально-симметричные двунаправленные вектора движения выводятся в первом согласовании образцов.
[Выведение MV > FRUC > согласование шаблонов]
[0188] Во втором согласовании образцов (согласовании шаблонов), согласование образцов выполняется между блоком в опорной картинке и шаблоном в текущей картинке (шаблон представляет собой блок, соседний с текущим блоком в текущей картинке (соседний блок является, например, верхним и/или левым соседним блоком(ами))). Соответственно, во втором согласовании образцов, блок, соседний с текущим блоком в текущей картинке, используется как определенная область для вычисления значения оценки вышеописанного кандидата.
[0189] Фиг. 24 представляет собой концептуальную диаграмму для иллюстрации одного примера согласования образцов (согласования шаблонов) между шаблоном в текущей картинке и блоком в опорной картинке. Как иллюстрируется на фиг. 24, во втором согласовании образцов, вектор движения текущего блока (Cur block) выводится путем оценивания, в опорной картинке (Ref0), блока, который наилучшим образом согласуется с блоком, соседним с текущим блоком в текущей картинке (Cur Pic). Более конкретно, возможно, что выводится разность между восстановленным изображением в закодированной области, которая соседствует как слева, так и сверху, или либо слева, либо сверху, и восстановленным изображением, которое находится в соответствующей области в закодированной опорной картинке (Ref0) и задано посредством MV-кандидата, вычисляется значение оценки с использованием значения полученной разности, и MV-кандидат, который дает наилучшее значение оценки среди множества MV-кандидатов, выбирается в качестве наилучшего MV-кандидата.
[0190] Такая информация, указывающая, следует ли применять режим FRUC (упоминается, например, как флаг FRUC), может сигнализироваться на уровне CU. Кроме того, когда применяется режим FRUC (например, когда флаг FRUC имеет значение “истинно”), информация, указывающая применимый способ согласования образцов (либо первое согласование образцов, либо второе согласование образцов), может сигнализироваться на уровне CU. Следует отметить, что сигнализация такой информации не обязательно должна выполняться на уровне CU и может выполняться на другом уровне (например, на уровне последовательности, уровне картинки, уровне слайса, уровне мозаичного элемента, уровне CTU или на уровне подблока).
[Выведение MV > аффинный режим]
[0191] Далее описывается аффинный режим для выведения вектора движения в единицах подблока на основе векторов движения множества соседних блоков. Этот режим также упоминается как аффинный режим предсказания компенсации движения.
[0192] Фиг. 25A представляет собой концептуальную диаграмму для иллюстрации одного примера выведения вектора движения каждого подблока на основе векторов движения множества соседних блоков. На фиг. 25A, текущий блок включает в себя шестнадцать 4×4 подблоков. Здесь, вектор движения V0 в верхней-левой угловой контрольной точке в текущем блоке выводится на основе вектора движения соседнего блока, и аналогично, вектор движения V1 в верхней-правой угловой контрольной точке в текущем блоке выводится на основе вектора движения соседнего подблока. Два вектора движения v0 и v1 могут проецироваться в соответствии с выражением (1A), указанным ниже, и вектора движения (vx, vy) для соответствующих подблоков в текущем блоке могут быть выведены.
[0193] [Math. 1]
[0194] Здесь, x и y указывают горизонтальное положение и вертикальное положение подблока, соответственно, и w указывает определенный весовой коэффициент. Определенный весовой коэффициент может быть предварительно определенным.
[0195] Такая информация, указывающая аффинный режим (например, упоминается как аффинный флаг), может сигнализироваться на уровне CU. Следует отметить, что сигнализация информации, указывающей аффинный режим, не обязательно должна выполняться на уровне CU и может выполняться на другом уровне (например, на уровне последовательности, уровне картинки, уровне слайса, уровне мозаичного элемента, уровне CTU или на уровне подблока).
[0196] Кроме того, аффинный режим может включать различные режимы для разных способов для выведения векторов движения в верхней-левой и верхней-правой угловых контрольных точках. Например, аффинный режим включают два режима, которые представляют собой аффинный интер-режим (также упоминается как аффинный нормальный интер-режим) и аффинный режим объединения.
[Выведение MV > аффинный режим]
[0197] Фиг. 25B представляет собой концептуальную диаграмму для иллюстрации одного примера выведения вектора движения каждого подблока в аффинном режиме, в котором используются три контрольные точки. На фиг. 25B, текущий блок включает в себя шестнадцать 4×4 блоков. Здесь, вектор движения V0 в верхней-левой угловой контрольной точке для текущего блока выводится на основе вектора движения соседнего блока, и аналогично, вектор движения V1 в верхней-правой угловой контрольной точке для текущего блока выводится на основе вектора движения соседнего блока, и вектор движения V2 в нижней-левой угловой контрольной точке для текущего блока выводится на основе вектора движения соседнего блока. Три вектора движения v0, v1 и v2 могут проецироваться в соответствии с выражением (1B), указанным ниже, и вектора движения (vx, vy) для соответствующих подблоков в текущем блоке могут быть выведены.
[0198] [Math. 2]
[0199] Здесь, x and y указывают горизонтальное положение и вертикальное положение центра подблока, соответственно, w указывает ширину текущего блока, и h указывает высоту текущего блока.
[0200] Аффинные режимы, в которых используются различные количества контрольных точек (например, две и три контрольные точки), могут переключаться и сигнализироваться на уровне CU. Следует отметить, что информация, указывающая количество используемых контрольных точек в аффинном режиме на уровне CU, может сигнализироваться на другом уровне (например, на уровне последовательности, уровне картинки, уровне слайса, уровне мозаичного элемента, уровне CTU или на уровне подблока).
[0201] Кроме того, такой аффинный режим, в котором используются три контрольные точки, может включать различные способы для выведения вектора движения в верхней-левой, верхней-правой и нижней-левой угловых контрольных точках. Например, аффинные режимы включают два режима, которые представляют собой аффинный интер-режим (также упоминается как аффинный нормальный интер-режим) и аффинный режим объединения.
[Выведение MV > аффинный режим объединения]
[0202] Фиг. 26A, фиг. 26B и фиг. 26C являются концептуальными диаграммами для иллюстрации аффинного режима объединения.
[0203] Как иллюстрируется на фиг. 26A, в аффинном режиме объединения, например, предсказатели вектора движения в соответствующих контрольных точках текущего блока вычисляются на основе множества векторов движения, соответствующих блокам, закодированным в соответствии с аффинным режимом, среди закодированного блока A (левый), блока B (верхний), блока C (верхний-правый), блока D (нижний-левый) и блока E (верхний-левый), которые соседствуют с текущим блоком. Более конкретно, закодированный блок A (левый), блок B (верхний), блок C (верхний-правый), блок D (нижний-левый) и блок E (верхний-левый) проверяются в перечисленном порядке, и первый эффективный блок, закодированный в соответствии с аффинным режимом, идентифицируется. Предсказатели вектора движения в контрольных точках текущего блока вычисляются на основе множества векторов движения, соответствующий идентифицированному блоку.
[0204] Например, как иллюстрируется на фиг. 26B, когда блок A, который соседствует с левым текущим блоком, кодируется в соответствии с аффинным режимом, в котором используются две контрольные точки, выводятся вектора движения v3 и v4, проецируемые в верхнее-левое угловое положение и верхнее-правое угловое положение закодированного блока, включающего блок A. Предсказатель вектора движения v0 в верхней-левой угловой контрольной точке текущего блока и предсказатель вектора движения v1 в верхней-правой угловой контрольной точке текущего блока затем вычисляются из выведенных векторов движения v3 и v4.
[0205] Например, как иллюстрируется на фиг. 26C, когда блок A, который соседствует с левым текущим блоком, кодируется в соответствии с аффинным режимом, в котором используются три контрольные точки, выводятся вектора движения v3, v4 и v5, проецируемые в верхнее-левое угловое положение, верхнее-правое угловое положение и нижнее-левое угловое положение закодированного блока, включающего блок A. Предсказатель вектора движения v0 в верхней-левой угловой контрольной точке текущего блока, предсказатель вектора движения v1 в верхней-правой угловой контрольной точке текущего блока и предсказатель вектора движения v2 в нижней-левой угловой контрольной точке текущего блока затем вычисляются из выведенных векторов движения v3, v4 и v5.
[0206] Следует отметить, что этот способ для выведения предсказателей вектора движения может быть использован для выведения предсказателей вектора движения соответствующих контрольных точек текущего блока на этапе Sj_1 на фиг. 29, описанной далее.
[0207] Фиг. 27 представляет собой блок-схему последовательности операций, иллюстрирующую один пример аффинного режима объединения.
[0208] В аффинном режиме объединения, как иллюстрируется, сначала, интер-предсказатель 126 выводит предсказатели MV соответствующих контрольных точек текущего блока (этап Sk_1). Контрольные точки представляют собой верхнюю-левую угловую точку текущего блока и верхнюю-правую угловую точку текущего блока, как иллюстрируется на фиг. 25A, или верхнюю-левую угловую точку текущего блока, верхнюю-правую угловую точку текущего блока и нижнюю-левую угловую точку текущего блока, как иллюстрируется на фиг. 25B.
[0209] Иными словами, как иллюстрируется на фиг. 26A, интер-предсказатель 126 проверяет закодированный блок A (левый), блок B (верхний), блок C (верхний-правый), блок D (нижний-левый) и блок E (верхний-левый) в перечисленном порядке и идентифицирует первый эффективный блок, закодированный в соответствии с аффинным режимом.
[0210] Когда блок A идентифицируется и блок A имеет две контрольные точки, как иллюстрируется на фиг. 26B, интер-предсказатель 126 вычисляет вектор движения v0 в верхней-левой угловой контрольной точке текущего блока и вектор движения v1 в верхней-правой угловой контрольной точке текущего блока из векторов движения v3 и v4 в верхнем-левом углу и верхнем-правом углу закодированного блока, включающего блок A. Например, интер-предсказатель 126 вычисляет вектор движения v0 в верхней-левой угловой контрольной точке текущего блока и вектор движения v1 в верхней-правой угловой контрольной точке текущего блока путем проецирования векторов движения v3 и v4 в верхнем-левом углу и верхнем-правом углу закодированного блока на текущий блок.
[0211] Альтернативно, когда блок A идентифицируется и блок A имеет три контрольные точки, как иллюстрируется на фиг. 26C, интер-предсказатель 126 вычисляет вектор движения v0 в верхней-левой угловой контрольной точке текущего блока, вектор движения v1 в верхней-правой угловой контрольной точке текущего блока и вектор движения v2 в нижней-левой угловой контрольной точке текущего блока из векторов движения v3, v4 и v5 в верхнем-левом углу, верхнем-правому углу и нижнем-левом углу закодированного блока, включающего блок A. Например, интер-предсказатель 126 вычисляет вектор движения v0 в верхней-левой угловой контрольной точке текущего блока, вектор движения v1 в верхней-правой угловой контрольной точке текущего блока и вектор движения v2 в нижней-левой угловой контрольной точке текущего блока путем проецирования вектора движения v3, v4 и v5 в верхнем-левом углу, верхнем-правом углу и нижнем-левом углу закодированного блока на текущий блок.
[0212] Затем, интер-предсказатель 126 выполняет компенсацию движения каждого из множества подблоков, включенных в текущий блок. Иными словами, интер-предсказатель 126 вычисляет, для каждого из множества подблоков, вектор движения подблока как аффинный MV, с использованием либо (i) двух предсказателей вектора движения v0 и v1 и выражения (1A), описанного выше, либо (ii) трех предсказателей вектора движения v0, v1 и v2 и выражения (1B), описанного выше (этап Sk_2). Интер-предсказатель 126 затем выполняет компенсацию движения подблоков с использованием этих аффинных MV и закодированных опорных картинок (этап Sk_3). В результате, компенсация движения текущего блока выполняется, чтобы сгенерировать изображение предсказания текущего блока.
[Выведение MV > аффинный интер-режим]
[0213] Фиг. 28A представляет собой концептуальную диаграмму для иллюстрации аффинного интер-режима, в котором используются две контрольные точки.
[0214] В аффинном интер-режиме, как иллюстрируется на фиг. 28A, вектор движения, выбранный из вектора движения закодированного блока A, блока B и блока C, которые соседствуют с текущим блоком, используется как предсказатель вектора движения v0 в верхней-левой угловой контрольной точке текущего блока. Аналогичным образом, вектор движения, выбранный из вектора движения закодированного блока D и блока E, которые соседствуют с текущим блоком, используется как предсказатель вектора движения v1 в верхней-правой угловой контрольной точке текущего блока.
[0215] Фиг. 28B представляет собой концептуальную диаграмму для иллюстрации аффинного интер-режима, в котором используются три контрольные точки.
[0216] В аффинном интер-режиме, как иллюстрируется на фиг. 28B, вектор движения, выбранный из вектора движения закодированного блока A, блока B и блока C, которые соседствуют с текущим блоком, используется как предсказатель вектора движения v0 в верхней-левой угловой контрольной точке текущего блока. Аналогичным образом, вектор движения, выбранный из вектора движения закодированного блока D и блока E, которые соседствуют с текущим блоком, используется как предсказатель вектора движения v1 в верхней-правой угловой контрольной точке текущего блока. Кроме того, вектор движения, выбранный из вектора движения закодированного блока F и блока G, которые соседствуют с текущим блоком, используется как предсказатель вектора движения v2 в нижней-левой угловой контрольной точке текущего блока.
[0217] Фиг. 29 представляет собой блок-схему последовательности операций, иллюстрирующую один пример аффинного интер-режима.
[0218] В аффинном интер-режиме, как иллюстрируется, сначала, интер-предсказатель 126 выводит предсказатели MV (v0, v1) или (v0, v1, v2) соответствующих двух или трех контрольных точек текущего блока (этап Sj_1). Контрольные точки представляют собой верхнюю-левую угловую точку текущего блока и верхнюю-правую угловую точку текущего блока, как иллюстрируется на фиг. 25A, или верхнюю-левую угловую точку текущего блока, верхнюю-правую угловую точку текущего блока и нижнюю-левую угловую точку текущего блока, как иллюстрируется на фиг. 25B.
[0219] Иными словами, интер-предсказатель 126 выводит предсказатели вектора движения (v0, v1) или (v0, v1, v2) соответствующих двух или трех контрольные точек текущего блока путем выбора вектора движения любого из блоков среди закодированных блоков в окрестности соответствующих контрольных точек текущего блока, иллюстрируемых на фиг. 28A или фиг. 28B. При этом интер-предсказатель 126 кодирует, в потоке, информацию выбора предсказателя вектора движения для идентификации выбранных двух векторов движения.
[0220] Например, интер-предсказатель 126 может определить, с использованием оценки стоимости или тому подобного, блок, из которого вектор движения как предсказатель вектора движения в контрольной точке выбран среди закодированных блоков, соседствующих текущему блоку, и может описать, в битовом потоке, флаг, указывающий, какой предсказатель вектора движения был выбран.
[0221] Затем, интер-предсказатель 126 выполняет оценку движения (этап Sj_3 и Sj_4) при обновлении предсказателя вектора движения, выбранного или выведенного на этапе Sj_1 (этап Sj_2). Иными словами, интер-предсказатель 126 вычисляет, как аффинный MV, вектор движения каждого из подблоков, который соответствует обновленному предсказателю вектора движения, с использованием либо выражения (1A), либо выражения (1B), описанного выше (этап Sj_3). Интер-предсказатель 126 затем выполняет компенсацию движения подблоков с использованием этих аффинных MV и закодированных опорных картинок (этап Sj_4). В результате, например, интер-предсказатель 126 определяет предсказатель вектора движения, который дает наименьшую стоимость, как вектор движения в контрольной точке в контуре оценки движения (этап Sj_5). При этом интер-предсказатель 126 дополнительно кодирует, в потоке, значение разности между определенным MV и предсказателем вектора движения как разность MV.
[0222] Наконец, интер-предсказатель 126 генерирует изображение предсказания для текущего блока путем выполнения компенсации движения текущего блока с использованием определенного MV и закодированной опорной картинки (этап Sj_6).
[Выведение MV > аффинный интер-режим]
[0223] Когда аффинные режимы, в которых используются различные количества контрольных точек (например, две или три контрольные точки), могут переключаться и сигнализироваться на уровне CU, количество контрольных точек в закодированном блоке и количество контрольных точек в текущем блоке может отличаться друг от друга. Фиг. 30A и фиг. 30B являются концептуальными диаграммами для иллюстрации способов для выведения предсказателей вектора движения в контрольных точках, когда количество контрольных точек в закодированном блоке и количество контрольных точек в текущем блоке отличаются друг от друга.
[0224] Например, как иллюстрируется на фиг. 30A, когда текущий блок имеет три контрольные точки в верхнем-левом углу, верхнем-правом углу и нижнем-левом углу, и блок A, который соседствует с левым текущим блоком, был закодирован в соответствии с аффинным режимом, в котором используются две контрольные точки, выводятся вектора движения v3 и v4, проецируемые в верхнее-левое угловое положение и верхнее-правое угловое положение в закодированном блоке, включающем блок A. Предсказатель вектора движения v0 в верхней-левой угловой контрольной точке текущего блока и предсказатель вектора движения v1 в верхней-правой угловой контрольной точке текущего блока затем вычисляются из выведенных векторов движения v3 и v4. Более того, предсказатель вектора движения v2 в нижней-левой угловой контрольной точке вычисляется из выведенных векторов движения v0 и v1.
[0225] Например, как иллюстрируется на фиг. 30B, когда текущий блок имеет две контрольные точки в верхнем-левом углу и верхнем-правому углу и блок A, который соседствует с левым текущим блоком, был закодирован в соответствии с аффинным режимом, в котором используются три контрольные точки, выводятся вектора движения v3, v4 и v5, проецируемые в верхнее-левое угловое положение, верхнее-правое угловое положение и нижнее-левое угловое положение в закодированном блоке, включающем блок A. Предсказатель вектора движения v0 в верхней-левой угловой контрольной точке текущего блока и предсказатель вектора движения v1 в верхней-правой угловой контрольной точке текущего блока затем вычисляются из выведенных векторов движения v3, v4 и v5.
[0226] Следует отметить, что этот способ для выведения предсказателей вектора движения может быть использован для выведения предсказателей вектора движения соответственных контрольных точек текущего блока на этапе Sj_1 на фиг. 29.
[Выведение MV > DMVR]
[0227] Фиг. 31A представляет собой блок-схему последовательности операций, иллюстрирующую соотношение между режимом объединения и DMVR.
[0228] Интер-предсказатель 126 выводит вектор движения текущего блока в соответствии с режимом объединения (этап Sl_1). Затем, интер-предсказатель 126 определяет, следует ли выполнять оценку вектора движения, то есть, оценку движения (этап Sl_2). Здесь, когда определено не выполнять оценку движения (Нет на этапе Sl_2), интер-предсказатель 126 определяет вектор движения, выведенный на этапе Sl_1, как окончательный вектор движения для текущего блока (этап Sl_4). Иными словами, в этом случае, вектор движения текущего блока определяется в соответствии с режимом объединения.
[0229] Когда определено выполнить оценку движения на этапе Sl_1 (Да на этапе Sl_2), интер-предсказатель 126 выводит окончательный вектор движения для текущего блока путем оценивания окружающей области опорной картинки, заданной вектором движения, выведенным на этапе Sl_1 (этап Sl_3). Иными словами, в этом случае, вектор движения текущего блока определяется в соответствии с DMVR.
[0230] Фиг. 31B представляет собой концептуальную диаграмму для иллюстрации одного примера процесса DMVR для определения MV.
[0231] Сначала (например, в режиме объединения), наилучший MVP, который был установлен для текущего блока, определяется в качестве MV-кандидата. Опорный пиксел идентифицируется из первой опорной картинки (L0), которая представляет собой закодированную картинку в направлении L0 в соответствии с MV-кандидатом (L0). Аналогичным образом, опорный пиксел идентифицируется из второй опорной картинки (L1), которая представляет собой закодированную картинку в направлении L1 в соответствии с MV-кандидатом (L1). Шаблон генерируется путем вычисления среднего этих опорных пикселов.
[0232] Затем, каждая из окружающих областей MV-кандидатов первой опорной картинки (L0) и второй опорной картинки (L1) оценивается, и MV, который дает наименьшую стоимость, определяется как окончательный MV. Следует отметить, что значение стоимости может оцениваться, например, с использованием значения разности между каждым из пиксельных значений в шаблоне и соответствующим одним из пиксельных значений в области оценки, значений MV-кандидатов и т.д.
[0233] Следует отметить, что процессы, конфигурации и операции, описанные здесь, обычно являются в основном общими между кодером и декодером, как описывается далее.
[0234] Точно те же самые примерные процессы, описанные здесь, не всегда требуется выполнять. Может быть использован любой процесс для обеспечения возможности выведения окончательного MV путем оценки в окружающих областях MV-кандидатов.
[Компенсация движения > BIO/OBMC]
[0235] Компенсация движения включает в себя режим для генерации изображения предсказания и коррекцию изображения предсказания. Режим представляет собой, например, BIO и OBMC, как описано далее.
[0236] Фиг. 32 представляет собой блок-схему последовательности операций, иллюстрирующую один пример генерации изображения предсказания.
[0237] Интер-предсказатель 126 генерирует изображение предсказания (этап Sm_1) и корректирует изображение предсказания, например, в соответствии с любым из режимов, описанных выше (этап Sm_2).
[0238] Фиг. 33 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример генерации изображения предсказания.
[0239] Интер-предсказатель 126 определяет вектор движения текущего блока (этап Sn_1). Затем, интер-предсказатель 126 генерирует изображение предсказания (этап Sn_2) и определяет, следует ли выполнять процесс коррекции (этап Sn_3). Здесь, при определении выполнить процесс коррекции (Да на этапе Sn_3), интер-предсказатель 126 генерирует окончательное изображение предсказания путем коррекции изображения предсказания (этап Sn_4). При определении не выполнять процесс коррекции (No на этап Sn_3), интер-предсказатель 126 выводит изображение предсказания как окончательное изображение предсказания без коррекции изображения предсказания (этап Sn_5).
[0240] Кроме того, компенсация движения включает в себя режим для коррекции яркости изображения предсказания при генерации изображение предсказания. Этот режим представляет собой, например, LIC, как описано далее.
[0241] Фиг. 34 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример генерации изображения предсказания.
[0242] Интер-предсказатель 126 выводит вектор движения текущего блока (этап So_1). Затем, интер-предсказатель 126 определяет, следует ли выполнять процесс коррекции яркости (этап So_2). Здесь, при определении выполнить процесс коррекции яркости (Да на этапе So_2), интер-предсказатель 126 генерирует изображение предсказания при выполнении процесса коррекции яркости (этап So_3). Иными словами, изображение предсказания генерируется с использованием LIC. При определении не выполнять процесс коррекции яркости (Нет на этапе So_2), интер-предсказатель 126 генерирует изображение предсказания путем выполнения нормальной компенсации движения без выполнения процесса коррекции яркости (этап So_4).
[Компенсация движения > OBMC]
[0243] Следует отметить, что сигнал интер-предсказания может генерироваться с использованием информации движения для соседнего блока в дополнение к информации движения для текущего блока, полученной из оценки движения. Более конкретно, сигнал интер-предсказания может генерироваться в единицах подблока в текущем блоке путем выполнения взвешенного суммирования сигнала предсказания на основе информация движения, полученной из оценки движения (в опорной картинке), и сигнала предсказания на основе информации движения для соседнего блока (в текущей картинке). Такое интер-предсказание (компенсация движения) также упоминается как компенсация движения перекрывающегося блока (OBMC).
[0244] В режиме OBMC, информация, указывающая размер подблока для OBMC (упоминается, например, как размер блока OBMC), может сигнализироваться на уровне последовательности. Кроме того, информация, указывающая, следует ли применять режим OBMC (упоминается, например, как флаг OBMC) может сигнализироваться на уровне CU. Следует отметить, что сигнализация такой информации не обязательно должна выполняться на уровне последовательности и уровне CU и может выполняться на другом уровне (например, на уровне картинки, уровне слайса, уровне мозаичного элемента, уровне CTU или на уровне подблока).
[0245] Примеры режима OBMC будут описаны более подробно. Фиг. 35 и 36 являются блок-схемой последовательности операций и концептуальной диаграммой для иллюстрации краткого представления процесса коррекции изображения предсказания, выполняемого посредством процесса OBMC.
[0246] Сначала, как иллюстрируется на фиг. 36, изображение предсказания (Pred) получают через нормальную компенсацию движения с использованием вектора движения (MV), назначенного целевому (текущему) блоку обработки. На фиг. 36, стрелка “MV” указывает опорную картинку и указывает, к какому текущему блоку текущей картинки обращаются, чтобы получить изображение предсказания.
[0247] Затем, изображение предсказания (Pred_L) получают путем применения вектора движения (MV_L), который уже был выведен для закодированного блока, соседнего слева от текущего блока с текущим блоком (повторное использование вектора движения для текущего блока). Вектор движения (MV_L) указан стрелкой “MV_L”, указывающей опорную картинку из текущего блока. Первая коррекция изображения предсказания выполняется посредством перекрытия двух изображений предсказания Pred и Pred_L. Это обеспечивает эффект слияния границы между соседними блоками.
[0248] Подобным же образом, изображение предсказания (Pred_U) получают путем применения вектора движения (MV_U), который уже был выведен для закодированного блока, соседнего сверху от текущего блока с текущим блоком (повторное использование вектора движения для текущего блока). Вектор движения (MV_U) указан стрелкой “MV_U”, указывающей опорную картинку из текущего блока. Вторая коррекция изображения предсказания выполняется посредством перекрытия изображения предсказания Pred_U изображениями предсказания (например, Pred и Pred_L), на которых была выполнена первая коррекция. Это обеспечивает эффект слияния границы между соседними блоками. Изображение предсказания, полученное посредством второй коррекции, является изображением предсказания, на котором граница между соседними блоками слилась (сглажена), и, таким образом, является окончательным изображением предсказания текущего блока.
[0249] Хотя пример выше представляет собой способ коррекции с двумя шагами с использованием левого и верхнего соседних блоков, следует отметить, что способ коррекции может представлять собой способ коррекции с тремя или более шагами с использованием также правого соседнего блока и/или нижнего соседнего блока.
[0250] Следует отметить, что область, в которой выполняется такое перекрытие, может быть только частью области рядом с границей блока вместо пиксельной области всего блока.
[0251] Следует отметить, что выше был описан процесс коррекции изображения предсказания в соответствии с OBMC для получения одного изображения предсказания Pred из одной опорной картинки путем перекрытия дополнительного изображения предсказания Pred_L и Pred_U. Однако когда изображение предсказания корректируется на основе множества опорных изображений, аналогичный процесс может применяться к каждой из множества опорных картинок. В таком случае, после того как скорректированные изображения предсказания получены из соответственных опорных картинок путем выполнения коррекции изображения OBMC на основе множества опорных картинок, полученные скорректированные изображения предсказания дополнительно перекрываются для получения окончательного изображения предсказания.
[0252] Следует отметить, что в OBMC единица текущего блока может единицей блока предсказания или единицей подблока, полученного путем дополнительного разбиения блока предсказания.
[0253] Один пример способа для определения, следует ли применять процесс OBMC, представляет собой способ для использования obmc_flag, который представляет собой сигнал, указывающий, следует ли применять процесс OBMC. В качестве одного конкретного примера, кодер определяет, принадлежит ли текущий блок области, имеющей сложное движение. Кодер устанавливает obmc_flag в значение “1”, когда блок принадлежит области, имеющей сложное движение, и применяет процесс OBMC при кодировании; и устанавливает obmc_flag в значение “0”, когда блок не принадлежит области, имеющей сложное движение, и кодирует блок без применения процесса OBMC. Декодер переключается между применением и неприменением процесса OBMC путем декодирования obmc_flag, записанного в потоке (например, сжатой последовательности), и декодирования блока путем переключения между применением и неприменением процесса OBMC в соответствии со значением флага.
[0254] Интер-предсказатель 126 генерирует одно прямоугольное изображение предсказания для прямоугольного текущего блока в примере выше. Однако интер-предсказатель 126 может генерировать множество изображений предсказания, каждое из которых имеет формы, отличные от прямоугольника для прямоугольного текущего блока, и может комбинировать множество изображений предсказания, чтобы сгенерировать окончательное прямоугольное изображение предсказания. Формой, отличной от прямоугольника, может быть, например, треугольник.
[0255] Фиг. 37 представляет собой концептуальную диаграмму для иллюстрации генерации двух треугольных изображений предсказания.
[0256] Интер-предсказатель 126 генерирует треугольное изображение предсказания путем выполнения компенсации движения первого раздела (участка), имеющего треугольную форму, в текущем блоке путем использования первого MV первого раздела, чтобы сгенерировать треугольное изображение предсказания. Подобным же образом, интер-предсказатель 126 генерирует треугольное изображение предсказания путем выполнения компенсации движения второго раздела, имеющего треугольную форму, в текущем блоке путем использования второго MV второго раздела, чтобы сгенерировать треугольное изображение предсказания. Интер-предсказатель 126 затем генерирует изображение предсказания, имеющее ту же самую прямоугольную форму, что и прямоугольная форма текущего блока, путем комбинирования этих изображений предсказания.
[0257] Следует отметить, что, хотя первый раздел и второй раздел являются треугольниками в примере, проиллюстрированном на фиг. 37, первый раздел и второй раздел могут быть иметь форму трапеции или другие формы, отличные друг от друга. Более того, хотя текущий блок включает в себя два раздела в примере, проиллюстрированном на фиг. 37, текущий блок может включать три или более разделов.
[0258] Кроме того, первый раздел и второй раздел могут перекрываться друг с другом. Иными словами, первый раздел и второй раздел могут включать ту же самую пиксельную область. В этом случае, изображение предсказания для текущего блока может генерироваться с использованием изображения предсказания в первом разделе и изображения предсказания во втором разделе.
[0259] Кроме того, хотя пример, в котором изображение предсказания генерируется для каждого из двух разделов с использованием интер-предсказания, изображение предсказания может генерироваться по меньшей мере для одного раздела с использованием интра-предсказания.
[Компенсация движения > BIO]
[0260] Далее описан способ для выведения вектора движения. Сначала будет описан режим для выведения вектора движения на основе модели, предполагающей равномерное линейное движение. Этот режим также упоминается как режим двунаправленного оптического потока (BIO).
[0261] Фиг. 38 представляет собой концептуальную диаграмму для иллюстрации модели, предполагающей равномерное линейное движение. На фиг. 38, (vx, vy) указывает вектор скорости, и τ0 и τ1 указывают временные расстояния между текущей картинкой (Cur Pic) и двумя опорными картинками (Ref0, Ref1). (MVx0, MVy0) указывают векторы движения, соответствующие опорной картинке Ref0, и (MVx1, MVy1) указывают векторы движения, соответствующие опорной картинке Ref1.
[0262] Здесь, в предположении равномерного линейного движения, проявляемого векторами скорости (vx, vy), (MVx0, MVy0) и (MVx1, MVy1) представлены как (vxτ0, vyτ0) и (−vxτ1, −vyτ1), соответственно, и может использоваться следующее уравнение (2) оптического потока.
[0263] [Math. 3]
[0264] Здесь, I(k) указывает значение яркости скомпенсированного движения опорной картинки k (k=0, 1). Это уравнение оптического потока показывает, что сумма (i) производной по времени значения яркости, (ii) произведения горизонтальный скорости и горизонтального компонента пространственного градиента опорного изображения и (iii) произведения вертикальной скорости и вертикального компонента пространственного градиента опорного изображения равна нулю. Вектор движения каждого блока, полученного, например, из списка объединения, может корректироваться в единицах пиксела, на основе комбинации уравнения оптического потока и Эрмитовой интерполяции.
[0265] Следует отметить, что вектор движения может выводиться на стороне декодера с использованием способа иного, чем выведение вектора движения на основе модели, предполагающей равномерное линейное движение. Например, вектор движения может выводиться в единицах подблока на основе векторов движения соседних блоков.
[Компенсация движения > LIC]
[0266] Далее будет описан пример режима, в котором изображение предсказания (предсказание) генерируется с использованием процесса компенсации локальной освещенности (LIC).
[0267] Фиг. 39 представляет собой концептуальную диаграмму для иллюстрации одного примера способа генерации изображения предсказания с использованием процесса коррекции яркости, выполняемого посредством процесса LIC.
[0268] Сначала выводится MV из закодированной опорной картинки и получается опорное изображение, соответствующее текущему блоку.
[0269] Затем, информация, указывающая, как изменяется значение яркости между опорной картинкой и текущей картинкой, извлекается для текущего блока. Это извлечение выполняется на основе пиксельных значений яркости для закодированной левой соседней опорной области (окружающей опорной области) и закодированной верхней соседней опорной области (окружающей опорной области) и пиксельного значения яркости в соответствующем положением в опорной картинке, заданной выведенным MV. Параметр коррекции яркости вычисляется путем использования информации, указывающей, как изменяется значение яркости.
[0270] Изображение предсказания для текущего блока генерируется путем выполнения процесса коррекции яркости, в котором параметр коррекции яркости применяется к опорному изображению в опорной картинке, заданной посредством MV.
[0271] Следует отметить, что форма окружающей опорной области, проиллюстрированной на фиг. 39, является только одним примером; окружающая опорная область может иметь разную форму.
[0272] Кроме того, хотя здесь был описан процесс, в котором изображение предсказания генерируется из одной опорной картинки, случаи, в которых изображение предсказания генерируется из множества опорных картинок, могут быть описаны таким же образом. Изображение предсказания может генерироваться после выполнения процесса коррекции яркости опорных изображений, полученных из опорных картинок таким же образом, как описано выше.
[0273] Один пример способа для определения, следует ли применять процесс LIC, представляет собой способ для использования lic_flag, который является сигналом, указывающим, следует ли применять процесс LIC. В качестве одного конкретного примера, кодер определяет, принадлежит ли текущий блок области, имеющей изменение яркости. Кодер устанавливает lic_flag в значение “1”, когда блок принадлежит области, имеющей изменение яркости, и применяет процесс LIC при кодировании; и устанавливает lic_flag в значение “0”, когда блок не принадлежит области, имеющей изменение яркости, и кодирует текущий блок без применения процесса LIC. Декодер может декодировать lic_flag, записанный в потоке, и декодировать текущий блок путем переключения между применением и неприменением процесса LIC в соответствии со значением флага.
[0274] Один пример другого способа определения, следует ли применять процесс LIC, представляет собой способ определения в соответствии с тем, был ли применен процесс LIC к окружающему блоку. В одном конкретном примере, когда режим объединения используется над текущим блоком, определяется, был ли процесс LIC применен в кодировании окружающего закодированного блока, выбранного при выведении MV в процессе режима объединения. В соответствии с результатом, кодирование выполняется посредством переключения между применением и неприменением процесса LIC. Следует отметить, что, и в этом примере, те же самые процессы применяются в процессах на стороне декодера.
[0275] Вариант осуществления процесса коррекции яркости (LIC), описанного со ссылкой на фиг. 39, описан подробно ниже.
[0276] Сначала, интер-предсказатель 126 выводит вектор движения для получения опорного изображения, соответствующего текущему блоку, подлежащему кодированию, из опорной картинки, которая является закодированной картинкой.
[0277] Затем, интер-предсказатель 126 извлекает информацию, указывающую, как значение яркости опорной картинки было изменено до значения яркости текущей картинки, с использованием пиксельного значения яркости закодированной окружающей опорной области, которая соседствует слева или сверху от текущего блока, и значения яркости в соответствующем положении в опорной картинке, заданной вектором движения, и вычисляет параметр коррекции яркости. Например, предполагается, что пиксельное значение яркости данного пиксела в окружающей опорной области в текущей картинке равно p0, и что пиксельное значение яркости пиксела, соответствующего данному пикселу в окружающей опорной области, в опорной картинке равно p1. Интер-предсказатель 126 вычисляет коэффициенты А и B для оптимизации А × p1+B=p0 как параметр коррекции яркости для множества пикселов в окружающей опорной области.
[0278] Затем, интер-предсказатель 126 выполняет процесс коррекции яркости с использованием параметра коррекции яркости для опорного изображения в опорной картинке, заданной вектором движения, чтобы сгенерировать изображение предсказания для текущего блока. Например, предполагается, что пиксельное значение яркости в опорном изображении равно p2, и что скорректированное по яркости пиксельное значение яркости изображения предсказания равно p3. Интер-предсказатель 126 генерирует изображение предсказания после того, как оно подвергнуто процессу коррекции яркости путем вычисления А × p2+B=p3 для каждого из пикселов в опорном изображении.
[0279] Следует отметить, что форма окружающей опорной области, проиллюстрированной на фиг. 39, является одним примером; другая форма, отличающаяся от формы окружающей опорной области, также может использоваться. Кроме того, часть окружающей опорной области, проиллюстрированной на фиг. 39, также может использоваться. Например, область, имеющая определенное число пикселов, извлеченных из каждого из верхнего соседнего пиксела и левого соседнего пиксела, может использоваться как окружающая опорная область. Определенное число пикселов может быть предварительно определенным.
[0280] Кроме того, окружающая опорная область не ограничена областью, которая соседствует с текущим блоком, и может быть областью, которая не соседствует с текущим блоком. В примере, проиллюстрированном на фиг. 39, окружающая опорная область в опорной картинке представляет собой область, заданную вектором движения в текущей картинке, из окружающей опорной области в текущей картинке. Однако, также возможна область, заданная другим вектором движения. Например, другой вектор движения может быть вектором движения в окружающей опорной области в текущей картинке.
[0281] Хотя были описаны операции, выполняемые посредством кодера 100, следует отметить, что декодер 200 обычно выполняет аналогичные операции.
[0282] Следует отметить, что процесс LIC может применяться не только к яркости, но также к цветности. При этом параметр коррекции может выводиться индивидуально для каждого из Y, Cb и Cr, или общий параметр коррекции может использоваться для любого из Y, Cb и Cr.
[0283] Кроме того, процесс LIC может применяться в единицах подблока. Например, параметр коррекции может выводиться с использованием окружающей опорной области в текущем подблоке и окружающей опорной области в опорном подблоке в опорной картинке, заданной посредством MV текущего подблока.
[Контроллер предсказания]
[0284] Интер-предсказатель 128 выбирает один из сигнала интра-предсказания (сигнала с выхода интра-предсказателя 124) и сигнала интер-предсказания (сигнала с выхода интер-предсказателя 126) и выводит выбранный сигнал на вычитатель 104 и сумматор 116 как сигнал предсказания.
[0285] Как иллюстрируется на фиг. 1, в различных видах примеров кодера, контроллер 128 предсказателя может выводить параметр предсказания, который вводится в энтропийный кодер 110. Энтропийный кодер 110 может генерировать закодированный битовый поток (или последовательность) на основе параметра предсказания, который введен из контроллера 128 предсказателя, и квантованных коэффициентов, которые введены из квантователя 108. Параметр предсказания может использоваться в декодере. Декодер может принимать и декодировать закодированный битовый поток и выполнять те же самые процессы, что и процессы предсказания, выполняемые посредством интра-предсказателя 124, интер-предсказателя 126 и контроллера 128 предсказателя. Параметр предсказания может включать (i) сигнал выбора предсказания (например, вектор движения, тип предсказания или режим предсказания, используемый интра-предсказателем 124 или интер-предсказателем 126), или (ii) опциональный индекс, флаг или значение, которое основано на процессе предсказания, выполняемом в каждом из интра-предсказателя 124, интер-предсказателя 126 и контроллера 128 предсказания, или который указывает процесс предсказания.
[Пример установки кодера]
[0286] Фиг. 40 представляет собой блок-схему, иллюстрирующую пример установки кодера 100. Кодер 100 включает в себя процессор a1 и память a2. Например, множество составных элементов кодера 100, проиллюстрированных на фиг. 1, установлены на процессоре a1 и памяти a2, проиллюстрированных на фиг. 40.
[0287] Процессор a1 представляет собой схему, которая выполняет обработку информации и может обращаться к памяти a2. Например, процессор a1 представляет собой специализированную или универсальную электронную схему, которая кодирует видео. Процессор a1 может представлять собой процессор, такой как CPU. Кроме того, процессор a1 может быть совокупностью множества электронных схем. Кроме того, например, процессор a1 может выполнять функции двух или более составных элементов из множества составных элементов кодера 100, проиллюстрированных на фиг. 1, и т.д.
[0288] Память a2 представляет собой специализированную или универсальную память для хранения информации, которая используется процессором a1, чтобы кодировать видео. Память a2 может представлять собой электронную схему и может соединяться с процессором a1. Кроме того, память a2 может быть включена в процессор a1. Кроме того, память a2 может быть совокупностью множества электронных схем. Кроме того, память a2 может представлять собой магнитный диск, оптический диск или тому подобное или может быть представлена как хранилище, носитель записи или тому подобное. Кроме того, память a2 может представлять собой энергонезависимую память или энергозависимую память.
[0289] Например, память a2 может хранить видео, подлежащее кодированию, или битовый поток, соответствующий закодированному видео. Кроме того, память a2 может хранить программу для побуждения процессора a1 кодировать видео.
[0290] Кроме того, например, память a2 может выполнять функции двух или более составных элементов для хранения информации от множества составных элементов кодера 100, проиллюстрированного на фиг. 1, и т.д. Например, память a2 может выполнять функции памяти 118 блоков и памяти 122 кадров, проиллюстрированных на фиг. 1. Более конкретно, память a2 может хранить восстановленный блок, восстановленную картинку и т.д.
[0291] Следует отметить, что, в кодере 100, не все из множества составных элементов, указанных на фиг. 1 и т.д., могут быть реализованы, и не все процессы, описанные выше, могут быть выполнены. Часть составных элементов, указанных на фиг. 1 и т.д., могут быть включены в другое устройство, или часть процессов, описанных выше, могут выполняться посредством другого устройства.
[Декодер]
[0292] Далее будет описан декодер, способный декодировать закодированный сигнал (закодированный битовый поток), выведенный, например, из кодера 100, описанного выше. Фиг. 41 представляет собой блок-схему, иллюстрирующую функциональную конфигурацию декодера 200 в соответствии с вариантом осуществления. Декодер 200 представляет собой декодер видео, который декодирует видео в единицах блока.
[0293] Как иллюстрируется на фиг. 41, декодер 200 включает в себя энтропийный декодер 202, обратный квантователь 204, обратный преобразователь 206, сумматор 208, память 210 блоков, контурный фильтр 212, память 214 кадров, интра-предсказатель 216, интер-предсказатель 218 и контроллер 220 предсказания.
[0294] Декодер 200 реализован, например, как универсальный процессор и память. В этом случае, когда программа программного обеспечения, сохраненная в памяти, исполняется процессором, процессор функционирует как энтропийный декодер 202, обратный квантователь 204, обратный преобразователь 206, сумматор 208, контурный фильтр 212, интра-предсказатель 216, интер-предсказатель 218, и контроллер 220 предсказания. Альтернативно, декодер 200 может быть реализован как одна или более специализированных электронных схем, соответствующих энтропийному декодеру 202, обратному квантователю 204, обратному преобразователю 206, сумматору 208, контурному фильтру 212, интра-предсказателю 216, интер-предсказателю 218 и контроллеру 220 предсказания.
[0295] Далее будет описан общий поток процессов, выполняемых декодером 200, и затем будет описан каждый из составных элементов, включенных в декодер 200.
[Общий поток процесса декодирования]
[0296] Фиг. 42 представляет собой блок-схему последовательности операций, иллюстрирующую один пример общего процесса декодирования, выполняемого декодером 200.
[0297] Сначала, энтропийный декодер 202 декодера 200 идентифицирует образец разбиения блока, имеющего фиксированный размер (например, 128×128 пикселов) (этап Sp_1). Этот образец разбиения представляет собой образец разбиения, выбранный кодером 100. Декодер 200 затем выполняет процессы этапа Sp_2 -Sp_6 для каждого из множества блоков образца разбиения.
[0298] Иными словами, энтропийный декодер 202 декодирует (конкретно, энтропийно декодирует) закодированные квантованные коэффициенты и параметр предсказания текущего блока, подлежащего декодированию (также упоминается как текущий блок) (этап Sp_2).
[0299] Затем, обратный квантователь 204 выполняет обратное квантование множества квантованных коэффициентов, и обратный преобразователь 206 выполняет обратное преобразование результата, чтобы восстановить множество остатков предсказания (то есть, разностный блок) (этап Sp_3).
[0300] Затем, процессор предсказания, включающий в себя все или часть из интра-предсказателя 216, интер-предсказателя 218 и контроллера 220 предсказания, генерирует сигнал предсказания (также упоминается как блок предсказания) текущего блока (этап Sp_4).
[0301] Затем, сумматор 208 суммирует блок предсказания с разностным блоком, чтобы сгенерировать восстановленное изображение (также упоминается как блок декодированного изображения) текущего блока (этап Sp_5).
[0302] Когда генерируется восстановленное изображение, контурный фильтр 212 выполняет фильтрацию восстановленного изображения (этап Sp_6).
[0303] Декодер 200 затем определяет, закончено ли декодирование всей картинки (этап Sp_7). При определении, что декодирование еще не закончено (Нет на этапе Sp_7), декодер 200 повторно исполняет процессы, начиная с этапа Sp_1.
[0304] Как иллюстрируется, процессы этапов Sp_1 - Sp_7 выполняются последовательно декодером 200. Альтернативно, два или более из процессов могут выполняться параллельно, порядок обработки двух или более из процессов может модифицироваться и т.д.
[Энтропийный декодер]
[0305] Энтропийный декодер 202 энтропийно декодирует закодированный битовый поток. Более конкретно, например, энтропийный декодер 202 арифметически декодирует закодированный битовый поток в двоичный сигнал. Энтропийный декодер 202 затем де-бинаризует двоичный сигнал. При этом энтропийный декодер 202 выводит квантованные коэффициенты каждого блока на обратный квантователь 204. Энтропийный декодер 202 может выводить параметр предсказания, включенный в закодированный битовый поток (см. фиг. 1), на интра-предсказатель 216, интер-предсказатель 218 и контроллер 220 предсказания. Интра-предсказатель 216, интер-предсказатель 218 и контроллер 220 предсказания в варианте осуществления способны исполнять те же самые процессы предсказания, что и те, которые выполняются посредством интра-предсказателя 124, интер-предсказателя 126 и контроллера 128 предсказания на стороне кодера.
[Обратный квантователь]
[0306] Обратный квантователь 204 обратно квантует квантованные коэффициенты блока, подлежащего декодированию (далее упоминается как текущий блок), которые вводятся из энтропийного декодера 202. Более конкретно, обратный квантователь 204 обратно квантует квантованные коэффициенты текущего блока, на основе параметров квантования, соответствующих квантованным коэффициентам. Обратный квантователь 204 затем выводит обратно квантованные коэффициенты преобразования текущего блока на обратный преобразователь 206.
[Обратный преобразователь]
[0307] Обратный преобразователь 206 восстанавливает ошибки предсказания путем обратного преобразования коэффициентов преобразования, которые вводятся из обратного квантователя 204.
[0308] Например, когда информация, синтаксически проанализированная из закодированного битового потока, указывает, что должно применяться EMT или AMT (например, когда флаг AMT представляет собой “истинно”), обратный преобразователь 206 обратно преобразует коэффициенты преобразования текущего блока на основе информации, указывающей проанализированный тип преобразования.
[0309] Кроме того, например, когда информация, синтаксически проанализированная из закодированного битового потока, указывает, что должно применяться NSST, обратный преобразователь 206 применяет вторичное обратное преобразование к коэффициентам преобразования.
[Сумматор]
[0310] Сумматор 208 восстанавливает текущий блок путем суммирования ошибок предсказания, которые вводятся из обратного преобразователя 206, и выборки предсказания, которые вводятся из контроллера 220 предсказания. Сумматор 208 затем выводит восстановленный блок на память 210 блоков и контурный фильтр 212.
[Память блоков]
[0311] Память 210 блоков представляет собой хранилище для хранения блоков в картинке, которая подлежит декодированию (далее упоминается как текущая картинка) и к которой обращаются при интра-предсказании. Более конкретно, память 210 блоков сохраняет восстановленные блоки, выведенные из сумматора 208.
[Контурный фильтр]
[0312] Контурный фильтр 212 применяет контурный фильтр к блокам, восстановленным сумматором 208, и выводит отфильтрованные восстановленные блоки на память 214 кадров, устройство отображения и т.д.
[0313] Когда информация, указывающая ON (включение) или OFF (отключение) для ALF, синтаксически проанализированная из закодированного битового потока, указывает, что ALF соответствует ON, один фильтр среди множества фильтров выбирается на основе направления и активности локальных градиентов, и выбранный фильтр применяется к восстановленному блоку.
[Память кадров]
[0314] Память 214 кадров представляет собой, например, хранилище для хранения опорных картинок для использования в интер-предсказании, и также упоминается как буфер кадров. Более конкретно, память 214 кадров сохраняет восстановленный блок, отфильтрованный контурным фильтром 212.
[Процессор предсказания (интра-предсказатель, интер-предсказатель, контроллер предсказания)]
[0315] Фиг. 43 представляет собой блок-схему последовательности операций, иллюстрирующую один пример процесса, выполняемого процессором предсказания декодера 200. Следует отметить, что процессор предсказания включает в себя все или часть из следующих составных элементов: интра-предсказатель 216, интер-предсказатель 218 и контроллер 220 предсказания.
[0316] Процессор предсказания генерирует изображение предсказания текущего блока (этап Sq_1). Это изображение предсказания также упоминается как сигнал предсказания или блок предсказания. Следует отметить, что сигнал предсказания представляет собой, например, сигнал интра-предсказания или сигнал интер-предсказания. Конкретно, процессор предсказания генерирует изображение предсказания текущего блока с использованием восстановленного изображения, которое уже было получено посредством генерации блока предсказания, генерации разностного блока, генерации блока коэффициентов, восстановления разностного блока и генерации блока декодированного изображения.
[0317] Восстановленное изображение может представлять собой, например, изображение в опорной картинке или изображение декодированного блока в текущей картинке, которая представляет собой картинку, включающую текущий блок. Декодированный блок в текущей картинке представляет собой, например, соседний блок текущего блока.
[0318] Фиг. 44 представляет собой блок-схему последовательности операций, иллюстрирующую другой пример процесса, выполняемого процессором предсказания декодера 200.
[0319] Процессор предсказания определяет либо способ, либо режим для генерации изображения предсказания (этап Sr_1). Например, способ или режим может определяться на основе, например, параметра предсказания и т.д.
[0320] При определении первого способа в качестве режима для генерации изображения предсказания, процессор предсказания генерирует изображение предсказания в соответствии с первым способом (этап Sr_2a). При определении второго способа в качестве режима для генерации изображения предсказания, процессор предсказания генерирует изображение предсказания в соответствии со вторым способом (этап Sr_2b). При определении третьего способа в качестве режима для генерации изображения предсказания, процессор предсказания генерирует изображение предсказания в соответствии с третьим способом (этап Sr_2c).
[0321] Первый способ, второй способ и третий способ могут быть взаимно различными способами для генерации изображения предсказания. Каждый из первого по третий способы может представлять собой способ интер-предсказания, способ интра-предсказания или другой способ предсказания. Вышеописанное восстановленное изображение может использоваться в этих способах предсказания.
[Интра-предсказатель]
[0322] Интра-предсказатель 216 генерирует сигнал предсказания (сигнал интра-предсказания) путем выполнения интра-предсказания посредством обращения к блоку или блокам в текущей картинке, сохраненной в памяти 210 блоков, на основе режима интра-предсказания, синтаксически проанализированного из закодированного битового потока. Более конкретно, интра-предсказатель 216 генерирует сигнал интра-предсказания путем выполнения интра-предсказания посредством обращения к выборкам (например, значениям яркости и/или цветности) блока или блоков, соседних с текущим блоком, и затем выводит сигнал интра-предсказания на контроллер 220 предсказания.
[0323] Следует отметить, что когда выбран режим интра-предсказания, в котором обращаются к блоку яркости при интра-предсказании блока цветности, интра-предсказатель 216 может предсказывать компонент цветности текущего блока на основе компонента яркости текущего блока.
[0324] Кроме того, когда информация, синтаксически проанализированная из закодированного битового потока, указывает, что должно применяться PDPC, интра-предсказатель 216 корректирует интра-предсказанные значения пикселов на основе горизонтального/вертикального градиентов опорных пикселов.
[Интер-предсказатель]
[0325] Интер-предсказатель 218 предсказывает текущий блок путем обращения к опорной картинке, сохраненной в памяти 214 кадров. Интер-предсказание выполняется в единицах текущего блока или подблока (например, 4×4 блока) в текущем блоке. Например, интер-предсказатель 218 генерирует сигнал интер-предсказания текущего блока или подблока путем выполнения компенсации движения с использованием информации движения (например, вектора движения), синтаксически проанализированной из закодированного битового потока (например, параметра предсказания, выведенного из энтропийного декодера 202), и выводит сигнал интер-предсказания на контроллер 220 предсказания.
[0326] Следует отметить, что когда информация, синтаксически проанализированная из закодированного битового потока, указывает, что должен применяться режим OBMC, интер-предсказатель 218 генерирует сигнал интер-предсказания с использованием информации движения соседнего блока в дополнение к информации движения текущего блока, полученной из оценки движения.
[0327] Кроме того, когда информация, синтаксически проанализированная из закодированного битового потока, указывает, что должен применяться режим FRUC, интер-предсказатель 218 выводит информацию движения путем выполнения оценки движения в соответствии со способом согласования образцов (двунаправленного согласования или согласования шаблонов), синтаксически проанализированным из закодированного битового потока. Интер-предсказатель 218 затем выполняет компенсацию движения (предсказание) с использованием выведенной информации движения.
[0328] Кроме того, когда должен применяться режим BIO, интер-предсказатель 218 выводит вектор движения на основе модели, предполагающей равномерное линейное движение. Кроме того, когда информация, синтаксически проанализированная из закодированного битового потока, указывает, что должен применяться аффинный режим предсказания компенсации движения, интер-предсказатель 218 выводит вектор движения каждого подблока на основе векторов движения соседних блоков.
[Выведение MV > нормальный интер-режим]
[0329] Когда информация, синтаксически проанализированная из закодированного битового потока, указывает, что должен применяться нормальный интер-режим, интер-предсказатель 218 выводит MV на основе информации, синтаксически проанализированной из закодированного битового потока, и выполняет компенсацию движения (предсказание) с использованием MV.
[0330] Фиг. 45 представляет собой блок-схему последовательности операций, иллюстрирующую пример интер-предсказания в нормальном интер-режиме в декодере 200.
[0331] Интер-предсказатель 218 декодера 200 выполняет компенсацию движения для каждого блока. Интер-предсказатель 218 получает множество кандидатов MV для текущего блока на основе информации, такой как MV множества декодированных блоков, окружающих по времени или по пространству текущий блок (этап Ss_1). Иными словами, интер-предсказатель 218 генерирует список кандидатов MV.
[0332] Затем, интер-предсказатель 218 извлекает N (целое число 2 или более) MV-кандидатов из множества MV-кандидатов, полученных на этапе Ss_1, в качестве кандидатов предсказателя вектора движения (также упоминаются как кандидаты предсказателя MV) в соответствии с определенным порядком приоритетов (этап Ss_2). Следует отметить, что порядок приоритетов может определяться заранее для каждого из N кандидатов предсказателя MV.
[0333] Затем, интер-предсказатель 218 декодирует информацию выбора предсказателя вектора движения из входного потока (то есть, закодированного битового потока) и выбирает один кандидат предсказателя MV из N кандидатов предсказателя MV с использованием декодированной информации выбора предсказателя вектора движения, в качестве вектора движения (также упоминается как предсказатель MV) текущего блока (этап Ss_3).
[0334] Затем, интер-предсказатель 218 декодирует разность MV из входного потока и выводит MV для текущего блока путем суммирования разностного значения, которое представляет собой декодированную разность MV, и выбранного предсказателя вектора движения (этап Ss_4).
[0335] Наконец, интер-предсказатель 218 генерирует изображение предсказания для текущего блока путем выполнения компенсации движения текущего блока с использованием выведенного MV и декодированной опорной картинки (этап Ss_5).
[Контроллер предсказания]
[0336] Контроллер 220 предсказания выбирает либо сигнал интра-предсказания, либо сигнал интер-предсказание и выводит выбранный сигнал предсказания на сумматор 208. В общем, конфигурации, функции и процессы контроллера 220 предсказания, интра-предсказателя 216 и интер-предсказателя 218 на стороне декодера могут соответствовать конфигурациям, функциям и процессам контроллера 128 предсказания, интра-предсказателя 124 и интер-предсказателя 126 на стороне кодера.
[Пример установки декодера]
[0337] Фиг. 46 представляет собой блок-схему, иллюстрирующую пример установки декодера 200. Декодер 200 включает в себя процессор b1 и память b2. Например, множество составных элементов декодера 200, проиллюстрированных на фиг. 41, установлены на процессоре b1 и памяти b2, проиллюстрированных на фиг. 46.
[0338] Процессор b1 представляет собой схему, которая выполняет обработку информации и может обращаться к памяти b2. Например, процессор b1 представляет собой специализированную или универсальную электронную схему, которая декодирует видео (то есть, закодированный битовый поток). Процессор b1 может представлять собой процессор, такой как CPU. Кроме того, процессор b1 может быть совокупностью множества электронных схем. Кроме того, например, процессор b1 может выполнять функции двух или более составных элементов из множества составных элементов декодера 200, проиллюстрированных на фиг. 41, и т.д.
[0339] Память b2 представляет собой специализированную или универсальную память для хранения информации, которая используется процессором b1, чтобы декодировать закодированный битовый поток. Память b2 может представлять собой электронную схему и может соединяться с процессором b1. Кроме того, память b2 может быть включена в процессор b1. Кроме того, память b2 может быть совокупностью множества электронных схем. Кроме того, память b2 может представлять собой магнитный диск, оптический диск или тому подобное или может быть представлена как хранилище, носитель записи или тому подобное. Кроме того, память b2 может представлять собой энергонезависимую память или энергозависимую память.
[0340] Например, память b2 может хранить видео или битовый поток. Кроме того, память b2 может хранить программу для побуждения процессора b1 декодировать закодированный битовый поток.
[0341] Кроме того, например, память b2 может выполнять функции двух или более составных элементов для хранения информации от множества составных элементов декодера 200, проиллюстрированных на фиг. 41, и т.д. Конкретно, память b2 может выполнять функции памяти 210 блоков и памяти 214 кадров, проиллюстрированных на фиг. 41. Более конкретно, память b2 может хранить восстановленный блок, восстановленную картинку и т.д.
[0342] Следует отметить, что, в декодере 200, не все из множества составных элементов, проиллюстрированных на фиг. 41 и т.д., могут быть реализованы, и не все процессы, описанные выше, могут выполняться. Часть составных элементов, указанных на фиг. 41 и т.д., могут включаться в другое устройство, или часть процессов, описанных выше, могут выполняться посредством другого устройства.
[Определения терминов]
[0343] Соответственные термины могут быть определены, как указано ниже в качестве примеров.
[0344] Картинка представляет собой массив выборок яркости в монохромном формате или массив выборок яркости и два соответствующих массива выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4. Картинка может представлять собой либо кадр, либо поле.
[0345] Кадр представляет собой композицию верхнего поля и нижнего поля, где строки 0, 2, 4,… выборки исходят из верхнего поля, а строки 1, 3, 5,… выборки исходят из нижнего поля.
[0346] Слайс представляет собой целое число единиц дерева кодирования, содержащихся в одном независимом сегменте слайса и всех последующих зависимых сегментах слайса (если имеются), которые предшествуют следующему независимому сегменту слайса (если имеется) в пределах той же самой единицы доступа.
[0347] Мозаичный элемент представляет собой прямоугольную область блоков дерева кодирования в пределах конкретного столбца мозаичного элемента и конкретной строки мозаичного элемента в картинке. Мозаичный элемент может представлять собой прямоугольную область кадра, которая, как подразумевается, может декодироваться и кодироваться независимо, хотя контурная фильтрация по краям мозаичного элемента все еще может применяться.
[0348] Блок представляет собой M×N (M столбцов на N строк) массив выборок или M×N массив коэффициентов преобразования. Блок может быть квадратной или прямоугольной областью пикселов, включающей в себя одну матрицу яркости и две матрицы цветности.
[0349] Единица дерева кодирования (CTU) может представлять собой блок дерева кодирования выборок яркости картинки, которая имеет три массива выборок, или два соответствующих блока дерева кодирования выборок цветности. Альтернативно, CTU может представлять собой блок дерева кодирования выборок одной из монохромной картинки и картинки, которая кодирована с использованием трех отдельных цветовых плоскостей, и синтаксических структур, используемых для кодирования выборок.
[0350] Супер-блок может представлять собой квадратный блок 64×64 пикселов, который состоит из 1 или из 2 блоков информации о режиме или рекурсивно разделен на четыре 32×32 блока, которые сами могут быть дополнительно разделены.
[0351] [Интра-предсказание с использованием матрично-взвешенного интра-предсказания]
Как описано выше, режимы предсказания для генерации сигнала предсказания классифицируются на: режим интра-предсказания, в котором обращаются к закодированной области в картинке, которой принадлежит текущий блок; и режим интер-предсказания, в котором обращаются к области в закодированной картинке, отличающейся от картинки, которой принадлежит текущий блок.
[0352] Более того, интра-предсказания делится на матрично-взвешенное интра-предсказание (MIP) и интра-предсказание иное, чем MIP (далее также упоминается как нормальное интра-предсказание).
[0353] Интра-предсказание иное, чем MIP, т.е. нормальное интра-предсказание, представляет собой интра-предсказание, включающее планарное предсказание, DC предсказание, направленное предсказание или тому подобное.
[0354] MIP представляет собой интра-предсказание, отличающееся от нормального интра-предсказания. Когда используется MIP, изображение предсказания генерируется путем выполнения матричного вычисления над пиксельной последовательностью, полученной из пиксельных значений окружающих пикселов текущего блока. Следует отметить, что MIP может иметь множество режимов предсказания. MIP также упоминается как аффинное линейно-взвешенное интра-предсказание (ALWIP).
[0355] В соответствии со ссылкой такой, как JVET-N0217, в MIP, изображение предсказания генерируется следующим образом: вычисление на основе матричного вычисления и суммирования со сдвигом выполняется над входной пиксельной последовательностью, полученной путем усреднения окружающих пикселов текущего блока для каждых N пикселов, чтобы сгенерировать значения предсказания в пиксельных положениях, где пикселы в блоке прорежены (подвергнуты децимации) в S×T пикселов (где S и T представляют собой, каждое, целое число меньше, чем число пикселов стороны блока). Пиксельные значения в остальных пиксельных положениях, т.е. удаленные пиксельные положения, затем интерполируются с использованием сгенерированных значений предсказания в S×T пиксельных положениях, пиксельных значений окружающих пикселов и тому подобного. Здесь, MIP может иметь количество режимов предсказания, равное числу пар матричного вычисления и смещения для использования в вычислении. Следует отметить, что число пикселов, подлежащих усреднению и прореживанию при генерации значений предсказания, может переключаться в соответствии с размером или формой блока. Например, в малом блоке, таком как 4×4, значения предсказания всех пикселов могут генерироваться без выполнения прореживания.
[0356] Способ предсказания пиксельных значений (изображения предсказания), когда используется MIP, описан ниже со ссылкой на фиг. 47.
[0357] Фиг. 47 представляет собой диаграмму для иллюстрации способа предсказания пиксельного значения с использованием MIP. Фиг. 47 показывает пример, в котором пиксельные значения в текущем блоке размерами W×H предсказываются с использованием MIP.
[0358] Более конкретно, сначала, окружающие пикселы текущего блока получают в качестве входа. В примере на фиг. 47, H окружающих пикселов, образующих последовательность соседних слева пикселов текущего блока размерами W×H, и W окружающих пикселов, образующих последовательность соседних сверху пикселов текущего блока размерами W×H, используются в качестве входа.
[0359] Затем, входную пиксельную последовательность получают путем усреднения полученных окружающих пикселов текущего блока. В примере, показанном на фиг. 47, входную пиксельную последовательность получают путем усреднения окружающих пикселов, образующих каждую из последовательностей соседних слева и соседних сверху пикселов текущего блока, на основе размера и формы текущего блока.
[0360] Затем, значения предсказания в положениях прореженных пикселов генерируются путем выполнения, над полученной входной пиксельной последовательностью, вычисления на основе матричного вычисления и суммирования со сдвигом. В примере, показанном на фиг. 47, пиксельные положения серой шкалы показаны как положения прореженных пикселов.
[0361] Пиксельные значения в положениях удаленных пикселов затем генерируются путем выполнения интерполяции с использованием сгенерированных значений предсказания в положениях прореженных пикселов, сгенерированных пиксельных значений окружающих пикселов и тому подобного. Фиг. 47 показывает пример, в котором изображение предсказания генерируется, включая пиксельные значения в положениях удаленных пикселов, сгенерированные путем выполнения линейной интерполяции с использованием сгенерированных значений предсказания в положениях прореженных пикселов, обозначенных цветами серой шкалы, сгенерированных пиксельных значений окружающих пикселов, обозначенных цветами серой шкалы, и тому подобного.
[0362] Следует отметить, что способ предсказания пиксельных значений изображения предсказания представляет собой один пример. Пиксельные значения могут быть предсказаны с использованием способа, отличающегося от вышеописанного способа. Например, изображение предсказания может генерироваться с использованием входной пиксельной последовательности, полученной из вычисления иного, чем усреднение окружающих пикселов текущего блока, или изображение предсказания может генерироваться путем непосредственного применения вычисления на основе матричного вычисления и суммирования со сдвигом к пиксельным значениям окружающих пикселов. Более того, когда эти варианты применяются в MIP, число режимов предсказания может увеличиваться на величину, равную числу применяемых вариантов.
[0363] Кроме того, интра-предсказание может переключаться между нормальным интра-предсказанием и MIP с использованием информации флага для каждой CU или тому подобного. Например, когда установлена информация флага, указывающая, что MIP действительно, то может выбираться MIP, и в противном случае, может выбираться нормальное интра-предсказание.
[0364] Кроме того, в MIP, множество пар матричного вычисления и значения суммирования со сдвигом может быть подготовлено в качестве режимов предсказания. В этом случае, можно выбрать, какая из пар (режимов предсказания) используется.
[0365] Более того, режим предсказания MIP, подлежащий применению к текущему блоку, может быть задан с использованием, например, индексного числа. Индексное число может кодироваться с использованием списка наиболее вероятных режимов (MPM) для MIP. Следует отметить, что нормальное интра-предсказание и MIP могут интегрироваться друг с другом. Например, режим нормального интра-предсказания может быть расширен, чтобы представлять режим MIP. В этом случае, то, выбрано ли MIP, может определяться на основе режима интра-предсказания.
[0366] Нормальное интра-предсказание и MIP могут использовать разный список MPM. В этом случае может кодироваться значение, указывающее любого из кандидатов в каждом списке MPM. Кроме того, может использоваться общий список MVP, включающий нормальное интра-предсказание и MIP в качестве кандидатов, чтобы определять, является ли интра-предсказание нормальным интра-предсказанием или MIP, на основе которого используются кандидаты.
[0367] [Аспект 1]
Когда вторичное преобразование выполняется над первичными коэффициентами преобразования, полученными путем выполнения первичного преобразования над ошибками предсказания, преобразователь 106 сначала выбирает набор преобразований для использования, из множества наборов преобразования, и затем определяет матрицу преобразования (базовую матрицу) для использования, из выбранного набора преобразований. Затем преобразователь 106 выполняет вторичное преобразование над первичными коэффициентами преобразования с использованием определенной матрицы преобразования. Далее, набор преобразований выбранный, когда NSST (неразделяемое вторичное преобразование) выполняется как вторичное преобразование, также упоминается как набор преобразований NSST. Следует отметить, что LFNST (низкочастотное неразделяемое преобразование), в котором NSST применяется только к низкочастотным компонентам коэффициентов первичного преобразования, может выполняться как вторичное преобразование.
[0368] Далее описывается, в качестве Аспекта 1, первый пример способа для выбора набора преобразований NSST в матрично-взвешенном интра-предсказании (MIP).
[0369] Фиг. 48 представляет собой блок-схему последовательности операций, иллюстрирующую один пример процесса выбора набора преобразований NSST, выполняемого посредством преобразователя 106 кодера в соответствии с Аспектом 1 варианта осуществления.
[0370] Сначала, преобразователь 106 определяет, должно ли интра-предсказание использоваться в качестве режима предсказания для текущего блока, такого как CU (S10). Следует отметить, что когда определено, что текущий блок кодируется с использованием интер-предсказания на этапе S10 (“Нет” на S10), преобразователь 106 выбирает, в качестве набора преобразований NSST, набор преобразований, предварительно определенный для каждого из режимов предсказания интер-предсказания (S11).
[0371] Когда определено, что интра-предсказание используется в качестве режима предсказания для текущего блока, на этапе S10 (“Да” на S10), преобразователь 106 определяет, кодируется ли текущий блок с использованием матрично-взвешенного интра-предсказания (MIP), включенного в интра-предсказание (S12).
[0372] Когда определено, что текущий блок кодируется с использованием нормального интра-предсказания, на этапе S12 (“Нет” на S12), преобразователь 106 выбирает, в качестве набора преобразований NSST, набор преобразований, предварительно определенный для каждого из режимов предсказания нормального интра-предсказания, при выполнении вторичного преобразования (S13). При этом, при выполнении вторичного преобразования, преобразователь 106 может использовать разный набор преобразований между случаем, где текущий блок кодируется с использованием планарного предсказания, и случаем, где текущий блок кодируется с использованием направленного предсказания. Следует отметить, что когда текущий блок кодируется с использованием направленного предсказания, преобразователь 106 может использовать, в качестве набора преобразований NSST, набор преобразований, варьирующихся в зависимости от направления предсказания. В нормальном интра-предсказании, особый признак может появиться при возникновении остаточных коэффициентов, в соответствии с направлением предсказания направленного предсказания. Соответственно, при выполнении вторичного преобразования NSST, преобразователь 106 может использовать набор преобразований, варьирующийся в зависимости от направления предсказания направленного предсказания, чтобы повысить возможность сокращения размера ROM, требуемый для хранения коэффициентов NSST.
[0373] С другой стороны, когда определено, что текущий блок кодируется с использованием матрично-взвешенного интра-предсказания (MIP) на этапе S12 (“Да” на S12), преобразователь 106 выбирает общий набор преобразований, совместно используемый среди режимов предсказания матрично-взвешенного интра-предсказания (MIP) независимо от режимов предсказания (S14), при выполнении вторичного преобразования. В отличие от нормального интра-предсказания, в режимах предсказания матрично-взвешенного интра-предсказания (MIP), различный признак может не появиться при возникновении значений коэффициентов, в соответствии с режимом предсказания. Соответственно, при выполнении вторичного преобразования NSST, ухудшение рабочих характеристик может не возникать, даже когда преобразователь 106 выполняет вторичное преобразование с использованием общего набора преобразований, совместно используемого среди режимов предсказания, и, таким образом, можно уменьшить размер ROM, требуемый для хранения коэффициентов NSST.
[0374] Здесь, при выполнении вторичного преобразования, преобразователь 106 может использовать, в качестве общего набора преобразований, набор преобразований, идентичный набору планарного режима при нормальном интра-предсказании. Это объясняется тем, что преобразователь 106 может выбирать надлежащий набор преобразований, используя набор преобразований для использования в ненаправленном режиме предсказания при нормальном интра-предсказании, поскольку матрично-взвешенное интра-предсказание (MIP) представляет собой ненаправленное предсказание. Кроме того, при выполнении вторичного преобразования, преобразователь 106 может использовать, в качестве общего набора преобразований, набор преобразований, идентичный таковому для DC режима при нормальном интра-предсказании.
[0375] Затем, преобразователь 106 выполняет вторичное преобразование NSST с использованием матрицы преобразования, включенной в набор преобразований, выбранный на этапе S11, этапе S13 или этапе S14 (S15). Более конкретно, преобразователь 106 определяет матрицу преобразования, подлежащую использованию, среди матриц преобразования, включенных в набор преобразований, выбранный на этапе S11, этапе S13 или этапе S14, и выполняет вторичное преобразование NSST с использованием определенной матрицы преобразования.
[0376] Следует отметить, что вышеописанный процесс выбора является только одним примером. Часть процесса, описанного выше, может быть опущена, или процесс или условное ветвление, не описанное выше, может быть добавлено. Например, на этапе S14, преобразователь 106 может выбирать общий набор преобразований, варьирующийся в зависимости от размера блока.
[0377] Кроме того, во время матрично-взвешенного интра-предсказания (MIP), NSST может отключаться. В этом случае, в CU, к которой матрично-взвешенное интра-предсказание (MIP) применяется в качестве интра-предсказания, не требуется кодировать синтаксис касательно NSST. При этом, можно опустить, например, информацию флага, указывающую включенное/отключенное состояние NSST, индексную информацию, указывающую матрицу преобразования NSST, и т.д. Кроме того, когда NSST отключено во время матрично-взвешенного интра-предсказания (MIP), информация флага для каждой CU может использоваться для указания, что NSST отключено.
[0378] Обработка кодера 100 была описана выше как репрезентативная, но обработка декодера 200 является также почти той же самой. Это объясняется тем, что кодер по существу является общим с декодером и отличается от декодера только в том, что необходимый сигнал для обработки кодируется в поток или декодируется из потока.
[0379] [Полезный результат Аспекта 1]
В соответствии с Аспектом 1, при выполнении вторичного преобразования преобразователем 106 кодера 100, различие между распределениями коэффициентов первичного преобразования режимов предсказания может быть меньше, когда используется матрично-взвешенное интра-предсказание (MIP), включенное в интра-предсказание, по сравнению с тем, когда используется нормальное интра-предсказание.
[0380] Соответственно, когда текущий блок кодируется с использованием матрично-взвешенного интра-предсказание (MIP) при выполнении вторичного преобразования NSST, преобразователь 106 кодера 100 выбирает общий набор преобразований, совместно используемый среди режимов предсказания. При этом можно уменьшить размер ROM, требуемый для хранения коэффициентов NSST.
[0381] Подобным же образом, при выполнении вторичного обратного преобразования обратным преобразователем 206 декодера 200, различие между распределениями квантованных коэффициентов режимов предсказания может быть меньше, когда используется матрично-взвешенное интра-предсказание (MIP), включенное в интра-предсказание, по сравнению с тем, когда используется нормальное интра-предсказание.
[0382] Соответственно, когда текущий блок декодируется с использованием матрично-взвешенного интра-предсказания (MIP) при выполнении вторичного обратного преобразования NSST, обратный преобразователь 206 декодера 200 выбирает общий набор обратных преобразований, совместно используемый среди режимов предсказания. При этом можно уменьшить размер ROM, требуемый для хранения коэффициентов NSST.
[0383] Следует отметить, что когда матрично-взвешенное интра-предсказание (MIP) используется при выполнении вторичного преобразования, преобразователь 106 может использовать вышеупомянутый общий набор преобразований только для сигнала яркости в качестве набора преобразований для вторичного преобразования. Подобным же образом, когда матрично-взвешенное интра-предсказание (MIP) используется при выполнении вторичного обратного преобразования, обратный преобразователь 206 может использовать общий набор обратных преобразований только для сигнала яркости в качестве набора преобразований для вторичного обратного преобразования.
[0384] Следует отметить, что когда матрично-взвешенное интра-предсказание (MIP) используется при выполнении вторичного преобразования, преобразователь 106 может использовать вышеупомянутый общий набор преобразований как для сигнала яркости, так и для сигнала цветности. Здесь, набор преобразований для использования в планарном режиме нормального интра-предсказания может использоваться в качестве общего набора преобразований. Подобным же образом, когда матрично-взвешенное интра-предсказание (MIP) используется при выполнении вторичного обратного преобразования, обратный преобразователь 206 может использовать общий набор обратных преобразований как для сигнала яркости, так и для сигнала цветности. Здесь, набор обратных преобразований для использования в планарном режиме нормального интра-предсказания может использоваться в качестве общего набора обратных преобразований.
[0385] [Аспект 2]
Далее описывается, в качестве Аспекта 2, второй пример способа для выбора набора преобразований NSST в матрично-взвешенном интра-предсказании (MIP). В представленном аспекте, описывается пример, в котором набор преобразований в матрично-взвешенном интра-предсказании (MIP) выбирается на основе разных правил между яркостью и цветностью. Это объясняется тем, что опции для набора преобразований становятся более гибкими за счет использования разных наборов преобразований для яркости и цветности, и тем самым повышая возможность выбора более подходящего набора преобразований.
[0386] Фиг. 49 представляет собой блок-схему последовательности операций, иллюстрирующую один пример процесса выбора набора преобразований NSST, выполняемого посредством преобразователя 106 кодера в соответствии с Аспектом 2 варианта осуществления.
[0387] Сначала, предполагается, что интра-предсказание используется в качестве режима предсказания для текущего блока.
[0388] В этом случае, преобразователь 106 определяет, кодируется ли текущий блок с использованием матрично-взвешенного интра-предсказания (MIP), включенного в интра-предсказание (S20).
[0389] Когда определено, что текущий блок кодируется с использованием нормального интра-предсказания на этапе S20 (“Нет” на S20), преобразователь 106 выбирает, в качестве набора преобразований NSST, набор преобразований, предварительно определенный для каждого из режимов предсказания нормального интра-предсказания, при выполнении вторичного преобразования (S21).
[0390] С другой стороны, когда определено, что текущий блок кодируется с использованием матрично-взвешенного интра-предсказания (MIP) на этапе S20 (“Да” на S20), преобразователь 106 дополнительно определяет, должно ли быть предсказание цветности или предсказание яркости (S22).
[0391] Когда определено, что должно быть предсказание цветности на этапе S22 (“Да” на S22), преобразователь 106 выбирает, в качестве набора преобразований NSST, набор преобразований, идентичный набору режима CCLM при нормальном интра-предсказании, при выполнении вторичного преобразования (S23). Здесь, CCLM является сокращением для кросс-компонентной линейной модели, и режим CCLM представляет собой режим, в котором, при интра-предсказании для блока цветности, компонент цветности текущего блока предсказывается на основе компонента яркости текущего блока. Иными словами, при выполнении вторичного преобразования, преобразователь 106 выбирает, в качестве набора преобразований NSST, набор преобразований, ассоциированный с режимом CCLM, для использования в предсказании цветности при нормальном интра-предсказания. Это объясняется тем, что эффективность кодирования более вероятно будет повышена, когда возникновение остаточных коэффициентов в случае генерации изображения предсказания цветности с использованием матрично-взвешенного интра-предсказания (MIP) аналогично возникновению остаточных коэффициентов в режиме CCLM нормального интра-предсказания.
[0392] Когда определено, что должно быть предсказание яркости на этапе S22 (“Нет” на S22), преобразователь 106 выбирает, в качестве набора преобразований NSST, набор преобразований, идентичный набору планарного режима при нормальном интра-предсказании, при выполнении вторичного преобразования (S24).
[0393] Затем, преобразователь 106 выполняет вторичное преобразование NSST с использованием матрицы преобразования, включенной в набор преобразований, выбранный на этапе S21, этапе S23 или этапе S24 (S25). Более конкретно, преобразователь 106 определяет матрицу преобразования, подлежащую использованию, среди матриц преобразования, включенных в набор преобразований, выбранный на этапе S21, этапе S23 или этапе S24, и выполняет вторичное преобразование NSST с использованием определенной матрицы преобразования.
[0394] Обработка кодера 100 была описана выше в качестве репрезентативной, но обработка декодера 200 является почти той же самой.
[0395] [Полезный результат Аспекта 2]
В соответствии с Аспектом 2, когда матрично-взвешенное интра-предсказание (MIP) используется при выполнении вторичного преобразования, для сигнала яркости, преобразователь 106 может использовать набор преобразований для использования в планарном режиме при нормальном интра-предсказании, в качестве общего набора преобразований. С другой стороны, когда матрично-взвешенное интра-предсказание (MIP) используется при выполнении вторичного преобразования, для сигнала цветности, преобразователь 106 может использовать набор преобразований для использования в режиме CCLM при нормальном интра-предсказании, в качестве общего набора преобразований.
[0396] Иными словами, при выполнении вторичного преобразования, для сигнала цветности, преобразователь 106 может выбирать, в качестве набора преобразований NSST, набор преобразований, ассоциированный с режимом CCLM, для использования в предсказании цветности при нормальном интра-предсказании. При этом можно повысить эффективность кодирования, когда возникновение остаточных коэффициентов в случае генерации изображения предсказания цветности с использованием матрично-взвешенного интра-предсказания (MIP) аналогично возникновению остаточных коэффициентов в режиме CCLM нормального интра-предсказания.
[0397] Следует отметить, что полезный результат обработки обратного преобразователя 206 декодера 200 является также почти тем же самым, и поэтому его описание здесь опущено.
[0398] (Варианты)
Далее описан вариант обработки преобразователя 106 кодера 100 в качестве репрезентативного, но обработка обратного преобразователя 206 декодера 200 является также почти такой же.
[0399] Иными словами, когда матрично-взвешенное интра-предсказание (MIP) используется при выполнении вторичного преобразования, преобразователь 106 может использовать, в качестве набора преобразований NSST, набор преобразований отличный от набора преобразований для нормального интра-предсказания. При этом опции для набора преобразований, подлежащего выбору, когда преобразователь 106 выполняет вторичное преобразование, становятся более гибкими, и поэтому возможность выбора набора преобразований, более подходящего матрично-взвешенному интра-предсказанию (MIP), повышается.
[0400] Кроме того, преобразователь 106 может переключать набор преобразований NSST в матрично-взвешенном интра-предсказании (MIP) для использования при выполнении вторичного преобразования, в соответствии с режимом предсказания матрично-взвешенного интра-предсказания (MIP). При этом опции для набора преобразований, подлежащего выбору, когда преобразователь 106 выполняет вторичное преобразование, становятся более гибкими, и поэтому возможность выбора более подходящего набора преобразований повышается.
[0401] Кроме того, например, для каждого из наборов преобразований NSST, может выбираться оптимизированный режим предсказания матрично-взвешенного интра-предсказания (MIP). Соответственно, набор преобразований NSST для использования при нормальном интра-предсказании может использоваться без какого-либо изменения, и поэтому можно уменьшить размер схемы и повысить эффективность кодирования.
[0402] [Пример реализации кодера]
Фиг. 50 представляет собой блок-схему, иллюстрирующую пример реализации кодера 100 в соответствии с представленным вариантом осуществления. Кодер 100 включает в себя схему 160 и память 162. Например, компоненты кодера 100, показанные на фиг. 1, реализуются как схема 160 и память 162, показанные на фиг. 50.
[0403] Схема 160 выполняет обработку информации и может обращаться к памяти 162. Например, схема 160 представляет собой специализированную или универсальную электронную схему для кодирования движущегося изображения. Схема 160 может представлять собой процессор, такой как CPU. Схема 160 также может представлять собой сборку электронных схем. Кроме того, например, схема 160 может служить в качестве компонентов иных, чем компоненты для хранения информации, среди компонентов в кодере 100, показанном на фиг. 1 и т.д.
[0404] Память 162 представляет собой специализированную или универсальную память, которая хранит информацию для кодирования движущегося изображения в схеме 160. Память 162 может представлять собой электронную схему и может соединяться со схемой 160. Память 162 также может быть включена в схему 160. Память 162 также может представлять собой сборку электронных схем. Память 162 также может представлять собой магнитный диск, оптический диск и т.д. и может упоминаться как хранилище, носитель записи и т.д. Память 162 также может представлять собой энергонезависимую память или энергозависимую память.
[0405] Например, память 162 может хранить движущееся изображение, подлежащее кодированию, или битовый поток, соответствующий закодированному движущемуся изображению. Память 162 также может хранить программу для кодирования движущегося изображения в схеме 160.
[0406] Кроме того, например, память 162 может служить в качестве компонентов для хранения информации среди компонентов в кодере 100, показанном на фиг. 1 и т.д. В частности, память 162 может служить в качестве памяти 118 блоков и памяти 122 кадров, показанных на фиг. 1. Более конкретно, память 162 может хранить восстановленный блок, восстановленную картинку и т.д.
[0407] Следует отметить, что в кодере 100, не все компоненты, показанные на фиг. 1 и т.д., должны быть реализованы, или не все вышеописанные процессы должны выполняться. Некоторые из компонентов, показанных на фиг. 1 и т.д., могут быть включены в другое устройство, или некоторые из вышеописанных процессов могут выполняться посредством другого устройства. Тогда, в кодере 100, некоторые из компонентов, показанных на фиг. 1 и т.д., реализуются, и некоторые из вышеописанных процессов выполняются, и тем самым компенсация движения выполняется эффективным образом.
[0408] Далее будет описан пример операции кодера 100, показанного на фиг. 50.
[0409] Фиг. 51 представляет собой блок-схему последовательности операций, иллюстрирующую пример операции кодера 100, показанного на фиг. 50. Например, при кодировании движущегося изображения, кодер 100Ю показанный на фиг. 50, выполняет операции, показанные на фиг. 51.
[0410] В частности, схема 160 кодера 100 выполняет, при функционировании, следующее. Иными словами, схема 160 выводит ошибку предсказания изображения путем вычитания, из изображения, изображения предсказания упомянутого изображения, сгенерированного с использованием интра-предсказания или интер-предсказания (S311). Затем, схема 160 выполняет первичное преобразование над ошибкой предсказания и выполняет вторичное преобразование над результатом первичного преобразования (S312). На этапе S312, при выполнении вторичного преобразования, когда используется матрично-взвешенное интра-предсказание, включенное в интра-предсказание и имеющее множество режимов предсказания, схема использует, в качестве набора преобразований для вторичного преобразования, общий набор преобразований, совместно используемый среди множества режимов предсказания. Матрично-взвешенное интра-предсказание генерирует изображение предсказания путем выполнения матричного вычисления над пиксельной последовательностью, полученной из пиксельных значений окружающих пикселов текущего блока. Набор преобразований для вторичного преобразования применяется к коэффициентам первичного преобразования, полученным из результата первичного преобразования. Затем, схема 160 выполняет квантование над результатом вторичного преобразования (S313). Затем, схема 160 кодирует результат квантования как данные изображения (S314).
[0411] Таким образом, когда используется матрично-взвешенное интра-предсказание, кодер 100 может использовать общий набор преобразований, чтобы уменьшить размер ROM, требуемый для хранения коэффициентов NSST. При этом, в кодере 100, можно уменьшить размер схемы и повысить эффективность кодирования.
[0412] [Пример реализации декодера]
Фиг. 52 представляет собой блок-схему, иллюстрирующую пример реализации декодера 200 в соответствии с представленным вариантом осуществления. Декодер 200 включает в себя схему 260 и память 262. Например, компоненты в декодере 200, показанном на фиг. 41, реализуются как схема 260 и память 262, показанные на фиг. 52.
[0413] Схема 260 выполняет обработку информации и может обращаться к памяти 262. Например, схема 260 представляет собой специализированную или универсальную электронную схему для кодирования движущегося изображения. Схема 260 может представлять собой процессор, такой как CPU. Схема 260 также может представлять собой сборку электронных схем. Кроме того, например, схема 160 может служить в качестве компонентов иных, чем компоненты для хранения информации, среди компонентов в декодере 200, показанном на фиг. 41 и т.д.
[0414] Память 262 представляет собой специализированную или универсальную память, которая хранит информацию для кодирования движущегося изображения в схеме 260. Память 262 может представлять собой электронную схему и может соединяться со схемой 260. Память 262 также может быть включена в схему 260. Память 262 также может представлять собой сборку электронных схем. Память 262 также может представлять собой магнитный диск, оптический диск и т.д. и может упоминаться как хранилище, носитель записи и т.д. Память 262 также может представлять собой энергонезависимую память или энергозависимую память.
[0415] Например, память 262 может хранить битовый поток, соответствующий закодированному движущемуся изображению, или движущееся изображение, соответствующее декодированному битовому потоку. Память 262 также может хранить программу для декодирования движущегося изображения в схеме 260.
[0416] Кроме того, например, память 262 может служить в качестве компонентов для хранения информации среди компонентов в декодере 200, показанном на фиг. 41 и т.д. В частности, память 262 может служить в качестве памяти 210 блоков и памяти 214 кадров, показанных на фиг. 41. Более конкретно, память 262 может хранить восстановленный блок, восстановленную картинку и т.д.
[0417] Следует отметить, что в декодере 200, не все компоненты, показанные на фиг. 41 и т.д., должны быть реализованы, или не все вышеописанные процессы должны выполняться. Некоторые из компонентов, показанных на фиг. 41 и т.д., могут быть включены в другое устройство, или некоторые из вышеописанных процессов могут выполняться посредством другого устройства. Тогда, в декодере 100, некоторые из компонентов, показанных на фиг. 41 и т.д., реализуются, и некоторые из вышеописанных процессов выполняются, и тем самым компенсация движения выполняется эффективным образом.
[0418] Далее будет описан пример операции декодера 200, показанного на фиг. 52. Фиг. 53 представляет собой блок-схему последовательности операций для иллюстрации примера операции декодера 200, показанного на фиг. 52. Например, при декодировании движущегося изображения, декодер 200, показанный на фиг. 52, выполняет операции, показанные на фиг. 53.
[0419] В частности, схема 260 декодера 200 выполняет, при функционировании, следующее. Иными словами, сначала, схема 260 декодирует данные изображения (S411). Затем, схема 260 выполняет обратное квантование над данными, декодированными на этапе S411 (S412). Затем, схема 260 выполняет вторичное обратное преобразование над результатом обратного квантования и выполняет первичное обратное преобразование над результатом вторичного обратного преобразования (S413). На этапе S413, при выполнении вторичного обратного преобразования, когда используется матрично-взвешенное интра-предсказание, включенное в интра-предсказание и имеющее множество режимов предсказания, схема использует, в качестве набора обратных преобразований для вторичного обратного преобразования, общий набор обратных преобразований, совместно используемый среди множества режимов предсказания. Матрично-взвешенное интра-предсказание генерирует изображение предсказания путем выполнения матричного вычисления над пиксельной последовательностью, полученной из пиксельных значений окружающих пикселов текущего блока. Набор обратных преобразований для вторичного обратного преобразования применяется к квантованным коэффициентам, полученным из результата обратного квантования. Затем, схема 260 выводит изображение путем добавления, к изображению предсказания изображения, результата первичного обратного преобразования в качестве ошибки предсказания изображения (S414).
[0420] Таким образом, когда матрично-взвешенное интра-предсказание используется, декодер 200 может использовать общий набор обратных преобразований, чтобы уменьшить размер ROM, требуемый для хранения коэффициентов NSST. При этом, в декодере 200, можно уменьшить размер схемы и повысить эффективность кодирования.
[0421] [Дополнение]
Кроме того, кодер 100 и декодер 200 в соответствии с представленным вариантом осуществления могут использоваться как кодер изображения и декодер изображения или могут использоваться как кодер видео или декодер видео, соответственно. Альтернативно, кодер 100 и декодер 200 могут, каждый, использоваться как интер-предсказатель (межкадровый предсказатель).
[0422] Иными словами, кодер 100 и декодер 200 могут соответствовать только интер-предсказателю (межкадровому предсказателю) 126 и интер-предсказателю (межкадровому предсказателю) 218, соответственно. Другие компоненты, такие как преобразователь 106 и обратный преобразователь 206, могут быть включены в другое устройство.
[0423] Кроме того, в представленном варианте осуществления, каждый компонент может быть сконфигурирован с помощью выделенных аппаратных средств или может быть реализован путем исполнения программы программного обеспечения, подходящей для каждого компонента. Каждый компонент может быть реализован путем побуждения исполнителя программы, такого как CPU или процессор, считывать и исполнять программу программного обеспечения, сохраненную на носителе записи, таком как жесткий диск или полупроводниковая память.
[0424] В частности, кодер 100 и декодер 200 могут, каждый, включать в себя схему обработки и хранилище, которое электрически соединено со схемой обработки и доступно из схемы обработки. Например, схема обработки соответствует схеме 160 или 260, и хранилище соответствует памяти 162 или 262.
[0425] Схема обработки включает в себя по меньшей мере одно из выделенных аппаратных средств и исполнителя программы и выполняет обработку с использованием хранилища. Кроме того, когда схема обработки включает в себя исполнителя программы, хранилище хранит программу программного обеспечения, исполняемую исполнителем программы.
[0426] Здесь, программное обеспечение для реализации кодера 100, декодера 200 и т.д. в соответствии с представленным вариантом осуществления представляет собой программу, как описано ниже.
[0427] Иными словами, эта программа может побуждать компьютер исполнять способ кодирования для кодирования изображения. Способ кодирования включает в себя: выведение ошибки предсказания изображения путем вычитания изображения предсказания изображения из изображения, причем изображение предсказания генерируется с использованием интра-предсказания или интер-предсказание; выполнение первичного преобразования над ошибкой предсказания и выполнение вторичного преобразования над результатом первичного преобразования; выполнение квантования над результатом вторичного преобразования; и кодирование результата квантования в качестве данных изображения, при этом, при выполнении вторичного преобразования, когда используется матрично-взвешенное интра-предсказание, включенное в интра-предсказание и имеющее множество режимов предсказания, общий набор преобразований, совместно используемый среди множества режимов предсказания, используется в качестве набора преобразований для вторичного преобразования, матрично-взвешенное интра-предсказание генерирует изображение предсказания путем выполнения матричного вычисления над пиксельной последовательностью, полученной из пиксельных значений окружающих пикселов текущего блока, набор преобразований для вторичного преобразования применяется к коэффициентам первичного преобразования, полученным из результата первичного преобразования.
[0428] Альтернативно, эта программа может побуждать компьютер исполнять способ декодирования для декодирования изображения. Способ декодирования включает в себя: декодирование данных изображения; выполнение обратного квантования над данными; выполнение вторичного обратного преобразования над результатом обратного квантования и выполнение первичного обратного преобразования над результатом вторичного обратного преобразования; и выведение изображения путем добавления, к изображению предсказания изображения, результата первичного обратного преобразования в качестве ошибки предсказания изображения, при этом, при выполнении вторичного обратного преобразования, когда используется матрично-взвешенное интра-предсказание, включенное в интра-предсказание и имеющее множество режимов предсказания, общий набор обратных преобразований, совместно используемый среди множества режимов предсказания, используется в качестве набора обратных преобразований для вторичного обратного преобразования, матрично-взвешенное интра-предсказание генерирует изображение предсказания путем выполнения матричного вычисления над пиксельной последовательностью, полученной из пиксельных значений окружающих пикселов текущего блока, набор обратных преобразований для вторичного обратного преобразования применяется к квантованным коэффициентам, полученным из результата обратного квантования.
[0429] Кроме того, как описано выше, каждый компонент может представлять собой схему. Схемы могут быть интегрированы в одну схему как целое или могут быть отдельными друг от друга. Кроме того, каждый компонент может быть реализован как универсальный процессор или как выделенный процессор.
[0430] Кроме того, процесс, выполняемый посредством конкретного компонента, может выполняться посредством другого компонента. Кроме того, порядок процессов может быть изменен, или множество процессов может выполняться параллельно. Более того, устройство кодирования может включать в себя кодер 100 и декодер 200.
[0431] Порядковые числительные, используемые в иллюстрации, такие как первый и второй, могут быть перенумерованы по мере необходимости. Кроме того, порядковое числительное может снова присваиваться компоненту и т.д. или может быть удалено из компонента и т.д.
[0432] Как описано выше, аспекты кодера 100 и декодера 200 были описаны на основе варианта осуществления, но аспекты кодера 100 и декодер 200 не ограничены этим вариантом осуществления. Различные модификации варианта осуществления, которые могут быть созданы специалистами в данной области техники, и формы, сконфигурированные путем комбинирования компонентов в разных вариантах осуществления без отклонения от сущности настоящего раскрытия, могут быть включены в объем аспектов кодера 100 и декодера 200.
[0433] Один или более аспектов, раскрытых в настоящем документе, могут выполняться посредством комбинирования по меньшей мере части других аспектов в настоящем раскрытии. Кроме того, один или более аспектов, раскрытых здесь, могут выполняться посредством комбинирования, с другими аспектами, части процессов, указанных в любой из блок-схем последовательностей операций в соответствии с аспектами, части конфигурации любого из устройств, части синтаксисов и т.д.
[Реализации и применения]
[0434] Как описано выше в каждом из вариантов осуществления, каждый функциональный и операционный блок может типично быть реализован, например, как MPU (микропроцессорный модуль) и память. Кроме того, процессы, выполняемые посредством каждого из функциональных блоков, могут быть реализованы как модуль исполнения программы, такой как процессор, который считывает и исполняет программное обеспечение (программу), записанное на носителе записи, таком как ROM. Программное обеспечение может быть распределенным. Программное обеспечение может быть записано на различных носителях записи, таких как полупроводниковая память. Отметим, что каждый функциональный блок может также быть реализован как аппаратные средства (специализированная схема). Могут использоваться различные комбинации аппаратных средств и программного обеспечения.
[0435] Обработка, описанная в каждом из вариантов осуществления, может быть реализована посредством интегрированной обработки с использованием одного устройства (системы) и, альтернативно, может быть реализована посредством децентрализованной обработки с использованием множества устройств. Кроме того, процессор, который исполняет вышеописанную программу, может быть одним процессором или множеством процессоров. Иными словами, может выполняться интегрированная обработка, и, альтернативно, может выполняться децентрализованная обработка.
[0436] Варианты осуществления настоящего раскрытия не ограничены вышеописанными примерными вариантами осуществления; различные модификации могут выполняться в примерных вариантах осуществления, результаты которых также включены в объем вариантов осуществления настоящего раскрытия.
[0437] Далее будут описаны примеры применения способа кодирования движущегося изображения (способа кодирования изображения) и способа декодирования движущегося изображения (способа декодирования изображения), описанных в каждом из приведенных выше вариантов осуществления, а также различные системы, которые реализуют примеры применения. Такая система может быть охарактеризована как включающая в себя кодер изображения, который использует способ кодирования изображения, декодер изображения, который использует способ декодирования изображения, или кодер-декодер изображения, который включает в себя как кодер изображения, так и декодер изображения. Другие конфигурации такой системы могут модифицироваться на основе от случая к случаю.
[Примеры использования]
[0438] Фиг. 54 иллюстрирует общую конфигурацию системы ex100 предоставления контента, пригодной для реализации услуги распространения контента. Область, в которой предоставляются услуги связи, разделена на соты желательных размеров, и базовые станции ex106, ex107, ex108, ex109 и ex110, которые являются фиксированными беспроводными станциями в проиллюстрированном примере, расположены в соответствующих сотах.
[0439] В системе ex100 предоставления контента, устройства, включающие в себя компьютер ex111, игровое устройство ex112, камеру ex113, бытовую технику ex114 и смартфон ex115, соединены с Интернетом ex101 через провайдера ex102 Интернет-услуг или сеть связи ex104 и базовые станции ex106 - ex110. Система ex100 предоставления контента может объединять и соединять любую комбинацию вышеуказанных устройств. В различных реализациях, устройства могут непосредственно или опосредованно соединяться между собой через телефонную сеть или связь в ближней зоне, а не через базовые станции ex106 - ex110. Дополнительно, стриминговый сервер ex103 может соединяться с устройствами, включая компьютер ex111, игровое устройство ex112, камеру ex113, бытовую технику ex114 и смартфон ex115, например, через Интернет ex101. Стриминговый сервер ex103 может также соединяться, например, с терминалом в точке доступа (“горячей точке”) в самолете ex117 через спутник ex116.
[0440] Отметим, что вместо базовых станций ex106 - ex110, могут использоваться беспроводные точки доступа или горячие точки. Стриминговый сервер ex103 может соединяться с сетью связи ex104 непосредственно, а не через Интернет ex101 или провайдера ex102 Интернет-услуг и может соединяться с самолетом ex117 непосредственно, а не через спутник ex116.
[0441] Камера ex113 представляет собой устройство, способное захватывать неподвижные изображения (фотоснимки) и видео, такое как цифровая камера. Смартфон ex115 представляет собой устройство смартфона, сотовый телефон или телефон персональной телефонной системы (PHS), который может работать в соответствии со стандартами систем мобильной связи для систем 2G, 3G, 3.9G, и 4G, в также системы следующего поколения 5G.
[0442] Бытовая техника ex114 представляет собой, например, холодильник или домашнюю систему топливных элементов для совместной генерации электрической и тепловой энергии.
[0443] В системе ex100 предоставления контента, терминал, включающий функцию захвата изображения и/или видео, способен, например, к потоковой передаче в реальном времени путем соединения со стриминговым сервером ex103, например, через базовую станцию ex106. При потоковой передаче в реальном времени, терминал (например, компьютер ex111, игровое устройство ex112, камера ex113, бытовая техника ex114, смартфон ex115 или терминал в самолете ex117) может выполнять обработку кодирования, описанную в вариантах осуществления выше, на неподвижном изображении или видео контенте, захваченном пользователем посредством терминала, может мультиплексировать данные видео, полученные посредством кодирования, и данные аудио, полученные посредством кодирования аудио, соответствующего видео, и может передавать полученные данные на стриминговый сервер ex103. Иными словами, терминал функционирует как кодер изображения в соответствии с одним аспектом настоящего раскрытия.
[0444] Стриминговый сервер ex103 выполняет потоковую передачу данных контента на клиенты, которые запрашивают потоковую передачу. Примеры клиентов включают компьютер ex111, игровое устройство ex112, камеру ex113, бытовую технику ex114, смартфон ex115 и терминалы в самолете ex117, которые способны декодировать вышеописанные закодированные данные. Устройства, которые принимают данные потоковой передачи, могут декодировать и воспроизводить принятые данные. Иными словами, устройства могут, каждое, функционировать как декодер изображения, в соответствии с одним аспектом настоящего раскрытия.
[Децентрализованная обработка]
[0445] Стриминговый сервер ex103 может быть реализован как множество серверов или компьютеров, между которым разделены такие задачи, как обработка, запись и потоковая передача данных. Например, стриминговый сервер ex103 может быть реализован как сеть доставки контента (CDN), которая выполняет потоковую передачу контента через сеть, соединяющую множество краевых серверов, расположенных по всему миру. В CDN, краевой сервер, физически ближний к клиенту, может динамически назначаться клиенту. Контент кэшируется и передается потоком на краевой сервер, чтобы уменьшить время загрузки. В случае, например, некоторого типа сбоя или изменения в связности, например, из-за пика трафика, можно выполнять потоковую передачу данных стабильно на высоких скоростях, поскольку можно избегать затронутых сбоем частей сети, например, путем разделения обработки между множеством краевых серверов или переключения стриминговых циклов работы на другой краевой сервер и продолжения стриминга.
[0446] Децентрализация не ограничена только разделением обработки для стриминга; кодирование захваченных данных может разделяться и выполняться посредством терминалов, на стороне сервера или в обоих вариантах. В одном примере, в типичном кодировании, обработка выполняется в двух контурах. Первый контур предназначен для определения того, насколько сложным является изображение, на покадровой основе или на основе от сцены к сцене, или определения нагрузки кодирования. Второй контур предназначен для обработки, которая поддерживает качество изображения и повышает эффективность кодирования. Например, можно уменьшить нагрузку обработки терминалов и улучшить качество и эффективность кодирования контента тем, что терминалы выполняют первый контур кодирования, а серверная сторона, которая приняла контент, выполняет второй контур кодирования. В таком случае, после приема запроса декодирования, возможно, что закодированные данные, полученные из первого контура, выполняемого посредством одного терминала, принимаются и воспроизводятся на другом терминале приблизительно в реальном времени. Это позволяет реализовать плавный стриминг в реальном времени.
[0447] В другом примере, камера ex113 или тому подобное извлекает некоторое количество признаков (некоторое количество признаков или характеристик) из изображения, сжимает данные, относящиеся к этому количеству признаков, в качестве метаданных, и передает сжатые метаданные на сервер. Например, сервер определяет значимость объекта на основе количества признаков и изменяет точность квантования соответственно, чтобы выполнять сжатие, подходящее для смыслового значения (или значимости контента) изображения. Данные количества признаков являются особенно действенными в повышении точности и эффективности предсказания вектора движения во время второго прохода сжатия, выполняемого сервером. Кроме того, кодирование, которое имеет относительно низкую нагрузку обработки, такое как кодирование переменной длины (VLC), может обрабатываться терминалом, а кодирование, которое имеет относительно высокую нагрузку обработки, такое как контекстно-адаптивное двоичное арифметическое кодирование (CABAC), может обрабатываться сервером.
[0448] В еще одном примере, имеются случаи, в которых множество видео приблизительно той же самой сцены захватываются множеством терминалов, например, на стадионе, торговом центре или на предприятии. В таком случае, например, кодирование может быть децентрализовано путем разделения задач обработки между множеством терминалов, которые захватили видео, и, при необходимости, других терминалов, которые не захватили видео, и сервером, на основе по каждой единице. Единицами могут быть, например, группы картинок (GOP), картинки или мозаичные элементы, являющиеся результатом разделения картинки. Это позволяет уменьшить время загрузки и реализовать стриминг, который ближе к реальному времени.
[0449] Поскольку видео относятся приблизительно к той же самой сцене, управление и/или инструкции могут выполняться сервером, так что на видео, захваченные терминалами, можно ссылаться перекрестным образом. Кроме того, сервер может принимать закодированные данные от терминалов, изменять опорное соотношение между элементами данных или корректировать и заменять сами картинки и затем выполнять кодирование. Это позволяет сгенерировать поток с повышенным качеством и эффективностью для индивидуальных элементов данных.
[0450] Более того, сервер может выполнять потоковую передачу данных видео после выполнения транскодирования, чтобы конвертировать формат кодирования данных видео. Например, сервер может конвертировать формат кодирования из MPEG в VP (например, VP9), может конвертировать H.264 в H.265 и т.д.
[0451] Таким образом, кодирование может выполняться посредством терминала или одного или более серверов. Соответственно, хотя устройство, которое выполняет кодирование, упоминается как "сервер" или "терминал" в следующем описании, некоторые или все из процессов, выполняемых сервером, могут выполняться терминалом, и аналогично, некоторые или все из процессов, выполняемых терминалом, могут выполняться сервером. Это также применимо к процессам декодирования.
[3D, мультиракурсный режим]
[0452] Имеет место увеличение использования изображений или видео, скомбинированных из изображений или видео разных сцен, захваченных одновременно, или той же самой сцены, захваченной под разными углами, множеством терминалов, таких как камера ex113 и/или смартфон ex115. Видео, захваченные терминалами, могут комбинироваться на основе, например, отдельно полученного относительного позиционного отношения между терминалами или областей в видео, имеющих точки согласования (совмещения) признаков.
[0453] В дополнение к кодированию двумерных движущихся изображений, сервер может кодировать неподвижное изображение на основе анализа сцены движущегося изображения, либо автоматически, либо в момент времени, заданный пользователем, и передавать закодированное неподвижное изображение на приемный терминал. Более того, когда сервер может получать относительное позиционное отношение между терминалами, захватывающими видео, в дополнение к двумерным движущимся изображениям, сервер может генерировать трехмерную геометрию сцены на основе видео той же самой сцены, захваченной под разными углами (ракурсами). Сервер может отдельно кодировать трехмерные данные, сгенерированные, например, из облака точек и, основываясь над результатом распознавания и отслеживания человека или объекта с использованием трехмерных данных, может выбирать или восстанавливать и генерировать видео, подлежащее передаче на приемный терминал, из видео, захваченных множеством терминалов.
[0454] Это позволяет пользователю наслаждаться сценой путем свободного выбора видео, соответствующих терминалам, захватывающим видео, и позволяет пользователю наслаждаться контентом, полученным путем извлечения видео в выбранной точке обзора из трехмерных данных, восстановленных из множества изображений или видео. Более того, как для видео, звук может записываться под относительно разными углами, и сервер может мультиплексировать аудио из конкретного ракурса или пространства, с соответствующим видео, и передавать мультиплексированные видео и аудио.
[0455] В последние годы, контент, который является комбинацией реального мира и виртуального мира, такой как контент виртуальной реальности (VR) и дополненной реальности (AR), также стал популярным. В случае изображений VR, сервер может создавать изображения из точек обзора как левого, так и правого глаза, и выполнять кодирование, которое допускает привязку между изображениями двух точек обзора, такое как мультивидовое кодирование (MVC), и, альтернативно, может кодировать изображения как отдельные потоки, без привязки. Когда изображения декодируются как отдельные потоки, потоки могут быть синхронизированы при воспроизведении, чтобы воссоздать виртуальное трехмерное пространство в соответствии с точкой обзора пользователя.
[0456] В случае изображений AR, сервер может накладывать информацию виртуального объекта, существующего в виртуальном пространстве, на информацию камеры, представляющую пространство реального мира, на основе трехмерного положения или движения с точки зрения (ракурса) пользователя. Декодер может получать или сохранять информацию виртуального объекта и трехмерные данные, генерировать трехмерные изображения на основе движения с ракурса пользователя и затем генерировать наложенные данные путем бесшовного (плавного) соединения изображений. Альтернативно, декодер может передавать, на сервер, движение с ракурса пользователя в дополнение к запросу информации виртуального объекта. Сервер может генерировать наложенные данные на основе трехмерных данных, сохраненных в сервере в соответствии с принятым движением, кодировать и выполнять потоковую передачу сгенерированных наложенных данных в декодер. Отметим, что наложенные данные обычно включают в себя, в дополнение к значениям RGB, значение α, указывающее прозрачность, и сервер устанавливает значение α для участков иных, чем объект, сгенерированный из трехмерных данных, например, в 0, и может выполнять кодирование, в то время как эти участки являются прозрачными. Альтернативно, сервер может установить фон на определенное значение RGB, такое как цветовая рирпроекция (хромакей), и генерировать данные, в которых области иные, чем объект, установлены как фон. Определенное значение RGB может быть предварительно определенным.
[0457] Декодирование данных подобной потоковой передачи может выполняться клиентом (например, терминалами), на серверной стороне или разделяться между ними. В одном примере, один терминал может передать запрос приема на сервер, запрошенный контент может приниматься и декодироваться другим терминалом, и декодированный сигнал может передаваться на устройство, имеющее дисплей. Возможно воспроизводить данные высококачественного изображения путем децентрализации обработки и соответственного выбора контента независимо от способности обработки самого терминала связи. В другом примере, когда TV, например, принимает данные изображения большого размера, область картинки, такая как мозаичный элемент, полученный путем деления картинки, может декодироваться и отображаться на персональном терминале или терминалах зрителя или зрителей TV. Это позволяет зрителям совместно использовать представление большой картинки, а также каждому зрителю проверять свою выделенную область или просматривать область более подробно крупным планом.
[0458] В ситуациях, когда множество беспроводных соединений возможны на ближнем, среднем и дальнем расстояниях, в помещении и снаружи, становится возможным плавно принимать контент с использованием стандарта стриминговой системы, такого как MPEG-DASH. Пользователь может переключаться между данными в реальном времени при свободном выборе декодера или устройства отображения, включая пользовательский терминал, дисплеи, расположенные в помещении или снаружи, и т.д. Кроме того, с использованием, например, информации о положении пользователя, декодирование может выполняться, переключая терминал, который обрабатывает декодирование, и терминал, который обрабатывает отображение контента. Это позволяет картографировать и отображать информацию, когда пользователь движется по маршруту в место назначения, на стене ближнего здания, в котором встроено устройство, способное отображать контент, или на части земной поверхности. Кроме того, также возможно переключать битовую скорость принимаемых данных на основе возможности доступа к закодированным данным по сети, например, когда закодированные данные, кэшированные на сервере, оперативно доступны с приемного терминала, или когда закодированные данные копируются на краевой сервер в службе доставки контента.
[Масштабируемое кодирование]
[0459] Переключение контента будет описано со ссылкой на масштабируемый поток, проиллюстрированный на фиг. 55, который кодируется со сжатием путем реализации способа кодирования движущегося изображения, описанного в вариантах осуществления выше. Сервер может иметь конфигурацию, в которой контент переключается при использовании временной и/или пространственной масштабируемости потока, что реализуется путем разделения на слои и кодирования слоев, как иллюстрируется на фиг. 55. Отметим, что может иметься множество отдельных потоков, которые имеют тот же самый контент, но разное качество. Иными словами, путем определения того, который слой следует декодировать на основе внутренних факторов, таких как способность обработки на стороне декодера, и внешних факторов, таких как пропускная способность связи, сторона декодера может свободно переключаться между контентом низкого разрешения и контентом высокого разрешения при декодировании. Например, в случае, когда пользователю желательно продолжать просмотр, например, в домашних условиях на устройстве, таком как TV, соединенный с Интернетом, видео, которое пользователь ранее просматривал на смартфоне ex115 при движении, устройство может просто декодировать тот же самый поток до другого слоя, что снижает нагрузку на серверную сторону.
[0460] Более того, в дополнение к конфигурации, описанной выше, в которой масштабируемость достигается в результате того, что картинки кодируются послойно, в случае расширенного слоя, находящегося выше базового слоя, расширенный слой может включать метаданные, основанные, например, на статистической информации по изображению. Сторона декодера может генерировать контент высококачественного изображения путем выполнения формирования изображения со сверхразрешением по картинке в базовом слое на основе метаданных. Формирование изображения со сверхразрешением может улучшить отношение SN при поддержании разрешения и/или увеличении разрешения. Метаданные включают в себя информацию для идентификации коэффициента линейного или нелинейного фильтра, как используется в обработке со сверхразрешением, или информацию, идентифицирующую значение параметра в обработке фильтрации, машинном обучении, или способ наименьших квадратов, используемый в обработке со сверхразрешением.
[0461] Альтернативно, может быть обеспечена конфигурация, в которой картинка разделена, например, на мозаичные элементы в соответствии, например, со смысловым значением объекта на изображении. На стороне декодера, только частичная область декодируется путем выбора мозаичного элемента для декодирования. Дополнительно, путем сохранения атрибута объекта (человек, машина, мяч и т.д.) и положения объекта на видео (координаты в идентичных изображениях) в качестве метаданных, сторона декодера может идентифицировать положение желательного объекта на основе метаданных и определить, который мозаичный элемент или мозаичные элементы включают в себя этот объект. Например, как иллюстрируется на фиг. 56, метаданные могут быть сохранены с использованием структуры хранения данных, отличной от пиксельных данных, такой как сообщение SEI (дополнительная информация расширения) в HEVC. Эти метаданные указывают, например, положение, размер или цвет главного объекта.
[0462] Метаданные могут быть сохранены в единицах множества картинок, таких как поток, последовательность или единицы случайного доступа. Сторона декодера может получать, например, время, в которое конкретный человек появляется на видео, и путем сопоставления этой временной информации с информацией единицы картинки может идентифицировать картинку, в которой присутствует объект, и может определять положение объекта в картинке.
[Оптимизация веб-страницы]
[0463] Фиг. 57 иллюстрирует пример экранного изображения веб-страницы, например, на компьютере ex111. Фиг. 58 иллюстрирует пример экранного изображения веб-страницы, например, на смартфоне ex115. Как иллюстрируется на фиг. 57 и фиг. 58, веб-страница может включать в себя множество изображений-ссылок, которые являются ссылками на контент изображения, и внешний вид веб-страницы может различаться в зависимости от устройства, используемого для просмотра веб-страницы. Когда множество изображений-ссылок видны на экране, до тех пор, пока пользователь явно не выберет изображение-ссылку, или до тех пор, пока изображение-ссылка не будет приблизительно в центре экрана, или все изображение-ссылка не совпадет с экраном, устройство отображения (декодер) может отображать, в качестве изображений-ссылок, неподвижные изображения, включенные в контент или I-картинки; может отображать видео, такое как анимированный gif (анимационное изображение в формате GIF) с использованием множества неподвижных изображений или I-картинок; или может принимать только базовый слой и декодировать и отображать видео.
[0464] Когда изображение-ссылка выбирается пользователем, устройство отображения выполняет декодирование, например, присваивая наивысший приоритет базовому слою. Отметим, что если существует информация в HTML-коде веб-страницы, указывающая, что контент является масштабируемым, устройство отображения может выполнять декодирование вплоть до расширенного слоя. Дополнительно, чтобы гарантировать воспроизведение в реальном времени, прежде чем делать выбор, или когда ширина полосы жестко ограничена, устройство отображения может снизить задержку между моментом времени, когда первая картинка декодируется, и моментом времени, когда декодированная картинка отображается (то есть, задержку между началом декодирования контента до отображения контента), путем декодирования и отображения только передней опорной картинки (I-картинки, P-картинки, передней опорной B-картинки). Дополнительно, устройство отображения может намеренно игнорировать отношение привязки между картинками и грубо декодировать все B- и P-картинки как передние опорные картинки, и затем выполнять нормальное декодирование, по мере того как число картинок, принятых со временем, возрастает.
[Автономное вождение]
[0465] При передаче и приеме данных неподвижного изображения или видео, таких информация двумерной или трехмерной карты для автономного вождения или вождения с поддержкой автомобиля, приемный терминал может принимать, в дополнение к данным изображения, принадлежащим одному или более слоям, информацию, например, о погоде или структуре дороги в качестве метаданных, и ассоциировать метаданные с данными изображения при декодировании. Отметим, что метаданные могут назначаться послойно и, альтернативно, могут просто мультиплексироваться с данными изображения.
[0466] В таком случае, поскольку автомобиль, дрон, самолет и т.д., содержащий приемный терминал, является мобильным, приемный терминал может непрерывно (бесшовно) принимать и выполнять декодирование при переключении между базовыми станциями среди базовых станций ex106 - ex110 путем передачи информации, указывающей положение приемного терминала. Кроме того, в соответствии с выбором, сделанным пользователем, ситуации пользователя и/или ширины полосы соединения, приемный терминал может динамически выбирать, какие данные следует принимать или до какой степени, например, следует обновлять информацию карты.
[0467] В системе ex100 предоставления контента, клиент может принимать, декодировать и воспроизводить, в реальном времени, закодированную информацию, переданную пользователем.
[Стриминг индивидуального контента]
[0468] В системе ex100 предоставления контента, в дополнение к высокому качеству изображения, также может предоставляться длинный контент, распределяемый объектом распределения видео, одноадресный или многоадресный стриминг низкого качества изображения и короткий контент от индивидуального лица. Такой контент от индивидуалов, вероятно, будет приобретать все большую популярность. Сервер может сначала выполнять обработку редактирования на контенте перед процессом кодирования, чтобы уточнить индивидуальный контент. Это может быть реализовано с использованием, например, следующей конфигурации.
[0469] В реальном времени при захвате контента видео или изображения или после того, как контент был захвачен и аккумулирован, сервер выполняет обработку распознавания на основе исходных данных или закодированных данных, такую как обработка ошибок захвата, обработка поиска сцен, смысловой анализ и/или обработка обнаружения объекта. Затем, на основе результата обработки распознавания, сервер - либо по запросу, либо автоматически - редактирует контент, примеры чего включают: коррекцию, такую как фокусировка и/или коррекция размытости движения; удаление низкoприоритетных сцен, таких как сцены низкой яркости по сравнению с другими картинками или расфокусированные; коррекция краев объекта; и коррекция цветовых тонов. Сервер кодирует отредактированные данные на основе результата редактирования. Известно, что излишне длинные видео имеют тенденцию к меньшему числу просмотров. Соответственно, чтобы поддерживать контент в пределах заданной длины, которая масштабирована с длиной исходного видео, сервер может, в дополнение к низкоприоритетным сценам, описанным выше, автоматически обрезать сцены с низкой динамикой, на основе результата обработки изображения. Альтернативно, сервер может генерировать и кодировать видео-дайджест на основе результата анализа смыслового содержания сцены.
[0470] Могут быть случаи, когда индивидуальный контент может включать контент, который нарушает авторское право, нормы морали, права на использование персональных данных (портретов) и т.д. Такой случай может привести к неблагоприятной ситуации для создателя, как в случае, когда контент совместно используется за пределами объема, предполагаемого создателем. Соответственно, перед кодированием, сервер может, например, редактировать изображения так, чтобы размывать лица людей на периферии экрана или размывать внутреннее пространство дома, например. Дополнительно, сервер может быть сконфигурирован, чтобы распознавать лица людей иных, чем зарегистрированный человек на изображениях, подлежащих кодированию, и когда такие лица появляются на изображении, может применить мозаичный фильтр, например, для лица этого человека. Альтернативно, в качестве предварительной обработки или постобработки для кодирования, пользователь может задать, по причинам соблюдения авторского права, область изображения, включающую в себя человека, или область фона, которые должны обрабатываться. Сервер может обрабатывать заданную область путем, например, замены этой области другим изображением или размывания области. Если область включает в себя человека, этот человек может отслеживаться на движущемся изображении, и область головы человека может заменяться другим изображением, когда человек движется.
[0471] Поскольку существует потребность в просмотре в реальном времени контента, производимого индивидуалами, который имеет тенденцию к малым размерам данных, декодер может сначала принимать базовый слой с наивысшим приоритетом и выполнять декодирование и воспроизведение, хотя это может различаться в зависимости от ширины полосы. Когда контент воспроизводится два или более раз, например, когда декодер принимает расширенный слой во время декодирования и воспроизведения базового слоя, и циклирует воспроизведение, декодер может воспроизводить видео с высоким качеством изображения, включающее расширенный слой. Если поток кодируется с использованием такого масштабируемого кодирования, видео может быть низкого качества в невыбранном состоянии или в начале видео, но это может предоставить опыт, в котором качество изображения потока прогрессивно возрастает разумным образом. Это не ограничено только масштабируемым кодированием; тот же опыт может быть предоставлен путем конфигурирования одного потока из потока низкого качества, воспроизводимого в первый раз, и второго потока, закодированного с использованием первого потока в качестве опорного.
[Другие примеры реализаций и применений]
[0472] Кодирование и декодирование может выполняться посредством LSI (схема высокой степени интеграции) ex500 (см. фиг. 54), которая типичным образом включена в каждый терминал. LSI ex500 может быть сконфигурирована на одном чипе или множестве чипов. Программное обеспечение для кодирования и декодирования движущихся изображений может быть интегрировано в носитель записи некоторого типа (такой как CD-ROM, гибкий диск или жесткий диск), который может считываться, например, компьютером ex111, и кодирование и декодирование может выполняться с использованием программного обеспечения. Более того, когда смартфон ex115 оснащен камерой, данные видео, полученные камерой, могут быть переданы. В этом случае, данные видео могут кодироваться с помощью LSI ex500, включенной в смартфон ex115.
[0473] Отметим, что LSI ex500 может быть сконфигурирована, чтобы загружать и активировать приложение. В таком случае, терминал сначала определяет, является ли он совместимым со схемой, используемой, чтобы кодировать контент, или способен ли он исполнять конкретную услугу. Когда терминал не совместим со схемой кодирования контента или когда терминал не способен исполнять конкретную услугу, терминал может сначала загрузить программное обеспечение кодека и приложения и затем получать и воспроизводить контент.
[0474] Помимо примера системы ex100 предоставления контента, которая использует Интернет ex101, по меньшей мере кодер движущегося изображения (кодер изображения) или декодер движущегося изображения (декодер изображения), описанные в вариантах осуществления выше, могут быть реализованы в системе цифрового вещания. Та же самая обработка кодирования и декодирования может применяться, чтобы передавать и принимать радиоволны вещания с наложенными мультиплексированными данными аудио и видео с использованием, например, спутника, даже если это задействуется для многоадресной передачи, в то время как одноадресная передача проще в системе ex100 предоставления контента.
[Конфигурация аппаратных средств]
[0475] Фиг. 59 иллюстрирует дополнительные детали смартфона ex115, показанного на фиг. 54. Фиг. 60 иллюстрирует пример конфигурации смартфона ex115. Смартфон ex115 включает в себя антенну ex450 для передачи и приема радиоволн на/от базовой станции ex110, камеру ex465, способную захватывать видео и неподвижные изображения, и дисплей ex458, который отображает декодированные данные, такие как видео, захваченное камерой ex465, и видео, принятое антенной ex450. Смартфон ex115 дополнительно включает в себя пользовательский интерфейс ex466, такой как сенсорная панель, модуль вывода аудио ex457, такой как динамик для вывода речи и другого аудио, модуль ввода аудио ex456, такой как микрофон для ввода аудио, память ex467, способную хранить декодированные данные, такие как захваченное видео и неподвижные изображения, записанное аудио, принятое видео или неподвижные изображения, и почту, а также декодированные данные, и слот ex464, который является интерфейсом для SIM ex468 для авторизации доступа к сети и различных данных. Отметим, что внешняя память может использоваться вместо памяти ex467.
[0476] Главный контроллер ex460, который может всесторонне управлять дисплеем ex458 и пользовательским интерфейсом ex466, схема ex461 источника питания, контроллер ex462 ввода пользовательского интерфейса, процессор ex455 сигнала видео, интерфейс ex463 камеры, контроллер ex459 дисплея, модулятор/демодулятор ex452, мультиплексор/демультиплексор ex453, процессор ex454 сигнала аудио, слот ex464 и память ex467 соединены посредством шины ex470.
[0477] Когда пользователь включает кнопку питания на схеме ex461 источника питания, смартфон ex115 включается в рабочее состояние, и на каждый компонент подается питание от аккумулятора.
[0478] Смартфон ex115 выполняет обработку, например, для вызова и передачи данных, на основе управления, выполняемого посредством главного контроллера ex460, который включает в себя CPU, ROM и RAM. Когда делается вызов, аудиосигнал, записанный модулем ex456 ввода аудио, преобразуется в цифровой аудиосигнал посредством процессора ex454 аудиосигнала, к которому применяется обработка расширения спектра посредством модулятора/демодулятора ex452 и цифро-аналоговое преобразование, и обработка преобразования частоты применяется передатчиком/приемником ex451, и результирующий сигнал передается через антенну ex450. Принятые данные усиливаются, преобразуются по частоте и подвергаются аналого-цифровому преобразованию, обработке, обратной расширению спектра, посредством модулятора/демодулятора ex452, преобразуются в аналоговый аудиосигнал посредством процессора ex454 аудиосигнала и затем выводятся из модуля ex457 вывода аудио. В режиме передачи данных, текст, неподвижное изображение или данные видео могут передаваться под управлением главного контроллера ex460 через контроллер ex462 ввода пользовательского интерфейса на основе операции пользовательского интерфейса ex466, например, главного корпуса. Выполняется аналогичная обработка передачи и приема. В режиме передачи данных, при отправке видео, неподвижного изображения или видео и аудио, процессор ex455 сигнала видео кодирует со сжатием, посредством способа кодирования движущегося изображения, описанного в вариантах осуществления выше, сигнал видео, сохраненный в памяти ex467, или сигнал видео, введенный из камеры ex465, и передает закодированные данные видео на мультиплексор/демультиплексор ex453. Процессор ex454 аудиосигнала кодирует аудиосигнал, записанный модулем ex456 ввода аудиосигнала, когда камера ex465 захватывает видео или неподвижное изображение, и передает закодированные данные аудио на мультиплексор/демультиплексор ex453. Мультиплексор/демультиплексор ex453 мультиплексирует закодированные данные видео и закодированные данные аудио с использованием определенной схемы, модулирует и преобразует данные с использованием модулятора/демодулятора (схемы модулятора/демодулятора) ex452 и передатчика/приемника ex451 и передает результат через антенну ex450. Определенная схема может быть предварительно определенной.
[0479] Когда видео, приложенное к электронной почте или чату, или видео, имеющее ссылку на веб-страницу, принимается, например, чтобы декодировать мультиплексированные данные, принятые через антенну ex450, мультиплексор/демультиплексор ex453 демультиплексирует мультиплексированные данные, чтобы разделить мультиплексированные данные на битовый поток данных видео и битовый поток данных аудио, подает закодированные данные видео на процессор ex455 сигнала видео через синхронную шину ex470, и подает закодированные данные аудио на процессор ex454 аудиосигнала через синхронную шину ex470. Процессор ex455 сигнала видео декодирует сигнал видео с использованием способа декодирования движущегося изображения, соответствующего способу кодирования движущегося изображения, описанному в вариантах осуществления выше, и видео или неподвижное изображение, включенное в связанный файл движущегося изображения, отображается на дисплее ex458 посредством контроллера ex459 дисплея. Процессор ex454 аудиосигнала декодирует аудиосигнал и выводит аудио из модуля ex457 вывода аудиосигнала. Поскольку стриминг реального времени становится все более популярным, могут иметься случаи, когда воспроизведение аудио может быть социально неуместным, в зависимости от окружения пользователя. Соответственно, в качестве начального значения, предпочтительной может быть конфигурация, в который воспроизводятся только данные видео, т.е., аудиосигнал не воспроизводится; аудио может синхронизироваться и воспроизводится только тогда, когда принят ввод, например, когда пользователь кликает данные видео.
[0480] Хотя смартфон ex115 использован в примере выше, также возможны другие реализации: приемопередающий терминал, включающий в себя кодер и декодер; передающий терминал, включающий в себя только кодер; и приемный терминал, включающий в себя только декодер. В описании системы цифрового вещания, приведен пример, в котором мультиплексированные данные, полученные в результате мультиплексирования данных видео с данными аудио, принимаются или передаются. Однако мультиплексированные данные могут быть данными видео, мультиплексированными с данными иными, чем данные аудио, такими как текстовые данные, относящиеся к видео. Дополнительно, данные видео сами, а не мультиплексированные данные, могут приниматься или передаваться.
[0481] Хотя главный контроллер ex460, включающий в себя CPU, описан как управляющий процессами кодирования или декодирования, различные терминалы часто включают в себя GPU. Соответственно, приемлема конфигурация, в которой большая область обрабатывается сразу за счет использования функциональных возможностей GPU посредством памяти, совместно используемой посредством CPU и GPU, или памяти, включающей в себя адрес, которым управляют так, чтобы обеспечивать возможность совместного использования посредством CPU и GPU. Это позволяет сократить время кодирования, поддерживать характер реального времени потока и снизить задержку. В частности, обработка касательно оценки движения, фильтрации устранения блочности, адаптивного смещения выборки (SAO) и преобразования/квантования может эффективно выполняться посредством GPU вместо CPU в единицах картинок, например, всех сразу.
ПРОМЫШЛЕННАЯ ПРИМЕНИМОСТЬ
[0482] Настоящее раскрытие применимо к телевизионному приемнику, цифровому видеомагнитофону, автомобильной навигации, мобильному телефону, цифровой камере, цифровой видеокамере, системе телеконференции, электронному зеркалу и т.д.
Ссылочные позиции на чертежах
[0483]
100 кодер
102 модуль разбиения
104 вычитатель
106 преобразователь
108 квантователь
110 энтропийный кодер
112, 204 обратный квантователь
114, 206 обратный преобразователь
116, 208 сумматор
118, 210 память блоков
120, 212 контурный фильтр
122, 214 память кадров
124, 216 интра-предсказатель
126, 218 интер-предсказатель
128, 220 контроллер предсказания
200 декодер
202 энтропийный декодер
1201 определитель границы
1202, 1204, 1206 переключатель
1203 определитель фильтра
1205 исполнитель фильтрации
1207 определитель характеристики фильтрации
1208 определитель обработки
a1, b1 процессор
a2, b2 память
Изобретение относится к кодированию видео. Техническим результатом является повышение эффективности кодирования. Результат достигается тем, что устройство кодирования выводит, путем вычитания, из изображения изображения предсказания упомянутого изображения, которое генерируется путем интра-предсказания или интер-предсказания, ошибку предсказания изображения (S311), выполняет первичное преобразование над ошибкой предсказания (S312), выполняет вторичное преобразование над результатом первичного преобразования (S312), выполняет квантование над результатом вторичного преобразования (S313) и кодирует результат квантования в качестве данных изображения (S314). При выполнении вторичного преобразования, когда интра-предсказание типа матричного вычисления (MIP), в котором изображение предсказания генерируется путем выполнения матричного вычисления над пиксельным массивом, полученным из пиксельных значений периферийных пикселов целевого блока, и которое имеет множество режимов предсказания, используется в качестве интра-предсказания, устройство кодирования использует набор преобразований, общий для множества режимов предсказания, в качестве набора преобразований вторичного преобразования, которое применяется для коэффициента первичного преобразования, полученного в результате первичного преобразования (S312). 4 н.п. ф-лы, 70 ил.
1. Кодер, который кодирует изображение, причем кодер содержит:
схему и
память, связанную со схемой, причем
схема:
выводит остаток предсказания, указывающий разность между текущим блоком и изображением предсказания текущего блока;
выполняет первичное преобразование над остатком предсказания и выполняет вторичное преобразование над результатом первичного преобразования;
выполняет квантование над результатом вторичного преобразования; и
кодирует результат квантования, и
при выполнении вторичного преобразования,
когда используется матрично-взвешенное интра-предсказание, включенное в интра-предсказание и имеющее множество режимов предсказания, схема использует, в качестве набора преобразований для вторичного преобразования, общий набор преобразований, совместно используемый среди множества режимов предсказания, матрично-взвешенное интра-предсказание генерирует изображение предсказания путем выполнения матричного вычисления над пиксельной последовательностью, полученной из пиксельных значений окружающих пикселов текущего блока, набор преобразований для вторичного преобразования применяется к коэффициентам первичного преобразования, полученным из результата первичного преобразования.
2. Декодер, который декодирует изображение, причем декодер содержит:
схему и
память, связанную со схемой, причем
схема:
выполняет обратное квантование над текущим блоком, подлежащим декодированию;
выполняет вторичное обратное преобразование над результатом обратного квантования и выполняет первичное обратное преобразование над результатом вторичного обратного преобразования; и
выводит изображение на основе изображения предсказания текущего блока и остатка предсказания, который является результатом первичного обратного преобразования, и
при выполнении вторичного обратного преобразования,
когда используется матрично-взвешенное интра-предсказание, включенное в интра-предсказание и имеющее множество режимов предсказания, схема использует, в качестве набора обратных преобразований для вторичного обратного преобразования, общий набор обратных преобразований, совместно используемый среди множества режимов предсказания, матрично-взвешенное интра-предсказание генерирует изображение предсказания путем выполнения матричного вычисления над пиксельной последовательностью, полученной из пиксельных значений окружающих пикселов текущего блока, набор обратных преобразований для вторичного обратного преобразования применяется к обратно квантованным коэффициентам, полученным из результата обратного квантования.
3. Способ кодирования для кодирования изображения, причем способ кодирования содержит:
выведение остатка предсказания, указывающего разность между текущим блоком и изображением предсказания текущего блока;
выполнение первичного преобразования над остатком предсказания и выполнение вторичного преобразования над результатом первичного преобразования;
выполнение квантования над результатом вторичного преобразования; и
кодирование результата квантования, причем
при выполнении вторичного преобразования,
когда используется матрично-взвешенное интра-предсказание, включенное в интра-предсказание и имеющее множество режимов предсказания, общий набор преобразований, совместно используемый среди множества режимов предсказания, используется в качестве набора преобразований для вторичного преобразования, матрично-взвешенное интра-предсказание генерирует изображение предсказания путем выполнения матричного вычисления над пиксельной последовательностью, полученной из пиксельных значений окружающих пикселов текущего блока, набор преобразований для вторичного преобразования применяется к коэффициентам первичного преобразования, полученным из результата первичного преобразования.
4. Способ декодирования для декодирования изображения, причем способ декодирования содержит:
выполнение обратного квантования над текущим блоком, подлежащим декодированию;
выполнение вторичного обратного преобразования над результатом обратного квантования и выполнение первичного обратного преобразования над результатом вторичного обратного преобразования; и
выведение изображения на основе изображения предсказания текущего блока и остатка предсказания, который является результатом первичного обратного преобразования, причем
при выполнении вторичного обратного преобразования,
когда используется матрично-взвешенное интра-предсказание, включенное в интра-предсказание и имеющее множество режимов предсказания, общий набор обратных преобразований, совместно используемый среди множества режимов предсказания, используется в качестве набора обратных преобразований для вторичного обратного преобразования, матрично-взвешенное интра-предсказание генерирует изображение предсказания путем выполнения матричного вычисления над пиксельной последовательностью, полученной из пиксельных значений окружающих пикселов текущего блока, набор обратных преобразований для вторичного обратного преобразования применяется к обратно квантованным коэффициентам, полученным из результата обратного квантования.
JP 2009272727 A, 2009.11.19 | |||
US 8238428 B2, 2012.08.07 | |||
US 9143777 B2, 2015.09.22 | |||
US 9154798 B2, 2015.10.06 | |||
СПАСАТЕЛЬНОЕ СРЕДСТВО | 1992 |
|
RU2046053C1 |
WO 2010146772 A1, 2010.12.23 | |||
US 2012288003 A1, 2012.11.15 | |||
US 9467692 B2, 2016.10.11 | |||
КВАНТОВАНИЕ "СКОРОСТЬ-ИСКАЖЕНИЕ" ДЛЯ КОНТЕКСТНО-ЗАВИСИМОГО АДАПТИВНОГО КОДИРОВАНИЯ С ПЕРЕМЕННОЙ ДЛИНОЙ КОДОВОГО СЛОВА (CAVLC) | 2009 |
|
RU2480940C2 |
US 2018115787 A1, 2018.04.26. |
Авторы
Даты
2025-02-14—Публикация
2020-04-16—Подача