СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ВИДЕО С КОМПЕНСАЦИЕЙ АФФИННОГО ДВИЖЕНИЯ
METHOD AND DEVICE FOR ENCODING VIDEO WITH COMPENSATION OF AFFINE MOTION

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
Настоящее изобретение заявляет приоритет перед патентной заявкой PCT, серийный № PCT/CN2016/076360, поданной 15 марта 2016 г., под названием «Аффинные расчеты для кодирования видео» и приоритетной патентной заявкой США, серийный № US62/437,757, поданной 22 декабря 2016 г., под названием «Управление буфером аффинных расчетов для кодирования видео». Патентная заявка PCT и приоритетная патентная заявка США включены в настоящее описание путем отсылки.
ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится к кодированию видео с компенсацией аффинного движения. В частности, настоящее изобретение относится к управлению буфером для системы кодирования видео, осуществляющей компенсацию аффинного движения и техники, обеспечивающие разложение вектора адаптивного движения для компенсации аффинного движения.
УРОВЕНЬ ТЕХНИКИ
Видео-данные требуют большого пространства для хранения для буферизации промежуточных данных во время кодирования и декодирования. Вместе с ростом высокой разрешающей способности и высокой скоростью передачи кадров, а также с разработкой более мощных способов кодирования для достижения лучших характеристик кодирования, требования к системе хранения данных видеокодера и декодера значительно выросли. Одним из вновь разработанных способов кодирования является прогнозирование и компенсация аффинного движения, который позволяет эффективно отслеживать более сложное движение, например, вращение, увеличение и деформацию движущихся объектов. В способах прогнозирования межкадрового движения, применяемых в недавно разработанных стандартах кодирования, например, в высокоэффективном видеокодировании ВЭВК (HEVC), рассматривается только двумерное (2D) поступательное движение, где все пиксели в зоне интереса имеют одно направление и амплитуду движения. Прогнозирование аффинного движения может обеспечивать описание 2D вращения и масштабирования блока в соответствии с четырехпараметрической аффинной моделью. Прогнозирование аффинной модели также позволяет фиксировать 2D деформации в соответствии с шестипараметрической аффинной моделью, трансформирующей квадрат или прямоугольник в параллелограмм. В литературе предлагается два основных режима для прогнозирования аффинного движения, содержащих аффинный режим объединения и аффинный промежуточный режим. Аффинный режим объединения позволяет переносить информацию аффинного движения из пространственно соседнего блока, где аффинный промежуточный режим создает несколько наиболее вероятных кандидатов посредством объединения информации о движении пространственно соседних блоков.  Аффинный промежуточный режим также называют аффинным режимом предварительного прогнозирования вектора движения ППВД (AMVP).
Движение, происходящее во всех изображениях вдоль временной оси, может быть раскрыто четырехпараметрическими моделями аффинного движения, показанными в Равенстве (1). Предположим, что A(x, y) — это исходный пиксель в рассматриваемом месте (x, y), и A’(x’, y’) — это соответствующий эталонный пиксель в месте (x’, y’) на эталонном изображении для исходного пикселя A(x, y).
x’ = a0 * x + a1 * y + a2, и
y’ = - a1 *x + a0 * y + a3. (1)
где a0, a1, a2 и a3 — это четыре параметра в четырехпараметрической модели аффинного движения.
x
y
Вектор движения (v, v) между данным исходным пикселем A(x,y) и его соответствующим эталонным пикселем A’(x’,y’) в блоке, кодированном в аффинной модели, раскрыт следующим образом:
x
v = (1 – a0) * x – a1 * y – a2, и
y
v = (1 – a0) * y + a1 * x – a3.      (2)
Пример четырехпараметрической аффинной модели движения показан на Фиг. 1А. Два угловых пикселя 110 и 112 расположены в верхнем левом и верхнем правом углах текущего блока 102, и эти два угловых пикселя также называют контрольными точками для текущего блока 102 в четырехпараметрической аффинной модели движения. Векторы Mv0 и Mv1 движения двух контрольных точек 110 и 112 соединяют текущий блок 102 с эталонным блоком 104 на эталонном изображении. Поле вектора движения каждого пикселя A(x,y) в текущем блоке 102 может быть получено на основе векторов Mv0 и Mv1 движения контрольных точек 110 и 112 в соответствии с Равенством (3).
(3)
0x
0y
1x
1y
где (v, v) представляет собой вектор Mv0 движения в верхнем левом углу 110, (v, v) представляет собой вектор Mv1 движения в верхнем правом углу 112, и w представляет собой ширину текущего блока. Для компенсации аффинного движения на основе блока, когда векторы Mv0 и Mv1 движения двух контрольных точек декодированы, вектор движения каждого блока 4x4 текущего блока 102 может быть определен в соответствии с Равенством (3). Другими словами, четырехпараметрическая модель аффинного движения для текущего блока 102 может быть обозначена двумя векторами Mv0 и Mv1 движения в двух контрольных точках. Кроме того, в то время как верхний левый и верхний правый углы блока используют как две контрольные точки, две другие контрольные точки также могут быть использованы.
x
y
Шестипараметрическая модель аффинного движения может быть раскрыта Равенством (4). В этой модели используют всего шесть параметров a0, a1, a2, b0, b1 и b2 и три контрольных точки. Для каждого пикселя A(x, y) в Равенстве (5) показан вектор движения (v, v) между данным пикселем A(x, y) и его соответствующим эталонным пикселем A’(x’, y’).
x’ = a0 + a1*x + a2*y, и
y’ = b0 + b1*x + b2*y. (4)
x
v = (a1-1) * x + a2 * y + a0, и
y
v = (b2-1) * y + b1 * x + b0.         (5)
Вектор движения для каждого пикселя, прогнозируемый шестипараметрической моделью аффинного движения, также зависит от места. На Фиг. 1B показан пример компенсации аффинного движения в соответствии с шестипараметрической моделью аффинного движения, где текущий блок 122 соединен с эталонным блоком 124 на эталонном изображении. Соответствие между тремя угловыми пикселями 130, 132 и 134 текущего блока 122 и тремя угловыми пикселями эталонного блока 124 может быть определено по трем стрелкам, как показано на Фиг. 1B. Шесть параметров для модели аффинного движения можно получить на основе трех известных векторов Mv0, Mv1, Mv2 движения верхней левой, верхней правой и нижней левой контрольных точек текущего блока 122. Получение параметров для модели аффинного движения известно в уровне техники и подробности опущены в данной заявке.
Обсуждалось множество осуществлений аффинного промежуточного режима и аффинного режима объединения, например, аффинную метку используют для обозначения того, используется ли аффинный промежуточный режим, и данную аффинную метку устанавливают для каждой кодирующей ячейки КЯ (CU) промежуточного кодирования, когда КЯ равна или больше 16х16. Для текущей КЯ составляют перечень пар потенциальных предсказателей векторов движения ПВД (MVP), используя действующие соседние закодированные блоки, если текущая КЯ закодирована или будет закодирована в аффинном промежуточном режиме. На Фиг. 2 показан пример получения потенциальной пары ПВД для текущего блока 20, закодированного в аффинном промежуточном режиме или аффинном режиме объединения. Как показано на Фиг. 2, предсказатель вектора движения ПВД для вектора Mv0 движения в верхней левой контрольной точке текущего блока 20 выбран из векторов движения верхних левых соседних закодированных блоков A0, A1 или A2; и ПВД для Mv1 в верхней правой контрольной точке текущего блока 20 выбран из векторов движения верхних правых соседних закодированных блоков B0 и B1. Индекс ПВД для перечня пар потенциальных ПВД посылается в виде сигнала в видеопотоке, и разница векторов движения РВД (MVD) двух контрольных точек закодирована в видеопотоке.
Для текущего блока 20, закодированного в режиме объединения, пять соседних закодированных подблоков C0 (далее — «левый нижний блок»), B0 (далее — «верхний правый блок»), B1 (далее — «верхний правый угловой блок»), C1 (далее — «нижний левый угловой блок») и A0 (далее — «верхний левый угловой блок») на Фиг. 2 последовательно проверяются, чтобы определить, закодированы ли какие-либо из соседних закодированных подблоков в аффинном промежуточном режиме или аффинном режиме объединения. Текущий блок 20 в данном примере является блоком прогнозирования БП (PU). Аффинная метка устанавливается для обозначения того, закодирован ли текущий блок 20 в аффинном режиме объединения, только если какой-либо из соседних закодированных подблоков закодирован в аффинном промежуточном режиме или аффинном режиме объединения. При кодировании или декодировании текущего блока 20 в соответствии с аффинным режимом объединения первый доступный соседний блок, закодированный в аффинном режиме, определяется посредством выбора из пяти соседних закодированных подблоков. Первый доступный соседний блок, закодированный в аффинном режиме, содержащий выбранный соседний закодированный подблок, используют для получения кандидата на аффинное объединение. Кандидат на аффинное объединение используется для получения предсказателя на эталонном изображении для текущего блока. Порядок выбора одного из соседних закодированных подблоков следующий: от левого нижнего блока, верхнего правого блока, верхнего правого углового блока, нижнего левого углового блока к верхнему левому угловому блоку (C0 → B0 → B1 → C1 → A0), как показано на Фиг. 2. Кандидата на аффинное объединение для текущего блока 20 получают из ВД в контрольных точках первого доступного соседнего блока, закодированного в аффинном режиме, например, ВД верхнего левого подблока NxN и верхнего правого подблока NxN первого доступного соседнего блока, закодированного в аффинном режиме, используют для получения кандидата на аффинное объединение, если применяют четырехпараметрическую модель аффинного движения. ВД нижнего левого подблока NxN первого доступного соседнего блока, закодированного в аффинном режиме, также используют для получения кандидата на аффинное объединение, когда включены три контрольных точки для шестипараметрической модели аффинного движения.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Раскрыты способ и устройство для кодирования и декодирования видео с компенсацией аффинного движения в системе кодирования видео. Варианты осуществления видеокодера в соответствии с настоящим изобретением получают входные данные, связанные с текущим блоком на текущем изображении, и варианты осуществления видеодекодера в соответствии с настоящим изобретением получают видеопоток, соответствующий сжатым данным, содержащим текущий блок на текущем изображении. Текущий блок закодирован или должен быть закодирован в аффинном режиме в соответствии с моделью аффинного движения. Различные варианты осуществления настоящего изобретения снижают требование к буферизации временного буфера для получения аффинного кандидата. Временной буфер хранит выборочные векторы движения меньше, чем все векторы движения ранее закодированных блоков на данном изображении. Варианты осуществления способа извлекают два или более векторов движения ВД (MV) соседнего блока из временного буфера, где как минимум один из извлеченных векторов движения не соответствует подблоку в первом ряду соседних блоков NxN, ближайшему к верхней границе текущего блока или первой колонке соседних блоков NxN, ближайшей к левой границе текущего блока, и NxN — это размер блока для хранения одного вектора движения во временном буфере. Способ дополнительно извлекает аффинного кандидата, содержащего векторы аффинного движения, используя два или более извлеченных вектора движения соседнего блока, и кодирует или декодирует текущий блок посредством прогнозирования текущего блока, используя один или несколько блоков с компенсацией движения, извлеченных посредством полученного аффинного кандидата. Каждый из векторов аффинного движения прогнозирует движение между точкой текущего блока и соответствующей точкой одного или нескольких блоков с компенсацией движения.
В некоторых вариантах осуществления временной буфер хранит ВД первого ряда соседних блоков NxN и второго ряда соседних блоков NxN, ближайших к верхней границе текущего блока, и временной буфер хранит ВД первой колонки соседних блоков NxN и второй колонки соседних блоков NxN, ближайших к левой границе текущего блока.
В одном варианте осуществления извлеченные ВД содержат первый и второй ВД для четырехпараметрической аффинной модели движения, например, первый и второй ВД заменяют ВД, заменяющие исходные ВД в верхнем левом углу и верхнем правом углу соседнего блока, соответственно, если соседний блок выше или прилегает к верхнему левому углу текущего блока. Первый ВД заменяет ВД, заменяющий исходный ВД в верхнем левом углу соседнего блока, и второй ВД является исходным ВД в верхнем правом углу соседнего блока, если соседний блок находится с левой стороны текущего блока. В варианте осуществления первый и второй ВД соответствуют первому и второму подблоку в соседнем блоке, и первый аффинный ВД из аффинных ВД извлекают, используя первый и второй ВД, положение пикселя текущего блока относительно данного изображения, положение пикселя первого подблока относительно данного изображения и ширину соседнего блока. Второй аффинный ВД из аффинных ВД извлекают, используя первый и второй ВД, ширину соседнего блока и ширину текущего блока.
В другом варианте осуществления извлеченные ВД содержат первый, второй и третий ВД для шестипараметрической аффинной модели движения, например, три ВД для первого, второго и третьего подблоков в соседнем блоке, и первый аффинный ВД извлекают, используя как минимум два из трех ВД, положение пикселя текущего блока относительно данного изображения, положение пикселя первого подблока относительно данного изображения и ширину соседнего блока. Второй аффинный ВД извлекают, используя первый и второй векторы движения, ширину соседнего блока и ширину текущего блока, и третий ВД извлекают, используя первый и второй векторы движения и как минимум одну из высоты соседнего блока и высоты текущего блока. В данном варианте осуществления первый, второй ВД заменяют ВД, заменяющие исходные ВД в верхнем левом углу и верхнем правом углу соседнего блока, и третий ВД является исходным ВД в нижнем левом углу соседнего блока, если соседний блок находится выше текущего блока. Первый, второй и третий ВД заменяют ВД, заменяющие исходные ВД в верхнем левом углу, верхнем правом углу и нижнем левом углу соседнего блока, если соседний блок является прилежащим к верхнему левому углу текущего блока. Первый и третий ВД заменяют ВД, заменяющие исходные ВД в верхнем левом углу и нижнем левом углу соседнего блока, и второй ВД является исходным ВД в верхнем правом углу соседнего блока, если соседний блок находится с левой стороны текущего блока.
Текущий блок прогнозируют посредством блоков с компенсацией движения по векторам аффинного движения в аффинном кандидате в соответствии с четырехпараметрической аффинной моделью движения или в соответствии с шестипараметрической аффинной моделью движения с тремя контрольными точками. Выборочные векторы движения хранятся во временном буфере, например, временной буфер хранит ВД M рядов блока NxN выше текущего блока, и М меньше наибольшей высоты кодирующей ячейки, разделенной на N (CTU_height/N). В другом варианте осуществления временной блок хранит ВД K колонок блока NxN с левой стороны текущего блока, и K равно наибольшей ширине кодирующей ячейки, разделенной на N (CTU_width/N).
В некоторых вариантах осуществления способа полученные ВД являются исходными ВД в двух или более контрольных точках соседнего блока. Контрольные точки содержат как минимум две из верхнего левого угла, верхнего правого угла, нижнего правого угла и нижнего левого угла соседнего блока. В варианте осуществления временной блок хранит ВД 2 рядов блока NxN и 2 колонок блока NxN, содержащих исходные ВД первого ряда соседнего блока NxN, первой колонки соседнего блока NxN, набора рядов верхнего блока NxN и набора колонок самого левого блока NxN. Первый ряд соседнего блока NxN является последним рядом в верхних соседних блоках, ближайшим к верхней границе текущего блока, первая колонка соседнего блока NxN является последней колонкой в левых соседних блоках, ближайшей к левой границе текущего блока, набор рядов верхнего блока NxN является первыми рядами в верхних соседних блоках и набор колонок самого левого блока NxN является первыми колонками в левых соседних блоках.
В еще одном варианте осуществления способ содержит получение входных данных, связанных с текущим блоком, закодированным или подлежащим кодированию в аффинном режиме, рассчитывающим и хранящим аффинные параметры для множества закодированных блоков на текущем изображении, восстанавливающим аффинный параметр одного или нескольких закодированных блоков из временного буфера, соответствующих соседнему блоку текущего блока для получения аффинного кандидата, содержащего аффинные ВД. Текущий блок закодирован или декодирован посредством прогнозирования текущего блока с использованием одного или нескольких блоков с компенсацией движения полученным аффинным кандидатом. Каждый из векторов аффинного движения прогнозирует движение между точкой текущего блока и соответствующей точкой одного или нескольких блоков с компенсацией движения.
Аффинные параметры в варианте осуществления содержат смещение вектора движения (ВД) в горизонтальном направлении и один вектор движения в соседнем блоке, когда модель аффинного движения является четырехпараметрической аффинной моделью движения с использованием в качестве контрольных точек двух точек в верхнем левом углу, верхнем правом углу, верхнем правом углу и нижнем правом углу, или аффинные параметры содержат смещение вектора движения (ВД) в вертикальном направлении и один вектор движения в соседнем блоке, когда аффинная модель движения является четырехпараметрической аффинной моделью движения с использованием в качестве контрольных точек двух точек в верхнем левом углу, верхнем правом углу, нижнем левом углу и нижнем правом углу. Аффинные параметры в другом варианте осуществления содержат смещение ВД в горизонтальном направлении, смещение ВД в вертикальном направлении и вектор движения в соседнем блоке, когда модель аффинного движения является шестипараметрической аффинной моделью движения. Примером вектора движения в соседнем блоке является вектор движения в верхнем левом углу, верхнем правом углу, нижнем правом углу или нижнем левом углу соседнего блока. Аффинные параметр в другом варианте осуществления содержат масштабированное смещение ВД для каждого закодированного блока. Аффинные параметры в еще одном варианте осуществления содержат два или три вектора аффинного движения, представляющие собой векторы движения в двух или трех контрольных точках, и временной буфер хранит два или три вектора аффинного движения для каждого закодированного блока.
Другой вариант осуществления способа содержит получение входных данных, связанных с текущим блоком, закодированным или подлежащим кодированию в аффинном режиме, получение двух или более ВД действительного соседнего блока из временного буфера для текущего блока, получение аффинного кандидата, содержащего аффинные ВД с использованием полученных двух или более ВД действительного соседнего блока, и кодирование или декодирование текущего блока посредством прогнозирования текущего блока с использованием одного или нескольких компенсированных блоков полученным аффинным кандидатом. Действительный соседний блок не содержит соседний блок, прилежащий к верхнему левому углу текущего блока. Временной буфер хранит ВД одного ряда соседнего блока NxN и одной колонки соседнего блока NxN текущего блока, где NxN — это размер блока для хранения одного ВД во временном буфере. Аффинные ВД прогнозируют движение между точкой текущего блока и соответствующей точкой одного или нескольких блоков с компенсацией движения.
Аспекты раскрытия дополнительно предусматривают устройство, содержащее одну или несколько электронных цепей, выполненных с возможностью осуществления способов кодирования видео с компенсацией аффинного движения. Другие аспекты и отличительные признаки данного изобретения станут очевидными специалистам в данной области техники при рассмотрении следующего раскрытия определенных вариантов осуществления.
КРАТКОЕ РАСКРЫТИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВ
На Фиг. 1А показано четырехпараметрическое аффинное прогнозирование, соединяющее текущий блок с одним или несколькими компенсированными блоками в соответствии с двумя контрольными точками.
На Фиг. 1B показано шестипараметрическое аффинное прогнозирование, соединяющее текущий блок с одним или несколькими компенсированными блоками в соответствии с тремя контрольными точками.
На Фиг. 2 показан пример получения аффинного кандидата на основе соседних закодированных блоков для аффинного промежуточного режима или аффинного режима объединения.
На Фиг. 3 показан пример кодирования и декодирования текущего блока с использованием информации от соседнего блока в соответствии с аффинным режимом объединения.
На Фиг. 4А и 4В показаны два примера хранения ВД двух рядов соседнего блока и двух колонок соседнего блока для получения аффинного кандидата в соответствии с вариантами осуществления данного изобретения.
На Фиг. 5 показан пример схемы для системы кодирования видео с компенсацией аффинного движения, содержащей вариант осуществления данного изобретения.
На Фиг. 6 показан пример хранения исходных ВД в контрольных точках соседних блоков для получения аффинного кандидата в соответствии с вариантом осуществления данного изобретения.
На Фиг. 7 показан пример схемы для системы кодирования видео с компенсацией аффинного движения, содержащей варианты осуществления данного изобретения.
На Фиг. 8 показан пример хранения ВД ближайшего ряда соседнего блока и ближайшей колонки соседнего блока для получения аффинного кандидата в соответствии с вариантом осуществления данного изобретения.
На Фиг. 9 показана блок-схема примера системы для видеокодера, выполненного с возможностью прогнозирования и компенсации аффинного движения в соответствии с различными вариантами осуществления данного изобретения.
На Фиг. 10 показана блок-схема примера системы для видеодекодера, выполненного с возможностью компенсации аффинного движения в соответствии с различными вариантами осуществления данного изобретения.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Очевидно, что компоненты данного изобретения, раскрытые и проиллюстрированные в общей форме на фигурах в данном документе, могут быть скомпонованы и спроектированы в широком разнообразии различных конфигураций. Таким образом, следующее более подробное раскрытие вариантов осуществления систем и способов согласно данному изобретению, как представлено на фигурах, не предназначено для ограничения объема изобретения, как представлено в формуле изобретения, но представляет только выборочные варианты осуществления данного изобретения.
Ссылки в данном документе на «вариант осуществления», «некоторые варианты осуществления» или аналогичные термины означают, что определенный отличительный признак, конструкция или характеристика, раскрытая в связи с вариантами осуществления, может быть включена как минимум в один вариант осуществления данного изобретения. Таким образом, фразы «в варианте осуществления» или «в некоторых вариантах осуществления» в различных местах в данном документе необязательно все ссылаются на один и тот же вариант осуществления, данные варианты осуществления могут быть реализованы отдельно или совместно с одним или несколькими другими вариантами осуществления. Кроме того, раскрытые отличительные признаки, конструкции или характеристики могут быть объединены любым подходящим способом в одном или нескольких вариантах осуществления. Специалистам в данной области техники, тем не менее, будет понятно, что изобретение может быть воплощено без одной или нескольких определенных деталей или без других способ, компонентов и т. д. В других случаях хорошо известные конструкции или операции не показаны или не описаны подробно во избежание затруднения понимания аспектов изобретения.
Декодер со стандартом ВЭВК (HEVC) понижает разрешение декодированных векторов движения каждого БП, закодированного посредством промежуточного прогнозирования, включая режим ППВД (AMVP) и режим объединения с соотношением 16:1, и декодер хранит векторы движения с пониженным разрешением в буфере для получения ПВД для следующих блоков на текущем изображении и следующих изображениях.  Вектор движения верхнего левого блока 4х4 в каждом блоке 16х16 хранится в буфере и сохраненный вектор движения представляет собой вектор движения всего блока 16х16. Точность вектора движения может составлять 1/64 пикселя, и предсказатель генерируется посредством применения высокоточного интерполяционного фильтра дискретного косинусного преобразования ИФДКП (DCTIF). Поле высокоточного вектора движения затем закрепляется за точностью 1/8 пикселя перед сохранением в буфере.
B0
B1
B2
Для обработки блока, закодированного в аффинном режиме объединения, определяют первый доступный аффинно закодированный соседний блок в соответствии с порядком выбора соседних закодированных подблоков A, B, C, D и E, показанных на Фиг. 3. На Фиг. 3 показан пример кодирования и декодирования текущего блока 30 с использованием информации соседнего блока в соответствии с аффинным режимом объединения. В этом примере два соседних закодированных подблока B и E текущего блока 30 закодированы в аффинном режиме. Соседний блок 32, содержащий соседний подблок B, может быть блоком, закодированным в аффинном промежуточном режиме, или блоком, закодированным в режиме аффинного объединения, аналогично, соседний блок 34, содержащий соседний закодированный подблок Е может быть блоком, закодированным в аффинном промежуточном режиме, или блоком, закодированным в режиме аффинного объединения. Первый доступный соседний блок, закодированный в аффинном режиме, в этом примере является соседним блоком 32. Кандидата на аффинное объединение для прогнозирования текущего блока 30 получают из вектора движения Vверхнего левого блока 322 NxN, вектора Vдвижения верхнего правого блока 324 NxN первого доступного соседнего блока 32, закодированного в аффинном режиме, если две контрольные точки используются в аффинном режиме. Кандидата на аффинное объединение далее получают из вектора движения Vнижнего левого блока 326 NxN первого доступного соседнего блока 32, закодированного в аффинном режиме, если три контрольных точки используются в аффинном режиме. NxN — это минимальный размер блока для хранения ВД во временном буфере ВД, например, N равно 4. В системах ВЭВК (HEVC) хранятся только векторы движения ряда соседнего блока 4х4 и колонки соседнего блока 4х4 текущей кодирующей ячейки КЯ (CU) или ячейки кодового дерева ЯКД (CTU) текущего ЯКД. ЯКД также является термином для определения наибольшей кодирующей ячейки НКЯ (LCU), которая допустима в системе кодирования видео. Все другие векторы движения либо отклонены, либо понижены в разрешении до 16:1 и сохранены в буфере. Система кодирования видео с компенсацией аффинного движения требует дополнительных буферов ВД для хранения векторов движения соседних закодированных блоков для получения аффинного кандидата.
Варианты осуществления управления буфером для системы кодирования видео раскрыты ниже, где реализована компенсация аффинного движения с пониженными требованиями к буферу.
Первый вариант осуществления. В первом варианте осуществления текущий блок на текущем изображении закодирован или декодирован посредством компенсации аффинного движения в соответствии с аффинным кандидатом, содержащим векторы аффинного движения. Каждый из векторов аффинного движения прогнозирует вектор движения в контрольной точке текущего блока, так как векторы аффинного движения используют для прогнозирования движения между точкой текущего блока и соответствующей точкой компенсированного блока аффинного движения. Временной буфер ВД в первом варианте осуществления хранит векторы движения одного ряда соседнего блока NxN и одной колонки соседнего блока NxN текущего блока. NxN представляет минимальный размер блока для хранения вектора движения во временном буфере ВД, например, N равно 4. В данном варианте осуществления количество ВД, хранящихся во временном буфере ВД, то же, что и в обычном временном буфере ВД ВЭВК для получения ПВД. Если получение аффинного кандидата для текущего блока требует вектора движения в контрольной точке соседнего блока, закодированного в аффинном режиме, и контрольная точка не является текущей ЯКД и не находится в ряду соседнего блока NxN или колонке соседнего блока NxN текущего блока, заменяющий вектор движения извлекают из буфера для получения соответствующего вектора аффинного движения вместо исходного вектора движения в контрольной точке соседнего блока, закодированного в аффинном режиме. Заменяющий вектор движения является вектором движения с пониженным разрешением, сохраненным в буфере, и данный заменяющий вектор движения представляет движение всего блока 16х16. Заменяющий вектор движения может быть просто вектором, используемым подблоком рядом с контрольной точкой. Например, заменяющий вектор движения соответствует подблоку, принадлежащему тому же блоку 16х16, что и контрольная точка. Векторы аффинного движения в аффинном кандидате, полученные в соответствии с первым вариантом осуществления, обычно являются неточными предсказателями вектора движения, так как векторы движения с пониженным разрешением иногда не отражают реальное движение в контрольных точках соседнего блока.
Второй вариант осуществления. Второй вариант осуществления хранит больше векторов движения во временном буфере ВД за счет сохранения ВД M рядов соседнего блока NxN и ВД K колонок соседнего блока NxN. В данном варианте осуществления M и К являются целыми числами, которые больше или равны 2, и N — это целое, больше 1. Вместо хранения всех векторов движения закодированных блоков на текущем изображении во временном буфере ВД, сохраняются выборочные векторы движения меньше всех векторов движения закодированных блоков на текущем изображении. Выборочные векторы движения — это ВД M рядов блока и К колонок блока, где количество рядов блока должно быть меньше высоты наибольшей ячейки кодового дерева, разделенной на N (1 < M <CTU_height / N). Блок NxN относится к минимальному размеру блока для хранения ВД во временном буфере ВД. В примере второго варианта осуществления M и К равны 2, как показано на Фиг. 4А и Фиг. 4В. Временной буфер в этом примере хранит векторы движения первого и второго ряда соседнего блока NxN, ближайшего к верхней границе текущего блока, и временной буфер также хранит векторы движения первой и второй колонки соседнего блока NxN, ближайших к левой границе текущего блока. На Фиг. 4А и Фиг. 4В показано два примера получения аффинного кандидата для текущего блока, закодированного в аффинном режиме с использованием двух рядов соседнего блока и двух колонок соседнего блока. Если векторы движения в контрольных точках соседнего блока не хранятся во временном буфере ВД, так как соответствующие подблоки не находятся в двух рядах соседнего блока и в двух колонках соседнего блока, некоторые заменяющие векторы движения извлекают для получения векторов аффинного движения в аффинном кандидате.
B0’
B1’
B0
B1
E0’
E1’
E2’
E0
E1
E2
A0’
A2’
A0
A2
B2
A1
В примере, показанном на Фиг. 4А, соседние закодированные блоки 41, 42 и 43 текущего блока 40 закодированы в аффинном режиме. Заменяющие векторы V и V движения подблоков 423 и 425 во втором ряду соседнего блока выше текущего блока 40 используют для получения векторов аффинного движения в аффинном кандидате вместо исходных векторов V и V движения подблоков 422 и 424 в первом ряду соседнего закодированного блока 42. Заменяющие векторы V, V и Vдвижения подблоков 433, 435, 437 во втором ряду соседнего блока выше текущего блока 40 или во второй колонке соседнего блока слева от текущего блока 40 используют для получения вектора движения вместо исходных векторов V, V и V движения подблоков 432, 434 и 436. Заменяющие векторы V и V движения подблоков 413 и 415 во второй соседней колонке слева от текущего блока 40 используют для получения векторов аффинного движения вместо исходных векторов V и V движения подблоков 412 и 416 в первой колонке соседнего закодированного блока 41. Исходные векторы V и V движения подблоков 426 и 414 используют для получения векторов аффинного движения для текущего блока 40, так как два подблока 426 и 414 находятся в первом и втором ряду соседнего блока или первой и второй колонке соседнего блока текущего блока 40. Полученные векторы аффинного движения в аффинном кандидате используют для прогнозирования движения между точками текущего блока 40 и соответствующими точками одного или нескольких компенсированных блоков с использованием модели аффинного движения.
B0’
B1’
B2’
B0
B1
B2
E0’
E1’
E2’
E0
E1
E2
A0’
A1’
A2’
A0
A0
A2
Фиг. 4B является альтернативным решением для способа получения аффинного кандидата, показанного на Фиг. 4А. На Фиг. 4B при получении аффинного кандидата для кодирования и декодирования текущего блока 44 все исходные векторы движения в контрольных точках соседнего блока, закодированного в аффинном режиме, заменены векторами движения других подблоков в первом и втором ряду соседнего блока и первой и второй колонке соседнего блока текущего блока 44. Контрольные точки для блока, закодированного в аффинном режиме, спрогнозированные шестипараметрической моделью аффинного движения, содержат верхний левый угол, верхний правый угол и нижний левый угол блока, закодированного в аффинном режиме. Заменяющие векторы V, V и Vдвижения подблоков 463, 465 и 467 в соседнем блоке 46, закодированном в аффинном режиме, используют для получения векторов аффинного движения вместо использования исходных векторов V ,V и Vдвижения подблоков 462, 464 и 466. Заменяющие векторы V,Vи V движения подблоков 473, 475 и 477 в соседнем блоке 47, закодированном в аффинном режиме, используются для получения векторов аффинного движения вместо исходных векторов V, V и V движения подблоков 472, 474 и 476. Заменяющие векторы V, V и V движения подблоков 453, 455 и 457 в соседнем блоке 45, закодированном в аффинном режиме, используют для получения векторов аффинного движения вместо исходных векторов V, V и V движения подблоков 452, 454 и 456. В общем, другие позиции в M рядах соседнего блока и K колонках блока могут быть использованы для получения аффинного кандидата в данном варианте осуществления.
Не нарушая общности, только способ получения аффинного кандидата, показанный на Фиг. 4А, раскрыт далее. В первом примере получают аффинного кандидата, содержащего три вектора аффинного движения Mv0, Mv1 и Mv2, для прогнозирования текущего блока 40 с использованием шестипараметрической модели аффинного движения. В первом примере векторы аффинного движения аффинного кандидата получены из соседнего блока 42, закодированного в аффинном режиме. Вектор Mv0 аффинного движения = (V0_x, V0_y) для первой контрольной точки в верхнем левом углу получен за счет Равенства (6).
0_x
B0’_x
B2_x
B0’_x
B1’_x
B0’_x
V = V + (V–V ) * ( posCurPU_Y–posB0’_Y ) / (2*N) +(V–V ) * (posCurPU_X – posB0’_X) / RefPU_width,
0_y
B0’_y
B2_y
B0’_y
B1’_y
B0’_y
V = V + (V–V ) * (posCurPU_Y–posB0’_Y) / (2*N)+ (V–V ) * (posCurPU_X – posB0’_X) / RefPU_width;    (6)
B0’
B0’_x
B0’_y
B1’
B1’_x
B1’_y
B2
B2_x
B2_y
1_x
1_y
2_x
2_y
где векторы движения V= (V, V), V= (V, V) и V= (V, V) являются тремя векторами движения, полученными из M рядов соседнего блока NxN и K колонок соседнего блока NxN. Также следует понимать, что данные векторы движения могут быть заменены соответствующими векторами движения любых других выбранных подблоков в M рядов соседнего блока NxN и K колонок соседнего блока NxN текущего блока. Координата (posCurPU_X, posCurPU_Y) представляет собой положение пикселя образца верхнего левого угла текущего блока 40 относительно образца верхнего левого угла текущего изображения. Координата (posB0’_X, posB0’_Y) представляет собой положение пикселя верхнего левого образца подблока 422 относительно образца верхнего левого угла текущего изображения. RefPU_width представляет собой ширину соседнего блока 42. Векторы аффинного движения Mv1= (V, V) и Mv2 = (V, V) для второй и третьей контрольных точек в верхнем правом и нижнем левом углу соответственно получены посредством Равенства (7).
1_x
0_x
B1’_x
B0’_x
V = V + (V–V) * PU_width / RefPU_width,
1_y
0_y
B1’_y
B0’_y
V = V + (V–V) * PU_width / RefPU_width;
2_x
0_x
B2_x
B0’_x
V = V + (V–V) * PU_height / (2*N),
2_y
0_y
B2_y
B0’_y
V = V + (V–V) * PU_height / (2*N);    (7)
где PU_width и PU_height представляют собой ширину и высоту текущего блока 40.
Во втором примере аффинный кандидат, содержащий два вектора Mv0 и Mv1 аффинного движения, получен для прогнозирования текущего блока 40 с использованием четырехпараметрической модели аффинного движения. Во втором примере также используются векторы движения из соседнего блока 42, закодированного в аффинном режиме, для получения аффинного кандидата. Векторы аффинного движения Mv0 = (V0_x, V0_y) и Mv1= (V1_x, V1_y) для первой и второй контрольной точки в верхнем левом и верхнем правом углу, соответственно, получены посредством Равенства (8).
0_x
B0’_x
B1’_y
B0’_y
B1’_x
B0’_x
V = V– (V–V ) * ( posCurPU_Y–posB0’_Y ) / RefPU_width +(V–V ) * (posCurPU_X – posB0’_X) / RefPU_width,
0_y
B0’_y
B1’_x
B0’_x
B1’_y
B0’_y
V = V + (V–V ) * (posCurPU_Y–posB0’_Y) / RefPU_width+ (V–V ) * (posCurPU_X – posB0’_X) / RefPU_width;
1_x
0_x
B1’_x
B0’_x
V = V + (V–V) * PU_width / RefPU_width,
1_y
0_y
B1’_y
B0’_y
V = V + (V–V) * PU_width / RefPU_width.         (8)
Учитывая то, что линейный буфер хранения векторов движения верхних ЯКД намного больше буфера колонок хранения векторов движения левой ЯКД в одном примере, отсутствует необходимость ограничивать значение K во втором варианте осуществления, все векторы движения левой ЯКД сохраняются за счет установки К равной ширине наибольшей кодирующей ячейки, разделенной на N (K = CTU_width/N).
0x
0y
1x
1y
Третий вариант осуществления. В третьем варианте осуществления аффинные параметры или контрольные точки для каждого блока фиксированного размера или каждой КЯ сохраняются специально. В Равенстве (3) вектор движения Mv0 = (V, V) верхнего левого подблока NxN и вектор движения Mv1 = (V, V) верхнего правого подблока NxN используют для получения векторов движения всех подблоков NxN в текущем блоке. Текущий блок является кодирующей ячейкой КЯ или блоком прогнозирования БП. Полученные векторы движения могут быть представлены вектором Mv0 движения и смещением ВД в зависимости от положения. Из Равенства (3) для получения вектора движения для подблока NxN в положении (x,y), смещение ВД в горизонтальном направлении H_MV_offset и смещение ВД в вертикальном направлении V_MV_offset показаны в Равенстве (9).
1x
0x
1y
0y
H_MV_offset = (V– V) * N / w, (V– V) * N / w;
1y
0y
1x
0x
V_MV_offset = –(V– V) * N / w, (V– V) * N / w.     (9)
0x
0y
1x
1y
2x
2y
Для шестипараметрической модели аффинного движения вектор движения Mv0 = (V, V) верхнего левого подблока NxN, вектор движения Mv1 = (V, V) верхнего правого подблока NxN и вектор движения Mv2 = (V, V) нижнего левого подблока NxN используют для получения векторов движения всех подблоков NxN в текущем блоке. Поле вектора движения каждого пикселя A(x,y) в текущем блоке может быть получено на основе Трех векторов Mv0, Mv1 и Mv2 в соответствии с Равенством (10).
(10)
x
y
Аналогично, для получения вектора движения (V, V) для подблока NxN в положении (x,y) в соответствии с шестипараметрической моделью аффинного движения смещение ВД в горизонтальном направлении H_MV_offset и смещение ВД в вертикальном направлении V_MV_offset показаны в Равенстве (11).
1x
0x
1y
0y
H_MV_offset = (v– v)*N/w, (v– v)*N/w;
2x
0x
2y
0y
V_MV_offset = (v– v)*N/h, (v– v)*N/ h;    (11)
где w и h в Равенствах (9) и (11) являются шириной и высотой текущего блока, закодированного в аффинном режиме.
В случае назначения вектора движения в центральном пикселе подблока NxN в качестве вектора движения контрольной точки, делитель в Равенствах (6) и (8) уменьшают на N. Например, Равенство (6) может быть изменено следующим образом.
0_x
B0’_x
B2_x
B0’_x
B1’_x
B0’_x
V = V + (V–V ) * ( posCurPU_Y–posB0’_Y ) / (N) +(V–V ) * (posCurPU_X – posB0’_X) / (RefPU_width – N)
0_y
B0’_y
B2_y
B0’_y
B1’_y
B0’_y
V = V + (V–V ) * (posCurPU_Y–posB0’_Y) / (N)+ (V–V ) * (posCurPU_X – posB0’_X) / (RefPU_width – N)  (12)
1x
0x
1y
0y
0x
0y
2x
0x
2y
0y
0x
0y
1x
0x
1y
0y
2x
0x
2y
0y
0x
0y
В третьем варианте осуществления хранятся аффинные параметры, такие как смещение ВД в горизонтальном и вертикальном направлении для каждого закодированного блока. Закодированный блок может быть либо блоком фиксированного размера MxM или кодирующей ячейкой КЯ. Размер блока фиксированного размера МхМ может зависеть от минимального размера, допустимого для применения прогнозирования аффинного движения. В примере М равно 8, если наименьший размер блока в промежуточном аффинном режиме или режиме аффинного объединения составляет 8х8. Для каждого блока MxM или для каждой КЯ аффинные параметры, содержащие смещение ВД в горизонтальном направлении (V– V)*N/w, (V– V)*N/w и один вектор движения подблока NxN, например, Mv0 (V,V), сохраняются для четырехпараметрической модели аффинного движения, в которой используют верхнюю левую и верхнюю правую контрольные точки. Аффинные параметры, содержащие смещение ВД в вертикальном направлении (V– V)*N/h, (V– V)*N/h и один вектор движения подблока NxN, например, Mv0 (V,V), сохраняются для четырехпараметрической модели аффинного движения, в которой используют верхнюю левую и нижнюю левую контрольные точки. Если применяется шестипараметрическая модель аффинного движения, использующая верхние левые, верхние правые и нижние левые контрольные точки, сохраняются аффинные параметры, содержащие смещение ВД в горизонтальном направлении (V– V) * N / w, (V– V) * N / w и смещение ВД в вертикальном направлении (V– V) * N / h, (V– V) * N / h, а также один вектор движения подблока NxN, например, Mv0 (V,V). Векторы аффинного движения в аффинном кандидате могут быть получены посредством сохраненных аффинных параметров одного или нескольких блоков MxM или КЯ, соответствующих соседнему блоку.
1x
0x
1y
0y
2x
0x
2y
0y
Для обеспечения точности горизонтальное или вертикальное смещение ВД умножается на масштабный множитель, где масштабный множитель может быть заранее определенным числом или масштабный множитель может быть установленным равным наибольшему размеру кодирующей ячейки или ЯКД. Например, сохраняется масштабированное смещение ВД в горизонтальном направлении ((V– V) * S / w, (V– V) * S / w) и масштабированное смещение ВД в вертикальном направлении ((V– V) * S / h, (V– V) * S / h). В некоторых примерах множитель S установлен равным размеру ЯКД или четверти размера ЯКД.
В другом примере сохраняются векторы движения двух или трех контрольных точек каждого блока МхМ или каждой КЯ. Векторы движения могут быть сохранены в линейном буфере. Векторы аффинного движения в аффинном кандидате для прогнозирования текущего блока получены посредством сохраненных векторов движения контрольных точек, соответствующих соседнему блоку.
На Фиг. 5 показан пример схемы для системы кодирования видео с компенсацией аффинного движения, содержащей третий вариант осуществления данного изобретения. Входные данные, связанные с текущим блоком, закодированным или подлежащим кодированию в аффинном режиме, получают посредством систему кодирования видео на шаге S50. Система кодирования видео рассчитывает и сохраняет аффинные параметры для соседних блоков на шаге S52 и получает аффинные параметры, соответствующие соседнему блоку текущего блока на шаге S54. Аффинного кандидата, содержащего векторы аффинного движения, получают в соответствии с полученными аффинными параметрами на шаге S56. Система кодирования видео затем кодирует или декодирует ткущий блок в аффинном режиме с использованием аффинного кандидата на шаге S58.
Четвертый вариант осуществления. В четвертом варианте осуществления в сравнении с обычным временным буфером ВД для ВЭВК, векторы движения в одном или нескольких рядах блока NxN или в одной или нескольких колонках блока NxN сохраняются во временном буфере ВД для компенсации аффинного движения. Концепция четвертого варианта осуществления аналогична второму варианту осуществления, но исходные векторы движения подблоков, расположенные в верхнем ряду и самой левой колонке одного или нескольких закодированных соседних блоков, сохранены вместо заменяющих векторов движения в подблоках, расположенных ближе к текущему блоку. Временной буфер в данном варианте осуществления сохраняет исходные векторы движения первого ряда соседнего блока NxN, первой колонки соседнего блока NxN, набора рядов верхнего блока NxN и набора колонок самого левого блока NxN. Первый ряд соседнего блока NxN является последним рядом в одном или нескольких верхних соседних блоках, ближайших к верхней границе текущего блока, первая колонка соседнего блока NxN является последней колонкой в одной или нескольких левых соседних блоках, ближайших к левой границе текущего блока. Верхний набор рядов блока NxN содержит первый ряд в одном или нескольких соседних блоках и набор самых левых колонок блока NxN содержит первую колонку в одном или нескольких левых соседних блоках.
A1
B2
A2
A0
E2
E0
E1
B0
B1
A2
A0
E2
E0
E1
B0
B1
На Фиг. 6 показан пример получения аффинного кандидата за счет сохранения векторов движения рядов блока 2NxN и колонок блока 2NxN. Как показано на Фиг. 6, исходные векторы V и V движения подблоков 614 и 626 в первой колонке блока NxN, прилежащей к левой границе текущего блока 60,, и первый ряд блока NxN выше текущего блока 60 хранятся в буфере. Первая колонка блока NxN и первый ряд блока NxN в соседних блоках 61, 62 и 63 являются ближайшей колонкой и рядом к текущему блоку 60. Исходные векторы V, V, V, V, V, V, и V движения подблоков 616, 612, 636, 632, 634, 622 и 624 в самой левой колонке блока NxN соседних блоков 61 и 62 или верхнем ряду блока NxN соседних блоков 62 и 63 также сохраняются в буфере. Например, данные исходные векторы V, V, V, V, V, V и V движения самой левой колонки блока NxN или верхнего ряда блока NxN соседних блоков перезаписывают пространство буфера для сохранения векторов движения подблоков 615, 613, 637, 633, 635, 623 и 625 во втором ряду блока NxN и второй колонке блока NxN. В данном варианте осуществления исходные векторы движения в контрольных точках соседних блоков сохраняются во временном буфере ВД с превышением только одного дополнительного ряда ВД и одной дополнительной колонки ВД.
На Фиг. 7 показан пример схемы для системы кодирования видео с компенсацией аффинного движения, содержащей второй и четвертый варианты осуществления данного изобретения. Входные данные, связанные с текущим блоком на текущем изображении, получены на стороне видеодекодера, или видеопоток, соответствующий сжатым данным, содержащим текущий блок, получен на стороне видеодекодера на шаге S70. На шаге S72 извлекают два или более векторов движения соседнего блока из временного буфера, где как минимум один извлеченный вектор движения не соответствует подблоку в первом ряду соседнего блока NxN или первой колонке соседнего блока NxN текущего блока. Система кодирования видео извлекает аффинного кандидата, используя векторы движения на шаге S74, и кодирует или декодирует текущий блок посредством прогнозирования текущего блока, используя один или несколько блоков с компенсацией движения посредством полученного аффинного кандидата на шаге S76. Векторы аффинного движения прогнозируют движения между точками текущего блока и соответствующими точками одного или нескольких блоков с компенсацией движения. Временной буфер хранит выборочные векторы движения меньше, чем все векторы движения закодированных блоков на данном изображении. Как минимум один из полученных векторов движения заменяет вектор движения в соответствии со вторым вариантом осуществления, и все полученные векторы движения являются исходными векторами движения в контрольных точках соседнего блока в соответствии с четвертым вариантом осуществления.
B2
B3
A1
A3
Пятый вариант осуществления. В пятом варианте осуществления система кодирования видео с компенсацией аффинного движения повторно использует обычный временной буфер ВД, необходимый в соответствии со стандартом ВЭВК, поэтому дополнительный буфер не требуется. Другими словами, для прогнозирования аффинного движения необходимы только векторы движения одного ряда соседнего блока NxN и одной колонки соседнего блока NxN в данном варианте осуществления. На Фиг. 8 показан пример получения аффинного кандидата с использованием векторов движения одного ряда соседнего блока NxN и одной колонки соседнего блока NxN. Как показано на Фиг. 8, два вектора движения в ближайшем ряду блока NxN или в ближайшей колонке блока NxN в соседнем блоке текущего блока 80 используют для получения аффинного кандидата для текущего блока. Например, когда соседний блок 82 выше текущего блока 80 выбран для получения аффинного кандидата, векторы V и Vдвижения в подблоках 826 и 828 извлекают для получения векторов аффинного движения в соответствии с четырехпараметрической моделью аффинного движения; когда соседний блок 81 с левой стороны текущего блока 80 выбран для получения аффинного кандидата, векторы V и Vдвижения в подблоках 814 и 818 извлекают для получения векторов аффинного движения в аффинном кандидате в соответствии с четырехпараметрической моделью аффинного движения. Соседний блок 83, прилежащий к верхнему левому углу текущего блока 80, не является действительным соседним блоком для получения аффинного кандидата в данном варианте осуществления.
B2
B3
Равенство (13) показывает пример изменения Равенства (8) для получения векторов Mv0 и Mv1 аффинного движения в аффинном кандидате из векторов V и Vдвижения в соседнем блоке 82 в соответствии с четырехпараметрической моделью аффинного движения.
0_x
B2_x
B3_y
B2_y
B
B3_x
B2_x
B
V = V– (V–V ) * ( posCurPU_Y–posB2_Y ) / RefPU_width +(V–V ) * (posCurPU_X – posB2_X) / RefPU_width,
0_y
B2_y
B3_x
B2_x
B
B3_y
B2_y
B
V = V + (V–V ) * (posCurPU_Y–posB2_Y) / RefPU_width+ (V–V ) * (posCurPU_X – posB2_X) / RefPU_width;
1_x
0_x
B3_x
B2_x
B
V = V + (V–V) * PU_width / RefPU_width,
1_y
0_y
B3_y
B2_y
B
V = V + (V–V) * PU_width / RefPU_width;         (13)
0_x
0_y
1_x
1_y
B
где (V, V) представляет собой вектор Mv0 движения в верхнем левом углу текущего блока 80, и (V, V) представляет собой вектор Mv1 движения в верхнем правом углу текущего блока 80.Координата (posCurPU_X, posCurPU_Y) представляет собой положение пикселя образца нижнего левого угла текущего блока 80 относительно образца верхнего левого угла на текущем изображении. Координата (posB2_X, posB2_Y) представляет собой положение пикселя образца нижнего левого угла подблока 826 относительно образца верхнего левого угла на текущем изображении. RefPU_width представляет собой ширину соседнего блока 82, и PU_width представляет собой ширину текущего блока 80.
Варианты осуществления с шестого по девятый, раскрытые ниже, относятся к осуществлению разложения вектора на адаптивное движение РВАД (AMVR) с компенсацией аффинного движения. РВАД предусматривает гибкую схему для уменьшения превышения передачи разницы вектора движения РВД (MVD) за счет адаптивного ограничения РВД до целого разрешения пикселя. Метку РВАД назначают кодирующей ячейке КЯ или блоку прогнозирования БП для обозначения того, используется ли целое разрешение пикселя или частичное разрешение пикселя. Внедрение компенсации аффинного движения, раскрытое в литературе, предлагает не устанавливать метку РВАД для КЯ или БП, закодированных в аффинном режиме, чтобы РВАД всегда было отключено для блоков, закодированных в аффинном режиме. Векторы аффинного движения для всех контрольных точек в блоке, закодированном в аффинном режиме, находятся в частичном пиксельном разрешении по умолчанию.
Шестой вариант осуществления.  В шестом варианте осуществления разрешение вектора адаптивного движения обеспечено с компенсацией аффинного движения и метка РВАД установлена для каждого блока, закодированного в аффинном режиме. Метка РВАД в одном примере только управляет разрешением РВД для блока, закодированного в аффинном режиме, чтобы оно было целым пиксельным разрешением или частичным пиксельным разрешением. Метка РВАД в другом примере управляет разрешением РВД, а также разрешением предсказателей вектора движения ПВД для блока, закодированного в аффинном режиме, чтобы окончательные векторы движения имели целое разрешение, если метка РВАД отображает, что используется целое пиксельное разрешение. Для текущего блока, закодированного в аффинном режиме, например, в промежуточном аффинном режиме, существует М РВД, рассчитанных из М соответствующих ПВД, где М относится к количеству контрольных точек для текущего блока. M в этом примере выбирают из 0, 1, 2, 3 и 4. М соответствующих ПВД являются векторами аффинного движения в аффинном кандидате, и каждый вектор аффинного движения является предсказателем для вектора движения одной контрольной точки для блока, закодированного в аффинном режиме. Если текущий блок закодирован в промежуточном аффинном режиме, и метка РВАД является истинной, для текущего блока используется обозначение целого пиксельного разрешения, РВД контрольных точек являются целым пиксельным разрешением. В случае, когда метку РВАД также используют для регулирования разрешения ПВД, все ПВД, связанные с РВД контрольных точек, также округляют до целого пиксельного разрешения, если метка РВАД является истинной. В случае, когда метку РВАД используют только для регулирования разрешения РВД, все ПВД, связанные с РВД контрольных точек, могут быть частичным пиксельным разрешением, если метка РВАД является истинной. Для контрольных точек без связанной РВД, т. е. когда РВД прогнозируется равной нулю, ПВД для контрольных точек может все еще быть в частичном пиксельном разрешении.
Седьмой вариант осуществления.В седьмом варианте осуществления сигнал РВД устанавливается до соответствующей метки РВАД в синтаксической структуре, и для блока, закодированного в аффинном режиме, если существует как минимум одна ненулевая РВД для контрольных точек блока, закодированного в аффинном режиме, пиксельное разрешение как минимум одной ненулевой РВД или как минимум одного декодированного вектора движения определяют в соответствии с меткой РВАД. Декодированный вектор движения получают за счет сложения РВД и соответствующего ПВД в аффинном кандидате, выбранном для блока, закодированного в аффинном режиме. Если РВД для всех контрольных точек блока, закодированного в аффинном режиме, равны нулю, ПВД контрольных точек может оставаться в частичном пиксельном разрешении, и нет необходимости установки метки РВАД в видеопотоке.
Восьмой вариант осуществления. В данном варианте осуществления блок, закодированный в промежуточном аффинном режиме, ограничен однонаправленным прогнозированием за счет блокировки двунаправленного прогнозирования для снижения сложности системы и превышения РВД. Например, если аффинная метка обозначает, что текущий блок закодирован или должен быть закодирован в промежуточном аффинном режиме, направление interDir между прогнозированием устанавливается на 0 или 1, где 0 обозначает двунаправленное прогнозирование Списка 0 и 1 обозначает двунаправленное прогнозирование Списка 1. В одном примере восьмого варианта осуществления двунаправленное прогнозирование допустимо для блока, закодированного в аффинном промежуточном режиме, только если РВД блока, закодированного в аффинном промежуточном режиме, является целым пиксельным разрешением. Другими словами, обеспечение или блокировка двунаправленного прогнозирования для блока, закодированного в промежуточном аффинном режиме, зависит от значения метки РВАД для блока, закодированного в аффинном промежуточном режиме. Превышение РВД относительно мало, когда метка РВАД обозначает, что РВД блока, закодированного в аффинном режиме, является целым пиксельным разрешением так, что двунаправленное прогнозирование допустимо для блока, закодированного в промежуточном аффинном режиме.
Десятый вариант осуществления. Способ кодирования видео или система кодирования видео, реализующая девятый вариант осуществления, определяет разрешение вектора движения для текущего блока в соответствии с направлением interDir между прогнозированием текущего блока и закодирован ли текущий блок в промежуточном аффинном режиме. В данном варианте осуществления направление interDir между прогнозированием и аффинная метка для текущего блока устанавливаются до метки РВАД для текущего блока в синтаксической структуре КЯ так, что когда interDir равно 2, обозначая, что для текущего блока применяют двунаправленное прогнозирование, и аффинная метка является истинной, обозначая, что используется аффинный промежуточный режим, метка РВАД прогнозируется истинной, и отсутствует необходимость в ее установке для текущего блока.
На Фиг. 9 показана блок-схема примера системы для видеокодера 900, основанной на высокоэффективном видеокодировании ВЭВК с компенсацией аффинного движения в соответствии с вариантом осуществления данного изобретения. Промежуточное прогнозирование 910 предлагает промежуточные предсказатели на основе восстановленных видеоданных текущего изображения, где аффинное прогнозирование 912 осуществляет оценку движения ОД (ME) и компенсацию движения КД (MC) в соответствии с моделью аффинного движения для обеспечения предсказателей на основе видеоданных с других изображений. Каждый блок на текущем изображении, обработанный аффинным прогнозированием 912, выбирает шифрование в промежуточном аффинном режиме посредством промежуточного аффинного прогнозирования 9122 или шифрование в аффинном режиме объединения посредством аффинного прогнозирования 9124 объединения. Для блока, закодированного в промежуточном аффинном режиме или аффинном режиме объединения, конечного аффинного кандидата выбирают из одного или нескольких аффинных кандидатов для получения одного или нескольких компенсированных блоков с использованием модели аффинного движения, полученной конечным аффинным кандидатом, и один или несколько компенсированных блоков используют для прогнозирования блока.  Аффинный кандидат может быть получен с использованием одного из вариантов осуществления с временным буфером ВД, который хранит выборочные векторы движения меньше, чем все векторы движения закодированных блоков на данном изображении. Аффинное прогнозирование 9124 объединения создает одного или нескольких аффинных кандидатов объединения в соответствии с векторами движения одного или нескольких соседних закодированных блоков и вводит одного или нескольких аффинных кандидатов объединения в список кандидатов на объединение. Режим аффинного объединения позволяет переносить векторы аффинного движения в контрольных точках из соседнего закодированного блока; таким образом, информация движения устанавливается только индексом объединения. Индекс объединения для выбора конечного аффинного кандидата затем устанавливается в закодированном видеопотоке. Кандидат аффинного объединения может быть получен с использованием одного из вариантов осуществления данного изобретения. Для блока, закодированного в аффинном промежуточном режиме, информация движения, например, разница вектора движения РВД между аффинными векторами движения в конечном аффинном кандидате и векторами движения в контрольных точках блока, закодирована в закодированном видеопотоке. Разрешение РВД для блока, закодированного в промежуточном аффинном режиме, является либо целым пиксельным разрешением или частичным пиксельным разрешением в соответствии с вариантом осуществления данного изобретения. Переключатель 914 выбирает один из выводов из промежуточного прогнозирования 910 и аффинного прогнозирования 912 и подает выбранный предсказатель на сумматор 916 для формирования ошибок прогнозирования, также называемых остаточным сигналом прогнозирования.
Остаточный сигнал прогнозирования далее обрабатывается посредством трансформации Т (Т) 918, а затем — квантования К (Q) 920. Трансформированный и квантованный остаточный сигнал затем кодируется энтропическим кодером 934 для формирования закодированного видеопотока. Закодированный видеопоток затем заполняется дополнительной информацией, например, индексом объединения и РВД. Данные, связанные с дополнительной информацией, также предоставляются на энтропический кодер 934. Когда используется режим прогнозирования компенсации движения, эталонное изображение или эталонные изображения должны быть реконструированы также на стороне кодера. Трансформированный и квантованный остаточный сигнал обрабатывается обратным квантованием ОК (IQ) 922 и обратной трансформацией ОТ (IT) 924 для восстановления остаточного сигнала прогнозирования эталонного изображения или эталонных изображений. Как показано на Фиг. 9, остаточный сигнал прогнозирования восстанавливают посредством добавления обратно к выбранному предсказателю при восстановлении ВОС (REC) 926 для получения восстановленных видеоданных. Восстановленные видеоданные могут храниться в буфере эталонного изображения (буф. эт. изобр.) 932 и использоваться для прогнозирования других изображений. Восстановленные видеоданные из ВОС 926 могут ухудшаться различными способами в связи с обработкой кодированием, следовательно, деблочный фильтр ДФ (DF) 928 обработки в кольце и адаптивное смещение образца АСО (SAO) 930 применяют к восстановленным видеоданным перед сохранением в буфер 932 эталонного изображения для дальнейшего улучшения качества изображения. Информация ДФ из ДФ 928 и информация АСО из АСО 930 также предоставляется в энтропический кодер 934 для внедрения в закодированный видеопоток. Временной буфер ВД для хранения векторов движения для получения аффинного кандидата может быть внедрен в буф. 932 эт. изоб. или прочие устройства памяти, соединенные с аффинным прогнозированием 912.
Соответствующий видеодекодер 1000 для видеокодера 900 на Фиг. 9 показан на Фиг. 10. Закодированный видеопоток является вводом для видеодекодера 1000 и декодирован энтропическим декодером 1010 для восстановления трансформированного и квантованного остаточного сигнала, информации ДФ и АСО и другой системной информации. Процесс декодирования декодера 1000 аналогичен кольцу восстановления на кодере 1000 за исключением только того, что декодер 1000 требует компенсации движения КД (MC) 1014 в аффинном прогнозировании 1014. Аффинное прогнозирование 1014 содержит промежуточное аффинное прогнозирование 10142 и аффинное прогнозирование 10144 объединения. Блоки, закодированные в промежуточном аффинном режиме, декодируются посредством промежуточного аффинного прогнозирования 10142, а блоки, закодированные в аффинном режиме объединения, декодируются посредством аффинного прогнозирования 10144 объединения. Конечного аффинного кандидата выбирают для блока, закодированного в промежуточном аффинном режиме или аффинном режиме объединения, и один или несколько компенсированных блоков получают в соответствии с конечным аффинным кандидатом. Конечный аффинный кандидат может быть получен в соответствии с одним из вариантов осуществления данного изобретения с временным буфером ВД, который хранит выборочные ВД меньше, чем все ВД закодированных блоков на текущем изображении. Переключатель 1016 выбирает промежуточный предсказатель из промежуточного прогнозирования 10512 или аффинный предсказатель из аффинного прогнозирования 1014 в соответствии с информацией режима декодирования. Трансформированный и квантованный остаточный сигнал восстанавливается обратным квантованием ОК (IQ) 1020 и обратной трансформацией ОТ (IT) 1022. Восстановленный трансформированный и квантованный остаточный сигнал восстанавливают посредством добавления обратно предсказателя в ВОС 1018 для получения восстановленного видео. Восстановленное видео далее обрабатывается ДФ 1024 и АСО 1026 для генерирования конечного декодированного видео. Если изображение, декодируемое в настоящий момент, является эталонным изображением, восстановленное видео изображения, декодируемого в настоящий момент, также сохраняется в буф.1028. эт. изоб.  Временной буфер ВД для хранения векторов движения для получения аффинного кандидата может быть внедрен в буф. 1028 эт. изоб. или прочие устройства памяти, соединенные с аффинным прогнозированием 1014.
Различные компоненты видеокодера 900 и видеодекодера 1000 на Фиг. 9 и Фиг. 10, и также различные процессы кодирования видео, раскрытые в раскрытых вариантах осуществления, могут быть осуществлены компонентами аппаратного обеспечения, один или несколько процессоров выполнены с возможностью осуществления программных инструкций, сохраненных в памяти, или комбинацией аппаратного обеспечения и процессора. Например, процессор выполняет программные инструкции для управления получением входных данных, связанных с текущим блоком. Процессор оснащен одним или несколькими обрабатывающими ядрами. В некоторых примерах процессор осуществляет программные инструкции для выполнения функций в некоторых компонентах в кодере 900 и декодере 1000, и память, имеющая электрическое соединение с процессором, используется для хранения программных инструкций, информации, соответствующей аффинным режимам, восстановленных изображений блоков и/или промежуточных данных во время процесса кодирования или декодирования. Память в некоторых вариантах осуществления содержит энергонезависимый машиночитаемый носитель, например, полупроводниковую или твердотельную память, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), жесткий диск, оптический диск или другие подходящие носители данных. Память также может представлять собой комбинацию двух или более энергонезависимых машиночитаемых носителей, указанных выше. Как показано на Фиг. 9 и 10, кодер 900 и декодер 1000 могут быть внедрены в одно и то же электронное устройство так, что различные функциональные компоненты кодера 900 и декодера 1000 могут быть использованы совместно или повторно использованы, если они внедрены в одно и то же электронное устройство. Например, одно или более из следующего: восстановление 926, трансформация 918, квантование 920, деблочный фильтр 928, адаптивное смещение 930 образца и буфер 932 эталонного изображения на Фиг. 9 может также быть использовано для функционирования как восстановление 1018, трансформация 1022, квантование 1020, деблочный фильтр 1024, адаптивное смещение 1026 образца и буфер 1028 эталонного изображения на Фиг. 10, соответственно. В некоторых примерах часть промежуточного прогнозирования 910 и аффинного прогнозирования 912 на Фиг. 9 может совместно использовать или повторно использовать часть промежуточного прогнозирования 1012 и аффинного прогнозирования 1014 на Фиг. 10.
Несмотря на то, что раскрыты варианты осуществления способа кодирования видео с компенсацией аффинного движенияс первого по девятый, изобретение не ограничено данными вариантами осуществления. В каждом варианте осуществления выбор способа кодирования видео с компенсацией аффинного движения является примером иллюстрирования различных вариантов осуществления и не должен быть понято как ограничение или требование к любому варианту осуществления изобретения. Раскрытие выше представлено, чтобы специалист в данной области техники мог использовать данное изобретение на практике согласно представленному в контексте определенного применения и его требований. Различные модификации раскрытого варианта осуществления будут понятны специалистам в данной области техники, и общие принципы, указанные здесь, могут быть применены к другим вариантам осуществления. Таким образом, данное изобретение не ограничено определенными показанными и раскрытыми вариантами осуществления, но должно соответствовать самому широкому объему, соответствующему принципам и новым функциям, раскрытым здесь. В подробном раскрытии выше различные определенные детали показаны, чтобы обеспечить глубокое понимание настоящего изобретения. Несмотря на это, специалистам в данной области техники должно быть понятно, что данное изобретение может быть осуществлено.
Изобретение может быть осуществлено в других специальных формах без отступления от сущности или существенных характеристик. Раскрытые примеры следует рассматривать во всех отношениях только как иллюстративные и не имеющие ограничительного характера. Объем изобретения, таким образом, лучше всего отражается прилагаемой формулой изобретения, а не следующим раскрытием. Все изменения, относящиеся к значению и диапазону эквивалентности формулы изобретения, должны входить в их объем.