[0001] По настоящей заявке испрашивается приоритет согласно заявке на выдачу патента США №17/091,253 «Режим геометрического разделения при кодировании видеоданных», поданной 6 ноября 2020 года, по которой испрашивался приоритет согласно предварительной заявке на выдачу патента США №62/938,894 «Упрощение для блока с внешним предсказанием в режиме GEO/WEDGE», поданной 21 ноября 2019 года.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Настоящее описание касается вариантов осуществления изобретения, в целом относящихся к кодированию видеоданных.
УРОВЕНЬ ТЕХНИКИ
[0003] Описание уровня техники приведено здесь для представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники для настоящего изобретения.
[0004] Кодирование и декодирование видеоданных может осуществляться с использованием внешнего предсказания изображения с компенсацией движения. Цифровое видео без сжатия может включать последовательность изображений, каждое из которых имеет пространственный размер, например, 1920×1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. Видео без сжатия предъявляет значительные требования к битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920×1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с. Час такого видео требует объема памяти более 600 Гб.
[0005] Одной целью кодирования и декодирования видеоданных может быть снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе или объему памяти, в ряде случаев на два порядка величины или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так что реконструированный сигнал можно использовать для намеченного применения. Сжатие с потерями широко применяется для видеоданных. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями в сравнении с пользователями телевещательных приложений. Достижимая степень сжатия может отражать, что более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.
[0006] Видеокодер и декодер могут использовать методы из нескольких широких категорий, включая, например, компенсацию движения, преобразование, квантование и энтропийное кодирование.
[0007] Технологии видеокодеков могут включать методы, известные как внешнее предсказание. Для каждой единицы кодирования с внешним предсказанием (CU, coding unit) параметры движения включают векторы движения, индексы опорных изображений и индекс использования списка опорных изображений, а также дополнительную информацию, которая должна использоваться для формирования отсчета с внешним предсказанием. Параметры движения могут сигнализироваться явным или неявным образом. Когда единица CU кодируется в режиме пропуска, единица CU ассоциируется с одной единицей предсказания (PU, prediction unit) и не имеет значимых коэффициентов остатка, кодированной дельты вектора движения или индекса опорного изображения. Указывается режим слияния, при котором параметры движения для текущей единицы CU получают из соседних единиц CU, включая пространственные и временные кандидаты, а также вводятся дополнительные списки, например, в VVC. Режим слияния может быть применен к любой предсказанной единице CU, не только для режима пропуска. Альтернативой режиму слияния является явная передача параметров движения. Вектор движения, соответствующий индекс опорного изображения для каждого списка опорных изображений, флаг использования списка опорных изображений и другая необходимая информация сигнализируются явно для каждой единицы CU.
[0008] Некоторые инструменты кодирования с внешним предсказанием включают в себя расширенное предсказание слияния, режим слияния с разностью векторов движения (MMVD, merge mode with motion vector difference), улучшенный режим предсказания вектора движения (AMVP, advanced motion vector prediction mode) с сигнализацией симметричной разности векторов движения (MVD, motion vector difference), предсказание с компенсацией аффинного движения, временное предсказание вектора движения на основе подблоков (SbTMVP, subblock-based temporal motion vector prediction), адаптивное разрешение вектора движения (AMVR, adaptive motion vector resolution), хранение поля движения (хранение MV 1/16 отсчета яркости и сжатие поля движения 8×8), двойное предсказание с взвешенным усреднением (BWA, bi-prediction with weighted averaging), двунаправленный оптический поток (BDOF, bidirectional optical flow), уточнение вектора движения на стороне декодера (DMVR, decoder side motion vector refinement), режим разделения на треугольники (TPM, triangular partitioning mode) и комбинированное внутреннее и внутреннее предсказание (CIIP, combined inter and intra prediction).
[0009] В некоторых случаях используется расширенное предсказание слияния. Список кандидатов на слияние состоит из следующих пяти типов кандидатов по порядку: (1) пространственный MVP из пространственных соседних единиц CU; (2) временной MVP из соответственно расположенных единиц CU; (3) MVP на основе истории из таблицы FIFO; (4) попарный средний MVP и (5) нулевые MV.
[0010] Размер списка слияния сигнализируется в заголовке слайса, и в некоторых случаях максимально допустимый размер списка слияния составляет, например, 6. Для каждого кода CU в режиме слияния индекс лучшего кандидата на слияние кодируется с использованием усеченной унарной бинаризации (TU, truncated unary). Первый бин индекса слияния кодируется с использованием контекста, а для других бинов используется обходное кодирование.
[0011] На фиг. 1А показаны примеры позиций кандидатов на пространственное слияние. В некоторых случаях может быть выбрано до четырех кандидатов на слияние среди кандидатов, находящихся в позициях, изображенных на фиг. 1А. Порядок выбора - B1, А1, В0, А0 и В2. Кандидат в позиции В2 рассматривается только тогда, когда любая единица CU в позициях А0, В0, В1 или А1 недоступна (например, единица CU в позиции А0 принадлежит другому слайсу или тайлу) или не кодируется с помощью внешнего кодирования. После того как кандидат в позиции А1 добавлен в список кандидатов на слияние, добавление оставшихся кандидатов подлежит проверке избыточности, которая гарантирует, что кандидаты с одинаковой информацией о движении исключены из списка кандидатов на слияние, чтобы повысить эффективность кодирования.
[0012] Фиг. 1В показывает пары кандидатов, рассматриваемые для проверки избыточности кандидатов на пространственное слияние. Чтобы уменьшить вычислительную сложность, не все возможные пары кандидатов рассматриваются при проверке избыточности. Вместо этого, рассматриваются только пары, обозначенные стрелкой на фиг. 1В, и кандидат добавляется в список кандидатов на слияние только в том случае, если соответствующий кандидат, используемый для проверки избыточности, не имеет такой же информации о движении.
[0013] Фиг. 1С показывает масштабирование вектора движения для кандидата на временное слияние. В некоторых случаях в список кандидатов на слияние можно добавить только одного кандидата на временное слияние. В частности, при получении этого кандидата на временное слияние масштабированный вектор движения получают на основе соответственно расположенной единицы CU, принадлежащей соответственно расположенному опорному изображению. Список опорных изображений, используемый для получения соответственно расположенных единиц CU, явно сигнализируется в заголовке слайса. Масштабированный вектор движения для кандидата на временное слияние получают так, как показано пунктирной линией на фиг. 1С. Масштабированный вектор движения получают из вектора движения соответственно расположенной единицы CU с использованием расстояний tb и td для подсчета в соответствии с порядком изображений (РОС, picture order count), где tb определяется как разность РОС между опорным изображением текущего изображения и текущим изображением, a td определяется как разность РОС между опорным изображением соответственно расположенного изображения и соответственно расположенным изображением. Индекс опорного изображения кандидата на временное слияние может быть установлен равным нулю.
[0014] Фиг. 1D показывает примеры позиций для кандидата на временное слияние. Кандидат на временное слияние выбирается между единицами CU в позициях С0 и С1. Если единица CU в позиции С0 недоступна, не кодирована с использованием внешнего предсказания или находится вне текущей строки блоков CTU, используется единица CU в позиции С1. В противном случае при получении кандидата на временное слияние используется единица CU в позиции С0.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0015] Аспекты изобретения предоставляют способы и устройство для кодирования и декодирования видеоданных. В некоторых примерах устройство для декодирования видеоданных включает в себя схему обработки. Схема обработки может быть сконфигурирована для приема, из битового потока кодированных видеоданных, синтаксического элемента, связанного с текущим блоком кодирования, который разделен на первую часть и вторую часть вдоль края разделения для предсказания в режиме геометрического разделения, и определения индекса веса в позиции отсчета текущего блока кодирования. Индекс веса используется для получения веса смешивания для смешивания двух сигналов предсказания, соответствующих первой части и второй части текущего блока кодирования. Схема обработки также может быть сконфигурирована для определения типа сохраненного вектора движения для первой единицы хранения движения в поле движения текущего блока кодирования на основе индекса движения первой единицы хранения движения, индекса веса в позиции отсчета текущего блока кодирования, используемого в качестве индекса движения первой единицы хранения движения, и сохранения поля движения текущего блока кодирования на основе типа сохраненного вектора движения, определенного для первой единицы хранения движения в поле движения текущего блока кодирования.
[0016] В варианте осуществления изобретения позиция отсчета текущего блока кодирования, в которой индекс веса используется в качестве индекса движения первой единицы хранения движения, представляет собой позицию отсчета в первой единице хранения движения в поле движения блока кодирования. В варианте осуществления изобретения позиция отсчета текущего блока кодирования, в которой индекс веса используется в качестве индекса движения первой единицы хранения движения, является позицией отсчета, соседней с центральной позицией первой единицы хранения движения в поле движения блока кодирования. В варианте осуществления изобретения первая единица хранения движения имеет размер 4×4 отсчетов, а позиция отсчета текущего блока кодирования, в которой индекс веса используется в качестве индекса движения первой единицы хранения движения, является позицией отсчета с координатой (2, 2) в первой единице хранения движения в поле движения блока кодирования.
[0017] В варианте осуществления изобретения первая единица хранения движения имеет размер 4×4 отсчетов и находится в позиции (xsb, ysb) в поле движения текущего блока кодирования, а позиция отсчета текущего блока кодирования имеет координату ((xsb << 2)+2, (ysb << 2)+2) в текущем блоке кодирования, при этом индекс веса в координате ((xsb << 2)+2, (ysb << 2)+2) используется в качестве индекса движения первой единицы хранения движения.
[0018] В варианте осуществления изобретения упомянутая схема также может быть сконфигурирована для выполнения вычисления для преобразования индекса веса в позиции отсчета текущего блока кодирования в вес смешивания для смешивания двух сигналов предсказания. Преобразование может быть основано на линейной функции индекса веса в позиции отсчета текущего блока кодирования без использования таблицы соответствия.
[0019] В варианте осуществления изобретения упомянутая схема также может быть сконфигурирована для определения индекса веса в позиции отсчета текущего блока кодирования на основе значения ρmargim используемого для смещения края разделения от угла текущего блока кодирования, причем значение ρmargin изменяется в зависимости от ширины или высоты текущего блока кодирования и угла края разделения.
[0020] В варианте осуществления изобретения упомянутая схема также может быть сконфигурирована для определения индекса веса в позиции отсчета текущего блока кодирования на основе выражения:
где wIdx обозначает индекс веса, х и у обозначают координату позиции отсчета в текущем блоке кодирования, w и h обозначают ширину и высоту текущего блока кодирования, ϕ обозначает угол края разделения, n обозначает количество шагов квантования расстояния, a i обозначает индекс шага квантования расстояния.
[0023] В варианте осуществления изобретения упомянутая схема также сконфигурирована для определения индекса веса в позиции отсчета текущего блока кодирования на основе выражения:
где wIdx обозначает индекс веса, х и у обозначают координату позиции отсчета в текущем блоке кодирования, w и h обозначают ширину и высоту текущего блока кодирования, ϕ обозначает угол края разделения, n обозначает количество шагов квантования расстояния, a i обозначает индекс шага квантования расстояния.
[0024] В варианте осуществления изобретения упомянутая схема также сконфигурирована для определения индекса веса в позиции отсчета текущего блока кодирования на основе выражения:
где wIdx обозначает индекс веса, х и у обозначают координату позиции отсчета в текущем блоке кодирования, w и h обозначают ширину и высоту текущего блока кодирования, ϕ обозначает угол края разделения, n обозначает количество шагов квантования расстояния, a i обозначает индекс шага квантования расстояния.
[0025] В варианте осуществления изобретения упомянутая схема также сконфигурирована для определения индекса веса в позиции отсчета текущего блока кодирования на основе индекса веса левого или верхнего соседнего отсчета для позиции отсчета текущего блока кодирования с фиксированным значением смещения. В варианте осуществления изобретения упомянутая схема также сконфигурирована для определения индекса веса в позиции отсчета текущего блока кодирования на основе индекса веса в координате (0, 0) в текущем блоке кодирования.
[0026] В варианте осуществления изобретения упомянутая схема также сконфигурирована для определения индекса движения второй единицы хранения движения в поле движения текущего блока кодирования на основе выражения:
где motionIdx обозначает индекс движения второй единицы хранения движения, xsb и ysb означают координату второй единицы хранения движения в поле движения текущего блока кодирования, w и h обозначают ширину и высоту текущего блока кодирования, ϕ обозначает угол края разделения, n обозначает количество шагов квантования расстояния, a i обозначает индекс шага квантования расстояния.
[0027] Аспекты изобретения также предоставляют машиночитаемый носитель, хранящий инструкции, которые при их исполнении компьютером для декодирования видеоданных заставляют компьютер выполнять любой из способов декодирования видеоданных или их комбинацию.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0028] Другие признаки, характер и различные преимущества настоящего изобретения будут понятны из последующего подробного описания и прилагаемых чертежей.
[0029] Фиг. 1А показывает примеры позиций кандидатов на пространственное слияние.
[0030] Фиг. 1В показывает примеры пар кандидатов, рассматриваемых для проверки избыточности кандидатов на пространственное слияние.
[0031] Фиг. 1С показывает пример масштабирования вектора движения для кандидата на временное слияние.
[0032] Фиг. 1D показывает примеры позиций для кандидата на временное слияние.
[0033] Фиг. 2 схематическая иллюстрация упрощенной структурной схемы системы связи в соответствии с вариантом осуществления изобретения.
[0034] Фиг. 3 - схематическая иллюстрация упрощенной структурной схемы системы связи в соответствии с вариантом осуществления изобретения.
[0035] Фиг. 4 схематическая иллюстрация упрощенной структурной схемы декодера в соответствии с вариантом осуществления изобретения.
[0036] Фиг. 5 - схематическая иллюстрация упрощенной структурной схемы кодера в соответствии с вариантом осуществления изобретения.
[0037] Фиг. 6 показывает структурную схему кодера в соответствии с другим вариантом осуществления изобретения.
[0038] Фиг. 7 показывает структурную схему декодера в соответствии с другим вариантом осуществления изобретения.
[0039] Фиг. 8А и 8В показывают два примера разделений на треугольники в соответствии с некоторыми вариантами осуществления изобретения.
[0040] Фиг. 9 иллюстрирует выбор вектора движения с одним предсказанием для режима разделения на треугольники в соответствии с некоторыми вариантами осуществления изобретения.
[0041] Фиг. 10А и 10В показывают примеры карты весов для яркости и цветности в соответствии с некоторыми вариантами осуществления изобретения.
[0042] Фиг. 11 показывает пример режима геометрического разделения согласно некоторым вариантам осуществления изобретения.
[0043] Фиг. 12 показывает блок-схему, описывающую пример способа в соответствии с вариантом осуществления изобретения.
[0044] Фиг. 13 показывает схематическое изображение компьютерной системы в соответствии с вариантом осуществления изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
[0045] I. Видеокодер и декодер
[0046] На фиг. 2 показана упрощенная структурная схема системы (200) связи согласно варианту осуществления настоящего изобретения. Система (200) связи включает в себя множество оконечных устройств, которые могут осуществлять связь друг с другом, например, через сеть (250). Например, система (200) связи включает в себя первую пару оконечных устройств (210) и (220), соединенных между собой через сеть (250). В примере, приведенном на фиг. 2, первая пара оконечных устройств (210) и (220) осуществляет однонаправленную передачу данных. Например, оконечное устройство (210) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством (210)) для передачи в другое оконечное устройство (220) через сеть (250). Кодированные видеоданные могут передаваться в виде одного или более битовых потоков кодированных видеоданных. Оконечное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения согласно восстановленным видеоданным. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.
[0047] В другом примере система (200) связи включает в себя вторую пару оконечных устройств (230) и (240), которые осуществляют двунаправленную передачу кодированных видеоданных, возникающих, например, в ходе видеоконференцсвязи. Для двунаправленной передачи данных, например, каждое оконечное устройство из оконечных устройств (230) и (240) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством) для передачи в другое оконечное устройство из оконечных устройств (230) и (240) через сеть (250). Каждое оконечное устройство из оконечных устройств (230) и (240) также может принимать кодированные видеоданные, передаваемые другим оконечным устройством из оконечных устройств (230) и (240), и может декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения на доступном устройстве отображения согласно восстановленным видеоданным.
[0048] В примере, приведенном на фиг. 2, оконечные устройства (210), (220), (230) и (240) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. Варианты осуществления настоящего изобретения находят применение для портативных компьютеров, планшетных компьютеров, медиаплееров и/или специального оборудования для видеоконференцсвязи. Сеть (250) представляет любое количество сетей, которые переносят кодированные видеоданные между оконечными устройствами (210), (220), (230) и (240), включая, например, проводные и/или беспроводные сети связи. Сеть (250) связи позволяет обмениваться данными в режиме канальной коммутации и/или пакетной коммутации. Примеры сетей включают телекоммуникационные сети, локальные сети, глобальные сети и/или интернет. ля настоящего рассмотрения архитектура и топология сети (250) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.
[0049] На фиг. 3 показано размещение видеокодера и видеодекодера в окружении потоковой передачи, в качестве примера применения настоящего изобретения. Настоящее изобретение может в равной степени использоваться и в других применениях обработки видеоданных, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, в том числе CD, DVD, карте памяти и т.п.
[0050] Система потоковой передачи может содержать подсистему (313) захвата, которая может включать источник (301) видеоданных, например, цифровую камеру, создающую, например, поток (302) видеоизображений, не подвергнутых сжатию. Например, поток (302) видеоизображений включает отсчеты, полученные цифровой камерой. Поток (302) видеоизображений, показанный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (304) (или битовыми потоками кодированных видеоданных), может обрабатываться электронным устройством (320), которое содержит видеокодер (303), подключенный к источнику (301) видеоданных. Видеокодер (303) может включать оборудование, программное обеспечение или их комбинацию для обеспечения или реализации аспектов настоящего изобретения, как более подробно описано ниже. Кодированные видеоданные (304) (или битовый поток (304) кодированных видеоданных), показанные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком (302) видеоизображений, могут храниться на сервере (305) потоковой передачи для использования в будущем. Одна или более клиентских подсистем потоковой передачи, например клиентские подсистемы (306) и (308) на фиг. 3, могут осуществлять доступ к серверу (305) потоковой передачи для извлечения копий (307) и (309) кодированных видеоданных (304). Клиентская подсистема (306) может содержать видеодекодер (310), например, в электронном устройстве (330). Видеодекодер (310) декодирует входящую копию (307) кодированных видеоданных и создает исходящий поток (311) видеоизображений, который может визуализироваться на дисплее (312) (например, отображающем экране) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи, кодированные видеоданные (304), (307) и (309) (например, битовые потоки видеоданных) могут кодироваться согласно тем или иным стандартам кодирования/сжатия видеоданных. Примеры этих стандартов включают Рекомендацию МСЭ-Т Н.265. Например, разрабатывается стандарт кодирования видеоданных под официальным названием «Универсальное кодирование видеоданных» (VVC, Versatile Video Coding). Настоящее изобретение может использоваться в контексте VVC.
[0051] Следует отметить, что электронные устройства (320) и (330) могут содержать другие компоненты (не показаны). Например, электронное устройство (320) может содержать видеодекодер (не показан), а электронное устройство (330) также может содержать видеокодер (не показан).
[0052] На фиг. 4 показана структурная схема видеодекодера (410) согласно варианту осуществления настоящего изобретения. Видеодекодер (410) может входить в состав электронного устройства (430). Электронное устройство (430) может содержать приемник (431) (например, приемные схемы). Видеодекодер (410) может использоваться вместо видеодекодера (310) в примере, приведенном на фиг. 3.
[0053] Приемник (431) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (410), в том же или другом варианте осуществления изобретения, по одной кодированной видеопоследовательности за раз, причем декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (401), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (431) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или потоками вспомогательных данных, которые могут перенаправляться на соответствующие использующие их объекты (не показаны). Приемник (431) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети, между приемником (431) и энтропийным декодером / анализатором (420) (далее «анализатором (420)») может быть подключена буферная память (415). В некоторых вариантах применения буферная память (415) входит в состав видеодекодера (410). В других вариантах она может не входить в состав видеодекодера (410) (не показано). В прочих вариантах может иметься буферная память вне видеодекодера (410) (не показано), например, для борьбы с джиттером сети, помимо другой буферной памяти (415) в составе видеодекодера (410), например, для управления временем воспроизведения. Когда приемник (431) принимает данные от устройства хранения/перенаправления с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (415) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшей попытки, например, в интернете, буферная память (415) может потребоваться, может быть сравнительно большой, может иметь преимущественно адаптивный размер и по меньшей мере частично может быть реализована в операционной системе или аналогичных элементах (не показаны) вне видеодекодера (410).
[0054] Видеодекодер (410) может содержать анализатор (420) для реконструкции символов (421) из кодированной видеопоследовательности. Категории этих символов включают информацию, используемую для управления работой видеодекодера (410), и, возможно, информацию для управления устройством визуализации, например устройством (412) визуализации (например, отображающим экраном), которое не является неотъемлемой частью электронного устройства (430), но может быть подключено к электронному устройству (430), как показано на фиг. 4. Информация управления для устройств(а) визуализации может представлять собой сообщения дополнительной информации улучшения (SEI, Supplemental Enhancement Information) или фрагменты набора параметров информации о возможности использования видео (VUI, Video Usability Information) (не показаны). Анализатор (420) может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование видеопоследовательности может осуществляться в соответствии с технологией или стандартом кодирования видеоданных и может следовать различным принципам, включая кодирование с переменной длиной серии, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и т.д. Анализатор (420) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать группы изображений (GOP, Group of Pictures), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU, Coding Unit), блоки, единицы преобразования (TU, Transform Unit), единицы предсказания (PU, Prediction Unit) и т.д. Анализатор (420) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[0055] Анализатор (420) может осуществлять операцию энтропийного декодирования / анализа видеопоследовательности, принятой из буферной памяти (415), для создания символов (421).
[0056] Для реконструкции символов (421) могут использоваться несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например: изображения с внутренним и внешним кодированием, блоки с внутренним и внешним кодированием) и других факторов. Какие модули и как используются, может определяться информацией управления подгруппами, полученной из кодированной видеопоследовательности анализатором (420). Поток такой информации управления подгруппами между анализатором (420) и модулями для простоты в дальнейшем не показан.
[0057] Помимо ранее упомянутых функциональных блоков, видеодекодер (410) может принципиально разделяться на несколько функциональных модулей, как описано ниже. В практической реализации в условиях коммерческих ограничений многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания настоящего изобретения уместно принципиальное разделение на перечисленные ниже функциональные модули.
[0058] Первым модулем является модуль (451) масштабирования / обратного преобразования. Модуль (451) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (421) от анализатора (420). Модуль (451) масштабирования / обратного преобразования может выводить блоки, содержащие значения отсчетов, которые можно вводить в агрегатор (455).
[0059] В ряде случаев, выходные отсчеты блока (451) масштабирования / обратного преобразования могут относиться к блоку с внутренним кодированием; то есть к блоку, который не использует предсказанную информацию из ранее реконструированных изображений, но может использовать предсказанную информацию из ранее реконструированных частей текущего изображения. Такая предсказанная информация может обеспечиваться модулем (452) внутреннего предсказания изображения. В ряде случаев модуль (452) внутреннего предсказания изображения формирует блок такого же размера и формы, как у блока, подлежащего реконструкции, с использованием информации ранее реконструированного окружения, извлеченной из буфера (458) текущего изображения. Буфер (458) текущего изображения буферизует, например, частично реконструированное текущее изображение и/или полностью реконструированное текущее изображение. Агрегатор (455) в ряде случаев добавляет, для каждого отсчета, информацию предсказания, сформированную модулем (452) внутреннего предсказания, в информацию выходных отсчетов, предоставленную модулем (451) масштабирования / обратного преобразования.
[0060] В других случаях выходные отсчеты модуля (451) масштабирования / обратного преобразования могут относиться к блоку с внутренним кодированием, возможно, с компенсацией движения. В таком случае модуль (453) предсказания с компенсацией движения может осуществлять доступ к памяти (457) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (421), относящимися к блоку, эти отсчеты могут добавляться агрегатором (455) к выходному сигналу модуля (451) масштабирования / обратного преобразования (в этом случае называемому отсчетами остатка или сигналом остатка) для формирования информации выходных отсчетов. Адреса в памяти (457) опорных изображений, откуда модуль (453) предсказания с компенсацией движения извлекает отсчеты для предсказания, могут управляться векторами движения, доступными модулю (453) предсказания с компенсацией движения, в форме символов (421), которые могут иметь, например, компоненты X, Y и компоненты опорного изображения. Компенсация движения также может включать интерполяцию значений отсчетов, извлеченных из памяти (457) опорных изображений, когда используются точные векторы движения подотсчетов, механизмы предсказания векторов движения и т.д.
[0061] К выходным отсчетам агрегатора (455) можно применять различные методы контурной фильтрации в модуле (456) контурного фильтра. Технологии сжатия видеоданных могут включать технологии контурного фильтра под управлением параметров, включенных в кодированную видеопоследовательность (также называемую битовым потоком кодированных видеоданных) и доступных модулю (456) контурного фильтра в качестве символов (421) от анализатора (420), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.
[0062] Модуль (456) контурного фильтра может выдавать поток отсчетов, который может поступать на устройство (412) визуализации, а также сохраняться в памяти (457) опорных изображений для использования в будущем внешнем предсказании изображения.
[0063] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью реконструировано и идентифицировано как опорное изображение (например, анализатором (420)), буфер (458) текущего изображения может становиться частью памяти (457) опорных изображений, и может повторно выделяться свежий буфер текущего изображения до начала реконструкции следующего кодированного изображения.
[0064] Видеодекодер (410) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видеоданных, например, по стандарту Рекомендации МСЭ-Т Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или используемым стандартом сжатия видеоданных, в том смысле, что кодированная видеопоследовательность может придерживаться как синтаксиса технологии или стандарта сжатия видеоданных, так и профилей, задокументированных в технологии или стандарте сжатия видеоданных. В частности, профиль может выбирать некоторые инструменты как инструменты, доступные для использования только в этом профиле, из всех инструментов, доступных в технологии или стандарте сжатия видеоданных. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видеоданных. В ряде случаев, уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемыми в кодированной видеопоследовательности.
[0065] Согласно варианту осуществления изобретения, приемник (431) может принимать дополнительные (избыточные) данные с кодированными видеоданными. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (410) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, временные уровни улучшения, пространственные уровни улучшения или уровни улучшения отношения «сигнал/шум» (SNR, signal noise ratio), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.
[0066] На фиг. 5 показана структурная схема видеокодера (503) согласно варианту осуществления настоящего изобретения. Видеокодер (503) входит в состав электронного устройства (520). Электронное устройство (520) содержит передатчик (540) (например, передающую схему). Видеокодер (503) может использоваться вместо видеокодера (303) в примере, приведенном на фиг. 3.
[0067] Видеокодер (503) может принимать отсчеты видеоданных от источника (501) видеоданных (который не входит в состав электронного устройства (520) в примере, показанном на фиг. 5), который может захватывать видеоизображение(я), подлежащее(ие) кодированию видеокодером (503). В другом примере источник (501) видеоданных входит в состав электронного устройства (520).
[0068] Источник (501) видеоданных может обеспечивать исходную видеопоследовательность, подлежащую кодированию видеокодером (503) в форме потока отсчетов цифровых видеоданных любой подходящей битовой глубины (например: 8 битов, 10 битов, 12 битов, …), любого цветового пространства (например, ВТ.601 Y CrCB, RGB, …) и любой подходящей структуры дискретизации (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе службы массовой информации источником (501) видеоданных может быть запоминающее устройство, где хранится ранее подготовленное видео. В системе видеоконференцсвязи источником (501) видеоданных может быть камера, которая захватывает информацию локального изображения в виде видеопоследовательности. Видеоданные могут предоставляться как множество отдельных изображений, которые создают ощущение движения при наблюдении в последовательности. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемой структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники нетрудно понять соотношение между пикселями и отсчетами. Последующее описание посвящено отсчетам.
[0069] Согласно варианту осуществления изобретения, видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с учетом любых других временных ограничений, налагаемых применением. Установление надлежащей скорости кодирования является одной из функций контроллера (550). В некоторых вариантах осуществления изобретения контроллер (550) управляет другими функциональными модулями, как описано ниже, и функционально подключен к другим функциональным модулям. Подключение для простоты не показано. Параметры, установленные контроллером (550), могут включать параметры, связанные с регулировкой частоты (пропуск изображения, квантователь, значение лямбда, применяемое в методах оптимизации «скорость-искажения», и т.д.), размер изображения, организацию групп изображений (GOP, group of pictures), максимальную допустимую опорную область вектора движения и т.д. Контроллер (550) может иметь другие подходящие функции, относящиеся к видеокодеру (503), оптимизированному для конкретной конструкции системы.
[0070] В некоторых вариантах осуществления изобретения видеокодер (503) выполнен с возможностью работать в контуре кодирования. В качестве очень упрощенного описания, например, контур кодирования может включать кодер (530) источника (например, отвечающий за создание символов, например, потока символов на основе входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локальный) декодер (533), встроенный в видеокодер (503). Декодер (533) реконструирует символы для создания данных отсчетов аналогично тому, как это делал бы (удаленный) декодер (поскольку любое сжатие между символами и битовым потоком кодированных видеоданных происходит без потерь в технологиях сжатия видеоданных, рассматриваемых в данном описании). Поток реконструированных отсчетов (данные отсчетов) поступают в память (534) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, которые не зависят от положения (локального или удаленного) декодера, содержимое памяти (534) опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, часть предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, как «видел» бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронизма опорного изображения (и в итоге дрейф, если синхронизм не удается поддерживать, например, вследствие канальных ошибок) используется также в некоторых связанных областях техники.
[0071] «Локальный» декодер (533) может действовать таким же образом, как «удаленный» декодер, например, видеодекодер (410), подробно описанный выше со ссылкой на фиг. 4. Однако опять же согласно фиг. 4, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (545) и анализатором (420) может осуществляться без потерь, части энтропийного декодирования видеодекодера (410), включающие буферную память (415) и анализатор (420), могут быть не полностью реализованы в локальном декодере (533).
[0072] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализа / энтропийного декодирования, также обязательно должна присутствовать по существу в идентичной функциональной форме в соответствующем кодере. По этой причине настоящее изобретение сконцентрировано на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодирования. Лишь в некоторых областях требуется более подробное описание, которое приведено ниже.
[0073] Согласно некоторым примерам, в ходе работы кодер (530) источника может осуществлять кодирование с предсказанием и компенсацией движения, при котором входное изображение кодируется с предсказанием на основе одного или более ранее кодированных изображений из видеопоследовательности, указанных как «опорные изображения». Таким образом, механизм (532) кодирования кодирует разности между блоками пикселей входного изображения и блоками пикселей опорного изображения(й), которое(ые) может(ут) выбираться в качестве ссылки(ок) предсказания на входное изображение.
[0074] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, которые могут быть указаны как опорные изображения, на основе символов, созданных кодером (530) источника. Операции механизма (532) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 5), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных изображениях, и может обеспечивать сохранение реконструированных опорных изображений в кэш-памяти (534) опорных изображений. Таким образом, видеокодер (503) может локально сохранять копии реконструированных опорных изображений, имеющие такое же содержимое, как реконструированные опорные изображения, которые будут получены удаленным видеодекодером (в отсутствие ошибок передачи).
[0075] Предсказатель (535) может осуществлять поиски предсказания для механизма (532) кодирования. Таким образом, для нового изображения, подлежащего кодированию, предсказатель (535) может искать в памяти (534) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных блоков пикселей) или конкретные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (535) может работать на основе «блоки отсчетов х блоки пикселей» для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предсказателем (535), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (534) опорных изображений.
[0076] Контроллер (550) может управлять операциями кодирования кодера (530) источника, включая, например, установление параметров, а также параметров подгруппы, используемых для кодирования видеоданных.
[0077] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) переводит символы, сформированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно, например, технологиям кодирования Хаффмана, кодирования с переменной длиной серии, арифметического кодирования и т.д.
[0078] Передатчик (540) может буферизовать кодированную(ые) видеопоследовательность(и), созданную(ые) энтропийным кодером (545), для подготовки к передаче через канал (560) связи, который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные от видеокодера (503) с другими данными, подлежащими передаче, например, с кодированными аудиоданными и/или потоками вспомогательных данных (источники не показаны).
[0079] Контроллер (550) может управлять работой видеокодера (503). В ходе кодирования контроллер (550) может назначать каждому кодированному изображению тот или иной тип кодированного изображения, который может определять методы кодирования, применимые к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы изображения.
[0080] Изображение с внутренним кодированием (I-изображение), которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника для предсказания. Некоторые видеокодеки допускают разные типы изображений с внутренним кодированием, включая, например, изображения в формате независимого обновления декодера (IDR, Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.
[0081] Изображение с предсказанием (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[0082] Изображение с двунаправленным предсказанием (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, изображения с множеством предсказаний могут использовать более двух опорных изображений и соответствующие метаданные для реконструкции одного блока.
[0083] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться с предсказанием со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки 1-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (с пространственным предсказанием или внутренним предсказанием). Блоки пикселей Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[0084] Видеокодер (503) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, например, Рекомендации МСЭ-Т Н.265. В своей работе видеокодер (503) может осуществлять различные операции сжатия, в том числе операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Поэтому кодированные видеоданные могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видеоданных.
[0085] Согласно варианту осуществления изобретения, передатчик (540) может передавать дополнительные данные с кодированными видеоданными. Кодер (530) источника может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR уровни улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и т.д.
[0086] Видео может захватываться как множество исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно называемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а внешнее предсказание изображения использует (временную или иную) корреляцию между изображениями. Например, конкретное изображение, подлежащее кодированию/декодированию, которое называется текущим изображением, разбивается на блоки. Когда блок в текущем изображении аналогичен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может кодироваться вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множества опорных изображений.
[0087] В некоторых вариантах осуществления изобретения может использоваться метод двойного предсказания в предсказании между изображениями. Согласно методу двойного предсказания, используются два опорных изображения, например, первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться посредством первого вектора движения, который указывает на первый опорный блок в первом опорном изображении, и посредством второго вектора движения, который указывает на второй опорный блок во втором опорном изображении. Блок может предсказываться с помощью комбинации первого опорного блока и второго опорного блока.
[0088] Дополнительно, способ режима слияния может использоваться во внешнем предсказании изображения для повышения эффективности кодирования.
[0089] Согласно некоторым вариантам осуществления изобретения предсказания, например, внешнее предсказание изображения и внутреннее предсказание изображения осуществляются поблочно. Например, согласно стандарту HEVC, изображение в последовательности видеоизображений разбивается на единицы дерева кодирования (CTU, coding tree unit) для сжатия, единицы CTU в изображении имеют одинаковый размер, например 64×64, 32×32 или 16×16 пикселей. В общем случае единица CTU включает три блока дерева кодирования (СТВ, coding tree block), а именно один блок СТВ яркости и два блока СТВ цветности. Каждая единица CTU может рекурсивно делиться на основе квадродерева на одну или более единиц кодирования (CU). Например, единица CTU размером 64×64 пикселей может делиться на одну единицу CU размером 64×64 пикселей или 4 единицы CU размером 32×32 пикселей или 16 единиц CU размером 16×16 пикселей. Например, каждая единица CU анализируется для определения типа предсказания для этой единицы CU, например, типа внешнего предсказания или типа внутреннего предсказания. Единица CU делится на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. В целом, каждая единица PU включает блок предсказания (РВ, prediction block) яркости и два блока РВ предсказания цветности. Согласно варианту осуществления изобретения, операция предсказания при кодировании (кодировании/декодировании) осуществляется в единице блока предсказания. В качестве примера блока предсказания, блок предсказания яркости включает матрицу значений (например, значений яркости) для пикселей, например, 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.
[0090] На фиг. 6 показана схема видеокодера (603) согласно другому варианту осуществления изобретения. Видеокодер (603) выполнен с возможностью приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое составляет часть кодированной видеопоследовательности. Например, видеокодер (603) используется вместо видеокодера (303) в примере, приведенном на фиг. 3.
[0091] В примере HEVC видеокодер (603) принимает матрицу значений отсчетов для блока обработки, например, блока предсказания из 8×8 отсчетов и т.п. Видеокодер (603) определяет, наилучшим ли образом кодируется блок обработки в режиме внутреннего предсказания, режиме внешнего предсказания или режиме двойного предсказания с использованием, например, оптимизации «скорость-искажения». Когда блок обработки подлежит кодированию в режиме внутреннего предсказания, видеокодер (603) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение, а когда блок обработки подлежит кодированию в режиме внешнего предсказания или режиме двойного предсказания, видеокодер (603) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях кодирования видеоданных режим слияния может быть подрежимом внешнего предсказания изображения, в котором вектор движения выводится из одного или более предсказателей вектора движения без привлечения кодированного компонента вектора движения вне предсказателей. В некоторых других технологиях кодирования видеоданных может присутствовать компонент вектора движения, применимый к данному блоку. В порядке примера, видеокодер (603) содержит другие компоненты, например, модуль определения режима (не показан) для определения режима блоков обработки.
[0092] В примере, приведенном на фиг. 6, видеокодер (603) содержит кодер (630) внешнего кодирования, кодер (622) внутреннего кодирования, вычислитель (623) остатка, переключатель (626), кодер (624) остатка, общий контроллер (621) и энтропийный кодер (625), соединенные друг с другом так, как показано на фиг. 6.
[0093] Кодер (630) внешнего кодирования выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоками в предыдущих изображениях и более поздних изображениях), создания информации внешнего предсказания (например, описания избыточной информации согласно методу внешнего кодирования, векторов движения, информации режима слияния) и вычисления результатов внешнего предсказания (например, блока предсказания) на основе информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорными изображениями являются декодированные опорные изображения, которые декодируются на основе информации кодированного видео.
[0094] Кодер (622) внутреннего кодирования выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), в ряде случаев сравнения блока с блоками, ранее кодированными в том же изображении, формирования квантованных коэффициентов после преобразования и в ряде случаев также информации внутреннего предсказания (например, информации о направлении внутреннего предсказания согласно одному или более методам внутреннего кодирования). В порядке примера, кодер (622) внутреннего кодирования также вычисляет результаты внутреннего предсказания (например, блок предсказания) на основе информации внутреннего предсказания и опорных блоков в том же изображении.
[0095] Общий контроллер (621) выполнен с возможностью определения общих данных управления и управления другими компонентами видеокодера (603) на основе общих данных управления. Например, общий контроллер (621) определяет режим блока и выдает сигнал управления на переключатель (626) на основе режима. Например, когда режим является режимом внутреннего кодирования, общий контроллер (621) управляет переключателем (626) для выбора результата режима внутреннего кодирования для использования вычислителем (623) остатка и управляет энтропийным кодером (625) для выбора информации внутреннего предсказания и включения информации внутреннего предсказания в битовый поток, а когда режим является режимом внешнего кодирования, общий контроллер (621) управляет переключателем (626) для выбора результата внешнего предсказания для использования вычислителем (623) остатка и управляет энтропийным кодером (625) для выбора информации внешнего предсказания и включения информации внешнего предсказания в битовый поток.
[0096] Вычислитель (623) остатка выполнен с возможностью вычисления разности (данных остатка) между принятым блоком и результатами предсказания, выбранными из кодера (622) внутреннего кодирования или кодера (630) внешнего кодирования. Кодер (624) остатка выполнен с возможностью действовать на основе данных остатка для кодирования данных остатка для формирования коэффициентов преобразования. Например, кодер (624) остатка выполнен с возможностью преобразования данных остатка из пространственной области в частотную область и формирования коэффициентов преобразования. Затем коэффициенты преобразования подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления изобретения видеокодер (603) также содержит декодер (628) остатка. Декодер (628) остатка выполнен с возможностью осуществления обратного преобразования и формирования декодированных данных остатка. Декодированные данные остатка могут надлежащим образом использоваться кодером (622) внутреннего кодирования и кодером (630) внешнего кодирования. Например, кодер (630) внешнего кодирования может формировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, а кодер (622) внутреннего кодирования может формировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки надлежащим образом обрабатываются для формирования декодированных изображений, и декодированные изображения могут буферизоваться в схеме памяти (не показана) и в некоторых примерах использоваться в качестве опорных изображений.
[0097] Энтропийный кодер (625) выполнен с возможностью форматирования битового потока для включения кодированного блока. Энтропийный кодер (625) выполнен с возможностью включать различную информацию согласно подходящему стандарту, например, стандарту HEVC. Например, энтропийный кодер (625) выполнен с возможностью включать общие данные управления, выбранную информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), информацию остатка и другую подходящую информацию в битовый поток. Следует отметить, что, согласно изобретению, при кодировании блока в подрежиме слияния для любого из режима внешнего кодирования и режима двойного предсказания, информация остатка отсутствует.
[0098] На фиг. 7 показана схема видеодекодера (710) согласно другому варианту осуществления изобретения. Видеодекодер (710) выполнен с возможностью приема кодированных изображений, составляющих часть кодированной видеопоследовательности, и декодирования кодированных изображений для формирования реконструированных изображений. Например, видеодекодер (710) используется вместо видеодекодера (310) в примере, приведенном на фиг. 3.
[0099] В примере, приведенном на фиг. 7, видеодекодер (710) содержит энтропийный декодер (771), декодер (780) внешнего декодирования, декодер (773) остатка, модуль (774) реконструкции и декодер (772) внутреннего декодирования, соединенные друг с другом так, как показано на фиг. 7.
[0100] Энтропийный декодер (771) может быть выполнен с возможностью реконструкции, из кодированного изображения, некоторых символов, которые представляют синтаксические элементы, образующие кодированное изображение. Такие символы могут включать, например, режим кодирования блока (например, режим внутреннего кодирования, режим внешнего кодирования, режим двойного предсказания, причем последние два в подрежиме слияния или другом подрежиме), информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, используемые для предсказания декодером (772) внутреннего декодирования или декодером (780) внешнего декодирования, соответственно, информацию остатка в виде, например, квантованных коэффициентов преобразования и т.п. Например, когда режим предсказания является режимом внутреннего или двойного предсказания, информация внешнего предсказания поступает на декодер (780) внешнего декодирования, а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания поступает на декодер (772) внутреннего декодирования. Информация остатка может подвергаться обратному квантованию и поступать на декодер (773) остатка.
[0101] Декодер (780) внешнего декодирования выполнен с возможностью приема информации внешнего предсказания и генерирования результатов внешнего предсказания на основе информации внешнего предсказания.
[0102] Декодер (772) внутреннего декодирования выполнен с возможностью приема информации внутреннего предсказания и генерирования результатов предсказания на основе информации внутреннего предсказания.
[0103] Декодер (773) остатка выполнен с возможностью осуществления обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (773) остатка также может требовать некоторой информации управления (для включения параметра квантователя (QP, Quantizer Parameter)), и эта информация может обеспечиваться энтропийным декодером (771) (путь данных не показан, поскольку это может быть только информация управления малого объема).
[0104] Модуль (774) реконструкции выполнен с возможностью объединения, в пространственной области, остатка на выходе декодера (773) остатка и результатов предсказания (на выходе модулей внешнего или внутреннего предсказания, в зависимости от ситуации) для формирования реконструированного блока, который может входить в состав реконструированного изображения, которое, в свою очередь, может входить в состав реконструированного видео. Следует отметить, что могут осуществляться другие подходящие операции, например, операция устранения блочности и т.п., для повышения визуального качества.
[0105] Следует отметить, что видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любой подходящей технологии. Согласно варианту осуществления изобретения, видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления изобретения видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, которые исполняют программные инструкции.
[0106] II. Режим разделения на треугольники (ТРМ, Triangle Partition Mode) для внешнего предсказания
[0107] В некоторых случаях режим ТРМ может поддерживаться для внешнего предсказания. Режим ТРМ может применяться только к единицам CU размером 8x8 или больше. Режим ТРМ может сигнализироваться с использованием флага уровня CU в качестве одного из видов режима слияния с другими режимами слияния, такими как обычный режим слияния, режим MMVD, режим CIIP и режим слияния подблоков.
[0108] Когда используется режим ТРМ, единица CU может быть равномерно разделена на два раздела треугольной формы с использованием либо диагонального разделения, либо антидиагонального разделения, как, например, показано на фиг. 8А и 8В. Каждый треугольный раздел в единице CU может быть предсказан посредством внешнего предсказания с использованием его собственных параметров движения. Для каждого раздела может быть разрешено только одно предсказание. То есть каждый раздел имеет один вектор движения и один опорный индекс. Ограничение движения с одним предсказанием применяется, чтобы гарантировать, что разделение на треугольники такое же, как и при обычном двойном предсказании. То есть для каждой CU необходимы только два предсказания с компенсацией движения. Движение с одним предсказанием для каждого раздела может быть получено с использованием способа, проиллюстрированного на фиг. 1A-1D.
[0109] Если режим ТРМ используется для текущей единицы CU, то также может сигнализироваться флаг, указывающий (диагональное или антидиагональное) направление ТРМ, и два индекса слияния (по одному для каждого раздела). Максимальный размер кандидата ТРМ может явно сигнализироваться на уровне слайса и указывать синтаксическую бинаризацию для индексов слияния ТМР. После предсказания каждого из треугольных разделов значения отсчетов вдоль диагонального или антидиагонального края могут быть скорректированы с использованием процесса смешивания со значениями адаптивных весов. После получения сигнала предсказания для всей единицы CU, процесс преобразования и квантования может быть также применен ко всей единице CU, как и в других режимах предсказания. Наконец, можно сохранить поле движения CU, предсказываемое с помощью ТРМ.
[0110] В некоторых случаях режим ТРМ не может использоваться в сочетании с преобразованием подблока (SBT, subblock transform). То есть, когда сигнализированный режим треугольника равен 1, может быть сделан вывод, что значение cu_sbt_flag равно 0 без сигнализации.
[0111] II. 1 Построение списка кандидатов с одним предсказанием
[0112] Список кандидатов с одним предсказанием может быть получен непосредственно из списка кандидатов на слияние, созданного в соответствии с расширенным процессом предсказания слияния. Обозначим N индекс движения с одним предсказанием в списке кандидатов с одним предсказанием треугольника. Вектор движения LX N-го расширенного кандидата на слияние, где значение X равно четности N, используется в качестве N-го вектора движения с одним предсказанием для ТРМ. Эти векторы движения отмечены как «X» на фиг. 9. В случае отсутствия соответствующего вектора движения LX N-го расширенного кандидата на слияние, вектор движения L(1-X) того же кандидата используется вместо этого как вектор движения с одним предсказанием для ТРМ.
[0113] II.2 Смешивание вдоль края разделения на треугольники
[0114] После предсказания каждого треугольного раздела с использованием его собственных параметров движения, может быть применен процесс смешивания к двум сигналам предсказания для получения отсчетов около диагонального или антидиагонального края. В процессе смешивания используются следующие значения весов {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8} для яркости и {6/8, 4/8, 2/8} для цветности, как показано на фиг. 10А и 10В.
[0115] В некоторых случаях векторы движения единицы CU, кодированной в режиме ТРМ, могут быть сформированы следующим образом. Если Mv1 и Mv2 взяты из разных списков опорных изображений (например, один из L0, а другой из L1), то Mv1 и Mv2 просто объединяются для формирования вектора движения с двойным предсказанием. В противном случае, если Mv1 и Mv2 из одного и того же списка, сохраняется только движение Mv2 с одним предсказанием.
[0116] III. Режим геометрического слияния (GEO)
[0117] Методы, связанные с режимом геометрического слияния (GEO), описаны в (i) Han Gao, Semih Esenlik, Elena Alshina, Anand Meher Kotra, Biao Wang, Max Blaser, Johannes Sauer, "CE4: CE4-1.1, CE4-1.2 and CE4-1.14: Geometric Merge Mode (GEO)", JVET-P0068, Joint Video Experts Team (JVET) ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29/WG 11, 16-е заседание: Женева, Швейцария, 1-11 октября 2019; (ii) Han Gao, Semih Esenlik, Elena Alshina, Anand Meher Kotra, Biao Wang, Max Johannes Sauer, "Simplified GEO without multiplication and minimum blending mask storage", JVET-P0884, Joint Video Experts Team (JVET) ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29/WG 11, 16-e заседание: Женева, Швейцария, 1-11 октября 2019; (iii) Kevin , Chun-Chi Chen, Han Huang, Wei-Jung Chien, Vadim Seregin, Marta Karczewicz, Ru-Ling Liao, Jie Chen, Yan Ye, Jiancong Luo, Max Johannes Sauer, ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29/WG 11, 16-е заседание: Женева, Швейцария, 1-11 октября 2019. Документы JVET-P0068, JVET-P0884 и JVET-P0085 включены в настоящий документ посредством ссылки.
[0118] Режим геометрического слияния (GEO), также называемый режимом геометрического разделения (GPM, geometric partitioning mode), может поддерживать множество различных способов разделения. Способ разделения может быть задан посредством углов и краев. Например, 140 различных способов разделения можно различить по 32 углам (квантованным от 0 до 360° с равным разделением 11,25°) и 5 краям относительно центра единицы CU.
[0119] Фиг. 11 показывает пример GEO. На фиг. 11 угол ϕi представляет квантованный угол между 0 и 360 градусами, а смещение ρi расстояния представляет квантованное смещение наибольшего расстояния ρmax. Значение ρmax может быть получено геометрически с помощью выражения (5) либо для w или h, равного 8 и масштабируемого с помощью log2-масштабированной длины короткого края. Переменные h и w представляют высоту и ширину текущего блока. Когда ϕ равно 0°, значение ρmax равно w/2. Когда ϕ равно 90°, значение ρmax равно h/2. В выражении (5) ρmargin=1.0 предотвращает слишком близкое расположение границы разделения к углу текущего блока.
[0120] Каждому режиму разделения (то есть паре индекса угла и индекса края) в GEO может быть назначена таблица пиксельно-адаптивных весов для смешивания отсчетов в двух разделенных частях. Значение веса отсчета может находиться в диапазоне, например, от 0 до 8 и определяться расстоянием L2 от позиции центрального пикселя до края. При назначении значений весов может соблюдаться ограничение единичного увеличения. Например, когда небольшое значение веса назначается разделению GEO, большое комплементарное значение назначается другому разделению, так что в сумме получается 8.
[0121] IV. Процесс взвешенного предсказания отсчета для GEO
[0122] IV.1 Расчет веса смешивания
[0123] В GEO окончательный предсказатель РВ отсчета может быть получен с помощью двух 3-битовых масок смешивания (то есть значений весов или весов) W0 и W1 и двух предсказателей Р0 и P1 согласно выражению (6)
[0124] Маски W0 и W1 смешивания могут быть получены из таблицы соответствия на основе их индексов весов. Индекс веса смешивания (также называемый в некоторых контекстах весом смешивания) может быть получен на основе расстояния между позицией (х, у) отсчета и границей разделения, как показано в выражении (7).
где
[0125] В выражении (10) n представляет шаги квантования полного расстояния, a i представляет индекс шага расстояния для GEO с углом ϕ, и i<n.
[0126] Наконец, маски W0 и W1 смешивания (или значения весов) отсчета могут быть установлены с использованием таблицы 3, обозначенной GeoFilter, как показано в выражении (11).
[0127] Пример процесса взвешенного предсказания отсчета описан ниже. Входные данные для этого процесса включают две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования, два массива predSamplesLA и predSamplesLB размера (nCbW)×(nCbH), переменную angleIdx, определяющую индекс угла геометрического разделения, переменную distanceldx, определяющую индекс расстояния геометрического разделения, и переменную cIdx, определяющую индекс компонента цвета. Выходные данные этого процесса включают массив pbSamples значений отсчетов предсказания размера (nCbW)×(nCbH) и массив motionIdx размера (nCbW>>2)×(nCbH>>2).
[0128] Переменная bitDepth может быть получена следующим образом: cIdx=0, bitDepth=BitDepthY; в противном случае bitDepth=BitDepthC.
[0129] Переменные shiftl=Max(5, 17-bitDepth) и offset1=1<<(shift1-1).
[0130] Массивы весов sampleWeightL[x][y] для яркости и sampleWeightC[x][y] для цветности с х=0…nCbW-1 и у=0…nCbH-1 могут быть получены следующим образом:
[0131] Переменные wIdx=log2(nCbW) и hIdx=log2(nCbH).
[0132] Переменная whRatio=(wIdx>=hIdx)?wIdx-hIdx:hIdx-wIdx, scaleIdx=(wIdx>=hIdx)?hIdx-3:wIdx-3.
[0133] Переменные displacementX=angleIdx и displacementY=(displacementX+8)%32.
[0134] Переменная angleN=(wIdx>=hIdx)?(angleIdx>>3&l)?angleIdx%8:8-angleldx%8:(angleIdx>>3&1)?8-angleIdx%8:angleIdx%8.
[0135] Переменная rho может быть установлена равной следующему значению с помощью таблиц соответствия, обозначенных stepDis и Dis, указанных в таблице 1 и таблице 2:
rho=distanceIdx*(stepDis[whRatio][angleN]<<scaleIdx)+(Dis[displacementX]<<wIdx)+(Dis[displacementY]<<hIdx).
[0136] Переменные weightIdx и weightIdxAbs могут быть вычислены с использованием таблицы 2 соответствия с x=0…nCbW-1 и у=0…nCbH-1.
weightIdx=((x<<1)+1)* Dis[displacementX]+((у<<1)+1))* Dis[displacementY]-rho.
weightIdxAbs=Clip3(0, 26, (abs(weightIdx)+4)>>3).
[0137] Переменная partIdx может быть установлена равной weightIdx>0, если х=0 и у=nCbH-1.
[0138] Значение sampleWeightL[x][y] с x=0…nCbW-1 и у=0…nCbH-1 может быть установлено в соответствии с таблицей 3, обозначенной GeoFilter.
[0139] Значение с и может быть установлено следующим образом:
[0140] IV.2 Хранение минимальной маски весов смешивания
[0141] Чтобы уменьшить потребность в хранении заранее рассчитанных масок смешивания, метод хранения минимальной маски смешивания может обеспечить 84-91% снижение потребности в хранении весов смешивания.
[0142] Пусть представляет заранее заданные маски для весов смешивания. Предположим, что N представляет количество заранее заданных масок в каждом наборе, и N установлено как NA>>1, где NA - количество углов, поддерживаемых в GEO. М×М представляет размер заранее заданных масок для весов смешивания, а значение М устанавливается равным 128+((ND-1)×(128>>S))<<1, где ND - количество шагов, поддерживаемых в GEO, и S установлен как ND-1. Для 32 углов с настройкой в 5 этапов N установлено как 16, а М установлено как 192. Для 24 углов с настройкой в 4 этапа N установлено как 12, а М установлено как 224.
[0143] Для блока размера W×H с индексом K геометрического разделения, веса смешивания для отсчетов яркости получают следующим образом. Переменные угла ϕ и расстояния ρ получают из таблицы соответствия с использованием индекса K геометрического разделения. Переменные offsetX и offsetY можно рассчитать следующим образом:
[0144] Пример процесса взвешенного предсказания отсчета с сохранением минимальной маски весов смешивания для GEO описан ниже. Входные данные для этого процесса включают две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования, два массива predSamplesLA и predSamplesLB размера (nCbW)×(nCbH), переменную angleIdx, определяющую индекс угла геометрического разделения, переменную distanceIdx, определяющую расстояние idx геометрического разделения, и переменную cIdx, определяющую индекс компонента цвета. Выходные данные этого процесса включают массив pbSamples размера (nCbW)×(nCbH) значений отсчетов предсказания и переменную partIdx.
[0145] Переменная bitDepth может быть получена следующим образом: если cIdx=0, bitDepth=BitDepthY; в противном случае bitDepth=BitDepthC.
[0146] Переменные shift1=Max(5, 17-bitDepth) и offset1=1<<(shift1-1).
[0147] Массивы весов sampleWeightL[x][y] для яркости и sampleWeightC[x][у] для цветности с и могут быть получены следующим образом:
[0148] Переменная
[0149] Переменные и
[0150] Переменная
[0151] Переменная rho может быть установлена равной следующему значению с помощью таблицы 2 соответствия:
[0152] Переменная если выполняется одно из следующих условий: (1) и (2) и В противном случае
[0153] Если
[0154] В противном случае, если
[0155] Переменные и могут быть вычислены с использованием таблицы 2 соответствия с и следующим образом:
[0156] Значение с и может быть установлено в соответствии с таблицей 3, обозначенной GeoFilter.
[0157] Значение с и может быть установлено следующим образом:
[0158] V. Процесс сохранения вектора движения для GEO
[0159] V.1 Получение вектора движения аналогично ТРМ
[0160] В некоторых случаях веса отсчетов яркости в четырех углах единицы 4×4 хранения движения могут суммироваться. Сумма может сравниваться с двумя пороговыми значениями для определения, сохранена ли информация движения с одним предсказанием или с двойным предсказанием. Информация о движении с двойным предсказанием может быть получена с использованием того же процесса, что и ТРМ.
[0161] Пример процесса сохранения вектора движения для GEO описан ниже.
[0162] Массив с и можно получить следующим образом:
[0163] Переменные
[0164] Если с и
[0165] V.2 Упрощенный процесс сохранения векторов движения
[0166] В некоторых случаях процесс сохранения вектора движения дополнительно упрощается. Расстояние между центральной позицией единицы 4×4 хранения движения и границей разделения можно вычислить и сравнить с фиксированным порогом, чтобы определить, сохраняется ли информация движения с одним предсказанием или с двойным предсказанием для единицы 4×4 хранения движения. Знак расстояния указывает на то, какая информация о движении с одним предсказанием должна храниться в случае хранения с одним предсказанием. Зависимость маски смешивания и хранения движения можно устранить.
[0167] Если
[0168] Переменная rho устанавливается равной следующему значению с использованием таблиц соответствия, обозначенных stepDis и Dis, указанных в таблице 1 и таблице 2:
[0169] Переменная motionOffset устанавливается равной следующему значению с использованием таблиц соответствия, обозначенных Dis, указанных в таблице 1 и таблице 2:
[0170] Переменная motionIdx вычисляется с использованием таблицы 2 соответствия следующим образом:
[0171] Переменную sType получают следующим образом:
если в противном случае
[0172] V.3 Процесс сохранения минимального вектора движения
[0173] Чтобы уменьшить объем памяти, необходимой для хранения масок для хранения поля движения, в способе вся информация из заранее заданной маски может быть получена для масок хранения поля движения. Этот процесс запускается при декодировании единицы кодирования с помощью Входные данные для этого процесса включают местоположение яркости (xCb, yCb), определяющее верхний левый отсчет текущего блока кодирования относительно верхнего левого отсчета яркости текущего изображения, переменную cbWidth, определяющую ширину текущего блока кодирования в отсчетах яркости, переменную cbHeight, определяющую высоту текущего блока кодирования в отсчетах яркости, векторы mvA и mvB движения яркости с точностью 1/16 отсчета, опорные индексы refldxA и refldxB, и флаги predListFlagA и predListFlagB списка предсказания.
[0174] Переменные numSbX и numSbY, определяющие количество блоков 4×4 в текущем блоке кодирования по горизонтали и вертикали, устанавливаются равными и
[0175] Переменные
[0176] Переменная shiftHor=0, если выполняется одно из следующих условий: (1) и (2) и В противном случае
[0177] Переменная
[0178] Если
[0179] Значение переменной rho получают в соответствии с приведенным ниже выражением и таблицей соответствия Dis, указанной в таблице 2.
[0180] Переменная motionOffset устанавливается равной следующему значению с использованием таблиц соответствия, обозначенных Dis и указанных в таблице 1 и таблице 2.
[0181] Для каждого подблока 4×4 с индексом подблока (xSbldx, ySbldx) с и переменную motionIdx вычисляют с использованием таблицы 2 соответствия следующим образом:
[0182] VI. Процесс смешивания и сохранение поля движения
[0183] В GEO, как описано в разделах III, IV и V, процесс взвешенного предсказания отсчета и определение хранения поля движения требуют больших вычислительных затрат. В некоторых примерах (как описано в разделах IV.1 и V1), если веса смешивания и тип сохраненного вектора движения вычисляются "на лету", количество умножений, сдвигов и сложений для блока размера W×H отсчетов могут быть следующими:
- Умножение: 3+2×W×H+0×(W×H/16)
- Сдвиг: 6+3×W×H+8×(W×H/16)
- Сложение: 10+6×W×H+7×(W×H/16).
Например, для блока 8×8, на один отсчет требуется 2,04 операций умножения, 3,09 операций сдвига и 6,16 операций сложения. Кроме того, в некоторых примерах для вычислений "на лету" используются три таблицы соответствия. Переменная ρ в выражении (8) представляет собой сложную функцию с операциями с плавающей запятой и реализуется с помощью таблицы соответствия. Две другие таблицы соответствия - это таблица соответствия значений cos[.] и таблица преобразования для преобразования индекса веса смешивания в значение веса смешивания. Следовательно, вычисление масок весов смешивания и масок типа вектора движения для каждого блока, кодированного GEO, "на лету" требует больших вычислительных затрат.
[0184] Чтобы уменьшить вычислительную сложность, в некоторых примерах маски весов смешивания и маски типа хранения векторов движения могут быть вычислены и сохранены в памяти заранее. Однако огромный размер памяти является сложной задачей при проектировании. Взяв в качестве примера 140-режимный вариант GEO, память, необходимая для хранения этой информации, может быть рассчитана следующим образом:
- Для весов смешивания: (8×8+8×16+8×32+8×64+16×8+16×16+16×32+16×64+32×8+32×16+32×32+32×64+64×8+64×16+64×32+64×64+64×128+128×64+128×128)×140×4=26,414,080 битов=3,301,760 байтов≅3.3 Мбайт
- Для хранения поля движения: (2×2+2×4+2×8+2×16+4×2+4×4+4×8+4×16+8×2+8×4+8×8+8×16+16×2+16×4+16×8+16×16+16×32+32×16+32×32)×140×2=825,440 битов=103,180 байтов≅103 кбайт
[0185] На основе приведенного выше расчета, требования к памяти для трех вариантов GEO приведены в таблице 4:
[0186] Из-за большого количества режимов разделения может быть трудно сохранить все адаптивные веса и маски типа вектора движения для хранения поля движения для каждого размера блока и режима разделения в практических реализациях. Чтобы уменьшить объем памяти, необходимой для хранения адаптивных весов и масок типа вектора движения для хранения поля движения, можно использовать два набора заранее заданных масок, один для получения весов смешивания, а другой - для масок хранения поля движения с применением методов, описанных в разделах IV.2 и V.3. Память, необходимая для весов смешивания и маски для хранения поля движения, может быть уменьшена. Но объем необходимой памяти все еще является большим для практических реализаций. Предположим, что N установлено как NA>>1, где NA - количество углов, поддерживаемых в GEO, а М установлено как 128+((ND-1)×(128>>S))<<1, где ND - количество шагов, поддерживаемых в режиме GEO, a S установлено как ND - 1. Число битов, необходимых для хранения заранее заданных масок, указано ниже:
- Для весов смешивания: (М×М)×N×4
- Для хранения поля движения: (М×М)/16×N×2
[0187] Требования к памяти для трех вариантов GEO приведены в таблице 5 ниже:
[0188] Варианты осуществления изобретения для дальнейшего упрощения процесса взвешенного смешивания и процесса сохранения поля движения в GEO описаны ниже. Методы в этих вариантах осуществления изобретения позволяют вычислять вес "на лету" и определять тип хранения вектора движения с помощью небольшой таблицы соответствия тригонометрических значений (например, значений косинуса).
[0189] Как описано, маски весов смешивания геометрического режима слияния могут быть получены на основе расстояния между позицией отсчета и границей разделения с использованием таблиц соответствия с помощью выражений (7) и (9), приведенных ниже.
где
[0190] В выражении (7) ϕ представляет значение угла, соответствующее краю разделения, а ρ представляет собой расстояние между центром текущего блока кодирования и границей разделения. В выражении (9) n представляет общее количество шагов квантования расстояния, a i представляет индекс шага расстояния для разделения GEO с углом ϕ. Сдвинутое назад значение ρmargin в выражении (9) необходимо, чтобы избежать слишком близкого расположения границы разделения к углу текущего блока кодирования. Например, типичное значение ρmargin для блока 8×8 в некоторых примерах может быть 1,0.
[0191] Значение ρmargin, зависящее от блока и угла
[0192] В варианте осуществления изобретения значение ρmargin в выражении (9), которое используется, чтобы избежать того, что граница разделения (край разделения) находится слишком близко к углу блока кодирования, не является константой. Например, значение ρmargin может изменяться в зависимости от ширины и/или высоты блока и/или ϕ (угла границы разделения).
[0193] Значение ρmargin может быть задано как функция угла ϕ разделения GEO, а также ширины и высоты текущего блока кодирования. Например, значение ρmargin может быть получено из следующих выражений:
[0194] Согласно выражениям (17) и (18), смещение р расстояния можно упростить, как показано ниже.
Соответственно, вычисление смещения ρ расстояния может выполняться посредством операций сдвига, умножения и сложения в дополнение к операциям, связанным с таблицей соответствия значений косинуса. Расчет был упрощен по сравнению с использованием постоянного значения ρmargin.
[0195] Вычисление индекса веса смешивания «на лету» с помощью одной таблицы соответствия
[0196] В варианте осуществления изобретения только таблица соответствия для вычисления косинуса используется при вычислении индекса веса смешивания. В результате все вычисления индексов весов могут быть реализованы "на лету" без проверки большой таблицы для хранения масок весов смешивания.
[0197] На основе приведенного выше выражения (18), маски смешивания GEO, полученные на основе расстояния от позиции отсчета до границы разделения, как показано в выражении (7), можно дополнительно упростить следующим образом.
[0198] Если номер n шага расстояния является значением степени числа 2, операции деления в выражении (21) могут быть реализованы с использованием операций сдвига вправо, как показано в выражении (22), со смещением округления перед сдвигом вправо или без него.
[0199] Согласно выражению (22), индекс веса смешивания для каждого отсчета может быть получен с использованием умножителей, сумматоров и одной таблицы соответствия cos[.]. Кроме того, выражение (22) показывает, что только одна таблица cos[.] используется для индекса веса смешивания всех отсчетов в текущей единице CU. Это также указывает на то, что к этому значению cos[.] можно получить доступ один раз, а затем распространить его на все отсчеты в текущей единице CU для расчета индекса веса.
[0200] Только целочисленное вычисление
[0201] В варианте осуществления изобретения, чтобы избежать операций с плавающей запятой, компоненты для получения индекса веса смешивания могут быть увеличены в масштабе, что приведет к увеличенному значению индекса веса. Увеличенное значение может позже масштабироваться до его нормального диапазона значений.
[0202] Например, каждое значение косинуса в таблице соответствия cos[.] может быть реализовано как m-битовое значение с фиксированной точкой, где m может быть положительным значением, например 6 или 3. Кроме того, центр отсчета также принимается в цифровом изображении с дискретными отсчетами для вычисления индекса веса смешивания. Индекс wIdx(x, y) веса можно масштабировать с коэффициентом масштабирования 2m+4, чтобы избежать операции с плавающей запятой и компенсировать ситуацию с дискретными отсчетами. Выражение (21), таким образом, можно переписать как выражение (23). Для сохранения относительно высокой точности может применяться смещение округления.
где cos[ϕ] и реализованы как m-битовая таблица соответствия.
[0203] Если номер n шага расстояния является значением степени числа 2, операции деления в выражении (23) могут быть реализованы с использованием операций сдвига вправо, как показано в выражении (24). Также может применяться смещение округления.
[0204] Углы в четырех квадрантах
[0205] В варианте осуществления изобретения вычисление индекса веса может быть реализовано с использованием различных выражений в зависимости от квадранта угла ϕ границы разделения. Например, для вычисления границы разделения оба значения cos(ϕ) и могут быть положительными. Соответственно, для индекса угла разделения, соответствующего четырем различным квадрантам, можно использовать четыре различных выражения маски весов смешивания. Выражение для индекса веса смешивания для четырех различных квадрантов приведено ниже.
[0206] Построчное и постолбцовое вычисление индекса веса смешивания
[0207] В варианте осуществления изобретения индекс веса wIdx(x, у) может вычисляться построчно, то есть значение текущей строки wIdx(x, у) получают на основе значения предыдущей строки wIdx(x, у-1). В качестве альтернативы, индекс веса wIdx(x, у) может быть вычислен столбец за столбцом, то есть индексы весов текущего столбца, wIdx(x, у), получают на основе индексов весов предыдущего столбца, wIdx(x-1, у).
[0208] Для позиции отсчета (х, у) маска смешивания может быть получена с использованием выражений (26)-(28) на основе выражения (23).
[0209] Как показано в выражении (26), индекс веса wIdx(x, y) может быть получен из индекса веса смешивания соседнего левого пикселя предыдущего столбца с фиксированным значением смещения. Фиксированное значение смещения - это значение cos(ϕ), которое представляет собой значение из простой таблицы соответствия с соответствующим индексом угла и коэффициентом масштабирования. Следовательно, для хранения маски требуется только один столбец значений индекса веса смешивания. Другие столбцы индексов весов могут быть определены с использованием значений индексов весов смешивания предыдущего столбца с фиксированным значением смещения.
[0210] Для позиции (х, у) отсчета маска смешивания или индекс веса смешивания этого пиксельного отсчета также могут быть получены с использованием выражений (29)-(31) на основе выражения (23).
[0211] В выражении (29) индекс wIdx(x, y) веса может быть получен из индекса веса смешивания верхнего соседнего пикселя в приведенной выше строке с фиксированным значением смещения. Фиксированное значение смещения может быть получено из простой таблицы соответствия cos[.] с использованием заданного индекса угла со сдвигом фазы Следовательно, только одна строка значений весов смешивания необходима для хранения маски. Другие строки могут быть реализованы с использованием значений весов смешивания предыдущей строки с фиксированным значением смещения.
[0212] Независимое получение индексов весов
[0213] В варианте осуществления изобретения индекс веса в позиции (х, у) в блоке кодирования может быть получен из конкретного значения индекса wIdx(0,0) веса (которое может быть определено на основе размера блока, смещения ρ расстояния, угла ϕ разделения), в зависимости от координаты (х, у) и таблицы косинусов. Таким образом, индекс веса каждого отсчета в блоке кодирования может быть получен независимо.
[0214] Из выражения (7) можно получить приведенное ниже выражение:
где
[0215] Соответственно, после определения значения wIdx(0,0) индекс веса каждого отсчета в блоке может рассчитываться параллельно с помощью выражения (32).
[0216] Преобразование индекса веса в вес смешивания без таблицы соответствия
[0217] В варианте осуществления изобретения преобразование индекса веса на основе таблицы соответствия в окончательный вес смешивания заменяется преобразованием на основе вычислений. Поскольку операции проверки таблицы соответствия были удалены, окончательный вес каждого отсчета может быть получен параллельно.
[0218] В некоторых примерах, таких как процесс взвешенного отсчета GEO, описанный в разделе VI, значение веса отсчета устанавливается в соответствии с таблицей соответствия (такой как таблица соответствия GeoFilter[], таблица 3). Чтобы снять ограничение, связанное с таблицей соответствия, и сделать возможным параллельное получение взвешивания, значение веса отсчета может быть получено "на лету" на основе линейной функции индекса веса. Линейная функция может преобразовывать индекс веса в вес смешивания без таблицы соответствия.
[0219] В качестве примера приведенное ниже выражение (34) можно использовать для преобразования индекса веса в вес смешивания.
[0220] Для вычисления на основе операции с плавающей точкой (например, выражения (21) и (22)) масштабное увеличение не используется для вычисления wIdx(x, у), a idx2wShiftBit в выражении (32) может быть «0». Вес отсчета может быть получен следующим образом:
[0221] Для вычисления на основе операции с фиксированной точкой (например, выражения (23) и (24)) idx2wShiftBit в выражении (34) можно описать, как в выражении (36):
[0222] Вес отсчета может быть получен "на лету" с помощью операции сдвига вправо, как показано в выражении (37):
[0223] Типичное значение m может быть числом битов точности таблицы косинуса. Например, в общем случае m может быть 6 или 3.
[0224] Вычисление индекса движения без таблицы соответствия
[0225] В варианте осуществления изобретения для определения индекса движения может использоваться способ вычисления без таблицы соответствия. Например, индекс движения единицы хранения движения в текущем блоке кодирования может быть определен, например, на основе координаты (xsb, ysb) единицы хранения движения и смещения ρ расстояния разделения (представленного n и i), угла ϕ разделения и размера блока текущего блока кодирования. В результате индексы движения motionIdx(xsb, ysb) в текущем блоке кодирования могут быть получены одновременно и независимо (параллельно).
[0226] В некоторых примерах, без использования ТРМ-подобного процесса хранения движения, процесс сохранения вектора движения может быть получен "на лету" с использованием расстояния между центральной позицией единицы хранения движения (подблока) и границей разделения. Единица хранения движения может иметь размер 4×4 отсчетов или другие размеры подблока (например, 8×8 отсчетов). Центральная позиция подблока W×H может быть определена как целочисленная позиция в (W/2, Н/2) или (W/2-1, Н/2-1) или их соседние позиции. Альтернативно, позиция ((W-1)/2,0, (Н-1)/2,0) подблока может быть определена как центральная позиция. Вышеупомянутое значение расстояния сравнивается с фиксированным порогом, чтобы определить, хранится ли информация о движении с одним или двойным предсказанием для единицы хранения движения. Знак расстояния указывает на то, какая информация движения с одним предсказанием может быть сохранена в случае хранения с одним предсказанием. Таким образом, можно устранить зависимость маски смешивания и хранения движения.
[0227] В примере единица хранения движения (подблок) имеет размер 4×4 отсчетов. Переменные xsb и ysb определяют позицию подблока 4×4 в текущем блоке кодирования w×h в горизонтальном и вертикальном направлениях. Переменные xsb и ysb удовлетворяют выражениям 0≤xsb<(w>>2) и 0≤ysb<(h>>2). Используя концепцию выражения (23) и подробный вывод для дискретного отсчета с масштабированием с помощью выражения (21), расстояние между центральной позицией единицы хранения движения 4×4 и границей разделения может быть получено с помощью выражения (38).
[0228] Если номер n шага расстояния является степенью числа 2, операции деления в выражении (38) могут быть реализованы с помощью операций сдвига вправо, как показано в выражении (39). Для сохранения относительно высокой точности также может применяться смещение округления.
[0229] Индекс движения, полученный из индекса веса смешивания
[0230] В варианте осуществления изобретения индекс движения, обозначенный motionIdx(xsb, ysb), единицы хранения движения (подблока) в блоке кодирования получают непосредственно из индекса веса смешивания позиции отсчета в подблоке. Таким образом, можно уменьшить вычислительные затраты для определения индекса движения.
[0231] Как описано в разделе V, индекс движения может быть получен на основе расстояния между центральной позицией единицы хранения движения и границей разделения. Индекс веса смешивания также может быть получен на основе расстояния между отсчетом и границей разделения. Следовательно, индекс движения может быть аппроксимирован на основе индекса веса смешивания отсчета, который находится в соответствующем подблоке и может не находиться в центре подблока.
[0232] Например, аппроксимация может быть реализована согласно выражению (40).
[0233] В выражении (40) предполагается, что единица хранения движения в поле движения блока кодирования имеет размер 4×4 отсчетов. Координата позиции отсчета в единице хранения движения представлена как (i, j). Например, для единицы хранения движения, имеющего координату (1, 0) в поле движения, и позиции отсчета, имеющего координату (2, 2) в единице хранения движения, назначенной для вычисления индекса движения, индекс веса в позиции отсчета ((1<<2)+2, (0<<2)+2), то есть (6, 2), в блоке кодирования может использоваться как индекс движения единицы хранения движения. Процесс расчета можно представить следующим образом.
[0234] В различных примерах (i, j) могут быть равны (1, 1), (1, 2), (2, 1) и (2, 2), что соответствует позициям отсчета, соседним с центральной позицией (1,5, 1,5) соответствующего подблока.
[0235] В более общем смысле, для единицы хранения движения, имеющей размер 2n×2n отсчетов, аппроксимация может быть реализована согласно выражению (42).
[0236] В выражениях (40)-(42) значение индекса веса смешивания в позиции (х, у) отсчета в блоке кодирования, обозначенное wIdx(x, у), может быть получено различными способами в различных примерах. После того как были вычислены значения индексов весов смешивания во время процесса взвешенного смешивания, индексы весов смешивания в обозначенных позициях в каждой единице хранения векторов движения могут непосредственно использоваться в качестве значений индексов движения для определения типов векторов движения, которые должны быть сохранены для каждой единицы хранения движения. По сравнению с вычислением индекса движения на основе расстояния от центральной позиции отсчета в единице хранения движения до края разделения, вычислительная сложность может быть уменьшена.
[0237] VII. Примеры способов режима геометрического разделения
[0238] На фиг. 12 показана блок-схема, описывающая пример способа (1200) согласно вариантам осуществления изобретения. В различных вариантах осуществления изобретения способ (1200) выполняется схемой обработки, такой как схема обработки в оконечных устройствах (210), (220), (230) и (240), схема обработки, которая выполняет функции видеодекодера (310), схема обработки, которая выполняет функции видеодекодера (410), и т.п. В некоторых вариантах осуществления изобретения способ (1200) реализован в программных инструкциях, так что при исполнении схемой обработки программных инструкций схема обработки выполняет способ (1200). Способ (1200) может начинаться на этапе (S1201) и переходить к этапу (S1210).
[0239] На этапе (S1210) из битового потока кодированных видеоданных может приниматься синтаксический элемент. Синтаксический элемент может быть связан с текущим блоком кодирования, который разделен на первую часть и вторую часть вдоль края разделения для предсказания в режиме геометрического разделения (GPM). Например, в битовом потоке могут передаваться следующие синтаксические элементы: флаг включения GPM уровня CU, указывающий на то, что GPM включен для текущего блока кодирования; индекс GPM, указывающий режим разделения (соответствующий индексу угла разделения и индексу смещения расстояния в таблице), применяемый к текущему блоку кодирования, и два индекса слияния GPM, соответствующие первой части и второй части текущего блока кодирования.
[0240] На этапе (S1220) может быть определен индекс веса в позиции отсчета текущего блока кодирования. Индекс веса, например, может соответствовать расстоянию от позиции отсчета до края разделения. Индекс веса впоследствии может использоваться для получения веса смешивания для смешивания двух сигналов предсказания, соответствующих первой части и второй части текущего блока кодирования. В одном примере индекс веса может быть преобразован в вес смешивания с использованием линейной функции индекса веса.
[0241] На этапе (S1230) тип сохраненного вектора движения для первой единицы хранения движения в поле движения текущего блока кодирования может быть определен на основе индекса движения первой единицы хранения движения. Индекс веса в позиции отсчета текущего блока кодирования, определенный на этапе (S1220), используют в качестве индекса движения первой единицы хранения движения. Например, индекс веса, определенный на этапе (S1220), может использоваться для аппроксимации индекса движения в центральной позиции первой единицы хранения движения для определения типа сохраненного вектора движения. Таким образом, могут быть уменьшены вычислительные затраты на вычисление индекса движения в центральной позиции первой единицы хранения движения. Производительность декодирования с помощью GPM может быть улучшена.
[0242] На этапе (S1240) поле движения текущего блока кодирования может быть сохранено на основе типа сохраненного вектора движения, определенного для первой единицы хранения движения в поле движения текущего блока кодирования. Например, два вектора движения, соответствующие двум индексам слияния GPM, могут быть обозначены MV1 и MV2. В зависимости от типа сохраненного вектора движения, MV1 из первой части геометрического разделения, MV2 из второй части геометрического разделения и комбинированный MV из MV1 и MV2 сохраняют в поле движения для первой единицы хранения движения. Способ (1200) может перейти к этапу (S1299) и завершиться на этапе (S1299).
[0243] VIII. Компьютерная система
[0244] Вышеописанные способы могут быть реализованы в виде компьютерного программного обеспечения, использующего машиночитаемые инструкции и физически хранящегося на одном или более машиночитаемых носителях. Например, на фиг. 13 показана компьютерная система (1300), пригодная для осуществления некоторых вариантов осуществления изобретения.
[0245] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing units), графическими процессорами (GPU, Graphics Processing Units) и т.п.
[0246] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0247] Компоненты компьютерной системы (1300), показанные на фиг. 13, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым компонентом или комбинацией компонентов, показанных в примере осуществления компьютерной системы (1300).
[0248] Компьютерная система (1300) может включать некоторые устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двумерного видео, трехмерного видео, включая стереоскопическое видео).
[0249] Входной человеко-машинный интерфейс устройства может включать одно или более из следующего (показано по одному): клавиатура (1301), мышь (1302), сенсорная панель (1303), сенсорный экран (1310), информационная перчатка (не показана), джойстик (1305), микрофон (1306), сканер (1307) и камера (1308).
[0250] Компьютерная система (1300) также может включать в себя некоторые устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (1310), информационной перчатки (не показана) или джойстика (1305), а также устройства тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: динамики (1309), наушники (не показаны)), устройства визуального вывода (например, экраны (1310), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из них способны к двумерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографическому выводу, очки виртуальной реальности (не показаны), голографические дисплеи, дымовые баки (не показаны) и принтеры (не показаны). Эти устройства визуального вывода (такие как экраны (1310)) могут быть подключены к системной шине (1348) через графический адаптер (1350).
[0251] Компьютерная система (1300) также может включать доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие CD/DVD ROM/RW (1320) с носителями (1321) CD/DVD и т.п., карты (1322) флэш-памяти, сменный жесткий диск или твердотельный диск (1323), традиционные магнитные носители, например, ленту и магнитный диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.
[0252] Специалисты в данной области техники также должны понимать, что термин «машиночитаемые носители», используемый в связи с настоящим изобретением, не охватывает среды передачи, несущие волны или другие временные сигналы.
[0253] Компьютерная система (1300) также может включать сетевой интерфейс (1354) к одной или более сетям (1355) связи. Одна или более сетей (1355) связи могут быть, например, беспроводными, проводными, оптическими. Одна или более сетей (1355) связи могут быть также локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры одной или более сетей (1355) связи включают локальные сети, например, Ethernet, беспроводные сети LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные сети, включающие CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (1349) (например, USB-порты компьютерной системы (1300)); другие обычно встраиваются в ядро компьютерной системы (1300) путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1300) может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.
[0254] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (1340) компьютерной системы (1300).
[0255] Ядро (1340) может включать один или более центральных процессоров (CPU) (1341), графические процессоры (GPU) (1342), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Arrays) (1343), аппаратные ускорители (1344) для некоторых задач и т.д. Эти устройства, совместно с постоянной памятью (ROM) (1345), оперативной памятью (1346), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками, недоступными пользователю, SSD и т.п. (1347), могут соединяться посредством системной шины (1348). В некоторых компьютерных системах системная шина (1348) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных процессоров CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (1348) ядра, либо через периферийную шину (1349). Архитектуры периферийной шины включают PCI, USB и т.п.
[0256] Устройства CPU (1341), GPU (1342), FPGA (1343) и ускорители (1344) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в памяти ROM (1345) или RAM (1346). Временные данные также могут храниться в памяти RAM (1346), тогда как постоянные данные могут храниться, например, во внутреннем хранилище (1347) данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с одним или более процессорами CPU (1341), GPU (1342), хранилищем (1347) данных большой емкости, памятью ROM (1345), RAM (1346) и т.п.
[0257] На машиночитаемых носителях может храниться компьютерный код для осуществления различных выполняемых компьютером операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.
[0258] В порядке примера, но не ограничения изобретения, компьютерная система, имеющая архитектуру (1300), и, в частности, ядро (1340) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных машиночитаемых носителей. Такие машиночитаемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым постоянным хранилищем ядра (1340), например, внутренним хранилищем (1347) данных большой емкости или ROM (1345). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (1340). Машиночитаемый носитель может включать одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (1340) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные процессы или конкретные части описанных здесь конкретных процессов, включая задание структур данных, хранящихся в памяти RAM (1346), и модификацию таких структур данных согласно процессам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (1344)), которая может действовать вместо программного обеспечения или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей описанных здесь конкретных процессов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на машиночитаемые носители может охватывать схему (например, интегральную схему (IC, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе схемы, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию аппаратного и программного обеспечения.
[0259] Хотя здесь были описаны некоторые варианты осуществления изобретения, возможны изменения, перестановки и различные эквивалентные замены в пределах объема изобретения.
Приложение А: Сокращения
ASIC: специализированная интегральная схема
BMS: набор эталонов
CANBus: шина сети контроллеров
CD: компакт-диск
CPU: центральный процессор
CRT: электронно-лучевая трубка
СТВ: блок дерева кодирования
CTU: единица дерева кодирования
CU: единица кодирования
DVD: цифровой видеодиск
FPGA: программируемая вентильная матрица
GEO: режим геометрического слияния
GOP: группа изображений
GPU: графический процессор
GSM: глобальная система мобильной связи
HDR: расширенный динамический диапазон
HEVC: высокоэффективное кодирование видеоданных
HRD: гипотетический эталонный декодер
IC: интегральная схема
JEM: совместная модель исследования
JVET: объединенная группа исследования видео
LAN: локальная сеть
LCD: жидкокристаллический дисплей
LTE: система долгосрочного развития
MV: вектор движения
OLED: органический светодиод
РВ: блок предсказания
PCI: соединение периферийных компонентов
PLD: программируемое логическое устройство
PU: единица предсказания
RAM: оперативная память
ROM: постоянная память
SDR: стандартный динамический диапазон
SEI: дополнительная информация улучшения
SNR: отношение «сигнал-шум»
SSD: твердотельный накопитель
ТРМ: режим разделения на треугольники
TU: единица преобразования
USB: универсальная последовательная шина
VUI: информация о возможности использовании видео
VVC: универсальное кодирование видеоданных.
название | год | авторы | номер документа |
---|---|---|---|
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2020 |
|
RU2801587C1 |
Построение списка слияний в треугольном предсказании | 2020 |
|
RU2781275C1 |
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2020 |
|
RU2799066C1 |
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2021 |
|
RU2820768C2 |
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2021 |
|
RU2810318C1 |
Способ и устройство для передачи информации о размере списка кандидатов предсказателя | 2020 |
|
RU2779931C1 |
ВЫВЕДЕНИЕ ВЕКТОРА ДВИЖЕНИЯ ПРИ ВИДЕОКОДИРОВАНИИ | 2016 |
|
RU2742298C2 |
СПОСОБ И УСТРОЙСТВО СИГНАЛИЗАЦИИ ФЛАГОВ РЕЖИМА ПРОПУСКАНИЯ | 2021 |
|
RU2801586C1 |
ВЫВОД ИНФОРМАЦИИ ДВИЖЕНИЯ ДЛЯ ПОДБЛОКОВ ПРИ ВИДЕОКОДИРОВАНИИ | 2016 |
|
RU2705428C2 |
УНИФИЦИРОВАННОЕ ПРЕДСКАЗАНИЕ ВЕКТОРА БЛОКА ДЛЯ КОМПЕНСАЦИИ БЛОКОВ ВНУТРИ ИЗОБРАЖЕНИЯ | 2020 |
|
RU2777377C1 |
Изобретение относится к области кодирования видеоданных. Технический результат заключается в повышении эффективности кодирования. Предложен способ декодирования видеоданных, включающий прием, из битового потока кодированных видеоданных, синтаксического элемента, связанного с текущим блоком кодирования, который разделен на первую часть и вторую часть вдоль края разделения для предсказания в режиме геометрического разделения, и определение индекса веса в позиции отсчета текущего блока кодирования. Тип сохраненного вектора движения для первой единицы хранения движения в поле движения текущего блока кодирования определяют на основе индекса движения первой единицы хранения движения. Индекс веса в позиции отсчета текущего блока кодирования используют в качестве индекса движения первой единицы хранения движения. Поле движения текущего блока кодирования может быть сохранено на основе типа сохраненного вектора движения, определенного для первой единицы хранения движения в поле движения текущего блока кодирования. 3 н. и 12 з.п. ф-лы, 18 ил., 5 табл.
1. Способ декодирования видеоданных, включающий:
прием (1210), из битового потока кодированных видеоданных, синтаксического элемента, связанного с текущим блоком кодирования, который разделен на первую часть и вторую часть вдоль края разделения для предсказания в режиме геометрического разделения;
определение (1220) индекса веса в позиции отсчета текущего блока кодирования, причем индекс веса используют для получения веса смешивания для смешивания двух сигналов предсказания, соответствующих первой части и второй части текущего блока кодирования;
определение (1230) типа сохраненного вектора движения для первой единицы хранения движения в поле движения текущего блока кодирования на основе индекса движения первой единицы хранения движения, при этом индекс веса в позиции отсчета текущего блока кодирования используют в качестве индекса движения первой единицы хранения движения; и
сохранение (1240) поля движения текущего блока кодирования на основе типа сохраненного вектора движения, определенного для первой единицы хранения движения в поле движения текущего блока кодирования.
2. Способ по п. 1, в котором позиция отсчета текущего блока кодирования, в которой индекс веса используют в качестве индекса движения первой единицы хранения движения, представляет собой позицию отсчета в первой единице хранения движения в поле движения текущего блока кодирования.
3. Способ по п. 1, в котором позиция отсчета текущего блока кодирования, в которой индекс веса используют в качестве индекса движения первой единицы хранения движения, представляет собой позицию отсчета, соседнюю с центральной позицией первой единицы хранения движения в поле движения текущего блока кодирования.
4. Способ по п. 1, в котором первая единица хранения движения имеет размер 4×4 отсчетов, а позиция отсчета текущего блока кодирования, в которой индекс веса используют в качестве индекса движения первой единицы хранения движения, является позицией отсчета с координатой (2, 2) в первой единице хранения движения в поле движения текущего блока кодирования.
5. Способ по п. 1, в котором первая единица хранения движения имеет размер 4×4 отсчетов и находится в позиции (xsb, ysb) в поле движения текущего блока кодирования, а позиция отсчета текущего блока кодирования имеет координату ((xsb<<2)+2, (ysb<<2)+2) в текущем блоке кодирования, при этом индекс веса в координате ((xsb<<2)+2, (ysb<<2)+2) используют в качестве индекса движения первой единицы хранения движения.
6. Способ по п. 1, также включающий:
выполнение вычисления для преобразования индекса веса в позиции отсчета текущего блока кодирования в вес смешивания для смешивания двух сигналов предсказания, причем преобразование основано на линейной функции индекса веса в позиции отсчета текущего блока кодирования без использования таблицы соответствия.
7. Способ по п. 1, в котором определение индекса веса в позиции отсчета текущего блока кодирования включает:
определение индекса веса в позиции отсчета текущего блока кодирования на основе значения ρmargin, используемого для сдвига края разделения от угла текущего блока кодирования, причем значение ρmargin изменяется в зависимости от ширины или высоты текущего блока кодирования и угла края разделения.
8. Способ по п. 1, в котором определение индекса веса в позиции отсчета текущего блока кодирования включает:
определение индекса веса в позиции отсчета текущего блока кодирования на основе выражения
где wIdx обозначает индекс веса, х и у обозначают координату позиции отсчета в текущем блоке кодирования, w и h обозначают ширину и высоту текущего блока кодирования, ϕ обозначает угол края разделения, n обозначает количество шагов квантования расстояния, a i обозначает индекс шага квантования расстояния.
9. Способ по п. 1, в котором определение индекса веса в позиции отсчета текущего блока кодирования включает:
определение индекса веса в позиции отсчета текущего блока кодирования на основе выражения
где wIdx обозначает индекс веса, х и у обозначают координату позиции отсчета в текущем блоке кодирования, w и h обозначают ширину и высоту текущего блока кодирования, ϕ обозначает угол края разделения, n обозначает количество шагов квантования расстояния, a i обозначает индекс шага квантования расстояния.
10. Способ по п. 1, в котором определение индекса веса в позиции отсчета текущего блока кодирования включает:
определение индекса веса в позиции отсчета текущего блока кодирования на основе выражения
где wIdx обозначает индекс веса, х и у обозначают координату позиции отсчета в текущем блоке кодирования, w и h обозначают ширину и высоту текущего блока кодирования, ϕ обозначает угол края разделения, n обозначает количество шагов квантования расстояния, a i обозначает индекс шага квантования расстояния.
11. Способ по п. 1, в котором определение индекса веса в позиции отсчета текущего блока кодирования включает:
определение индекса веса в позиции отсчета текущего блока кодирования на основе индекса веса левого или верхнего соседнего отсчета для позиции отсчета текущего блока кодирования с фиксированным значением смещения.
12. Способ по п. 1, в котором определение индекса веса в позиции отсчета текущего блока кодирования включает:
определение индекса веса в позиции отсчета текущего блока кодирования на основе индекса веса в координате (0, 0) в текущем блоке кодирования.
13. Способ по п. 1, также включающий:
определение индекса движения второй единицы хранения движения в поле движения текущего блока кодирования на основе выражения
где motionIdx обозначает индекс движения второй единицы хранения движения, xsb и ysb обозначают координату второй единицы хранения движения в поле движения текущего блока кодирования, w и h обозначают ширину и высоту текущего блока кодирования, ϕ обозначает угол края разделения, n обозначает количество шагов квантования расстояния, a i обозначает индекс шага квантования расстояния.
14. Устройство для декодирования видеоданных, содержащее схему, сконфигурированную для осуществления способа по любому из пп. 1-13.
15. Машиночитаемый носитель, хранящий инструкции, которые при их исполнении процессором заставляют процессор выполнять способ по любому из пп. 1-13.
SEMIH ESENLIK et al., Non-CE4: Geometrical partitioning for inter blocks, Joint Video Experts Team (JVET) of ITU-T SG16 WP3 and ISO/IEC JTC 1/SC 29/WG11, JVET- O0489, 15th Meeting: Gothenburg, 3-12 July 2019 | |||
US 2012177106 A1, 2012.07.12 | |||
US 2004008782 A1, 2004.01.15 | |||
US 2010208818 A1, 2010.08.19 | |||
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ, ИСПОЛЬЗУЯ ВНУТРЕННЕЕ ПРЕДСКАЗАНИЕ | 2018 |
|
RU2687294C1 |
СПОСОБ КОДИРОВАНИЯ ВИДЕО И УСТРОЙСТВО КОДИРОВАНИЯ ВИДЕО С ИСПОЛЬЗОВАНИЕМ БЛОКОВ ПРЕДСКАЗАНИЯ НА ОСНОВАНИИ БЛОКОВ КОДИРОВАНИЯ, ОПРЕДЕЛЕННЫХ В СООТВЕТСТВИИ С ДРЕВОВИДНОЙ СТРУКТУРОЙ, И СПОСОБ ДЕКОДИРОВАНИЯ ВИДЕО И УСТРОЙСТВО ДЕКОДИРОВАНИЯ ВИДЕО С ИСПОЛЬЗОВАНИЕМ БЛОКОВ ПРЕДСКАЗАНИЯ НА ОСНОВАНИИ БЛОКОВ КОДИРОВАНИЯ, ОПРЕДЕЛЕННЫХ В СООТВЕТСТВИИ С ДРЕВОВИДНОЙ СТРУКТУРОЙ | 2011 |
|
RU2528132C2 |
Авторы
Даты
2022-06-08—Публикация
2020-11-12—Подача