УСТРОЙСТВО И СПОСОБ ВНЕШНЕГО ПРЕДСКАЗАНИЯ
DEVICE AND METHOD FOR EXTERNAL PREDICTION

Область техники, к которой относится изобретение
Варианты осуществления настоящего изобретения относятся к области технологий кодирования видео и, в частности, к способу и устройству внешнего предсказания.
Уровень техники
Технологии цифрового видео могут широко использоваться в различных цифровых видеоустройствах. Цифровое видеоустройство может реализовывать технологии кодирования видео, например, стандарты, определенные в MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4 часть 10 Advanced Video Coding (AVC), ITU-T H.265 (также называемый высокоэффективным кодированием видео HEVC) и технологии кодирования видео, описанные в расширениях этих стандартов. Цифровое видеоустройство отправляет, принимает, кодирует, декодирует и/или сохраняет цифровую видеоинформацию более эффективно за счет реализации этих технологий кодирования видео.
В настоящее время технологии внешнего предсказания и внутреннего предсказания в основном используются при кодировании видео для устранения временной избыточности и пространственной избыточности в видео. В технологии внешнего предсказания учитывается только временная корреляция между одними и теми же объектами в соседних кадрах изображений, но пространственная корреляция не учитывается. Следовательно, выборки предсказания, полученные в существующем режиме внешнего предсказания, являются пространственно прерывистыми. Кроме того, это влияет на эффективность предсказания, и остаточная энергия предсказания является относительно высокой.
Сущность изобретения
Варианты осуществления настоящего изобретения предоставляют способ и устройство внешнего предсказания для выполнения пространственной фильтрации внешне закодированного блока предсказания и повышения эффективности кодирования.
Для решения технических задач в вариантах осуществления настоящего изобретения используются следующие технические решения.
Согласно первому аспекту вариантов осуществления настоящего изобретения предоставляется способ внешнего предсказания. Способ включает в себя: синтаксический анализ битового потока для получения информации движения блока изображения, подлежащего обработке; выполнение компенсации движения на блоке изображения, подлежащего обработке, на основании информации движения, для получения блока предсказания блока изображения, подлежащего обработке, где блок предсказания блока изображения, подлежащего обработке, включает в себя значение предсказания целевой выборки; и выполнение вычисления взвешивания для одного или нескольких восстановленных значений одной или нескольких опорных выборок и значения предсказания целевой выборки, для обновления значения предсказания целевой выборки, где опорная выборка имеет заданную взаимосвязь пространственной позиции с целевой выборкой.
На основании этого решения выполняется обработка пространственной фильтрации для значения предсказания целевой выборки с использованием соседней восстановленной выборки для повышения эффективности кодирования со сжатием.
Со ссылкой на первый аспект, в возможной реализации одна или несколько опорных выборок включают в себя восстановленную выборку, которая имеет ту же горизонтальную координату, что и целевая выборка, и имеет заданную разность вертикальной координаты с целевой выборкой, или восстановленную выборку, которая имеет ту же вертикальную координату, что и целевая выборка, и имеет заданную разницу горизонтальной координаты с целевой выборкой.
На основании этого решения выполняется обработка фильтрации на целевой выборке с использованием опорной выборки, которая имеет заданное отношение пространственной позиции с целевой выборкой. По сравнению с традиционной технологией повышается эффективность кодирования.
Со ссылкой на первый аспект и вышеупомянутую возможную реализацию, в другой возможной реализации, обновление значения предсказания целевой выборки включает в себя: выполнение вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленного значения опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, являются ,  представляют собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки  и  представляют восстановленные значения опорных выборок на позициях  координат и , соответственно, w1, w2, w3, w4, w5 и w6 являются заданными константами, и M1 и M2 являются заданными положительными целыми числами.
На основании этого решения обновленное значение предсказания целевой выборки может быть получено посредством обработки фильтрации.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации, w1 + w2 = R1, w3 + w4 = R2 или w5 + w6 + w7 = R3, где R1, R2 и R3 каждый являются 2 в степени n, и n являются целым неотрицательным числом.
На основании этого решения дополнительно может быть улучшена эффективность кодирования.
Следует понимать, что каждый из R1, R2 и R3 равен 2 в степени n. R1, R2 и R3 одинаковые или разные, и это не ограничивается. Например, R1, R2 и R3 могут быть 8 или R1, R2 и R3 могут быть 2, 4 и 16, соответственно.
Со ссылкой на первый аспект и вышеупомянутую возможную реализацию, в другой возможной реализации, обновление значения предсказания целевой выборки включает в себя: выполнение вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленного значения опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, являются ,  представляет собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, , ,  и  представляют восстановленные значения опорных выборок на координатах  , ,  и  позиций, соответственно, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 и w11 являются заданными константами, и M1, M2, M3 и M4 являются заданными положительными целыми числами.
На основании этого решения обновленное значение предсказания целевой выборки может быть получено посредством обработки фильтрации.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации, w1 + w2 + w3 = S1, w4 + w5 + w6 = S2 или w7 + w8 + w9 + w10 + w11 = S3, где S1, S2 и S3 равны 2 в степени n, и n является неотрицательным целым числом.
На основании этого решения эффективность кодирования может быть дополнительно улучшена.
Следует понимать, что каждое из S1, S2 и S3 равно 2 в степени n. S1, S2 и S3 одинаковые или разные, и это не ограничивается. Например, S1, S2 и S3 могут быть 8 или S1, S2 и S3 могут быть 2, 4 и 16 соответственно.
Со ссылкой на первый аспект и вышеупомянутую возможную реализацию, в другой возможной реализации, обновление значения предсказания целевой выборки включает в себя: выполнение вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленного значения опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляют собой значение предсказания целевой выборки перед обновлением,  представляют обновленное значение предсказания целевой выборки  и  представляют восстановленные значения опорных выборок на позициях  координат и , соответственно, w1, w2 и w3 являются заданными константами и M1 и M2 являются заданными положительными целыми числами.
На основании этого решения обновленное значение предсказания целевой выборки может быть получено посредством обработки фильтрации.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации w1 + w2 + w3 = R, где R равно 2 в степени n, и n является неотрицательным целым числом.
Со ссылкой на первый аспект и вышеупомянутую возможную реализацию, в другой возможной реализации, обновление значения предсказания целевой выборки включает в себя: выполнение вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленного значения опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны  представляет собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, , ,  и  представляют восстановленные значения опорных выборок на позициях , ,  и  координат, соответственно, w1, w2, w3, w4 и w5 являются заданными константы и M1, M2, M3 и M4 являются заданными положительными целыми числами.
На основании этого решения обновленное значение предсказания целевой выборки может быть получено посредством обработки фильтрации.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации, w1 + w2 + w3 + w4 + w5 = S, где S равно 2 в степени n, и n является неотрицательным целым числом.
На основании этого решения эффективность кодирования может быть дополнительно улучшена.
Со ссылкой на первый аспект и вышеупомянутой возможной реализации, в другой возможной реализации одна или несколько опорных выборок включают в себя одну или несколько из следующих выборок: восстановленная выборка, которая имеет ту же горизонтальную координату, что и целевая выборка, и которая находится рядом с верхней стороной блока изображения, подлежащего обработке, восстановленная выборка, которая имеет ту же вертикальную координату, что и целевая выборка, и которая находится рядом с левой стороной блока изображения, подлежащего обработке, верхняя правая восстановленная выборка блока изображения, подлежащего обработке, нижняя левая восстановленная выборка блока изображения, подлежащего обработке, или верхняя левая восстановленная выборка блока изображения, подлежащего обработке.
На основании этого решения выполняется обработка фильтрации на целевой выборке с использованием опорной выборки, который имеет заданное отношение пространственной позиции с целевой выборкой. По сравнению с традиционной технологией эффективность кодирования повышается.
Со ссылкой на первый аспект и вышеупомянутую возможную реализацию, в другой возможной реализации, обновление значения предсказания целевой выборки включает в себя: выполнение вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленного значения опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2)
где predP1(xP, yP) = (predV(xP, yP) + predH(xP, yP) + nTbW * nTbH) >> (Log2(nTbW) + Log2(nTbH) + 1), predV(xP, yP) = ((nTbH – 1 – yP) * p(xP, –1) + (yP + 1) * p(–1, nTbH)) << Log2(nTbW), predH(xP, yP) = ((nTbW – 1 – xP) * p(–1, yP) + (xP + 1) * p(nTbW, –1)) << Log2(nTbH), координаты целевой выборки равны (xP, yP), координаты верхней левой выборки блока изображения, подлежащего обработке, равны (0, 0), predP (xP, yP) представляет значение предсказания целевой выборки перед обновлением, predQ (xP, yP) представляет обновленное значение предсказания целевой выборки, p (xP, –1), p (–1, nTbH), p (–1, yP) и p (nTbW, –1) представляют восстановленные значения опорных выборок на позициях (xP, –1), (–1, nTbH), (–1, yP) и (nTbW, –1) координат, соответственно, w1 и w2 являются заданными константами и nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке.
В возможной реализации первого аспекта значение предсказания целевой выборки обновляется согласно следующей формуле:
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predV(xP, yP) + w3 * predH(xP, yP) + ((w1 + w2 + w3)/2))/(w1 + w2 + w3)
где predV (xP, yP) = ((nTbH - 1 - yP) * p (xP, –1) + (yP + 1) * p (–1, nTbH) + nTbH / 2) >> Log2 (nTbH), predH (xP, yP) = ((nTbW - 1 - xP) * p (–1, yP) + (xP + 1) * p (nTbW, –1) + nTbW / 2) >> Log2 (nTbW), координаты целевой выборки являются (xP, yP), координаты верхней левой выборки блока изображения, подлежащего обработке, равны (0, 0), predP (xP, yP) представляет значение предсказания целевой выборки до обновления, predQ (xP, yP) представляет обновленное значение предсказания целевой выборки, p (xP, –1), p (–1, nTbH), p (–1, yP) и p (nTbW, –1) представляют восстановленные значения опорных выборок на позициях (xP, –1), (–1, nTbH), (–1, yP) и (nTbW, –1) координат, соответственно, w1, w2 и w3 представляют собой заданные константы, и nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке.
В возможной реализации первого аспекта значение предсказания целевой выборки обновляется согласно следующей формуле:
predQ(xP, yP) = (((w1 * predP(xP, yP)) << (Log2(nTbW) + Log2(nTbH) + 1)) + w2 * predV(xP, yP) +w3 * predH(xP, yP) + (((w1 + w2 + w3)/2) << (Log2(nTbW) + Log2(nTbH) + 1)))/(((w1 + w2 + w3) << (Log2(nTbW) + Log2(nTbH) + 1)))
где predV (xP, yP) = ((nTbH - 1 - yP) * p (xP, –1) + (yP + 1) * p (–1, nTbH)) << Log2 (nTbW), predH (xP, yP) = ((nTbW - 1 - xP) * p (–1, yP) + (xP + 1) * p (nTbW, –1)) << Log2 (nTbH), координаты целевой выборки равны (xP, yP), координаты верхней левой выборки блока изображения, подлежащего обработке, равны (0, 0), predP (xP, yP) представляет значение предсказания целевой выборки до обновления, predQ (xP, yP) представляет обновленное значение предсказания целевой выборки, p (xP, –1), p (–1, nTbH), p (–1, yP) и p (nTbW, –1) представляют восстановленные значения опорных выборок на позициях (xP, –1), (–1, nTbH), (–1, yP) и (nTbW, –1) координат, соответственно, w1 и w2 являются заданными константами и nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке.
На основании этого решения обновленное значение предсказания целевой выборки может быть получено посредством обработки фильтрации.
Со ссылкой на первый аспект и вышеупомянутую возможную реализацию, в другой возможной реализации, обновление значения предсказания целевой выборки включает в себя: выполнение вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленного значения опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2)
где
координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, , ,  и  представляют восстановленные значения опорных выборок на позициях , ,  и  координат, соответственно, w1 и w2 являются заданными константами и nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке.
На основании этого решения обновленное значение предсказания целевой выборки может быть получено посредством обработки фильтрации.
Со ссылкой на первый аспект и вышеупомянутых возможных реализаций, в другой возможной реализации сумма w1 и w2 равна 2, возведенной в степень n, и n является неотрицательным целым числом.
На основании этого решения эффективность кодирования может быть дополнительно улучшена.
Со ссылкой на первый аспект и вышеупомянутую возможную реализацию, в другой возможной реализации обновление значения предсказания целевой выборки включает в себя: выполнение вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленного значения опорной выборки, для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
где
,,
, координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, ,   и  представляют восстановленные значения опорных выборок на позициях ,  и  координат, соответственно, nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке, и clip1Cmp представляет операцию отсечения.
На основании этого решения обновленное значение предсказания целевой выборки может быть получено посредством обработки фильтрации.
Со ссылкой на первый аспект и вышеупомянутую возможную реализацию, в другой возможной реализации, обновление значения предсказания целевой выборки включает в себя: выполнение вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленного значения опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
где
, ,
координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки,  и  представляют восстановленные значения опорных выборок на позициях  и  координат, соответственно, nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке, clip1Cmp представляет операцию отсечения.
На основании этого решения обновленное значение предсказания целевой выборки может быть получено посредством обработки фильтрации.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации, выполнение вычисления взвешивания для одного или нескольких восстановленных значений одной или нескольких опорных выборок и значения предсказания целевой выборки включает в себя: когда восстановленное значение опорной выборки недоступно, определение в заданном порядке доступности выборок, смежных с верхней и левой стороной блока изображения, подлежащего обработке, до тех пор, пока не будет получено заданное количество доступных опорных выборок; и выполнение вычисления взвешивания для восстановленного значения доступной опорной выборки и значения предсказания целевой выборки.
На основании этого решения, когда восстановленное значение опорной выборки недоступно, опорные выборки, которые расположены слева и над блоком изображения, подлежащего обработке, и чьи восстановленные значения доступны, могут быть найдены в заданном порядке. Таким образом, значение предсказания целевой выборки может быть обновлено с использованием восстановленных значений доступных опорных выборок.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации определение в заданном порядке доступности выборок, смежных с верхней и левой стороной блока изображения, подлежащего обработке, до получения заданного количества доступных опорных выборок включает в себя: получение доступных опорных выборок в порядке от координат (xN - 1, yN + nTbH - 1) до координат (xN - 1, yN - 1) и затем от координат (xN, yN - 1) до координат (xN + nTbW - 1, yN - 1).
На основании этого решения могут быть получены восстановленные значения доступных опорных выборок.
Со ссылкой на первый аспект и вышеупомянутых возможных реализаций, в другой возможной реализации, при наличии, по меньшей мере, одной доступной опорной выборки во всех опорных выборках, если восстановленное значение опорной выборки (xN - 1, yN + nTbH - 1) недоступно, выполняется поиск доступной выборки в заданном порядке от координат (xN - 1, yN + nTbH - 1) до координат (xN - 1, yN - 1) и затем от координатам (xN, yN - 1) до координат (xN + nTbW - 1, yN - 1). Как только доступная выборка найдена, поиск заканчивается. Если доступная выборка является (x, y), восстановленное значение опорной выборки (xN - 1, yN + nTbH - 1) устанавливается равным восстановленному значению выборки (x, y). Если восстановленное значение опорной выборки (x, y) недоступно в наборе, включающем в себя опорную выборку (xN - 1, yN + nTbH - M), восстановленное значение опорной выборки (x, y) устанавливается на восстановленное значение выборки (x, y + 1), где M больше или равно 2 и меньше или равно nTbH + 1. Если восстановленное значение опорной выборки (x, y) недоступно в наборе, включающий в себя опорную выборку (xN + N, yN - 1), восстановленное значение опорной выборки (x, y) устанавливается равным восстановленному значению опорной выборки (x - 1, y), где N больше или равно 0 и меньше или равно nTbW - 1.
На основании этого решения могут быть получены восстановленные значения доступных опорных выборок.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации, если восстановленное значение опорной выборки (xN - 1, yN + nTbH - M) недоступно, доступная опорная выборка может быть найдена в заданном порядке, начиная с координат (xN - 1, yN + nTbH - M), где M больше или равно 1 и меньше или равно nTbH + 1. Если доступная опорная выборка является B, восстановленное значение опорной выборки (xN - 1, yN + nTbH - M) может быть установлено на восстановленное значение опорной выборки B. Если восстановленное значение опорной выборки с координатами (xN + N, yN - 1) недоступно, доступная опорная выборка может быть найдена в заданном порядке, начиная с координат (xN + N, yN - 1), где N больше или равно 0 и меньше или равно nTbW - 1. Если доступная опорная выборка равно C, восстановленное значение опорной выборки (xN + N, yN - 1) может быть установлено на восстановление измененное значение опорной выборки C.
На основании этого решения могут быть получены восстановленные значения доступных опорных выборок.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации, если восстановленное значение опорной выборки (xN - 1, yN + nTbH - 1) недоступно, доступная выборка ищется в заданном порядке от координат (xN - 1, yN + nTbH - 1) к координатам (xN - 1, yN - 1) и затем от координат (xN, yN - 1) к координатам (xN + nTbW - 1, yN - 1). Как только доступная выборка найдена, поиск заканчивается. Если доступная выборка является (x, y), восстановленное значение опорной выборки (xN - 1, yN + nTbH - 1) устанавливается равным восстановленному значению выборки (x, y). Если восстановленное значение опорной выборки (xN - 1, yN + nTbH - M) недоступно, можно искать доступную опорную выборку в порядке, обратном заданному, начиная с координат (xN - 1, yN + nTbH - M), где M больше 1 и меньше или равно nTbH + 1. Если доступной опорной выборкой является C, восстановленное значение опорной выборки (xN - 1, yN + nTbH - M) может быть установлено на восстановленное значение опорной выборки C. Если восстановленное значение опорной выборки с координатами (xN + N, yN - 1) недоступно, доступная опорная выборка может быть найдена в порядке, обратном заданному, начиная с координат (xN + N, yN - 1), где N больше или равно 0 и меньше или равно nTbW - 1. Если доступная опорная выборка является D, восстановленное значение опорной выборки (xN + N, yN - 1) может быть установлено равным восстановленному значению опорной выборки D.
На основании этого решения могут быть получены восстановленные значения доступных опорных выборок.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации в другой возможной реализации, если определено, что все выборки, смежные с верхней стороной и левой стороной блока изображения, подлежащего обработке, недоступны, восстановленное значение опорной выборки устанавливается равным 1 << (bitDepth - 1), где bitDepth представляет битовую глубину значения выборки опорной выборки.
На основании этого решения восстановленное значение опорной выборки может быть установлено на основании битовой глубины, когда как восстановленное значение опорной выборки, так и восстановленное значение новой опорной выборки недоступны.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации, перед выполнением вычисления взвешивания для одного или нескольких восстановленных значений одной или нескольких опорных выборок и значения предсказания целевой выборки, способ включает в себя: когда опорная выборка находится выше блока изображения, подлежащего обработке, выполнение вычисления взвешивания на восстановленном значении опорной выборки и восстановленных значений левой соседней выборки и правой соседней выборки опорной выборки; когда опорная выборка находится слева блока изображения, подлежащего обработке, выполнение вычисления взвешивания на восстановленном значении опорной выборки и восстановленных значений верхней соседней выборки и нижней соседней выборки опорной выборки; и обновление восстановленного значения опорной выборки с использованием результата вычисления взвешивания.
На основании этого решения перед тем, как обработка фильтрации будет выполнена для целевой выборки, выполняется обработка фильтрации для восстановленного значения опорной выборки. Таким образом, эффективность кодирования может быть дополнительно улучшена, и остаток предсказания может быть уменьшен.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации, перед выполнением компенсации движения на блоке изображения, подлежащего обработке, на основании информации движения, способ дополнительно включает в себя: первоначальное обновление информации движения с использованием первого заданного алгоритма; и, соответственно, выполнение компенсации движения над подлежащим обработке блоком изображения на основании информации движения, включает в себя: выполнение компенсации движения на блоке изображения, подлежащего обработке, на основании изначально обновленной информации движения.
На основании этого решения обновляется информация движения до того, как компенсация движения выполняется для текущего блока, и компенсация движения выполняется на основании обновленной информации движения. Таким образом можно уменьшить остаток предсказания.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации, после получения блока предсказания блока изображения, подлежащего обработке, способ дополнительно включает в себя: предварительное обновление блока предсказания с использованием второго заданного алгоритма; и, соответственно, выполнение вычисления взвешивания для одного или нескольких восстановленных значений одной или нескольких опорных выборок и значения предсказания целевой выборки включает в себя: выполнение вычисления взвешивания для одного или нескольких восстановленных значений одной или нескольких опорных выборок и предварительного обновленного значения предсказания целевой выборки.
На основании данного решения, блок предсказания текущего блока предварительно обновляются, и выполняется вычисление взвешивания на основании предварительно обновленного значения предсказания и восстановленного значения опорной выборки. Таким образом можно уменьшить остаток предсказания.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации, после выполнения вычисления взвешивания для одного или нескольких восстановленных значений одной или нескольких опорных выборок и значения предсказания целевой выборки для обновления значения предсказания целевой выборки, способ дополнительно включает в себя: обновление значения предсказания целевой выборки с использованием второго заданного алгоритма.
На основании этого решения значение предсказания, которое относится к целевой выборке и которое подверглось обработке пространственной фильтрации, может быть обновлено с использованием заданного алгоритма. Таким образом можно уменьшить остаток предсказания.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации, перед выполнением вычисления взвешивания для одного или нескольких восстановленных значений одной или нескольких опорных выборок и значения предсказания целевой выборки, способ дополнительно включает в себя: синтаксический анализ битового потока для получения режима предсказания, соответствующего блоку изображения, подлежащего обработке; и определение, что режим предсказания является режимом слияния (merge) и/или усовершенствованным режимом внешнего предсказания вектора движения (inter-AMVP). Можно понять, что усовершенствованный режим внешнего предсказания вектора движения (inter-AMVP) также может называться режимом внешнего предсказания вектора движения (inter-MVP).
На основании этого решения перед обработкой фильтрации может быть определен режим предсказания, соответствующий блоку изображения, подлежащего обработке.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации, перед выполнением вычисления взвешивания для одного или нескольких восстановленных значений одной или нескольких опорных выборок и значения предсказания целевой выборки, способ дополнительно включает в себя: синтаксический анализ битового потока для получения информации указания определения обновления блока изображения, подлежащего обработке; и определение, что информация указания определения обновления используется для указания обновить блок предсказания блока изображения, подлежащего обработке.
На основании этого решения информация указания определении обновления блока изображения, подлежащего обработке, может быть получена путем синтаксического анализа битового потока, и определяется, что блок предсказания блока изображения, подлежащего обработке, должен быть обновлен.
Со ссылкой на первый аспект и вышеупомянутые возможные реализации, в другой возможной реализации, перед выполнением вычисления взвешивания для одного или нескольких восстановленных значений одной или нескольких опорных выборок и значения предсказания целевой выборки, способ дополнительно включает в себя: получение заданной информации указания определения обновления блока изображения, подлежащего обработке; и определение, что информация указания определения обновления используется для указания обновить блок предсказания блока изображения, подлежащего обработке.
На основании этого решения может быть получена информация указания определения обновления блока изображения, подлежащего обработке, и на основании информации указания определения обновления определяется, что блок предсказания блока изображения, подлежащего обработке, подлежит обновлению.
Согласно второму аспекту вариантов осуществления настоящего изобретения предоставляется устройство внешнего предсказания, включающее в себя: модуль синтаксического анализа, выполненный с возможностью выполнять синтаксический анализ битового потока для получения информации движения блока изображения, подлежащего обработке; модуль компенсации, выполненный с возможностью выполнять компенсацию движения над блоком изображения, подлежащего обработке, на основании информации движения для получения блока предсказания блока изображения, подлежащего обработке, где блок предсказания блока изображения, подлежащего обработке, включает в себя значение предсказания целевой выборки; и модуль вычислений, выполненный с возможностью выполнять вычисления взвешивания для одного или нескольких восстановленных значений одной или нескольких опорных выборок и значения предсказания целевой выборки для обновления значения предсказания целевой выборки, где опорная выборка имеет заданное отношение пространственной позиции с целевой выборкой.
Со ссылкой на второй аспект и вышеупомянутую возможную реализацию, в другой возможной реализации одна или несколько опорных выборок включают в себя восстановленную выборку, которая имеет ту же горизонтальную координату, что и целевая выборка, и имеет заданную разность вертикальной координаты с целевой выборкой, или восстановленную выборку, которая имеет ту же вертикальную координату, что и целевая выборка, и имеет заданную разность горизонтальной координаты с целевой выборкой.
Со ссылкой на второй аспект и вышеизложенное возможным осуществление, в другом возможном варианте реализации модуль вычисления специально выполнен с возможностью выполнять вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленным значением опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки,  и  представляют восстановленные значения опорных выборок на позициях  и  координат, соответственно, w1, w2, w3, w4, w5 и w6 являются заданными константами и M1 и M2 являются заданными положительными целыми числами.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации, w1 + w2 = R1, w3 + w4 = R2 или w5 + w6 + w7 = R3, где R1, R2 и R3 каждый являются 2 в степени n, и n представляет собой целое неотрицательное число.
Со ссылкой на второй аспект и вышеупомянутую возможную реализацию, в другой возможной реализации модуль вычисления дополнительно специально выполнен с возможностью выполнять вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленным значением опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, , ,  и  представляют восстановленные значения опорных выборок на позициях , ,  и  координат, соответственно, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 и w11 являются заданными константами и M1, M2, M3 и M4 являются заданными положительными целыми числами.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации, w1 + w2 + w3 = S1, w4 + w5 + w6 = S2 или w7 + w8 + w9 + w10 + w11 = S3, где S1, S2 и S3 равны 2 в степени n, и n представляет собой неотрицательное целое число.
Со ссылкой на второй аспект и вышеупомянутую возможную реализацию, в другой возможной реализации модуль вычисления дополнительно специально выполнен с возможностью выполнять вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленным значением опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки,  и  представляют восстановленные значения опорных выборок на позициях  и  координат, соответственно, w1, w2 и w3 являются заданными константами и M1 и M2 являются заданными положительными целыми числами.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации w1 + w2 + w3 = R, где R равно 2 в степени n, и n представляет собой неотрицательное целое число.
Со ссылкой на второй аспект и вышеупомянутую возможную реализацию, в другой возможной реализации модуль вычисления дополнительно специально выполнен с возможностью выполнять вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленным значением опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, , ,  и  представляют восстановленные значения опорных выборок на позициях , ,  и  координат, соответственно, w1, w2, w3, w4 и w5 являются заданными константами и M1, M2, M3 и M4 являются заданными положительными целыми числами.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации, w1 + w2 + w3 + w4 + w5 = S, где S равно 2 в степени n, и n является неотрицательным целым числом.
Со ссылкой на второй аспект и вышеупомянутой возможной реализации, в другой возможной реализации одна или несколько опорных выборок включают в себя одну или несколько из следующих выборок: восстановленная выборка, которая имеет ту же горизонтальную координату, что и целевая выборка, и которая находится рядом с верхней стороной блока изображения, подлежащего обработке, восстановленная выборка, которая имеет ту же вертикальную координату, что и целевая выборка, и которая находится рядом с левой стороной блока изображения, подлежащего обработке, восстановленной выборкой рядом с верхней правой стороной блока изображения, подлежащего обработке, восстановленной выборкой с нижней левой стороны блока изображения, подлежащего обработке, или восстановленной выборкой верхней левой стороны блока изображения, подлежащего обработке.
Со ссылкой на второй аспект и вышеупомянутую возможную реализацию, в другой возможной реализации модуль вычисления дополнительно специально выполнен с возможностью выполнять вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленного значения опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
predQ (xP, yP) = (w1 * predP (xP, yP) + w2 * predP1 (xP, yP) + ((w1 + w2) / 2)) / (w1 + w2)
где predP1 (xP, yP) = (predV (xP, yP) + predH (xP, yP) + nTbW * nTbH) >> (Log2 (nTbW) + Log2 (nTbH) + 1), predV (xP, yP) = ((nTbH - 1 - yP) * p (xP, –1) + (yP + 1) * p (–1, nTbH)) << Log2 (nTbW), predH (xP, yP) = ((nTbW - 1 - xP) * p (–1, yP) + (xP + 1) * p (nTbW, –1)) << Log2 (nTbH), координаты целевой выборки равны (xP, yP), координаты верхней левой выборки блока изображения, подлежащего обработке, равны (0, 0), predP (xP, yP) представляет значение предсказания целевой выборки перед обновлением, predQ (xP, yP) представляет обновленное значение предсказания целевой выборки, p (xP, –1), p (–1, nTbH), p (–1, yP) и p (nTbW, –1) представляют восстановленные значения опорных выборок в координатах (xP, –1), (–1, nTbH), (–1, yP) и (nTbW, –1), соответственно, w1 и w2 являются заданными константами и nTbW и nTbH представляют ширину и высоту блока изображения, подлежащий обработке.
В возможной реализации второго аспекта значение предсказания целевой выборки обновляется согласно следующей формуле:
predQ (xP, yP) = (w1 * predP (xP, yP) + w2 * predV (xP, yP) + w3 * predH (xP, yP) + ((w1 + w2 + w3) / 2)) / (w1 + w2 + w3)
где predV (xP, yP) = ((nTbH - 1 - yP) * p (xP, –1) + (yP + 1) * p (–1, nTbH) + nTbH / 2) >> Log2 (nTbH), predH (xP, yP) = ((nTbW - 1 - xP) * p (–1, yP) + (xP + 1) * p (nTbW, –1) + nTbW / 2) >> Log2 (nTbW), координаты целевой выборки равны (xP, yP), координаты верхней левой выборки блока изображения, подлежащего обработке, равны (0, 0), predP (xP, yP) представляет значение предсказания целевой выборки перед обновлением, predQ (xP, yP) представляет обновленное значение предсказания целевой выборки, p (xP, –1), p (–1, nTbH), p (–1, yP) и p (nTbW, –1) представляют восстановленные значения опорных выборок в координатах (xP, –1), (–1, nTbH), (–1, yP) и (nTbW, –1), соответственно, w1, w2 и w3 являются заданными константами и nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке.
В возможной реализации второго аспекта значение предсказания целевой выборки обновляется согласно следующей формуле:
predQ (xP, yP) = (((w1 * predP (xP, yP)) << (Log2 (nTbW) + Log2 (nTbH) + 1)) + w2 * predV (xP, yP) + w3 * predH (xP, yP) + (((w1 + w2 + w3) / 2) << (Log2 (nTbW) + Log2 (nTbH) + 1))) / (((w1 + w2 + w3) << (Log2 (nTbW) + Log2 (nTbH) + 1)))
где predV (xP, yP) = ((nTbH - 1 - yP) * p (xP, –1) + (yP + 1) * p (–1, nTbH)) << Log2 (nTbW), predH (xP, yP) = ((nTbW - 1 - xP) * p (–1, yP) + (xP + 1) * p (nTbW, –1)) << Log2 (nTbH), координаты целевой выборки равны (xP, yP), координаты верхней левой выборки блока изображения, подлежащего обработке, равны (0, 0), predP (xP, yP) представляет значение предсказания целевой выборки до обновления, predQ (xP, yP) представляет обновленное значение предсказания целевой выборки, p (xP, –1), p (–1, nTbH), p (–1, yP) и p (nTbW, –1) представляют восстановленные значения опорных выборок на позициях (xP, –1), (–1, nTbH), (–1, yP) и (nTbW, –1) координат, соответственно, w1 и w2 являются заданными константами и nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке.
Со ссылкой на второй аспект и вышеупомянутую возможную реализацию, в другой возможной реализации модуль вычисления дополнительно специально выполнен с возможностью выполнять вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленного значения опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
predQ (xP, yP) = (w1 * predP (xP, yP) + w2 * predP1 (xP, yP) + ((w1 + w2) / 2)) / (w1 + w2)
где
координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, , ,  и  представляют восстановленные значения опорных выборок на позициях , ,  и  координат, соответственно, w1 и w2 являются заданными константами и nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации сумма w1 и w2 равна 2, возведенной в степень n, и n является неотрицательным целым числом.
Со ссылкой на второй аспект и вышеупомянутую возможную реализацию, в другой возможной реализации модуль вычисления дополнительно специально выполнен с возможностью выполнять вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленного значения опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
где
, ,
координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, ,  и  представляют восстановленные значения опорных выборок на позициях ,  и  координат, соответственно, nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке, и clip1Cmp представляет операцию отсечения.
Со ссылкой на второй аспект и вышеупомянутую возможную реализацию, в другой возможной реализации модуль вычисления дополнительно специально выполнен с возможностью выполнять вычисления взвешивания на основании значения предсказания целевой выборки перед обновлением и восстановленного значения опорной выборки для получения обновленного значения предсказания целевой выборки, где обновленное значение предсказания целевой выборки получается в соответствии со следующей формулой:
где
, ,
координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки,  и  представляют восстановленные значения опорных выборок на позициях  и  координат, соответственно, nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке и clip1Cmp представляет операцию отсечения.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации модуль вычислений дополнительно выполнен с возможностью: когда восстановленное значение опорной выборки недоступно, определять в заданном порядке доступность выборок соседних к верхней и левой сторонам блока изображения, подлежащего обработке, до тех пор, пока не будет получено заданное количество доступных опорных выборок; и выполнить вычисление взвешивания восстановленного значения доступной опорной выборки и значения предсказания целевой выборки.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации модуль вычисления специально выполнен с возможностью получать восстановленное значение доступной опорной выборки в порядке от координат (xN - 1, yN + nTbH - 1) до координат (xN - 1, yN - 1) и затем из координат (xN, yN - 1) в координаты (xN + nTbW - 1, yN - 1).
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации, когда есть, по меньшей мере, одна доступная опорная выборка во всех опорных выборках, если восстановленное значение опорной выборки (xN - 1, yN + nTbH - 1) недоступно, доступная выборка ищется в заданном порядке от координат (xN - 1, yN + nTbH - 1) до координат (xN - 1, yN - 1) и затем от координат (xN, yN - 1) до координат (xN + nTbW - 1, yN - 1). Как только доступная выборка найдена, поиск заканчивается. Если доступная выборка является (x, y), восстановленное значение опорной выборки (xN - 1, yN + nTbH - 1) устанавливается равной восстановленному значению выборки (x, y). Если восстановленное значение опорной выборки (x, y) недоступно в наборе, включающем в себя опорную выборку (xN - 1, yN + nTbH - M), восстановленное значение опорной выборки (x, y) устанавливается на восстановленное значение выборки (x, y + 1), где M больше или равно 2 и меньше или равно nTbH + 1. Если восстановленное значение опорной выборки (x, y) недоступно в наборе включающий в себя опорную выборку (xN + N, yN - 1), восстановленное значение опорной выборки (x, y) устанавливается равным восстановленному значению опорной выборки (x - 1, y), где N больше или равно 0 и меньше или равно nTbW - 1.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации модуль вычислений специально выполнен с возможностью: если восстановленное значение опорной выборки (xN - 1, yN + nTbH - M) недоступно, поиск доступного опорной выборки в заданном порядке начинается с координат (xN - 1, yN + nTbH - M), где M больше или равно 1 и меньше или равно nTbH + 1. Если доступная опорная выборка равна B, восстановленное значение опорной выборки (xN - 1, yN + nTbH - M) может быть установлено на восстановленное значение опорной выборки B. Если восстановленное значение опорной выборки с координатами (xN + N, yN - 1) недоступно, доступную опорную выборку можно искать в заданном порядке, начиная с координат (xN + N, yN - 1), где N больше или равно 0 и меньше или равно nTbW - 1 .Если доступная опорная выборка равна C, восстановленное значение опорной выборки (xN + N, yN - 1) может быть установлено на восстановленное значение опорной выборки C.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации, если восстановленное значение опорной выборки (xN - 1, yN + nTbH - 1) недоступно, доступная выборка ищется в заданном порядке с координат (xN - 1, yN + nTbH - 1) до координат (xN - 1, yN - 1) и затем от координат (xN, yN - 1) к координатам (xN + nTbW - 1, yN - 1). Как только доступная выборка найдена, поиск заканчивается. Если доступная выборка равна (x, y), восстановленное значение опорной выборки (xN - 1, yN + nTbH - 1) устанавливается равным восстановленному значению выборки (x, y). Если восстановленное значение опорной выборки (xN - 1, yN + nTbH - M) недоступно, можно искать доступную опорную выборку в порядке, обратном заданному, начиная с координат (xN - 1, yN + nTbH - M), где M больше 1 и меньше или равно nTbH + 1. Если доступная опорная выборка является C, восстановленное значение опорной выборки (xN - 1, yN + nTbH - M) может быть установить на восстановленное значение опорной выборки C. Если восстановленное значение опорной выборки с координатами (xN + N, yN - 1) недоступно, доступная опорная выборка может быть найдена в порядке, обратном заданному, начиная с координат (xN + N, yN - 1), где N больше или равно 0 и меньше или равно nTbW - 1. Если доступная опорная выборка является D, восстановленное значение опорной выборки (xN + N, yN - 1) может быть установлено равным восстановленному значению опорной выборки D.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации, если определено, что все выборки, смежные с верхней стороной и левой стороной блока изображения, подлежащего обработке, недоступны, восстановленное значение опорной выборки устанавливается равным 1 << (bitDepth - 1), где bitDepth представляет битовую глубину значения выборки опорной выборки.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации модуль вычислений дополнительно выполнен с возможностью: когда опорная выборка расположена над блоком изображения, подлежащий обработке, выполнять вычисление взвешивания для восстановленного значения опорной выборки и восстановленных значений соседней слева выборки и правой соседней выборки опорной выборки; когда опорная выборка расположена слева от блока изображения, подлежащего обработке, выполнить вычисление взвешивания для восстановленного значения опорной выборки и восстановленных значений верхней соседней выборки и нижней соседней выборки опорной выборки; и обновить восстановленное значение опорной выборки, используя результат вычисления взвешивания.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации модуль вычислений дополнительно выполнен с возможностью первоначального обновлять информацию движения с использованием первого заданного алгоритма; и, соответственно, модуль компенсации специально выполнен с возможностью выполнять компенсацию движения блока изображения, подлежащего обработке, на основании первоначально обновленной информации движения.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации модуль вычислений дополнительно выполнен с возможностью предварительно обновлять блок предсказания с использованием второго заданного алгоритма; и, соответственно, модуль вычисления специально выполнен с возможностью выполнять вычисление взвешивания одного или нескольких восстановленных значений одной или нескольких опорных выборок и предварительно обновленного значения предсказания целевой выборки.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации модуль вычислений дополнительно выполнен с возможностью обновлять значения предсказания целевой выборки с использованием второго заданного алгоритма.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации модуль синтаксического анализа дополнительно выполнен с возможностью: выполнять синтаксический анализ битового потока для получения режима предсказания, соответствующего блоку изображения, подлежащего обработке; и определять, что режим предсказания является режимом слияния (merge) и/или усовершенствованным режимом внешнего предсказания вектора движения (inter-AMVP). Можно понять, что усовершенствованным режимом внешнего предсказания вектора движения (inter-AMVP) также может называться режим внешнего предсказания вектора движения (inter-MVP).
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации модуль синтаксического анализа дополнительно выполнен с возможностью: выполнять синтаксический анализ битового потока для получения информации указания определения обновления блока изображения, подлежащего обработке; и определять, что информация указания определения обновления используется для указания обновить блок предсказания блока изображения, подлежащего обработке.
Со ссылкой на второй аспект и вышеупомянутые возможные реализации, в другой возможной реализации модуль вычислений дополнительно выполнен с возможностью: получать заданную информацию определения обновления блока изображения, подлежащего обработке; и определять, что информация указания определения обновления используется для указания обновить блок предсказания блока изображения, подлежащего обработке.
Согласно третьему аспекту настоящего изобретения, предоставляется устройство предсказания информации движения, включающее в себя процессор и память, которая связана с процессором. Процессор выполнен с возможностью выполнять способ согласно первому аспекту.
Согласно четвертому аспекту настоящего изобретения предоставляется машиночитаемый носитель данных. Машиночитаемый носитель данных хранит инструкцию. Когда инструкция выполняется на компьютере, компьютер получает возможность выполнять способ в соответствии с первым аспектом.
Согласно пятому аспекту настоящего изобретения предоставляется компьютерный программный продукт, включающий в себя инструкцию. Когда инструкция выполняется на компьютере, компьютер получает возможность выполнять способ в соответствии с первым аспектом.
Следует понимать, что технические решения в аспектах со второго по пятый настоящего изобретения согласуются с решениями в первом аспекте настоящего изобретения. Достигаемые положительные эффекты во всех аспектах и соответствующие возможные реализации всех аспектов аналогичны. Поэтому подробности снова не описываются.
Краткое описание чертежей
Фиг. 1 является блок-схемой примера системы кодирования видео, которая может быть выполнена с возможностью использовать в варианте осуществления настоящего изобретения;
фиг. 2 является блок-схемой примера видеокодера, который может быть выполнен с возможностью использовать в варианте осуществления настоящего изобретения;
фиг. 3 является блок-схемой примера видеодекодера, который может быть выполнен с возможностью использовать в варианте осуществления настоящего изобретения;
фиг. 4 является блок-схемой примера модуля внешнего предсказания, который может быть выполнен с возможностью использования в варианте осуществления настоящего изобретения;
фиг. 5 является блок-схемой алгоритма примерной реализации режима предсказания слияния;
фиг. 6 является блок-схемой алгоритма примерной реализации усовершенствованного режима предсказания вектора движения;
фиг. 7 является блок-схемой алгоритма примерной реализации компенсации движения, выполняемой видеодекодером, который может быть выполнен с возможностью использования в варианте осуществления настоящего изобретения;
фиг. 8 является схемой примера блока кодирования и соседнего блока изображения, ассоциированного с блоком кодирования;
фиг. 9 является блок-схемой алгоритма примерной реализации составления списка кандидатов предсказанного вектора движения;
фиг. 10 является схемой примерной реализации добавления объединенного кандидата вектора движения в список кандидатов предсказанного вектора движения в режиме слияния;
фиг. 11 является схемой примерной реализации добавления масштабированного кандидата вектора движения в список кандидатов предсказанного вектора движения в режиме слияния;
фиг. 12 является схемой примерной реализации добавления нулевого вектора движения к списку кандидатов предсказанного вектора движения в режиме слияния;
фиг. 13 является блок-схемой алгоритма способа внешнего предсказания согласно варианту осуществления настоящего изобретения;
фиг. 14 является схемой 1 применения способа внешнего предсказания согласно варианту осуществления настоящего изобретения;
фиг. 15 является схемой 2 применения способа внешнего предсказания согласно варианту осуществления настоящего изобретения;
фиг. 16 является схемой 3 применения способа внешнего предсказания согласно варианту осуществления настоящего изобретения;
фиг. 17 является схемой 4 применения способа внешнего предсказания согласно варианту осуществления настоящего изобретения;
фиг. 18 является схемой устройства внешнего предсказания согласно варианту осуществления настоящего изобретения; и
фиг. 19 является схемой другого устройства внешнего предсказания согласно варианту осуществления настоящего изобретения.
Описание вариантов осуществления
Нижеследующее ясно и полностью описывает технические решения в вариантах осуществления настоящего изобретения со ссылкой на сопроводительные чертежи в вариантах осуществления настоящего изобретения.
Фиг. 1 является блок-схемой примера системы кодирования видео согласно варианту осуществления настоящего изобретения. Как описано здесь, термин «видеокодер» обычно относится как к видеокодеру, так и к видеодекодеру. В настоящем изобретении термин «кодирование видео» или «кодирование» обычно может относиться к кодированию видео или декодированию видео. Видеокодер 100 и видеодекодер 200 в системе кодирования видео выполнены с возможностью предсказывать информацию движения, например, вектор движения, текущего кодированного блока изображения или подблока текущего кодированного блока изображения согласно различным примерам способа, описанным на основании любого из множества новых режимов внешнего предсказания, предоставленных в настоящем изобретении, так что предсказанный вектор движения в наибольшей степени приближается к вектору движения, полученному с помощью способа оценки движения, и нет необходимости передавать разность векторов движения во время кодирования. Кроме того, это повышает производительность кодирования.
Как показано на фиг. 1, система кодирования видео включает в себя устройство 10 источника и устройство 20 назначения. Устройство 10 источника генерирует кодированные видеоданные. Следовательно, устройство 10 источника может называться устройством кодирования видео. Устройство 20 назначения может декодировать кодированные видеоданные, генерируемые устройством 10 источника. Следовательно, устройство 20 назначения может называться устройством декодирования видео. В различных решениях реализации устройство 10 источника, устройство 20 назначения или как устройство 10 источника, так и устройство 20 назначения могут включать в себя один или несколько процессоров и память, соединенную с одним или несколькими процессорами. Память может включать в себя, но не ограничивается, RAM, ROM, EEPROM, флэш-память или любой другой носитель, который может использоваться для хранения необходимого программного кода в форме инструкции или структуры данных и к которому можно получить доступ с помощью компьютера, как описано в этой спецификации.
Устройство 10 источника и устройство 20 назначения могут включать в себя различные устройства, включающие в себя настольный компьютер, мобильное вычислительное устройство, портативный компьютер (например, портативный компьютер), планшетный компьютер, телеприставку, портативный телефонный аппарат. такой как «умный» телефон, телевизор, фотоаппарат, устройство отображения, цифровой медиаплеер, игровая приставка, бортовой компьютер и т.п.
Устройство 20 назначения может принимать кодированные видеоданные от устройства 10 источника по линии 30 связи. Линия 30 связи может включать в себя один или несколько носителей или устройств, которые могут передавать кодированные видеоданные от устройства 10 источника в устройство назначения 20. В одном примере линия 30 связи может включать в себя одну или несколько сред передачи данных, которые позволяют устройству 10 источника напрямую передавать кодированные видеоданные в устройство 20 назначения в реальном времени. В этом примере устройство 10 источника может модулировать закодированные видеоданные в соответствии со стандартом связи (например, протоколом беспроводной связи) и может передавать модулированные видеоданные в устройство 20 назначения. Одна или несколько сред связи могут включать в себя беспроводная и/или проводная среда связи, например, радиочастотный (radio frequency, RF) спектр или одну или несколько физических линий передачи. Одна или несколько сред связи могут составлять часть сети с пакетной передачей данных, и сеть с пакетной передачей данных представляет собой, например, локальную сеть, региональную сеть или глобальную сеть (например, интернет). Одна или несколько сред связи могут включать в себя маршрутизатор, коммутатор, базовую станцию или другое устройство, обеспечивающее связь от устройства 10 источника к устройству 20 назначения.
В другом примере, закодированные данные могут быть выведены в устройство 40 хранения через интерфейс 140 вывода. Аналогичным образом, к кодированным данным можно получить доступ из устройства 40 хранения через интерфейс 240 ввода. Устройство 40 хранения может включать в себя любой один из множества распределенных носителей для хранения данных или локально доступных носителей для хранения данных, например, жесткий диск, диск Blu-ray, цифровой видеодиск (digital video disc, DVD), компакт-диск, постоянное запоминающее устройство (compact disk read-only memory, CD-ROM), флэш-памятью, энергозависимой или энергонезависимой памятью или любым другим подходящим цифровым запоминающим устройством, выполненным с возможностью хранить кодированные видеоданные.
В другом примере устройство 40 хранения может соответствовать файловому серверу или другому промежуточному устройству хранения, выполненному с возможностью хранить кодированное видео, сгенерированное устройством 10 источника. Устройство 20 назначения может осуществлять доступ к сохраненным видеоданным из устройства 40 хранения посредством потоковой передачи или загрузки. Файловый сервер может быть сервером любого типа, который может хранить закодированные видеоданные и передавать закодированные видеоданные в устройство 20 назначения. В одном примере файловый сервер включает в себя сетевой сервер (например, используемый для веб-сайта), протокол передачи файлов (file transfer protocol, FTP), устройство сетевого хранилища (network-attached storage, NAS) или локальный диск. Устройство 20 назначения может получить доступ к закодированным видеоданным через любое стандартное соединение для передачи данных (включающее в себя соединение с интернетом). Стандартное соединение для передачи данных может включать в себя беспроводной канал (например, соединение достоверностью беспроводной связи (wireless-fidelity, Wi-Fi)), проводное соединение (например, цифровую абонентскую линию (digital subscriber line, DSL) или кабельному модему) или комбинацию беспроводного канала и проводного соединения, где комбинация подходит для доступа к кодированным видеоданным, хранящимся на файловом сервере. Кодированные видеоданные могут передаваться из устройства 40 хранения посредством потоковой передачи, загрузки с загрузкой или их комбинации.
Технология предсказания вектора движения в настоящем изобретении применима к кодированию видео для поддержки множества мультимедийных приложений, например, эфирного телевещания, передачи кабельного телевидения, передачи спутникового телевидения, передачи потокового видео (например, через интернет), кодирование видеоданных, хранящихся на носителе данных, декодирование видеоданных, хранящихся на носителе данных, или другое приложение. В некоторых примерах система кодирования видео может быть выполнена с возможностью поддерживать однонаправленную или двунаправленную передачи видео для поддержки таких приложений, как потоковая передача видео, воспроизведение видео, широковещательная передача видео и/или видеотелефония.
Система кодирования видео, описанная на фиг. 1, является просто примером, и технология настоящего изобретения применимы к настройкам кодирования видео (например, кодирование видео или декодирование видео), которые не обязательно включают в себя обмен данными между устройством кодирования и устройством декодирования. В другом примере данные извлекаются из локальной памяти, передаются в потоковом режиме по сети и т.п. Устройство кодирования видео может кодировать данные и сохранять данные в памяти, и/или устройство декодирования видео может извлекать данные из памяти и декодировать данные. Во многих примерах кодирование и декодирование выполняются устройствами, которые не обмениваются данными друг с другом, и просто кодируют данные и сохраняют данные в памяти и/или извлекают данные из памяти и декодируют данные.
В примере на фиг. 1, устройство 10 источника включает в себя источник 120 видео, видеокодер 100 и интерфейс 140 вывода. В некоторых примерах интерфейс 140 вывода может включать в себя модулятор/демодулятор (модем) и/или передатчик. Источник 120 видео может включать в себя устройство захвата видео (например, видеокамеру), видеоархив, включающий в себя ранее захваченные видеоданные, интерфейс подачи видео для приема видеоданных от поставщика видеоконтента и/или компьютерную графическую систему для генерирования видеоданных или комбинаций вышеупомянутых источников видеоданных.
Видеокодер 100 может кодировать видеоданные из источника 120 видео. В некоторых примерах устройство 10 источника напрямую передает закодированные видеоданные в устройство 20 назначения через интерфейс 140 вывода. В других примерах кодированные видеоданные могут быть дополнительно сохранены в устройстве 40 хранения, так что устройство 20 назначения впоследствии получает доступ к кодированным видеоданным для декодирования и/или воспроизведения.
В примере на фиг. 1, устройство 20 назначения включает в себя интерфейс 240 ввода, видеодекодер 200 и устройство 220 отображения. В некоторых примерах интерфейс 240 ввода включает в себя приемник и/или модем. Интерфейс 240 ввода может принимать закодированные видеоданные по линии 30 связи и/или от устройства 40 хранения. Устройство 220 отображения может быть интегрировано с устройством 20 назначения или может быть расположено вне устройства 20 назначения. Как правило, устройство 220 отображения отображает декодированные видеоданные. Устройство 220 отображения может включать в себя множество типов устройств отображения, например, жидкокристаллический дисплей (liquid crystal display, LCD), плазменный дисплей, дисплей на органических светодиодах (organic light-emitting diode, OLED), или другой тип устройства отображения.
В некоторых аспектах, хотя это не показано на фиг. 1, видеокодер 100 и видеодекодер 200 могут быть интегрированы с аудиокодером и аудиодекодером соответственно и могут включать в себя соответствующий блок мультиплексора-демультиплексора или другое аппаратное и программное обеспечение для кодирования как звука, так и видео в одном и том же потоке данных или отдельных потоках данных. В некоторых примерах, если применимо, блок демультиплексора (MUX-DEMUX) может соответствовать протоколу мультиплексора H.223 международного союза электросвязи (International Telecommunication Union, ITU) или другому протоколу, например, протоколу дейтаграмм пользователя (user datagram protocol, UDP).
Видеокодер 100 и видеодекодер 200 каждый может быть реализован в виде любой из множества схем, например, одного или нескольких микропроцессоров, процессоров цифровых сигналов (digital signal processor, DSP), специализированной интегральной схемой (application-specific integrated circuit, ASIC), программируемые пользователем вентильные матрицы (field programmable gate array, FPGA), дискретная логика, аппаратное обеспечение или любая их комбинация. Если настоящее изобретение реализовано частично с использованием программного обеспечения, устройство может хранить инструкцию для программного обеспечения на соответствующем постоянном машиночитаемом носителе данных и может использовать один или несколько процессоров для выполнения инструкции в аппаратном обеспечении для реализации технологии в настоящем изобретении. Любое из вышеупомянутого (включающее в себя оборудование, программное обеспечение, комбинацию аппаратного и программного обеспечения и т.п.) может рассматриваться как один или несколько процессоров. Видеокодер 100 и видеодекодер 200 каждый может быть использован в одном или нескольких кодеров или декодеров. Кодер или декодер могут быть интегрированы как часть комбинированного кодера/декодера (кодека) в соответствующее устройство.
В настоящем изобретении видеокодер 100 может, в целом, называться устройством, которое «сигнализирует» или «отправляет» некоторую информацию на другое устройство, такое как видеодекодер 200. Термин «сигнализация» или «отправка» может обычно относиться к передаче элемента синтаксиса и/или других данных, используемых для декодирования сжатых видеоданных. Передача может осуществляться в реальном времени или почти в реальном времени. В качестве альтернативы связь может выполняться по истечении определенного периода времени, например, когда элемент синтаксиса в закодированном битовой потоке сохраняется на машиночитаемом носителе данных во время кодирования. Затем устройство декодирования может извлекать элемент синтаксиса в любое время после того, как элемент синтаксиса, сохраненный на носителе.
JCT-VC разработал стандарт высокоэффективного видеокодирования H.265 (high efficiency video coding, HEVC). Стандартизация HEVC основана на развитой модели устройства декодирования видео, где модель называется тестовой моделью HEVC (HEVC model, HM). Последний стандартный документ H.265 доступен по адресу http://www.itu.int/rec/T-REC-H.265. Последней версией стандартного документа является H.265 (12/16), и стандартный документ полностью включен в настоящее описание посредством ссылки. В HM предполагается, что устройство декодирования видео имеет несколько дополнительных возможностей по сравнению с существующим алгоритмом в ITU-TH.264/AVC. Например, H.264 обеспечивает девять режимов кодирования с внутренним предсказанием, тогда как HM может обеспечивать до 35 режимов кодирования с внутренним предсказанием.
JVET разрабатывает стандарт H.266. Процесс стандартизации H.266 основан на усовершенствованной модели устройства декодирования видео, где модель упоминается как тестовая модель H.266. Описания алгоритмов H.266 доступны на http://phenix.int-evry.fr/jvet, и последние описания алгоритмов содержаться в JVET-F1001-v2. Документ с описанием алгоритма полностью включен в настоящий документ посредством ссылки. Кроме того, справочное программное обеспечение для тестовой модели JEM доступно по адресу https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/, и оно также полностью включено в настоящий документ посредством ссылки.
Обычно, как описано в рабочей модели HM, видеокадр или изображение могут быть разделены на последовательность древовидных блоков или наибольших блоков кодирования (largest coding unit, LCU), включающие в себя как выборки яркости, так и выборки цветности. LCU также называется блоком дерева кодирования (coding tree unit, CTU). Блок дерева имеет функцию, аналогичную функции макроблока в стандарте H.264. Сегмент включает в себя несколько последовательных блоков дерева в порядке декодирования. Видеокадр или изображение могут быть разделены на один или несколько сегментов. Каждый блок дерева может быть разделен на блоки кодирования на основании дерева квадрантов. Например, блок дерева, служащий корневым узлом дерева квадрантов, может быть разделен на четыре дочерних узла, и каждый дочерний узел может также служить в качестве родительского узла и быть разделен на четыре других дочерних узла. Конечный нерасщепляемый дочерний узел, служащий листовым узлом дерева квадрантов, включает в себя узел декодирования, например, декодированный блок видео. Максимальное количество раз, когда блок дерева может быть разделен, и минимальный размер узла декодирования может быть определен в данных синтаксиса, ассоциированных с декодированным битовым потоком.
Блок кодирования включает в себя узел декодирования, блок предсказания (prediction unit, PU) и блок преобразования (transform unit, TU), ассоциированный с узлом декодирования. Размер CU соответствует размеру узла декодирования, и форма CU должна быть квадратом. Размер CU может варьироваться от 8 × 8 пикселей до максимума 64 × 64 пикселей или может быть большим размером блока дерева. Каждый CU может включать в себя один или несколько PUs и один или несколько TUs. Например, данные синтаксиса, ассоциированные с CU, могут описывать разделение одного CU на один или несколько PUs. Режимы разделения могут изменяться, когда CU кодируется на основании режима пропуска или прямого предсказания, кодируется на основании режима внутреннего предсказания или кодируется на основании режима внешнего предсказания. PU, полученный в результате разделения, может иметь неквадратную форму. Например, данные синтаксиса, ассоциированные с CU, могут альтернативно описывать разделение одного CU на один или несколько TUs на основании дерева квадрантов. TU может иметь квадратную или неквадратную форму.
Стандарт HEVC допускает преобразование на основании TU. Tus могут быть разными для разных CUs. Размер TU обычно устанавливается на основании размера PU в пределах данного CU, определенном для разделенного LCU. Однако так бывает не всегда. Размер TU обычно такой же или меньше размера PU. В некоторых возможных реализациях структура дерева квадрантов, именуемая «остаточное дерево квадрантов» (residual quadtree, RQT), может использоваться для разделения остаточной выборки, соответствующей CU, на меньшие блоки. Листовой узел RQT может называться TU. Разность пикселей, ассоциированная с TU, может быть преобразована для генерирования коэффициента преобразования, и коэффициент преобразования может быть квантован.
Обычно PU включает в себя данные, относящиеся к процессу предсказания. Например, когда PU кодируется на основании режима внутреннего предсказания, PU может включать в себя данные, описывающие режим внутреннего предсказания, соответствующий PU. В другой возможной реализации, когда PU кодируется на основании режима внешнего предсказания, PU может включать в себя данные, определяющие вектор движения PU. Например, данные, определяющие вектор движения PU, могут описывать горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешение (например, точность 1/4 выборки или точность 1/8 выборки) вектора движения, опорного изображения, на которое указывает вектор движения, и/или список опорного изображения (например, список 0, список 1, или список С) вектора движения.
Обычно для TU используются процессы преобразования и квантования. Данный CU, включающий в себя один или несколько PUs, также может включать в себя один или несколько TUs. После предсказания видеокодер 100 может вычислить остаточное значение, соответствующее PU. Остаточное значение включает в себя разность пикселей. Разность пикселей может быть преобразована в коэффициент преобразования и коэффициент преобразования квантуется и подвергается сканированию TU для генерирования сериализованного коэффициента преобразования для энтропийного декодирования. В настоящем изобретении термин «блок видео» обычно используется для обозначения узла декодирования CU. В некоторых конкретных приложениях в настоящем изобретении термин «блок видео» также может использоваться для обозначения древовидного блока, такого как LCU или CU, включающий в себя узел декодирования, PU и TU.
Видеопоследовательность обычно включает в себя серию видеокадров или изображений. Например, группа изображений (group of picture, GOP) включает в себя серию видеоизображений или одно или несколько видеоизображений. GOP может включать в себя данные синтаксиса в информацию заголовка GOP, в информацию заголовка одного или нескольких изображений или где-то еще, и данные синтаксиса описывают количество изображений, включенных в GOP. Каждый сегмент изображения может включать в себя данные синтаксиса сегмента, описывающие режим кодирования для соответствующего изображения. Видеокодер 100 обычно выполняет операцию над блок видео в сегменте видео, чтобы кодировать видеоданные. Блок видео может соответствовать узлу декодирования в CU. Размер блок видео может быть фиксированным или переменным и может изменяться в зависимости от указанного стандарта декодирования.
В возможной реализации HM поддерживает предсказание для PU с множеством размеров. Предполагая, что размер заданного CU равен 2N × 2N, HM поддерживает внутреннее предсказание для PU с размером 2N × 2N или N × N, и внешнее предсказание для симметричного PU с размером 2N × 2N, 2N × N, N × 2N или N × N. HM также поддерживает асимметричное разделение для внешнего предсказания для размеров PU 2N × nU, 2N × nD, nL × 2N или nR × 2N. При асимметричном разделении CU не разделяется в одном направлении, и делится на две части в другом направлении, где одна часть составляет 25% CU и другая часть равна 75% CU. Часть, на которую приходится 25% CU, обозначается индикатором, включающим в себя «n», за которым следует «U (вверх)», «D (вниз)», «L (влево)» или «R (вправо)». Следовательно, например, «2N × nU» относится к горизонтально разделенному 2N × 2N CU с PU 2N × 0,5N вверху и PU 2Nx1,5N внизу.
В настоящем изобретении «N × N» и «N, умноженное на N» используются взаимозаменяемо для указания размера пикселя блока видео в вертикальном измерении и горизонтальном измерении, например, 16 × 16 пикселей или 16 умноженных на 16 пикселей. Обычно блок 16 × 16 имеет 16 пикселей в вертикальном направлении (y = 16) и 16 пикселей в горизонтальном направлении (x = 16). Точно так же блок N × N имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N является неотрицательным целым числом. Пиксели в блоке могут быть расположены в строках и столбцах. Кроме того, в блоке количество пикселей в горизонтальном направлении и количество пикселей в вертикальном направлении не обязательно может быть одинаковым. Например, блок может включать в себя N × M пикселей, где M не обязательно равно N.
После того, как выполнено декодирование с внутренним или внешним предсказанием для PU в CU, видеокодер 100 может вычислить остаточные данные TU в CU. PU может включать в себя данные пикселей в пространственной области (также называемой областью пикселей). TU может включать в себя коэффициент в области преобразования после того, как к остаточным видеоданным применяется преобразование (например, дискретное косинусное преобразование (discrete cosine transform, DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование). Остаточные данные могут соответствовать разности пикселей между пикселями некодированного изображения и значением предсказания, соответствующему PU. Видеокодер 100 может генерировать TU, включающий в себя остаточные данные CU, и затем преобразовывать TU для генерирования коэффициента преобразования CU.
После выполнения любого преобразования для генерирования коэффициентов преобразования видеокодер 100 может квантовать коэффициенты преобразования. Квантование относится, например, к процессу квантования коэффициентов для уменьшения количества данных, используемых для представления коэффициентов, и реализовать дополнительное сжатие. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, во время квантования n-битовое значение может быть уменьшено до m-битового значения посредством округления, где n больше m.
Модель JEM дополнительно улучшает структуру кодирования видеоизображения. В частности, представлена структура блочного кодирования, называемая структурой «дерево квадрантов плюс двоичное дерево» (QTBT). Без использования таких концепций, как CU, PU и TU в HEVC, структура QTBT поддерживает более гибкую форму разделения CU. CU может иметь квадратную или прямоугольную форму. Разделение дерева квадрантов сначала выполняется на CTU, и далее выполняется разделение двоичного дерева на листовом узле дерева квадрантов. Кроме того, в разделении двоичного дерева есть два режима разделения: симметричное горизонтальное разбиение и симметричное вертикальное разбиение. Листовой узел двоичного дерева называется CU. CU в модели JEM не может быть далее разделен во время предсказания и преобразования. Другими словами, CU, PU и TU в модели JEM имеют одинаковый размер блока. В существующей модели JEM максимальный размер CTU составляет 256 × 256 пикселей яркости.
В некоторых возможных реализациях видеокодер 100 может сканировать квантованный коэффициент преобразования в заранее определенном порядке сканирования для генерирования сериализованного вектора, который может быть энтропийно закодирован. В других возможных реализациях видеокодер 100 может выполнять адаптивное сканирование. После сканирования квантованного коэффициента преобразования для генерирования одномерного вектора видеокодер 100 может выполнить энтропийное кодирование одномерного вектора с использованием контекстно-зависимого адаптивного кодирования переменной длины (context-based adaptive variable-length code, CAVLC), контекстного адаптивного двоичного арифметического кодирования (context-based adaptive binary arithmetic coding, CABAC), основанное на синтаксисе адаптивное двоичное арифметическое кодирование на основании синтаксиса (syntax-based adaptive binary arithmetic coding, SBAC), энтропии разделения интервалов вероятности (probability interval partitioning entropy, PIPE) или другой способ энтропийного кодирования. Видеокодер 100 может дополнительно выполнять энтропийное кодирование элемента синтаксиса, ассоциированного с кодированными видеоданными, чтобы видеодекодер 200 декодировал видеоданные.
Чтобы выполнить CABAC, видеокодер 100 может назначить контекст в контекстной модели символу, который должен быть передан. Контекст может быть связан с тем, является ли соседнее значение символа ненулевым. Для выполнения CAVLC видеокодер 100 может выбрать код переменной длины для передаваемого символа. Может быть сформировано кодовое слово при кодировании с переменной длиной слова (variable-length, VLC) так, чтобы более короткий код соответствовал более вероятному символу и более длинный код соответствовал менее вероятному символу. Таким образом, по сравнению с использованием кодовых слов одинаковой длины для всех подлежащих передаче символов, использование VLC может снизить скорость передачи битов. Вероятность в CABAC может быть определена на основании контекста, назначенного символу.
В этом варианте осуществления настоящего изобретения для уменьшения временной избыточности между изображениями видеокодер может выполнять внешнее предсказание. Как описано выше, CU может иметь один или несколько блоков предсказания PUs в зависимости от различных стандартов кодирования сжатия видео. Другими словами, множество PUs могут принадлежать одному CU, или PU и CU имеют одинаковый размер. В этой спецификации, когда CU и PU имеют одинаковый размер, режим разделения, соответствующий CU, состоит в том, что CU не разделен, или CU разделен на один PU, и PU единообразно используется для описания. Когда видеокодер выполняет внешнее предсказание, видеокодер может передавать информацию движения PU в видеодекодер. Например, информация движения PU может включать в себя индекс опорного изображения, вектор движения и индикатор направления предсказания. Вектор движения может указывать смещение между блоком изображения (также называемым блок видео, блоком пикселей, набором пикселей или т.п.) PU и опорным блоком PU. Опорный блок PU может быть частью опорного изображения, аналогично блока изображения PU. Опорный блок может быть расположен в качестве опорного изображения, указанного индексом опорного изображения и индикатором направления предсказания.
Чтобы уменьшить количество битов кодирования, необходимых для представления информации движения PU, видеокодер может сгенерировать список предсказанных векторов движения (Motion Vector, MV) для каждой PU на основании режима предсказания слияния или усовершенствованного режима предсказания вектора движения. Каждый кандидат предсказанного вектора движения в списке кандидатов предсказанного вектора движения для PU может указывать информацию движения. Информация движения, указанная некоторыми предсказанными кандидатами вектора движения в списке кандидатов предсказанного вектора движения, может быть основана на информации движения других PUs. Если кандидат предсказанного вектора движения указывает информацию движения одного из указанного пространственного кандидата, предсказанного вектора движения на позиции или указанного временного кандидата предсказанного вектора движения на позиции, кандидат предсказанного вектора движения может упоминаться как «исходный» кандидат предсказанного вектора движения в настоящем изобретении. Например, в режиме слияния, также называемом режимом предсказания слияния в этой спецификации, может быть пять исходных пространственных кандидатов предсказанных векторов движения на позициях и один исходный временной кандидат предсказанного вектора движения на позиции. В некоторых примерах видеокодер может генерировать дополнительные предсказанные кандидаты вектора движения путем объединения некоторых векторов движения из различных исходных кандидатов предсказанного вектора движения, модификации исходного кандидата предсказанного вектора движения или вставки только нулевого вектора движения в качестве кандидата предсказанного вектора движения. Предсказанные векторы движения дополнительных кандидатов не рассматриваются как предсказанные исходные кандидаты векторов движения и в настоящем изобретении могут упоминаться как искусственно сгенерированные предсказанные кандидаты векторов движения.
Технологии в настоящем изобретении обычно включают в себя технологию для составления списка кандидатов предсказанного вектора движения на видеокодере и технологию для составления того же списка кандидатов предсказанного вектора движения на видеодекодере. Видеокодер и видеодекодер могут генерировать один и тот же список кандидатов предсказанного вектора движения путем реализации одной и той же технологии для составления списка кандидатов предсказанного вектора движения. Например, видеокодер и видеодекодер могут составлять списки с одинаковым количеством кандидатов предсказанного вектора движения (например, пять кандидатов предсказанного вектора движения). Видеокодер и видеодекодер могут сначала рассматривать предсказанные векторы движения пространственных кандидатов (например, соседние блоки в одном изображении) и затем рассматривать предсказанные векторы движения временных кандидатов (например, предсказанные кандидаты векторов движения в разных изображениях) и, наконец, могут рассматривать искусственно сгенерированные кандидаты предсказанных векторов движения до тех пор, пока требуемое количество кандидатов предсказанных векторов движения не будет добавлено в списки. Согласно технологиям в настоящем изобретении, во время составления списка кандидатов предсказанного вектора движения операция сокращения может выполняться для некоторых типов кандидатов предсказанного вектора движения для удаления повторяющийся кандидатов предсказанного вектора движения из списка кандидатов предсказанного вектора движения, но может не выполняться для других типов предсказанных векторов движения кандидатов для снижения сложности декодера. Например, для набора предсказанных пространственных кандидатов вектора движения и предсказанного временного кандидата вектора движения может быть выполнена операция отсечения для удаления кандидата предсказанного вектора движения с той же информацией движения из списка кандидатов предсказанного вектора движения. Однако искусственно сгенерированный кандидат предсказанного вектора движения может быть добавлен в список кандидатов предсказанного вектора движения без удаления.
После генерирования списка кандидатов предсказанного вектора движения для PU из CU видеокодер может выбрать кандидат предсказанного вектора движения из списка кандидатов предсказанного вектора движения и вывести индекс кандидата предсказанного вектора движения в битовом потоке. Выбранный кандидат предсказанного вектора движения может быть кандидатом предсказанного вектора движения для генерирования вектора движения, который наиболее точно соответствует значению предсказания целевого PU, который декодируется. Индекс кандидата предсказанного вектора движения может указывать позицию выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанных векторов движения. Видеокодер может дополнительно генерировать блок изображения предсказания PU, основанный на опорном блоке, указанным информацией движения PU. Информация движения PU может быть определена на основании информации движения, указанной выбранным кандидатом предсказанного вектора движения. Например, в режиме слияния информация движения PU может быть такой же, как информация движения, указанная выбранным кандидатом предсказанного вектора движения. В режиме AMVP информация движения PU может быть определена на основании разности векторов движения для PU и информации движения, указанной выбранным кандидатом предсказанного вектора движения. Видеокодер может генерировать один или несколько блоков остаточного изображения CU на основании блока изображения предсказания PU CU и исходного блока изображения CU. Затем видеокодер может кодировать один или несколько блоков остаточного изображения и выводить один или несколько блоков остаточного изображения в битовом потоке.
Битовый поток может включать в себя данные, идентифицирующие выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанного вектора движения для PU. Видеодекодер может определять информацию движения PU на основании информации движения, указанной выбранным кандидатом предсказанного вектора движения в списке кандидатов предсказанного вектора движения для PU. Видеодекодер может идентифицировать один или несколько опорных блоков PU на основании информации движения PU. После идентификации одного или нескольких опорных блоков PU видеодекодер может сгенерировать блок изображения предсказания PU на основании одного или нескольких опорных блоков PU. Видеодекодер может восстановить блок изображения CU на основании блока изображения предсказания PU CU и одного или нескольких остаточных блоков изображения CU.
Для простоты объяснения в настоящем изобретении позиция или блок изображения могут быть описаны как позиция или блок изображения, имеющий различные пространственные отношения с CU или PU. Описание может быть объяснено следующим образом: позиция или блок изображения имеет различные пространственные отношения с блоком изображения, ассоциированным с CU или PU. Кроме того, в настоящем изобретении PU, декодируемый в настоящий момент видеодекодером, может называться текущим PU, а также называться текущим блоком изображения, подлежащий обработке. В настоящем изобретении CU, декодируемый в настоящий момент видеодекодером, может называться текущим CU. В настоящем изобретении изображение, декодируемое в данный момент видеодекодером, может называться текущим изображением. Следует понимать, что настоящее изобретение также применимо к случаю, когда PU и CU имеют одинаковый размер или PU является CU. Для описания единообразно используется PU.
Как кратко описано выше, видеокодер 100 может генерировать блок изображения предсказания и информацию движения PU CU посредством внешнего предсказания. Во многих примерах информация движения данного PU может быть такой же или аналогичной информации движения одного или нескольких соседних PUs (а именно, PU, блок изображения которого пространственно или временно смежен с блоком изображения данного PU). Поскольку соседний PU часто имеет аналогичную информацию движения, видеокодер 100 может кодировать информацию движения данного PU на основании информации движения соседнего PU. Кодирование информации движения данного PU на основании информации движения соседнего PU может уменьшить количество битов кодирования в битовом потоке, которые требуются для указания информации движения данного PU.
Видеокодер 100 может кодировать информацию движения данного PU на основании информации движения соседнего PU различными способами. Например, видеокодер 100 может указывать, что информация движения данного PU такая же, как информация движения соседнего PU. В настоящем изобретении режим слияния может использоваться для указания, что информация движения данного PU является такой же, как или может быть получена из информации движения соседнего PU. В другой возможной реализации видеокодер 100 может вычислить разность векторов движения (Motion Vector Difference, MVD) для данного PU. MVD указывает разницу между вектором движения данного PU и вектором движения соседнего PU. Видеокодер 100 может добавлять MVD вместо вектора движения данного PU в информацию движения данного PU. В битовом потоке количество битов кодирования, необходимых для представления MVD, меньше количества битов кодирования, необходимых для представления вектора движения данного PU. В настоящем изобретении может использоваться усовершенствованный режим предсказания вектора движения для указания, что информация движения заданного PU передается на сторону декодера с использованием MVD и значения индекса, которое используется для идентификации кандидата вектора движения.
Для сигнализации, на основании режима слияния или режима AMVP, информации движения данного PU стороне декодера, видеокодер 100 может сгенерировать список кандидатов предсказанного вектора движения для данного PU. Список кандидатов предсказанного вектора движения может включать в себя один или несколько кандидатов предсказанного вектора движения. Каждый из кандидатов предсказанного вектора движения в списке кандидатов предсказанного вектора движения для данного PU может указывать информацию движения. Информация движения, указанная каждым кандидатом предсказанного вектора движения, может включать в себя вектор движения, индекс опорного изображения и индикатор направления предсказания. Кандидаты предсказанного вектора движения в списке кандидатов предсказанного вектора движения могут включать в себя «исходный» кандидат предсказанного вектора движения. Каждый из кандидатов предсказанного вектора движения указывает информацию движения в одном из указанных кандидатов предсказанного вектора движения на позициях в пределах PU, отличных от данного PU.
После генерирования списка кандидатов предсказанного вектора движения для PU видеокодер 100 может выбрать один кандидат предсказанного вектора движения из списка кандидатов предсказанного вектора движения, который используется для PU. Например, видеокодер может сравнивать каждый кандидат предсказанного вектора движения с PU, который декодируется, и может выбирать кандидат предсказанного вектора движения с требуемой стоимостью искажения скорости. Видеокодер 100 может выводить предсказанный индекс кандидата вектора движения для PU. Индекс кандидата предсказанного вектора движения может идентифицировать позицию выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанного вектора движения.
Дополнительно, видеокодер 100 может генерировать блок изображения предсказания PU, основанный на опорный блоке, указанной информацией движения PU. Информация движения PU может быть определена на основании информации движения, указанной выбранным кандидатом предсказанного вектора движения в списке кандидатов предсказанного вектора движения для PU. Например, в режиме слияния информация движения PU может быть такой же, как информация движения, указанная выбранным кандидатом предсказанного вектора движения. В режиме AMVP информация движения PU может быть определена на основании разности векторов движения для PU и информации движения, указанной выбранным кандидатом предсказанного вектора движения. Как описано выше, видеокодер 100 может обрабатывать блок изображения предсказания PU.
Когда видеодекодер 200 принимает битовый поток, видеодекодер 200 может сгенерировать список кандидатов предсказанного вектора движения для каждой PU из CU. Список кандидатов предсказанного вектора движения, сгенерированный видеодекодером 200 для PU, может быть таким же, как список кандидатов предсказанного вектора движения, сгенерированный видеокодером 100 для PU. Элемент синтаксиса, полученный путем синтаксического анализа битового потока, может указывать позицию выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанного вектора движения для PU. После генерирования списка кандидатов предсказанных векторов движения для PU, видеодекодер 200 может сгенерировать блок изображения предсказания PU на основании одного или нескольких опорных блоков, указанных информацией движения PU. Видеодекодер 200 может определять информацию движения PU на основании информации движения, указанной выбранным кандидатом предсказанного вектора движения в списке кандидатов предсказанного вектора движения для PU. Видеодекодер 200 может восстановить блок изображения CU на основании блока изображения предсказания PU и остаточного блока изображения CU.
Следует понимать, что в возможной реализации на стороне декодера составление списка кандидатов предсказанного вектора движения и анализ битового потока для получения позиции выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанного вектора движения являются независимыми друг друга, и могут выполняться в любом порядке или параллельно.
В другой возможной реализации на стороне декодера сначала получается позиция выбранного кандидата предсказанного вектора движения в списке предсказанных векторов движения путем анализа битового потока и затем составляется список кандидатов предсказанного вектора движения на основании позиции, полученной посредством синтаксического анализа. В этой реализации нет необходимости составлять все списки кандидатов предсказанного вектора движения, и нужно составить только список кандидатов предсказанного вектора движения на позиции, полученной посредством синтаксического анализа, а именно, при условии, что кандидат предсказанного вектора движения на позиции можно определить. Например, когда получается, путем синтаксического анализа битового потока, что выбранный кандидат предсказанного вектора движения является кандидатом предсказанного вектора движения, индекс которого равен 3 в списке кандидатов предсказанного вектора движения, необходимо составить только список с кандидата предсказанного вектора движения, включающий в себя кандидата предсказанного вектора движения, индекс которого равен 0, по кандидат предсказанного вектора движения, индекс которого равен 3, и можно определить кандидат предсказанного вектора движения, индекс которого равен 3. Это может снизить сложность и повысить эффективность декодирования.
Фиг. 2 является блок-схемой примера видеокодера 100 согласно варианту осуществления настоящего изобретения. Видеокодер 100 выполнен с возможностью выводить видео в объект 41 постобработки. Объект 41 постобработки представляет собой пример объекта видео, который может обрабатывать закодированные видеоданные из видеокодера 100. Например, объект видео является сетевым элементом с поддержкой мультимедиа (MANE) или устройством видеомонтажа/устройством редактирования. В некоторых случаях объект 41 постобработки может быть примером сетевого объекта. В некоторых системах видеокодирования объект 41 постобработки и видеокодер 100 могут быть компонентами отдельных устройств. В других случаях функции объекта 41 постобработки могут выполняться одним и тем же устройством, включающим в себя видеокодер 100. В одном примере объект 41 постобработки является примером устройства 40 хранения на фиг. 1.
В примере на фиг. 2, видеокодер 100 включает в себя блок 108 обработки предсказания, блок 106 фильтра, буфер 107 декодированного изображения (decoded picture buffer, DPB) 107, сумматор 112, преобразователь 101, квантователь 102 и энтропийный кодер 103. Блок 108 обработки предсказания включает в себя блок 110 внешнего предсказания и блок 109 внутреннего предсказания. Для восстановления блока изображения видеокодер 100 дополнительно включает в себя обратный квантователь 104, обратный преобразователь 105 и сумматор 111. Блок 106 фильтра предназначен для представления одного или нескольких контурных фильтров, например, фильтр удаления блочности, адаптивный контурный фильтр (adaptive loop filter, ALF) и фильтр с адаптивным смещением выборки (sample adaptive offset, SAO). Хотя блок 106 фильтра показан на фиг. 2, в другой реализации блок 106 фильтра может быть реализован как постконтурный фильтр. В одном примере видеокодер 100 может дополнительно включать в себя память видеоданных и блок разделения (который не показан на чертеже).
Память видеоданных может хранить видеоданные, которые должны быть кодированы компонентом видеокодера 100. Видеоданные, хранящиеся в памяти видеоданных, могут быть получены из источника 120 видео. DPB 107 может быть памятью опорных изображений который хранит опорные видеоданные, используемые видеокодером 100 для кодирования видеоданных в режиме внутреннего кодирования или режиме внешнего кодирования. Память видеоданных и DPB 107 могут включать в себя любой из множества типов устройств памяти, например, динамическую память с произвольным доступом (dynamic random access memory, DRAM), включающую в себя синхронную динамическую память с произвольным доступом (synchronous dynamic random access memory, SDRAM), магнитное RAM (magnetic random access memory, MRAM), резистивная RAM (resistive random access memory, RRAM) или другой тип запоминающего устройства. Память видеоданных и DPB 107 могут быть предоставлены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах память видеоданных может быть интегрирована в микросхему вместе с другими компонентами видеокодера 100 или может быть расположена вне микросхемы относительно этих компонентов.
Как показано на фиг. 2, видеокодер 100 принимает видеоданные и сохраняет видеоданные в памяти видеоданных. Блок разделения разделяет видеоданные на несколько блоков изображения и может дополнительно разделять эти блоки изображения на более мелкие блоки, например, разделять эти блоки изображения на основании структуры дерева квадрантов или структуры двоичного дерева. Разделение может дополнительно включать в себя разделение на сегменты (slice), плитки (tile) или другие более крупные блоки. Видеокодер 100 обычно представляет собой компонент, который кодирует блок изображения в сегменте видео, который должен быть закодирован. Сегмент может быть разделен на множество блоков изображения (и может быть разделен на набор блоков изображения, который называется плиткой). Блок 108 обработки предсказания может выбрать один из множества возможных режимов кодирования, используемых для текущего блока изображения, например, выбрать один из множества режимов внутреннего кодирования или один из множества режимов внешнего кодирования. Блок 108 обработки предсказания может предоставить полученный внутри-кодированный или внешне-кодированный блок сумматору 112 для генерирования остаточного блока и предоставить полученный внутри-кодированный или внешне-кодированный блок сумматору 111 для восстановления кодированного блока, который используется как опорное изображение.
Внутренний предиктор 109 в блоке 108 обработки предсказания может выполнять кодирование с внутренним предсказанием текущего блока, который должен быть закодирован, относительно одного или нескольких соседних блоков, которые находятся в том же кадре или сегменте, что и текущий блок изображения, для удаления пространственной избыточности. Блок 110 внешнего предсказания в блоке 108 обработки предсказания может выполнять кодирование с внешним предсказанием для текущего блока изображения относительно одного или нескольких блоков предсказания в одном или нескольких опорных изображениях для удаления временной избыточности.
В частности, внешний предиктор 110 может быть выполнен с возможностью определять режим внешнего предсказания, используемый для кодирования текущего блока изображения. Например, внешний предиктор 110 может вычислять значения искажения скорости для различных режимов внешнего предсказания в подходящем режиме внешнего предсказания, установленном посредством анализа искажения скорости, и выбирать режим внешнего предсказания с функцией оптимального отношения скорость-искажение из набора кандидатов режима внешнего предсказания. Анализ скорости-искажения обычно используется для определения величины искажения (или ошибки) между кодированным блоком и исходным некодированным блоком, из которого кодированный блок генерируется посредством кодирования, и скорости передачи данных (а именно, количества битов), используемой для генерирования закодированного блока. Например, внешний предиктор 110 может определить, что режим внешнего предсказания в наборе кандидатов режимов внешнего предсказания, используемый для кодирования текущего блока изображения с минимальной стоимостью искажения скорости передачи данных, является режимом внешнего предсказания, используемым для выполнения внешнего предсказания для текущего блока изображения.
Внешний предиктор 110 выполнен с возможностью: предсказывать информацию движения (например, вектор движения) одного или более субблоков текущего блока изображения на основании определенного режима внешнего предсказания и получать или генерировать блок предсказания текущего блока изображения на основании информации движения (например, вектора движения) одного или нескольких субблоков текущего блока изображения. Внешний предиктор 110 может найти в одном из списков опорных изображений блок предсказания, на который указывает вектор движения. Внешний предиктор 110 может дополнительно генерировать элемент синтаксиса, ассоциированный с блоком изображения и сегментом видео, так что видеодекодер 200 использует элемент синтаксиса для декодирования блока изображения в сегменте видео. В качестве альтернативы, в примере, внешний предиктор 110 выполняет процесс компенсации движения на основании информации движения каждого субблока для генерирования блока предсказания каждого субблока и получения блока предсказания текущего блока изображения. Следует понимать, что внешний предиктор 110 в настоящем описании выполняет процесс оценки движения и процесс компенсации движения.
В частности, после выбора режима внешнего предсказания для текущего блока изображения, внешний предиктор 110 может предоставить энтропийному кодеру 103 информацию, указывающую режим внешнего предсказания, выбранный для текущего блока изображения, так что энтропийный кодер 103 кодирует информацию с указанием выбранного режима внешнего предсказания.
Внутренний предиктор 109 может выполнять внутреннее предсказание для текущего блока изображения. Понятно, что внутренний предиктор 109 может определять режим внутреннего предсказания, используемый для кодирования текущего блока. Например, внутренний предиктор 109 может вычислять значения искажения скорости для различных подлежащих тестированию режимов внутреннего предсказания посредством анализа скоростей-искажений и выбирать режим внутреннего предсказания с функцией оптимальной скорости-искажения из подлежащих тестированию режимов. В любом случае, после выбора режима внутреннего предсказания для блока изображения, внутренний предиктор 109 может предоставить энтропийному кодеру 103 информацию, указывающую режим внутреннего предсказания, выбранный для текущего блока изображения, так что энтропийный кодер 103 кодирует информацию, указывающую выбранный режим внутреннего предсказания.
После того, как блок 108 обработки предсказания сгенерирует блок предсказания текущего блока изображения посредством внешнего предсказания и внутреннего предсказания, видеокодер 100 получает остаточный блок изображения путем вычитания блока предсказания из текущего блока изображения, который должен быть закодирован. Сумматор 112 представляет один или несколько компонентов, которые выполняют операцию вычитания. Остаточные видеоданные в остаточном блоке могут быть включены в один или несколько блоков TUs и подаются в преобразователь 101. Преобразователь 101 преобразует остаточные видеоданные в коэффициент остаточного преобразования посредством преобразования, такого как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование. Преобразователь 101 может преобразовывать остаточные видеоданные из области значений пикселей в область преобразования, например, частотную область.
Преобразователь 101 может отправить полученный коэффициент преобразования на квантователь 102. Квантователь 102 квантует коэффициент преобразования, чтобы дополнительно снизить скорость передачи битов. В некоторых примерах квантователь 102 может дополнительно сканировать матрицу, включающую в себя квантованный коэффициент преобразования. В качестве альтернативы энтропийный кодер 103 может выполнять сканирование.
После квантования энтропийный кодер 103 выполняет энтропийное кодирование квантованного коэффициента преобразования. Например, энтропийный кодер 103 может выполнять контекстно-адаптивное кодирование с переменной длиной (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропию с вероятностным интервалом разделения (PIPE) кодирование или другой способ или технологию энтропийного кодирования. После выполнения энтропийного кодирования энтропийный кодер 103 может передавать закодированный битовый поток в видеодекодер 200 или архивировать закодированный битовый поток для последующей передачи или для последующего поиска видеодекодером 200. Энтропийный кодер 103 может дополнительно выполнять энтропийное кодирование элемента синтаксиса текущего блока изображения, который должен быть закодирован.
Обратный квантователь 104 и обратный преобразователь 105, соответственно, выполняют обратное квантование и обратное преобразование для восстановления остаточного блока в пиксельной области, например, что впоследствии используют в качестве опорного блока опорного изображения. Сумматор 111 добавляет восстановленный остаточный блок к блоку предсказания, сгенерированному с помощью внешнего предиктора 110 или внутреннего предиктора 109, для генерирования восстановленного блока изображения. Блок 106 фильтра применим к восстановленному блоку изображения для уменьшения искажения, например, артефакта блочности (block artifacts). Затем, восстановленный блок изображения используется в качестве опорного блока и сохраняется в буфере 107 декодированного изображения, и может быть использовано внешний предиктором 110 в качестве опорного блока для выполнения внешнего предсказания блока в последующем видеокадре или изображении.
Следует понимать, что другие структурные варианты видеокодера 100 могут использоваться для кодирования видеопотока. Например, для некоторых блоков изображения или кадров изображения видеокодер 100 может непосредственно квантовать остаточный сигнал, обработка преобразователем 101 не требуется и, соответственно, обработка обратным преобразователем 105 также не требуется. В качестве альтернативы, для некоторых блоков изображения или кадров изображения видеокодер 100 не генерирует остаточные данные и, соответственно, обработка преобразователем 101, квантователем 102, обратным квантователем 104 и обратным преобразователем 105 не требуется. В качестве альтернативы видеокодер 100 может хранить непосредственно восстановленный блок изображения в качестве опорного блока, и обработка с помощью блока 106 фильтра не требуется. В качестве альтернативы квантователь 102 и обратный квантователь 104 в видеокодере 100 могут быть объединены.
Фиг. 3 является блок-схемой примера видеодекодера 200 согласно варианту осуществления настоящего изобретения. В примере на фиг. 3, видеодекодер 200 включает в себя энтропийный декодер 203, блок 208 обработки предсказания, обратный квантователь 204, обратный преобразователь 205, сумматор 211, блок 206 фильтра и DPB 207. Блок 208 обработки предсказания может включать в себя внешний предиктор 210 и внутренний предиктор 209. В некоторых примерах видеодекодер 200 может выполнять процесс декодирования, который примерно обратен процессу кодирования, описанному со ссылкой на видеокодер 100 на фиг. 2.
Во время декодирования видеодекодер 200 принимает от видеокодера 100 кодированный битовый поток видеоданных, который представляет блок изображения в кодированном сегменте видео и ассоциированный с ним элемент синтаксиса. Видеодекодер 200 может принимать видеоданные из сетевого объекта 42 и, возможно, может дополнительно сохранять видеоданные в памяти видеоданных (которая не показана на чертеже). Память видеоданных может хранить видеоданные, например, кодированный битовый поток, который должен быть декодирован компонентом видеодекодера 200. Видеоданные, хранящиеся в памяти видеоданных, могут быть получены, например, из локального источника видео, такого как устройство 40 хранения или камера, посредством проводной или беспроводной сетевой передачи видеоданных или путем доступа к физическому носителю данных. Память видеоданных может использоваться как буфер декодированных изображений (DPB) для хранения кодированных видеоданных из кодированного битового потока видеоданных. Следовательно, хотя память видеоданных не показана на фиг. 3, память видеоданных и DPB 207 могут быть одной и той же памятью или могут быть памятью, которая расположена отдельно. Память видеоданных и DPB 207 каждый может включать в себя любой из множества типов устройств памяти, например, динамическую память с произвольным доступом (DRAM), включающую в себя синхронную DRAM (SDRAM), магнитную RAM (MRAM), резистивную RAM (RRAM) или другой тип запоминающего устройства. В различных примерах память видеоданных может быть интегрирована в микросхему вместе с другими компонентами видеодекодера 200 или может быть расположена вне микросхемы относительно этих компонентов.
Сетевой объект 42 может быть, например, сервером, MANE, видеоредактором/устройством видеомонтажа или другим устройством, выполненным с возможностью реализации одной или более технологий, описанных выше. Сетевой объект 42 может включать в себя или не включать в себя видеокодер, например, видеокодер 100. Перед тем, как сетевой объект 42 отправит закодированный битовый поток видео в видеодекодер 200, сетевой объект 42 может реализовать часть технологий, описанных в настоящем изобретении. В некоторых системах декодирования видео сетевой объект 42 и видеодекодер 200 могут быть компонентами отдельных устройств. В других случаях функции сетевого объекта 42 могут выполняться одним и тем же устройством, включающим в себя видеодекодер 200. В некоторых случаях сетевой объект 42 может быть примером устройства 40 хранения на фиг. 1.
Энтропийный декодер 203 в видеодекодере 200 выполняет энтропийное декодирование битового потока для генерирования квантованного коэффициента и некоторых элементов синтаксиса. Энтропийный декодер 203 пересылает элементы синтаксиса в блок 208 обработки предсказания. Видеодекодер 200 может принимать элементы синтаксиса на уровне сегмента видео и/или уровне блока изображения.
Когда сегмент видео декодируется в внутренне-декодированный (I) сегмент, внутренний предиктор 209 в блоке 208 обработки предсказания может сгенерировать блок предсказания блока изображения в текущем сегменте видео на основании сигнализированного режима внутреннего предсказания и данных ранее декодированного блока текущего кадра или изображения. Когда сегмент видео декодируется в сегмент с внешним декодированием (а именно, B или P), внешний предиктор 210 в блоке 208 обработки предсказания может определять на основании элементов синтаксиса, полученных из энтропийного декодера 203, используемый режим внешнего предсказания для декодирования текущего блока изображения в текущем сегменте видео и декодирования (например, выполнения внешнего предсказания) текущего блока изображения на основании определенного режима внешнего предсказания. В частности, внешний предиктор 210 может определять, для предсказания текущего блока изображения используется ли новый режим внешнего предсказания для предсказания текущего блока изображения в текущем сегменте видео. Если элемент синтаксиса указывает, что используется новый режим внешнего предсказания, информация движения текущего блока изображения в текущем сегменте видео или информация движения субблока текущего блока изображения предсказывается на основании нового внешнего предсказания режим предсказания (например, новый режим внешнего предсказания, указанный с помощью элемента синтаксиса или новый режим внешнего предсказания по умолчанию), и получается блок предсказания текущего блока изображения или блок предсказания подблока текущего блока изображения, или генерируется в процессе компенсации движения с использованием предсказанной информации движения, которая относится к текущему блоку изображения или субблоку текущего блока изображения. Информация движения в настоящем документе, может включать в себя информацию об изображении и опорный вектор движения. Информация об опорных изображениях может включать в себя, но не ограничивается ими, информацию об одном/двукратном предсказании, номер списка опорных изображений и индекс опорных изображений, соответствующий списку опорных изображений. Для внешнего предсказания блок предсказания может быть сгенерирован из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 200 может составить списки опорных изображений, то есть, список 0 и списка 1, на основании опорных изображений, сохраненных в DPB 207. Индекс опорного кадра текущего изображения может быть включен в один из или оба список 0 опорных кадров и список 1 опорных кадров. В некоторых примерах видеокодер 100 может сигнализировать, используется ли новый режим внешнего предсказания для декодирования конкретного элемента синтаксиса конкретного блока, или сигнализировать, используется ли новый режим внешнего предсказания и какой новый режим внешнего предсказания используется для декодирования конкретного элемента синтаксиса конкретного блока. Следует понимать, что здесь внешний предиктор 210 выполняет процесс компенсации движения.
Блок 204 обратного квантования выполняет обратное квантование, то есть, деквантовывает квантованный коэффициент преобразования, предоставленный в битовом потоке и декодированный энтропийным декодером 203. Процесс обратного квантования может включать в себя: определение степени квантования, которая должна применяться, с использованием параметра квантования, вычисляемый видеокодером 100 для каждого блока изображения в сегменте видео, и определение степени обратного квантования, которая должна применяться, таким же образом. Обратный преобразователь 205 выполняет обратное преобразование, например обратное DCT, обратное целочисленное преобразование или концептуально подобный процесс обратного преобразования коэффициента преобразования для генерирования остаточного блока пиксельной области.
После того, как внешний предиктор 210 сгенерирует блок предсказания для текущего блока изображения или субблока текущего блока изображения, видеодекодер 200 добавляет остаточный блок из обратного преобразователя 205 и соответствующий блоку предсказания, сгенерированный внешним предиктором 210, для получения восстановленного блока, а именно, блока декодированного изображения. Сумматор 211 представляет компонент, который выполняет операцию суммирования. При необходимости контурный фильтр (либо в цикле декодирования, либо после цикла декодирования) может дополнительно использоваться для сглаживания переходов пикселей или улучшения качества видео другим способом. Блок 206 фильтра может представлять один или несколько контурных фильтров, например, фильтр удаления блочности, адаптивный контурный фильтр (ALF) и фильтр с адаптивным смещением выборки (SAO). Хотя блок 206 фильтра показан на фиг. 2, в другой реализации блок 206 фильтра может быть реализован как постконтурный фильтр. В примере блок 206 фильтра применим к восстановленному блоку для уменьшения искажения блока, и результат выводится как декодированный видеопоток. Кроме того, декодированный блок изображения в заданном кадре или изображения могут дополнительно быть сохранены в DPB 207, и DPB 207 хранит опорное изображение, используемое для последующей компенсации движения. DPB 207 может быть частью памяти и может дополнительно хранить декодированное видео для последующего представления в устройство отображения (например, устройство 220 отображения на фиг. 1). В качестве альтернативы DPB 207 может быть отделен от такой памяти.
Следует понимать, что другие структурные варианты видеодекодера 200 могут использоваться для декодирования кодированного битового потока видеоданных. Например, видеодекодер 200 может генерировать выходной видеопоток, и обработка блоком 206 фильтра не требуется. В качестве альтернативы, для некоторых блоков изображения или кадров изображения энтропийный декодер 203 в видеодекодере 200 не получает квантованный коэффициент посредством декодирования и, соответственно, обработка обратным квантователем 204 и обратным преобразователем 205 не требуется.
Как описано выше, технологии в настоящем изобретении относятся, например, к внешнему декодированию. Следует понимать, что технологии в настоящем изобретении могут выполняться любым одним видеокодеком, описанным в настоящем изобретении, и видеодекодер включает в себя (например) видеокодер 100 и видеодекодер 200, показанные и описанные на фиг. 1-фиг. 3. Чтобы быть конкретным, в возможной реализации, внешний предиктор 110, описанный на фиг. 2, может выполнять конкретную технологию, описанную ниже, когда внешнее предсказание выполняется во время кодирования блока видеоданных. В другой возможной реализации внешний предиктор 210, описанный на фиг. 3, может выполнять конкретную технологию, описанную ниже, когда внешнее предсказание выполняется во время декодирования блока видеоданных. Следовательно, ссылка на общий «видеокодер» или «видеодекодер» может включать в себя видеокодер 100, видеодекодер 200 или другой блок кодирования видео или блок декодирования.
Следует понимать, что в кодере 100 и декодере 200 в настоящем изобретении результат обработки этапа может быть дополнительно обработан и затем выведен на следующий этап. Например, после такого этапа, как интерполяционная фильтрация, вывод вектора движения или контурная фильтрация результата обработки соответствующего этапа, выполняется дополнительная операция, такая как отсечение или сдвиг.
Например, значение вектора движения ограничено определенным диапазоном битовой глубины. Предполагая, что допустимая битовая глубина вектора движения равна bitDepth, значение вектора движения находится в диапазоне от –2 ^ (bitDepth - 1) до 2 ^ (bitDepth - 1) - 1, где символ «^» представляет возведение в степень. Если bitDepth равно 16, значение находится в диапазоне от –32768 до 32767. Если bitDepth равно 18, значение находится в диапазоне от –131072 до 131071. Значение вектора движения может быть ограничено одним из следующих двух способов:
Способ 1. Удаляется старший значащий бит переполнения вектора движения:
Например, значение vx равно –32769, а 32767 выводится в соответствии с приведенными выше формулами. Значение хранится на компьютере в представлении с дополнением до двух, представление с дополнением до двух –32769 составляет 1,0111,1111,1111,1111 (17 бит), и обработка, выполняемая компьютером для переполнения, отбрасывает самый старший бит. Следовательно, значение vx равно 0111,1111,1111,1111, то есть, 32767. Это значение согласуется с результатом, полученным в результате обработки в соответствии с формулами.
Способ 2: выполняется отсечение вектора движения, и используются следующие формулы:
В приведенных выше формулах Clip3 определяется как усечение значения z до диапазона [x, y]
Фиг. 4 представляет собой блок-схему модуля 121 внешнего предсказания согласно варианту осуществления настоящего изобретения. Например, модуль 121 внешнего предсказания может включать в себя блок оценки движения и блок компенсации движения. Отношения между PU и CU варьируются в зависимости от стандарта кодирования сжатия видео. Модуль 121 внешнего предсказания может разделить текущий CU на PU на основании множества режимов разделения. Например, модуль 121 внешнего предсказания может разделить текущий CU на PU на основании режимов разделения 2N × 2N, 2N × N, N × 2N и N × N. В другом варианте осуществления текущий CU является текущим PU. Это не ограничено.
Модуль 121 внешнего предсказания может выполнять целочисленную оценку движения (Integer Motion Estimation, IME) и затем дробную оценку движения (Fraction Motion Estimation, FME) для каждого PU. Когда модуль 121 внешнего предсказания выполняет IME для PU, модуль 121 внешнего предсказания может искать в одном или нескольких опорных изображениях опорный блок PU. После нахождения опорного блока PU, модуль 121 внешнего предсказания может генерировать вектор движения, который указывает, с точностью до целого числа, пространственное смещение между PU и опорным блоком PU. Когда модуль 121 внешнего предсказания выполняет FME для PU, модуль 121 внешнего предсказания может улучшить вектор движения, сгенерированный посредством выполнения IME для PU. Вектор движения, сгенерированный посредством выполнения FME на PU, может иметь субцелочисленную точность (например, точность 1/2 выборки или точность 1/4 выборки). После генерирования вектора движения для PU модуль 121 внешнего предсказания может сгенерировать блок изображения предсказания PU, используя вектор движения PU.
В некоторых возможных реализациях, в которых модуль 121 внешнего предсказания передает информацию движения PU на сторону декодера на основании режима AMVP, модуль 121 внешнего предсказания может генерировать список кандидатов предсказанного вектора движения для PU. Список кандидатов предсказанного вектора движения может включать в себя один или несколько исходных кандидатов предсказанного вектора движения и один или несколько дополнительных кандидатов предсказанного вектора движения, полученных из одного или нескольких исходных кандидатов предсказанного вектора движения. После генерирования списка кандидатов предсказанных векторов движения для PU модуль 121 внешнего предсказания может выбрать кандидата предсказанного вектора движения из списка кандидатов предсказанного вектора движения и сгенерировать разность векторов движения (MVD) для PU. MVD для PU может указывать разность между вектором движения, указанным выбранным кандидатом предсказанного вектора движения, и вектором движения, сгенерированным для PU через IME и FME. В этих возможных реализациях модуль 121 внешнего предсказания может выводить индекс кандидата предсказанного вектора движения, используемый для идентификации позиции выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанного вектора движения. Модуль 121 внешнего предсказания может дополнительно выводить MVD для PU. Ниже подробно описывается возможная реализация усовершенствованного режима предсказания вектора движения (AMVP) на фиг. 6 в этом варианте настоящего изобретения.
В дополнение к выполнению IME и FME на PU для генерирования информации движения PU, модуль 121 внешнего предсказания может дополнительно выполнять операцию слияния (Merge) для каждого PU. Когда модуль 121 внешнего предсказания выполняет операцию слияния над PU, модуль 121 внешнего предсказания может сгенерировать список кандидатов предсказанного вектора движения для PU. Список кандидатов предсказанного вектора движения для PU может включать в себя один или несколько исходных кандидатов предсказанного вектора движения и один или несколько дополнительных кандидатов предсказанного вектора движения, полученных из одного или нескольких исходных кандидатов предсказанного вектора движения. Исходные кандидаты предсказанного вектора движения в списке кандидатов предсказанного вектора движения могут включать в себя один или несколько пространственных кандидатов предсказанных векторов движения и временных кандидатов предсказанных векторов движения. Пространственный кандидат предсказанного вектора движения может указывать информацию движения другого PU текущего изображения. Временной кандидат предсказанного вектора движения может быть основан на информации движения соответствующего PU изображения, отличного от текущего изображения. Временной кандидат предсказанного вектора движения также может называться режимом временного предсказания вектора движения (TMVP).
После составления списка кандидатов предсказанного вектора движения модуль 121 внешнего предсказания может выбрать один кандидат предсказанного вектора движения из списка кандидатов предсказанного вектора движения. Затем модуль 121 внешнего предсказания может генерировать блок изображения предсказания PU, основанный на опорном блоке, указанный информацией движения PU. В режиме слияния информация движения PU может быть такой же, как информация движения, указанная выбранным кандидатом предсказанного вектора движения. Фиг. 5, описанная ниже, представляет собой блок-схему примера режима слияния.
После генерирования блока изображения предсказания PU через IME и FME и генерирования блока изображения предсказания PU посредством операции слияния, модуль 121 внешнего предсказания может выбрать блок изображения предсказания, сгенерированный посредством операции FME, или блок изображения предсказания, сгенерированный в результате операции слияния. В некоторых возможных реализациях модуль 121 внешнего предсказания может выбирать блок изображения предсказания для PU путем анализа затрат на соотношение скорость-искажение блока изображения предсказания, сгенерированного посредством операции FME, и блока изображения предсказания, сгенерированного посредством операции слияния.
После того, как модуль 121 внешнего предсказания выбрал блок изображения предсказания из PU, сгенерированного путем разделения текущего CU на основании каждого режима разделения (в некоторых реализациях, после того, как блок дерева кодирования CTU разделен на CU, CU больше не разделенный на более мелкие PU, и в этом случае, PU эквивалентен CU), модуль 121 внешнего предсказания может выбрать режим разделения для текущего CU. В некоторых реализациях модуль 121 внешнего предсказания может выбрать режим разделения для текущего CU путем анализа стоимости искажения выбранного блока изображения предсказания PU, сгенерированного путем разделения текущего CU на основании каждого режима разделения. Модуль 121 внешнего предсказания может выводить блок изображения предсказания, ассоциированный с PU, который принадлежит выбранному режиму разделения, в модуль 102 генерирования остатка. Модуль 121 внешнего предсказания может выводить в модуль энтропийного кодирования элемент синтаксиса, указывающий информацию движения PU, принадлежащий выбранному режиму разбиения.
На схеме на фиг. 4, модуль 121 внешнего предсказания включает в себя IME модули 180A-180N (вместе именуемые «IME модуль 180»), FME модули 182A-182N (все вместе именуемые «FME модуль 182»), модули 184A-184N слияния (вместе именуемые «модуль 184 слияния»), модули 186A-186N принятия решений в режиме PU (вместе именуемые «модуль 186 принятия решений режима PU») и модуль 188 принятия решений режима CU (и могут далее выполнить процесс принятия решения в режиме от CTU к CU).
IME модуль 180, FME модуль 182 и модуль 184 слияния могут соответственно выполнять операцию IME, операцию FME и операцию слияния над PU текущего CU. На схеме на фиг. 4, модуль 121 внешнего предсказания описан как включающий в себя отдельный IME модуль 180, отдельный FME модуль 182 и отдельный модуль 184 слияния для каждого PU в каждом режиме разделения для CU. В другой возможной реализации модуль 121 внешнего предсказания не включает в себя отдельный IME модуль 180, отдельный FME модуль 182 или отдельный модуль 184 слияния для каждого PU в каждом режиме разделения для CU.
Как показано на схеме на фиг. 4, IME модуль 180A, FME модуль 182A и модуль 184A слияния могут, соответственно, выполнять операцию IME, операцию FME и операцию слияния для PU, сгенерированного путем разделения CU на основании режима разделения 2N × 2N. Модуль 186A принятия решения в режиме PU может выбрать один из блоков изображения предсказания, сгенерированных IME модулем 180A, FME модулем 182A и модулем 184A слияния.
IME модуль 180B, FME модуль 182B и модуль 184B слияния могут соответственно выполнять операцию IME, операцию FME и операцию слияния для левого PU, сгенерированного путем разделения CU на основании режима разделения N × 2N. Модуль 186B принятия решения о режиме PU может выбрать один из блоков изображения предсказания, сгенерированных IME модулем 180B, FME модулем 182B и модулем 184B слияния.
IME модуль 180C, FME модуль 182C и модуль 184C слияния могут, соответственно, выполнять операцию IME, операцию FME и операцию слияния для правого PU, сгенерированного путем разделения CU на основании режима разделения N × 2N. Модуль 186C принятия решения режима PU может выбрать один из блоков изображения предсказания, сгенерированных IME модулем 180C, FME модулем 182C и модулем 184C слияния.
IME модуль 180N, FME модуль 182N и модуль 184N слияния могут, соответственно, выполнять операцию IME, операцию FME и операцию слияния для нижнего правого PU, сгенерированного путем разделения CU на основании N × N режима разделения. Модуль 186N принятия решения режима PU может выбирать один из блоков изображения предсказания, сгенерированных IME модулем 180N, FME модулем 182N и модулем 184N слияния.
Модуль 186 принятия решения в режиме PU может выбрать блок изображения предсказания, анализируя стоимость искажения скорости для множества возможных блоков изображения предсказания, и выбрать блок изображения предсказания, который обеспечивает оптимальную стоимость искажения скорости в данном сценарии декодирования. Например, для приложения с ограниченной полосой пропускания модуль 186 принятия решения в режиме PU может предпочесть выбрать блок изображения предсказания, для которого повышена степень сжатия, а для другого приложения модуль 186 принятия решения в режиме PU может предпочесть выбрать блок изображения предсказания, для которого улучшено качество восстановленного видео. После того, как модуль 186 принятия решения в режиме PU выбирает блоки изображения предсказания для PU в текущем CU, модуль 188 принятия решения в режиме CU выбирает режим разделения для текущего CU и выводит блок изображения предсказания и информацию движения PU, которая принадлежит выбранному режиму разделения.
Фиг. 5 является блок-схемой алгоритма реализации режима слияния согласно варианту осуществления настоящего изобретения. Видеокодер (например, видеокодер 100) может выполнять операцию 201 слияния. Операция 201 слияния может включать в себя: S202: генерировать список кандидатов для текущего блока предсказания. S204: генерировать блок предсказания видео, ассоциированный с кандидатом в списке кандидатов. S206: выбрать кандидата из списка кандидатов. S208: вывести кандидата. Кандидат является кандидатом вектора движения или кандидатом информации движения.
В другой возможной реализации видеокодер может выполнять операцию слияния, отличную от операции 201 слияния. Например, в другой возможной реализации видеокодер может выполнять операцию слияния. В этом случае видеокодер выполняет больше или меньше этапов, чем этапы операции 201 слияния, или этапы, отличные от этапов операции 201 слияния. В другой возможной реализации видеокодер может выполнять этапы операции 201 слияния в разных порядках или параллельно. Кодер может дополнительно выполнять операцию 201 слияния с PU, кодированного на основании режима пропуска (skip).
После того, как видеокодер начинает операцию 201 слияния, видеокодер может сгенерировать список кандидатов предсказанного вектора движения для текущего PU (S202). Видеокодер может генерировать список кандидатов предсказанного вектора движения для текущего PU различными способами. Например, видеокодер может сгенерировать список кандидатов предсказанного вектора движения для текущего PU с использованием одной из примерных технологий, описанных ниже со ссылкой на фиг. 8- фиг. 12.
Как описано выше, список кандидатов предсказанного вектора движения для текущего PU может включать в себя временные кандидаты предсказанного вектора движения. Временной кандидат предсказанного вектора движения может указывать информацию движения соответствующей временному (совмещенному) PU. Совмещенный PU может быть пространственно расположен на той же позиции, что и текущий PU кадра изображения, но в качестве опорного изображения вместо текущего изображения. В настоящем изобретении, опорное изображение, включающее в себя соответствующий временный PU может упоминаться в качестве соответствующего опорного кадра. В настоящем изобретении индекс опорного изображения соответствующего опорного кадра может называться как соответствующий индекс опорного изображения. Как описано выше, текущее изображение может быть ассоциировано с одним или несколькими списками опорных изображений (например, списком 0 и списком 1). Индекс опорного изображения может указывать опорное изображение, указав позицию опорного изображения в списке опорных изображений. В некоторых возможных реализациях текущее изображение может быть ассоциировано с объединенным списком опорных изображений.
В некоторых видеокодерах, ассоциированный индекс опорного изображения является индексом опорного изображения PU, который охватывает позицию источника опорного индекса, ассоциированную с текущим PU. В этих видеокодерах, позиция источника опорного индекса, ассоциированную с текущим PU примыкает к текущему PU слева от текущего PU или выше текущего PU. В настоящем изобретении, если блок изображения, ассоциированный с PU, включает в себя конкретную позицию, PU может «охватывать» конкретную позицию. В этих видеокодерах видеокодер может использовать индекс 0 опорного изображения, если позиция источника опорного индекса недоступна.
Однако в некоторых примерах позиция источника опорного индекса, ассоциированная с текущей PU, находится в пределах текущего CU. В этих примерах PU, который покрывает позицию источника опорного индекса, ассоциированного с текущим PU, может считаться доступной, если PU находится выше или слева от текущего CU. В этом случае видеокодеру может потребоваться информация движения доступа другого PU текущего CU для определения опорного изображения, включающего в себя совмещенный PU. Таким образом, эти видеокодеры могут использовать информацию движения (а именно, индекс опорного изображения) PU, принадлежащий к текущему CU, чтобы генерировать временный кандидат предсказанного вектора движения для текущего PU. Другими словами, эти видеокодеры могут использовать информацию движения PU, принадлежащего текущему CU, для генерирования временного кандидата предсказанного вектора движения. Таким образом, видеокодер может быть не в состоянии генерировать параллельно список кандидатов предсказанного вектора движения для текущего PU и PU, который охватывает позицию источника опорного индекса, ассоциированную с текущим PU.
Согласно технологии, в настоящем изобретении, видеокодер может явно установить соответствующий индекс опорного изображения, не обращаясь к индексу опорного изображения любого другого PU. Таким образом, видеокодер может параллельно генерировать списки кандидатов предсказанного вектора движения для текущего PU и другого PU текущего CU. Видеокодер явно устанавливает соответствующий индекс опорного кадра, ассоциированный с индексом опорного изображения не на основании информации движения любого другого PU текущего CU. В некоторых возможных вариантах осуществления, в которых видеокодер явно устанавливает ассоциированный с ним индекс опорного изображения, видеокодер всегда может установить соответствующий фиксированный, заданный индекс опорного изображения и заданный индекс опорного изображения (например, 0). Таким образом, видеокодер может генерировать временного кандидата предсказанного вектора движения на основании информации движения совмещенного PU в опорном кадре, указанной заданным индексом опорного изображения, где временной кандидат предсказанного вектора движения может быть включен в список кандидатов предсказанных векторов движения для текущего CU.
В возможной реализации, в которой видеокодер явно устанавливает ассоциированный индекс опорного изображения, видеокодер может явно сигнализировать ассоциированный индекс опорного изображения в структуре синтаксиса (например, изображение, заголовок сегмента, APS, или другая структура синтаксиса). В этом осуществимой реализации видеокодер может сигнализировать ассоциированный индекс опорного изображения каждого LCU (а именно, CTU), CU, PU, TU или другого типа субблока на сторону декодера. Например, видеокодер может сигнализировать о том, что ассоциированный индекс опорного изображения каждого PU CU равен «1».
В некоторых возможных вариантах осуществления, ассоциированный индекс опорного изображения может быть установлена косвенно, а не явно. В этих возможных реализациях видеокодер может генерировать каждый временный кандидат предсказанного вектора движения в списке кандидатов предсказанного вектора движения для PU текущего CU, используя информацию движения PU в качестве опорного изображения, указанного индексом опорного изображения PU, который охватывает позиции за пределами текущего CU даже, если эти позиции не являются строго смежными с текущим PU.
После генерирования списка кандидатов предсказанного вектора движения для текущего PU видеокодер может генерировать блок изображения предсказания, ассоциированный с кандидатом предсказанного вектора движения в списке кандидатов предсказанного вектора движения (S204). Видеокодер может определять информацию движения текущего PU на основании информации движения указанного кандидата предсказанного вектора движения, и затем генерировать блок изображения предсказания на основании одного или нескольких опорных блоков, указанных информацией движения текущего PU, чтобы сгенерировать блок изображения предсказания, ассоциированный с кандидатом предсказанного вектора движения. Затем видеокодер может выбрать один кандидат предсказанного вектора движения из списка кандидатов предсказанного вектора движения (S206). Видеокодер может выбирать кандидата предсказанного вектора движения различными способами. Например, видеокодер может выбрать один кандидат предсказанного вектора движения путем анализа стоимости искажения для каждого из блоков изображения предсказания, ассоциированных с кандидатами предсказанного вектора движения.
После выбора кандидата предсказанного вектора движения, видеокодер может вывести индекс кандидата предсказанного вектора движения (S208). Индекс кандидата предсказанного вектора движения может указывать позицию выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанного вектора движения. В некоторых возможных реализациях индекс кандидата предсказанного вектора движения может быть представлен как «merge_idx».
Фиг. 6 является блок-схемой алгоритма реализации усовершенствованного режима предсказания вектора движения (AMVP) согласно варианту осуществления настоящего изобретения. Видеокодер (например, видеокодер 100) может выполнять операцию 210 AMVP. Операция 210 AMVP может включать в себя: S211: генерировать один или несколько векторов движения для текущего блока предсказания. S212: генерировать блок видео предсказания для текущего блока предсказания. S213: генерировать список кандидатов для текущего блока предсказания. S214: генерировать разность векторов движения. S215: выбрать кандидата из списка кандидатов. S216: вывести индекс опорного изображения, индекс кандидата и разность векторов движения, которое используется для выбранного кандидата. Кандидат является кандидатом вектора движения или кандидатом информации движения.
После начала операции 210 AMVP видеокодером, видеокодер может генерировать один или несколько векторов движения для текущего PU (S211). Видеокодер может выполнять целочисленную оценку движения и дробную оценку движения, чтобы генерировать вектор движения для текущего PU. Как описано выше, текущее изображение может быть ассоциировано с двумя списками опорных изображений (список 0 и список 1). Если текущий PU предсказывается однонаправленно, видеокодер может генерировать вектор движения списка-0 или вектор движения списка-1 для текущего PU. Вектор движения списка 0 может указывать на пространственное перемещение между блоком изображения, соответствующий текущему PU, и опорным блоком, в качестве опорного изображения в списке 0. Вектор движения списка 1 может указывать на пространственное перемещение между блоком изображения, соответствующее текущему PU, и опорным блоком в опорном изображении в списке 1. Если текущий PU, предсказанный двунаправленно, видеокодер могут генерировать вектор движения списка 0 и вектор движения списка 1 для текущего PU.
После генерирования одного или нескольких векторов движения для текущего PU видеокодер может генерировать блок изображения предсказания для текущего PU (S212). Видеокодер может генерировать блок изображения предсказания для текущего PU на основании одного или более опорных блоков, указанных одним или более векторами движения текущей PU.
Дополнительно, видеокодер может генерировать список кандидатов предсказанного вектора движения для текущего PU (S213). Видеокодер может генерировать список кандидатов предсказанного вектора движения для текущего PU различными способами. Например, видеокодер может генерировать список кандидатов предсказанного вектора движения для текущего PU, используя одну или несколько возможных реализаций, описанных ниже со ссылкой на фиг. 8-фиг. 12. В некоторых возможных реализациях, когда видеокодер генерирует список кандидатов предсказанного вектора движения в операции 210 AMVP, список кандидатов предсказанного вектора движения может быть ограничен двумя кандидатами предсказанного вектора движения. Напротив, когда видеокодер генерирует список кандидатов предсказанного вектора движения в операции слияния, список кандидатов предсказанного вектора движения может включать в себя больше кандидатов предсказанного вектора движения (например, пять кандидатов предсказанного вектора движения).
После генерирования списка кандидатов предсказанного вектора движения для текущего PU видеокодер может генерировать одну или несколько разностей векторов движения (MVD) для каждого кандидата предсказанного вектора движения в списке кандидатов предсказанного вектора движения (S214). Видеокодер может определять разность между вектором движения, указанным кандидатом предсказанного вектора движения, и соответствующим вектором движения текущего PU, чтобы генерировать разность векторов движения для кандидата предсказанного вектора движения.
Если текущий PU предсказывается однонаправленно, видеокодер может генерировать одиночную MVD для каждого кандидата предсказанного вектора движения. Если текущий PU предсказан двунаправленно, видеокодер может генерировать два MVDs для каждого кандидата предсказанного вектора движения. Первый MVD может указывать разность между вектором движения, указанным кандидатом предсказанного вектора движения, и вектором движения списка 0 текущего PU. Второй MVD может указывать разность между вектором движения, указанным кандидатом предсказанного вектора движения, и вектором движения списка 1 текущего PU.
Видеокодер может выбрать один или несколько кандидатов предсказанного вектора движения из списка кандидатов предсказанного вектора движения (S215). Видеокодер может выбирать один или более кандидатов предсказанного вектора движения различными способами. Например, видеокодер может выбрать кандидата предсказанного вектора движения, который с минимальной ошибкой совпадает с вектором движения, ассоциированным с вектором движения, который должен быть кодирован. Это может уменьшить количество битов, необходимых для представления разности векторов движения для кандидата предсказанного вектора движения.
После выбора одного или нескольких кандидатов предсказанного вектора движения видеокодер может выводить один или несколько индексов опорных изображений для текущего PU, один или несколько индексов кандидатов предсказанного вектора движения для текущего PU и одну или несколько разностей векторов движения для одного или нескольких выбранных кандидатов предсказанных векторов движения (S216).
В качестве примера, в котором текущее изображение ассоциировано с двумя списками опорных изображений (список 0 и списка 1) и текущий PU предсказан однонаправленно, видеокодер может выводить индекс опорного изображения («ref_idx_10») для списка 0 или индекс опорного изображения («ref_idx_11») для списка 1. Видеокодер может дополнительно выводить индекс кандидата предсказанного вектора движения («mvp_10_flag»), что указывает на позицию выбранного кандидата предсказанного вектора движения для списка 0 вектора движения текущего PU в списке кандидатов предсказанного вектора движения. В качестве альтернативы видеокодер может выводить индекс кандидата предсказанного вектора движения («mvp_11_flag»), который указывает позицию выбранного вектора движения кандидата предсказанного вектора движения списка 1 текущего PU в списке кандидатов предсказанного вектора движения. Видеокодер может дополнительно выводить MVD для вектора движения списка 0 или вектора движения списка 1 текущего PU.
В качестве примера, в котором текущий изображение ассоциировано с двумя списками опорных изображений (список 0 и списка 1) и текущий PU предсказан двунаправленно, видеокодер может выводить индекс опорного изображения («ref_idx_10») для списка 0 и индекс опорного изображения («ref_idx_11») для списка 1. Видеокодер может дополнительно выводить индекс кандидата предсказанного вектора движения («mvp_10_flag»), что указывает на позицию выбранного кандидата предсказанного вектора движения для списка 0 вектора движения текущего PU в списке кандидатов предсказанного вектора движения . Кроме того, видеокодер может выводить индекс кандидата предсказанного вектора движения («mvp_11_flag»), который указывает позицию выбранного кандидата предсказанного вектора движения для вектора движения списка 1 текущего PU в списке кандидатов предсказанного вектора движения. Видеокодер может дополнительно выводить MVD для вектора движения списка 0 текущего PU и MVD для вектора движения списка 1 текущего PU.
Фиг. 7 является блок-схемой алгоритма реализации компенсации движения, выполняемой видеодекодером (например, видеодекодером 30) согласно варианту осуществления настоящего изобретения.
Когда видеодекодер выполняет операцию 220 компенсации движения, видеодекодер может принимать указание, используемую для выбранного кандидата предсказанного вектора движения текущего PU (S222). Например, видеодекодер может принимать индекс кандидата предсказанного вектора движения, указывающий позицию выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанного вектора движения для текущего PU.
Если информация движения текущего PU кодируется на основании режима AMVP и текущий PU предсказывается двунаправленно, видеодекодер может принимать первый индекс кандидата предсказанного вектора движения и второй индекс кандидата предсказанного вектора движения. Первый индекс кандидата предсказанного вектора движения указывает позицию выбранного кандидата предсказанного вектора движения для вектора движения списка 0 текущего PU в списке кандидатов предсказанного вектора движения. Второй индекс кандидата предсказанного вектора движения указывает позицию выбранного кандидата предсказанного вектора движения для вектора движения списка 1 текущего PU в списке кандидатов предсказанного вектора движения. В некоторых возможных реализациях один элемент синтаксиса может использоваться для идентификации двух индексов кандидатов предсказанных вектора движения.
Дополнительно, видеодекодер может генерировать список кандидатов предсказанного вектора движения для текущего PU (S224). Видеодекодер может генерировать список кандидатов предсказанного вектора движения для текущего PU различными способами. Например, видеодекодер может генерировать список кандидатов предсказанного вектора движения для текущего PU, используя технологии, описанные ниже со ссылкой на фиг. 8-фиг. 12. Когда видеодекодер генерирует временный кандидат предсказанного вектора движения для списка кандидатов предсказанного вектора движения, видеодекодер может явно или неявно установить индекс опорного изображения, который идентифицирует опорное изображение, включающее в себя совмещенный PU, как описано выше со ссылкой на фиг. 5.
После генерирования списка кандидатов предсказанного вектора движения для текущего PU, видеодекодер может определять информацию движения текущего PU на основании информации движения, указанной одним или несколькими выбранными кандидатами предсказанными векторами движения в списке кандидатов предсказанного вектора движения для текущего PU (S225). Например, если информация движения текущего PU кодируется на основании режима слияния, информация движения текущего PU может быть такой же, как информация движения, указанная выбранным кандидатом предсказанного вектора движения. Если информация движения текущего PU кодируется на основании режима AMVP, видеодекодер может восстановить один или несколько векторов движения текущего PU, используя один или несколько векторов движения, указанных одним или несколькими выбранными кандидатами предсказанного вектора движения и одним или более MVDs, указанных в битовом потоке. Индекс опорного кадра и индикатор направления предсказания текущего PU могут быть таким же, как один или более индексы опорных изображений и указатели направления предсказания одного или более выбранные кандидаты предсказанного вектора движения. После определения информации движения текущего PU, видеодекодер может генерировать блок изображения предсказания для текущего PU на основании одного или более опорных блоков, указанных информацией движения текущего PU (S226).
Фиг. 8 является схемой примера блока кодирования (CU) и соседнего блока изображения, ассоциированного с блоком кодирования (CU), согласно варианту осуществления настоящего изобретения. Фиг. 8 является схемой для описания CU 250 и примерных кандидатов предсказанного вектора движения на позициях с 252A по 252E, ассоциированных с CU 250. В настоящем изобретении кандидаты предсказанного вектора движения на позициях 252A-252E могут вместе называться кандидатами предсказанного вектора движения на позиции 252. Кандидат предсказанного вектора движения на позиции 252 представляет пространственного кандидата предсказанного вектора движения, который находится в том же изображении, что и CU 250. Кандидат предсказанного вектора движения на позиции 252A расположен слева от CU 250. Кандидат предсказанного вектора движения на позиции 252B расположен над CU 250. Кандидат предсказанного вектора движения на позиции 252C расположен в верхнем правом углу CU 250. Кандидат предсказанного вектора движения на позиции 252D расположен в нижнем левом углу CU 250. Кандидат предсказанного вектора движения на позиции 252E расположен в верхнем левом углу CU 250. Фиг. 8 показывает схематическую реализацию способа, которым модуль 121 внешнего предсказания и модуль компенсации движения могут генерировать списки кандидатов предсказанного вектора движения. Далее реализация объясняется на основании модуля 121 внешнего предсказания. Однако следует понимать, что модуль компенсации движения может реализовывать ту же технологию и, следовательно, генерировать тот же самый список кандидатов предсказанного вектора движения.
Фиг. 9 является блок-схемой алгоритма реализации составления списка кандидатов предсказанного вектора движения согласно варианту осуществления настоящего изобретения. Технология на фиг. 9 описывается на основании списка, включающего в себя пять кандидатов предсказанного вектора движения, но технологии, описанные в этой спецификации, могут альтернативно использоваться со списком, имеющим другой размер. Каждый из пяти кандидатов предсказанного вектора движения может иметь индекс (например, от 0 до 4). Технология на фиг. 9 описывается на основании общего видеокодека. Общий видеокодек может быть, например, видеокодером (например, видеокодером 100) или видеодекодером (например, видеодекодером 30).
Для восстановления списка кандидатов предсказанного вектора движения согласно реализации на фиг. 9, видеодекодер сначала рассматривает четыре пространственных кандидата предсказанного вектора движения (902). Четыре пространственных кандидата предсказанного вектора движения могут включать в себя кандидаты предсказанного вектора движения на позициях 252A, 252B, 252C и 252D. Четыре пространственных кандидата предсказанного вектора движения могут соответствовать информации движения четырех PUs, которые расположены в том же изображении, что и текущий CU (например, CU 250). Видеодекодер может рассматривать четыре пространственных кандидата предсказанного вектора движения в списке в указанном порядке. Например, сначала может рассматриваться кандидат предсказанного вектора движения на позиции 252A. Если кандидат предсказанного вектора движения на позиции 252A доступен, может быть присвоен индекс 0 кандидату предсказанного вектора движения на позиции 252A. Если кандидат предсказанного вектора движения на позиции 252A недоступен, видеодекодер может пропустить добавление кандидата предсказанного вектора движения на позиции 252A в список кандидатов предсказанного вектора движения. Кандидат предсказанного вектора движения на позиции может быть недоступен по разным причинам. Например, если кандидат предсказанного вектора движения на позиции отсутствует в текущем изображении, кандидат предсказанного вектора движения на позиции может быть недоступен. В другой возможной реализации, если кандидат предсказанного вектора движения на позиции подвергается внутреннему предсказанию, кандидат предсказанного вектора движения на позиции может быть недоступен. В другой возможной реализации, если кандидат предсказанного вектора движения на позиции находится в сегменте, отличном от сегмента, соответствующего текущего CU, кандидат предсказанного вектора движения на позиции может быть недоступен.
После рассмотрения кандидата предсказанного вектора движения на позиции 252A, видеодекодер может рассмотреть кандидата предсказанного вектора движения на позиции 252B. Если кандидат предсказанного вектора движения на позиции 252B доступен и отличается от кандидата предсказанного вектора движения на позиции 252A, видеодекодер может добавить кандидата предсказанного вектора движения на позиции 252B в список кандидатов предсказанного вектора движения. В этом конкретном контексте термин «одинаковый» или «другой» означает, что информация движения, ассоциированная с кандидатами предсказанного вектора движения на позициях, одинакова или отличается. Следовательно, если два кандидата предсказанного вектора движения на позициях имеют одинаковую информацию движения, два кандидата предсказанного вектора движения на позициях считаются одинаковыми; или, если два кандидата предсказанного вектора движения на позициях имеют разную информацию движения, то два кандидата предсказанного вектора движения на позициях считаются разными. Если кандидат предсказанного вектора движения на позиции 252A недоступен, видеодекодер может присвоить индекс 0 кандидату предсказанного вектора движения на позиции 252B. Если кандидат предсказанного вектора движения на позиции 252A доступен, видеодекодер может присвоить индекс 1 кандидату предсказанного вектора движения на позиции 252B. Если кандидат предсказанного вектора движения на позиции 252B недоступен или совпадает с кандидатом предсказанного вектора движения на позиции 252A, видеодекодер пропускает добавление кандидата предсказанного вектора движения на позиции 252B в список кандидатов предсказанного вектора движения.
Аналогичным образом, видеодекодер рассматривает кандидата предсказанного вектора движения на позиции 252C, чтобы определить, следует ли добавить кандидата предсказанного вектора движения на позиции 252C в список. Если кандидат предсказанного вектора движения на позиции 252C доступен и отличается от кандидатов предсказанного вектора движения на позициях 252B и 252A, видеодекодер может назначить следующий доступный индекс кандидату предсказанного вектора движения на позиции 252C. Если кандидат предсказанного вектора движения на позиции 252C недоступен или совпадает, по меньшей мере, с одним из кандидатов предсказанного вектора движения на позициях 252A и 252B, видеодекодер пропускает добавление кандидата предсказанного вектора движения на позиции 252C в список кандидатов предсказанного вектора движения. Затем видеодекодер рассматривает кандидата предсказанного вектора движения на позиции 252D. Если кандидат предсказанного вектора движения на позиции 252D доступен и отличается от кандидатов предсказанного вектора движения на позициях 252A, 252B и 252C, видеодекодер может назначить следующий доступный индекс кандидату предсказанного вектора движения на позиции 252D. Если кандидат предсказанного вектора движения на позиции 252D недоступен или совпадает, по меньшей мере, с одним из кандидатов предсказанного вектора движения на позициях 252A, 252B и 252C, видеодекодер пропускает добавление кандидата предсказанного вектора движения на позиции 252D в список кандидатов предсказанного вектора движения. В вышеупомянутой реализации в целом описывается пример, в котором кандидаты предсказанного вектора движения 252A-252D рассматриваются для определения того, следует ли добавлять кандидаты предсказанного вектора движения 252A-252D в список кандидатов предсказанного вектора движения. Однако в некоторых реализациях все кандидаты предсказанного вектора движения 252A-252D могут быть сначала добавлены в список кандидатов предсказанного вектора движения, а затем повторяющийся кандидат предсказанного вектора движения удаляется из списка кандидатов предсказанного вектора движения.
После того, как видеодекодер рассматривает первые четыре пространственные кандидата предсказанного вектора движения, список кандидатов предсказанного вектора движения может включать в себя четыре пространственных кандидата предсказанного вектора движения или список может включать в себя менее четырех пространственных кандидатов предсказанного вектора движения. Если список включает в себя четыре пространственных кандидата предсказанного вектора движения (904, да), видеодекодер рассматривает временного кандидата предсказанного вектора движения (906). Временной кандидат предсказанного вектора движения может соответствовать информации движения совместно расположенного PU изображения, отличного от текущего изображения. Если временной кандидат предсказанного вектора движения доступен и отличается от первых четырех пространственных кандидатов предсказанного вектора движения, видеодекодер назначает индекс 4 временному кандидату предсказанного вектора движения. Если временной кандидат предсказанного вектора движения недоступен или совпадает с одним из первых четырех пространственных кандидатов предсказанного вектора движения, видеодекодер пропускает добавление временного кандидата предсказанного вектора движения в список кандидатов предсказанного вектора движения. Следовательно, после того, как видеодекодер рассматривает временной кандидат предсказанного вектора движения (906), список кандидатов предсказанного вектора движения может включать в себя пять кандидатов предсказанного вектора движения (первые четыре пространственных кандидата предсказанного вектора движения, рассматриваемых на 902, и учитываемый временной кандидат предсказанного вектора движения на этапе 906) или может включать в себя четыре кандидата предсказанного вектора движения (первые четыре кандидата предсказанного вектора движения рассматриваются на этапе 902). Если список кандидатов предсказанного вектора движения включает в себя пять кандидатов предсказанного вектора движения (908, да), видеодекодер завершает составление списка.
Если список кандидатов предсказанного вектора движения включает в себя четыре кандидата предсказанного вектора движения (908, нет), видеодекодер может рассматривать пятый кандидат предсказанного вектора движения (910). Пятый пространственный кандидат предсказанного вектора движения может (например) соответствовать кандидату предсказанного вектору движения на позиции 252E. Если кандидат предсказанного вектора движения на позиции 252E доступен и отличается от кандидатов предсказанного вектора движения на позициях 252A, 252B, 252C и 252D, видеодекодер может добавить пятый пространственный кандидат предсказанного вектора движения в список кандидатов предсказанного вектора движения и присвоить индекс 4 пятому пространственному кандидату предсказанного вектора движения. Если кандидат предсказанного вектора движения на позиции 252E недоступен или совпадает с одним из кандидатов предсказанного вектора движения на позициях 252A, 252B, 252C и 252D, видеодекодер может пропустить добавление кандидата предсказанного вектора движения на позиции 252 в список кандидатов предсказанного вектора движения. Следовательно, после рассмотрения (910) пятого пространственного кандидата предсказанного вектора движения, список может включать в себя пять кандидатов предсказанного вектора движения (первые четыре пространственные кандидаты предсказанного вектора движения, рассматриваемые на 902, и пятый пространственный кандидат предсказанного вектора движения, рассматриваемый на 910) или может включать в себя четыре кандидата предсказанного вектора движения (первые четыре пространственные кандидаты предсказанного вектора движения рассматриваются на этапе 902).
Если список кандидатов предсказанного вектора движения включает в себя пять кандидатов предсказанного вектора движения (912, да), видеодекодер завершает формирование списка кандидатов предсказанного вектора движения. Если список кандидатов предсказанного вектора движения включает в себя четыре кандидата предсказанного вектора движения (912, нет), видеодекодер добавляет искусственно сгенерированный кандидат предсказанного вектора движения (914) до тех пор, пока список не будет включает в себя пять кандидатов предсказанного вектора движения (916, да).
Если список включает в себя менее четырех пространственных кандидатов предсказанного вектора движения (904, нет) после того, как видеодекодер рассматривает первые четыре пространственных кандидата предсказанного вектора движения, видеодекодер может рассмотреть пятый пространственный кандидат предсказанного вектора движения (918). Пятый пространственный кандидат предсказанного вектора движения может (например) соответствовать кандидату предсказанного вектора движения на позиции 252E. Если кандидат предсказанного вектора движения на позиции 252E доступен и отличается от существующих кандидатов предсказанного вектора движения в списке кандидатов предсказанного вектора движения, видеодекодер может добавить пятый пространственный кандидат предсказанного вектора движения в список кандидатов предсказанного вектора движения, и назначить следующий доступный индекс для пятого пространственного кандидата предсказанного вектора движения. Если кандидат предсказанного вектора движения на позиции 252E недоступен или совпадает с одним из существующих кандидатов предсказанного вектора движения в списке кандидатов предсказанного вектора движения, видеодекодер может пропустить добавление кандидата предсказанного вектора движения на позиции 252E в список кандидатов предсказанного вектора движения. Затем видеодекодер может рассмотреть временной кандидат предсказанного вектора движения (920). Если временной кандидат предсказанного вектора движения доступен и отличается от существующего кандидата предсказанного вектора движения в списке кандидатов предсказанного вектора движения, видеодекодер может добавить временной кандидат предсказанного вектора движения в список кандидатов предсказанного вектора движения и назначить следующий доступный индекс временному кандидату предсказанного вектора движения. Если временной кандидат предсказанного вектора движения недоступен или является таким же, как один из существующих кандидатов предсказанного вектора движения в списке кандидатов предсказанного вектора движения, видеодекодер может пропустить добавление временного кандидата предсказанного вектора движения в список кандидатов предсказанного вектора движения.
Если список кандидатов предсказанного вектора движения включает в себя пять кандидатов предсказанного вектора движения (922, да) после того, как учитываются пятый пространственный кандидат предсказанного вектора движения (на этапе 918) и временной кандидат предсказанного вектора движения (на этапе 920), видеодекодер завершает формирование списка кандидатов предсказанного вектора движения. Если список кандидатов предсказанного вектора движения включает в себя менее пяти кандидатов предсказанного вектора движения (922, нет), видеодекодер добавляет искусственно сгенерированный кандидат предсказанного вектора движения (914) до тех пор, пока список не будет включать в себя пять кандидатов предсказанного вектора движения (916, да).
Согласно технологиям в настоящем изобретении, дополнительный кандидат слияния предсказанного вектора движения может быть искусственно сгенерирован после пространственного кандидата предсказанного вектора движения и временного кандидата предсказанного вектора движения, так что размер списка кандидатов слияния предсказанного вектора движения является фиксированным, и список кандидатов слияния предсказанного вектора движения включает в себя указанное количество (например, пять в вышеупомянутой возможной реализации на фиг. 9) кандидатов слияния предсказанного вектора движения. Дополнительный кандидат слияния предсказанного вектора движения может включать в себя примеры объединенного кандидата слияния предсказанного вектора движения с двойным предсказанием (кандидат предсказанного вектора 1 движения), масштабированного кандидата слияния предсказанного вектора движения с двойным предсказанием (кандидат предсказанного вектора 2 движения) и кандидата слияния/AMVP предсказанного вектора движения нулевого вектора (кандидат предсказанного вектора 3 движения).
Фиг. 10 является схемой примера добавления объединенного кандидата вектора движения в список кандидатов предсказанного вектора движения в режиме слияния согласно варианту осуществления настоящего изобретения. Объединенный кандидат предсказанного вектора движения слияния с двойным предсказанием может быть сгенерирован путем объединения исходных кандидатов предсказанного вектора движения слияния. В частности, два исходных кандидата предсказанного вектора движения (которые имеют mvL0 и refIdxL0 или mvL1 и refIdxL1) могут использоваться для генерирования кандидата предсказанного вектора движения слияния с двойным предсказанием. На фиг. 10, два кандидата предсказанного вектора движения включены в список исходных кандидатов слияния предсказанного вектора движения. Типом предсказания одного кандидата предсказанного вектора движения является унифицированное предсказание с использованием списка 0, и типом предсказания другого кандидата предсказанного вектора движения является унифицированное предсказание с использованием списка 1. В этой возможной реализации получают mvL0_A и ref0 из списка 0, и mvL1_B и ref0 получают из списка 1. Затем может быть сгенерирован кандидат слияния предсказанного вектора движения с двойным предсказанием (который имеет mvL0_A и ref0 в списке 0 и mvL1_B и ref0 в списке 1), и проверяется, отличается ли кандидат слияния предсказанного вектора движения с двойным предсказанием от существующего кандидата предсказанного вектора движения в списке кандидатов предсказанного вектора движения. Если кандидат слияния предсказанного вектора движения с двойным предсказанием отличается существующего кандидата предсказанного вектора движения, видеодекодер может добавить кандидат слияния предсказанного вектора движения с двойным предсказанием в список кандидатов предсказанного вектора движения.
Фиг. 11 является схемой добавления масштабированного кандидата вектора движения в список кандидатов предсказанного вектора движения в режиме слияния согласно варианту осуществления настоящего изобретения. Масштабированный кандидат слияния предсказанного вектора движения с двойным предсказанием может быть сгенерирован путем масштабирования исходного кандидата слияния предсказанного вектора движения. В частности, один исходный кандидат предсказанного вектора движения (который имеет mvLX и refIdxLX) может использоваться для генерирования кандидата слияния предсказанного вектора движения с двойным предсказанием. В возможной реализации на фиг. 11, два кандидата предсказанного вектора движения включены в список исходных кандидатов слияния предсказанного вектора движения. Типом предсказания одного кандидата предсказанного вектора движения является унифицированное предсказание с использованием списка 0, и типом предсказания другого кандидата предсказанного вектора движения является унифицированное предсказание с использованием списка 1. В этой возможной реализации mvL0_A и ref0 могут быть получены из списка 0, ref0 может быть скопирован в список 1 и обозначается как опорный индекс ref0'. Затем mvL0'_A может быть вычислен путем масштабирования mvL0_A, имеющего ref0 и ref0'. Масштабирование может зависеть от расстояния POC (счет порядка изображения). Затем может быть сгенерирован кандидат слияния предсказанного вектора движения с двойным предсказанием (который имеет mvL0_A и ref0 в списке 0 и mvL0'_A и ref0 'в списке 1), и определяют повторяется ли кандидат слияния предсказанного вектора движения с двойным предсказанием. Если кандидат слияния предсказанного вектора движения с двойным предсказанием не повторяется, кандидат слияния предсказанного вектора движения с двойным предсказанием может быть добавлен в список кандидатов слияния предсказанного вектора движения.
Фиг. 12 является схемой примера добавления нулевого вектора движения в список кандидатов слияния предсказанного вектора движения согласно варианту осуществления настоящего изобретения. Кандидат слияния предсказанного вектора движения нулевого вектора может быть сгенерирован путем объединения нулевого вектора и опорного индекса, на который можно ссылаться. Если кандидат слияния предсказанного вектора движения нулевого вектора не повторяется, кандидат слияния предсказанного вектора движения нулевого вектора может быть добавлен в список кандидатов слияния предсказанного вектора движения. Информация движения каждого сгенерированного кандидата слияния предсказанного вектора движения может сравниваться с информацией движения предшествующего кандидата предсказанного вектора движения в списке.
В возможной реализации, если вновь сгенерированный кандидат предсказанного вектора движения отличается от существующего кандидата предсказанного вектора движения в списке кандидатов предсказанного вектора движения, сгенерированный кандидат предсказанного вектора движения добавляется в список кандидатов слияния предсказанного вектора движения. Процесс определения, отличается ли кандидат предсказанного вектора движения от существующего кандидата предсказанного вектора движения в списке кандидатов предсказанного вектора движения, иногда называется отсечением (pruning). Посредством отсечения каждый вновь сгенерированный кандидат предсказанного вектора движения может сравниваться с существующим кандидатом предсказанного вектора движения в списке. В некоторых возможных реализациях операция отсечения может включать в себя: сравнение одного или нескольких новых кандидатов предсказанного вектора движения с существующим кандидатом предсказанного вектора движения в списке кандидатов предсказанного вектора движения и пропуск добавления нового кандидата предсказанного вектора движения, который совпадает с кандидатом предсказанного вектора движения в списке кандидатов предсказанного вектора движения. В некоторых других возможных реализациях операция отсечения может включать в себя: добавление одного или нескольких новых кандидатов предсказанного вектора движения в список кандидатов предсказанного вектора движения и затем удаление повторяющегося кандидата предсказанного вектора движения из списка.
Нижеследующее описывает несколько реализаций внешнего предсказания. Первый заданный алгоритм и второй заданный алгоритм в настоящем изобретении могут включать в себя одну или несколько реализаций внешнего предсказания.
Во внешнем предсказании используется временная корреляция между изображениями для получения предсказания с компенсацией движения (motion-compensation prediction, MCP) для блока выборок изображения.
Для MCP на основании блоков, видеоизображение делится на прямоугольные блоки. Предполагая, что в пределах одного блока осуществляется однородное движение и что движущиеся объекты больше одного блока, для каждого блока можно найти соответствующий блок в ранее декодированном изображении, который служит в качестве значения предсказания. При использовании модели поступательного движения позиция блока в ранее декодированном изображении указывается вектором (Δx, Δy) движения, где Δx указывает горизонтальное смещение относительно позиции текущего блока и Δy указывает вертикальное смещение относительно позиции текущего блока. Вектор (Δx, Δy) движения может иметь дробную точность выборки для более точного захвата движения опорного объекта. Когда соответствующий вектор движения имеет точность дробной дискретизации, интерполяция применяется на опорном изображении, чтобы вывести сигнал предсказания. Ранее декодированное изображение называется в качестве опорного изображения, и обозначается опорным индексом Δt, соответствующий списку опорных изображений. Эти параметры модели поступательного движения, а именно, вектор движения и опорный индекс, далее называются данными движения. В современных стандартах кодирования видео разрешены два типа внешнего предсказания, а именно: унифицированное предсказание и двунаправленное предсказание.
В случае двунаправленного предсказания используются два набора данных движения (Δx0, Δy0, Δt0 и Δx1, Δy1, Δt1) для генерирования двух MCPs (возможно, из разных изображений), которые затем объединяются для получения окончательного MCP. По умолчанию это делается путем усреднения, но в случае взвешенного предсказания к каждому MCP могут применяться разные веса, например, чтобы компенсировать постепенное исчезновение изображения. Опорные изображения, которые можно использовать в двунаправленном предсказании, хранятся в двух отдельных списках, а именно, списке 0 и списке 1. Чтобы ограничить полосу пропускания памяти в сегменте, который обеспечивает двунаправленное предсказание, стандарт HEVC ограничивает PU с блоки предсказания яркости 4 х 8 или 8 × 4 для использования только унифицированного предсказания. Данные движения выводятся в кодер с использованием процесса оценки движения. Оценка движения не указывается в стандартах видео, так что разные кодеры могут использовать различные компромиссы сложности и качества во время реализации кодеров.
Данные движения блока коррелируются с соседним блоком. Чтобы использовать эту корреляцию, данные движения не кодируются напрямую в битовом потоке, а кодируются с предсказанием на основании данных соседнего движения. В HEVC для этого используются две концепции. Кодирование с предсказанием вектора движения было улучшено в HEVC за счет введения нового инструмента, называемого усовершенствованным предсказанием вектора движения (advanced motion vector prediction, AMVP), в котором лучшее значение предсказания для каждого блока движения передается в декодер. Дополнительно, для извлечения всех данных движения блока из соседних блоков используется новая технология, называемая слиянием блоков внешнего предсказания. Таким образом, в H.264/AVC заменяются прямой режим и режим пропуска.
Усовершенствованное предсказание вектора движения
Как описано в предшествующих стандартах кодирования видео, вектор движения HEVC кодируется как разница значения предсказания вектора движения (motion vector prediction value, MVP) на основании горизонтальной (x) компоненты и вертикальной (y) компоненты. Две компоненты разности векторов движения (MVD) вычисляются согласно уравнениям (1.1) и (1.2).
X
X
MVD = Δx - MVP (1.1)
Y
Y
MVD = Δy - MVP (1.2)
Вектор движения текущего блока обычно коррелируется с вектором движения соседнего блока в текущем изображении или ранее кодированном изображении. Это ассоциировано с тем, что соседний блок, вероятно, соответствует одному и тому же движущемуся объекту с аналогичным движением, и движение объекта вряд ли резко изменится с течением времени. Следовательно, использование вектора движения соседнего блока в качестве значения предсказания уменьшает сигнализируемую разность векторов движения. MVP обычно получается из уже декодированного вектора движения соседнего по пространству блока или соседнего по времени блока в совместно размещенном изображении. В некоторых случаях нулевой вектор движения может альтернативно использоваться как MVP. В H.264/AVC это реализуется путем выполнения покомпонентного медианного значения трех пространственных соседних векторов движения. При использовании этого подхода не требуется сигнализация значения предсказания. в H.264/AVC рассматривается только временной MVP из совмещенного изображения в так называемом временном прямом режиме. Прямой режим H.264/AVC также используется для получения других данных движения, кроме вектора движения.
В HEVC подход к неявному получению MVP был заменен технологией, известной как конкуренция векторов движения. Технология явно сигнализирует, какой MVP из списка MVP используется для получения вектора движения. Структура блока дерева квадрантов с переменным кодированием в HEVC может привести к тому, что один блок, имеющий несколько соседних блоков с векторами движения, будет служить потенциальными кандидатами MVP. Первоначальная структура усовершенствованного предсказания вектора движения (Advanced Motion Vector Prediction, AMVP) включала с себя пять MVPs из трех различных классов значений предсказания: три вектора движения из пространственных соседей, медиана трех значений пространственного предсказания и масштабированный вектор движения из совмещенного временного соседнего блока. Кроме того, список значений предсказания был изменен путем переупорядочения, чтобы поместить наиболее вероятное значение предсказания движения в первую позицию и путем удаления избыточного кандидата, чтобы гарантировать минимальные накладные расходы на сигнализацию. Затем разрабатываются значительные упрощения структуры AMVP, такие как удаление среднего значения предсказания, уменьшение количества кандидатов в списке с пяти до двух, фиксация порядка кандидатов в списке и уменьшение количества проверок избыточности. Окончательный вариант построения списка кандидатов AMVP включает в себя следующие два кандидата MVP: a. до двух пространственных кандидатов MVPs, полученных из пяти пространственных соседних блоков; b. один MVP временной кандидат, полученный из двух совместно размещенных временных блоков, когда оба пространственных MVPs кандидата недоступны или идентичны; и c. нулевой вектор движения, когда пространственные кандидаты, временный кандидат или и пространственные кандидаты, и временный кандидат недоступны.
Как уже упоминалось, два пространственных кандидата MVP A и B выводятся из пяти пространственных соседних блоков. Позиции пространственных кандидатов блоков одинаковы как для AMVP, так и для слияния блоков внешнего предсказания. Для кандидата A данные движения двух блоков A0 и A1 в нижнем левом углу учитываются при двухпроходном подходе. На первом проходе проверяется, включает ли в себя какой-либо из кандидатов блока опорный индекс, который равен опорному индексу текущего блока. Первый вектор движения, который найден, используется в качестве кандидата А. Когда все опорные индексы от A0 и A1 указывают на другое опорное изображение, чем опорный индекс текущего блока, ассоциированный с ним вектор движения не может быть использован, как есть. Следовательно, во втором проходе вектор движения необходимо масштабировать на основании временного расстояния между кандидатом опорного изображения и текущим опорным изображением. Уравнение (1.3) показывает, как масштабируется кандидат вектора mvcand движения на основании коэффициента масштабирования. Коэффициент масштабирования вычисляется на основании временного расстояния между текущим изображением и опорным изображением кандидата блока td и временного расстояния между текущим изображением и опорным изображением текущего блока tb. Временное расстояние выражается в терминах разницы между значениями количества изображений (picture order count, POC), что определяет порядок отображения изображений. Операция масштабирования в основном такая же, как схема, которая используется для временного прямого режима в H.264/AVC. Это разложение на множители позволяет предварительно вычислить коэффициент масштабирования на уровне сегмента, поскольку это разложение зависит только от структуры списка опорных изображений, о котором сообщается в заголовке сегмента. Следует отметить, что MV масштабирование выполняются только тогда, когда оба текущее опорное изображение и кандидат опорного изображения являются краткосрочными опорными изображениями. Параметр td определяется как разность POC между совместно размещенным изображением и опорным изображением для совместно расположенного кандидата блока.
mv = sign (mvcand • ScaleFactor) ((| mvcand • ScaleFactor | + 27) >> 8) (1.3)
ScaleFactor = clip (–212, 212 - 1, (tb • tx + 25) >> 6) (1.4)
(1.5)
Для кандидата B кандидаты от B0 до B2 последовательно проверяются таким же образом, как и при проверке A0 и A1 на первом проходе. Однако второй проход выполняется только тогда, когда блоки A0 и A1 не включают в себя какую-либо информацию движения, другими словами, когда блоки A0 и A1 недоступны или кодируются посредством внутреннего предсказания изображения. Затем, если кандидат A найден, кандидат A устанавливается равным немасштабированному кандидату B и кандидат B устанавливается равным второму немасштабированному или масштабированному варианту кандидата B. На втором проходе выполняется поиск для получения немасштабированного MV и масштабированного MV из кандидатов от B0 до B2. В целом эта структура позволяет обрабатывать A0 и A1 независимо от B0, B1 и B2. При выводе B следует учитывать только доступность как A0, так и A1, чтобы выполнить поиск для получения масштабированного MV или дополнительного немасштабированного MV от B0 до B2. Эта зависимость приемлема при условии, что она значительно уменьшает сложную операцию масштабирования вектора движения для кандидата B. Уменьшение количества масштабирования вектора движения представляет собой значительное снижение сложности в процессе получения значения предсказания вектора движения.
В HEVC блоки в правом нижнем углу и в центре текущего блока были определены как наиболее подходящие блоки для обеспечения хорошего временного значения предсказания вектора движения (temporal motion vector prediction value, TMVP). Среди этих кандидатов C0 представляет нижний правый соседний блок и C1 представляет центральный блок. Здесь снова сначала рассматриваются данные движения C0. Если данные движения C0 недоступны, данные движения совместно расположенного кандидата блока в центре используются для получения временного MVP кандидата C. Данные движения C0 также считаются недоступными, когда ассоциированный PU принадлежит CTU, что находится за пределами текущей строки CTU. Это сводит к минимуму требования к пропускной способности памяти для хранения совместно размещенных данных движения. В отличии от пространственных кандидатов MVP, движения векторов может относиться к тому же опорному изображению, масштабирование вектора движения является обязательным для TMVP. Следовательно, используется такая же операция масштабирования, как и для пространственного MVP.
Несмотря, что прямой временной режим временного в H.264/AVC всегда относится к первому опорному изображению во втором списке опорного изображения, а именно, список 1, и допускаются только в двунаправленном предсказании сегмента, HEVC обеспечивает возможность указания для каждого изображения, которое опорное изображение рассматривается как совмещенное изображение. Это реализуется посредством сигнализации списка совмещенных опорных изображений и индекса опорного изображения в заголовке сегмента и посредством запроса элементов синтаксиса во всех сегментах в изображении указать тоже опорное изображение.
Поскольку временный кандидат MVP вводит дополнительную зависимость, использование временного кандидата MVP может потребоваться отключить из-за устойчивости к ошибкам. В H.264/AVC существует возможность отключения временного прямого режима для сегмента с двунаправленным предсказанием в заголовке сегмента (direct_spatial_mv_pred_flag). Синтаксис HEVC расширяет эту сигнализацию, позволяя отключать TMVP на уровне последовательности или уровне изображения (sps/slice_temporal_mvp_enabled_flag). Хотя в заголовке сегмента сообщается о флаге, для соответствия битового потока требуется, чтобы значение флага было одинаковым для всех сегментов в одном изображении. Поскольку сигнализация флага уровня изображения зависит от флага SPS, сигнализация флага уровня изображения в PPS может вводить зависимость синтаксического анализа между SPS и PPS. Другое преимущество этой сигнализации заголовка сегмента состоит в следующем: если требуется изменить только значение этого флага в PPS без изменения другого параметра, нет необходимости передавать второй PPS.
15
15
В общем, сигнализация данных движения в HEVC аналогична сигнализации данных движения в H.264/AVC. Элемент синтаксиса внешнего предсказания, inter_pred_idc, сигнализирует, используется ли справочный список 0, справочный список 1 или оба справочного списка 0 и справочного списка 1. Для каждого МСР, полученного из одного списка опорного изображения, соответствующее опорное изображение (Δt) сигнализируется индексом в список опорного изображения, ref_idx_l0/1 и МV (Δх, Δy) представлен индексом в MVP, mvp_l0/1_flag и МVD MVP. Вновь введенный флаг в заголовке сегмента, mvd_l1_zero_flag, указывает, равен ли MVD для второго списка опорных изображений нулю и, следовательно, не сигнализируется в битовом потоке. Когда вектор движения полностью восстановлен, заключительная операция отсечения гарантирует, что значение каждого компонента окончательного вектора движения всегда находится в диапазоне от –2 до 2-1 включительно.
Слияние блока (Block) внешнего предсказания
Список AMVP включает в себя только вектор движения для одного справочного списка, в то время как кандидат слияния включает в себя все данные движения, включающие в себя информацию о том, используются ли один или два списка опорных изображений, а также опорный индекс и вектор движения для каждого списка. В целом список кандидатов слияния состоит из следующих кандидатов: a. до четырех кандидатов на пространственное слияние, полученных из пяти соседних пространственных блоков; b. один кандидат на временное слияние, полученный из двух совместно размещенных во времени блоков; и c. дополнительные кандидаты слияния, включающие в себя объединенный кандидат с двойным предсказанием и кандидат с нулевым вектором движения.
Первый кандидат в списке кандидатов слияния является пространственным соседом. A1, B1, B0, A0 и B2 проверяются последовательно, и в список слияния в этом порядке могут быть вставлены до четырех кандидатов.
Вместо простой проверки того, доступен ли соседний блок и включает в себя информацию движения, выполняются некоторые дополнительные проверки избыточности до того, как все данные движения соседнего блока будут использованы в качестве кандидата слияния. Эти проверки избыточности можно разделить на две категории для двух разных целей: a. Не допустить наличия в списке кандидата с избыточными данными движении; и b. Не допустить слияния двух разделов, которые могут быть выражены другим средством, которое может создать избыточный синтаксис.
Когда N представляет количество кандидатов на пространственное слияние, полная проверка избыточности состоит из  сравнений данных движения. В случае пяти потенциальных кандидатов на пространственное слияние необходимо выполнить 10 сравнений данных движения, чтобы гарантировать, что все кандидаты в списке слияния имеют разные данные движения. Во время разработки HEVC проверки избыточных данных движения были сокращены до подмножества, так что эффективность кодирования сохраняется, и логика сравнения значительно снижается. В окончательном варианте для каждого кандидата выполняется не более двух сравнений, всего пять сравнений. Учитывая порядок {A1, B1, B0, A0, B2}, B0 проверяет только B1, A0 только A1 и B2 только A1 и B1. В варианте осуществления, в котором выполняется проверка избыточности разделения, нижний PU раздела 2N × N объединяется с верхним PU путем выбора кандидата B1. В этом случае у одного CU есть два PUs с одинаковыми данными движения. CU может также сигнализироваться как 2N × 2N CU. В целом эта проверка применяется ко всем вторым PUs прямоугольных и асимметричных разделов: 2N × N, 2N × nU, 2N × nD, N × 2N, nR × 2N и nL × 2N. Следует отметить, что для кандидатов на пространственное слияние выполняется только проверка избыточности, и данные движения копируются из кандидатов блоков как есть. Следовательно, здесь не требуется масштабирование вектора движения.
Кандидат вектора движения на временное слияние выводится таким же образом, как и при получении TMVP. Поскольку кандидат на слияние включает в себя все данные движения и TMVP является только одним вектором движения, получение всех данных движения зависит только от типа сегмента. Для сегмента с двойным предсказанием TMVP выводится для каждого списка опорных изображений. В зависимости от доступности TMVP для каждого списка, тип предсказания устанавливается на двунаправленное предсказание или на список, для которого доступен TMVP. Все ассоциированные индексы опорных изображений устанавливаются равными нулю. Таким образом, для сегмента унифицированного предсказания, полученного только ТМVP для списка 0 вместе с индексом опорного изображения, равен нулю.
Когда доступен хотя бы один TMVP и кандидат на временное слияние добавлен в список, проверка избыточности не выполняется. Это делает составление списка слияния независимым от совместно размещенного изображения и, следовательно, повышает устойчивость к ошибкам. Когда рассматривается случай, когда временный кандидат на слияние является избыточным и, следовательно, не включен в список кандидатов на слияние, и совмещенное изображение потеряно, декодер не может получить временного кандидата и, следовательно, не проверяет, является ли временный кандидат избыточный. Это влияет на индексацию всех последующих кандидатов.
Для устойчивости к синтаксическому анализу список кандидатов на слияние имеет фиксированную длину. После добавления пространственных и временных кандидатов на слияние список все еще может не достичь фиксированной длины. Чтобы компенсировать потерю эффективности кодирования, которая возникает вместе с сигнализацией индекса адаптивного списка без длины, генерируется дополнительный кандидат. В зависимости от типа сегмента для полного заполнения списка можно использовать до двух типов кандидатов: a. комбинированный кандидат с двойным предсказанием; и b. кандидат с нулевым вектором движения.
В сегменте с двойным предсказанием дополнительный кандидат может быть сгенерирован на основании существующего кандидата путем объединения данных движения списка 0 опорных изображений одного кандидата и данных движения списка 1 опорных изображений другого кандидата. Это реализуется путем копирования Δx0, Δy0 и Δt0 из одного кандидата, такого как первый кандидат, и копирования Δx1, Δy1 и Δt1 из другого кандидата, например, второго кандидата. Различные комбинации предопределены и приведены в таблице 1.1.
Таблица 1.1
Порядок комбинирования
0
1
2
3
4
5
6
7
8
9
10
11
Дx<sub>0</sub>, Дy<sub>0 </sub>и Дt<sub>0</sub> из кандидата
0
1
0
2
1
2
0
3
1
3
2
3
Дx<sub>1</sub>, Дy<sub>1 </sub>и Дt<sub>1</sub> из кандидата
1
0
2
0
2
1
3
0
3
1
3
2
Когда список все еще не заполнен после того, как объединенный кандидат с двойным предсказанием добавлен или не заполнен для сегмента с унифицированным предсказанием, для завершения списка вычисляется кандидат с нулевым вектором движения. Все кандидаты с нулевым вектором движения имеют один вектор движения с нулевым смещением для сегмента с унифицированным предсказанием и два вектора движения с нулевым смещением для сегмента с двойным предсказанием. Опорный индекс устанавливается равным нулю и увеличивается на единицу для каждого дополнительного кандидата до тех пор, пока не будет достигнуто максимальное количество опорных индексов. В этом случае, если по-прежнему отсутствуют другие кандидаты, для генерирования этих кандидатов используется опорный индекс, равный нулю. Для всех дополнительных кандидатов проверки на избыточность не выполняются, поскольку оказалось, что пропуск этих проверок не приводит к потере эффективности кодирования.
Для каждого PU, кодированного на основании режима внешнего предсказания, merge_flag указывает, что для получения данных движения используется объединение блоков, и merge_idx дополнительно используется для определения кандидата, который находится в списке слияния и который предоставляет все требуемые данные движения для MCP. В дополнение к этой сигнализации на уровне PU количество кандидатов в списке слияния сигнализируется в заголовке сегмента. Поскольку значение по умолчанию равно 5, оно представлено как разница в пять (five_minus_max_num_merge_cand). Таким образом, 5 передается коротким кодовым словом для 0. Если используется только один кандидат, 5 передается более длинным кодовым словом для 4. Что касается воздействия на процесс построения списка кандидатов на слияние, общий процесс остается таким же, хотя процесс завершается после того, как список включает в себя максимальное количество кандидатов слияния. В первоначальном варианте максимальное значение для кодирования индекса слияния задается количеством доступных пространственных и временных кандидатов в списке. Например, когда доступны только два кандидата, индекс можно эффективно закодировать как флаг. Однако для анализа индекса слияния необходимо составить весь список кандидатов слияния, чтобы знать фактическое количество кандидатов. Предполагая, что соседний блок недоступен из-за ошибки передачи, индекс слияния больше не может быть проанализирован.
Важным применением концепции объединения блоков в HEVC является ее комбинация с режимом пропуска. В предшествующих стандартах кодирования видео режим пропуска используется для указания для блока, что данные движения предполагаются вместо явных сигналов и что остаток предсказания равен нулю. Другими словами, коэффициент преобразования не отправляется. В HEVC в начале каждого CU в сегменте внешнего предсказания сигнализируется skip_flag, что подразумевает следующее: a. CU включает в себя только один PU (тип раздела 2N × 2N). b. Режим слияния используется для получения данных движения (merge_flag равно 1). c. В битовом потоке остаточные данные отсутствуют.
Уровень оценки параллельного слияния, который указывает, что в HEVC вводится область. Список кандидатов слияния может быть получен независимо путем проверки того, расположен ли блок кандидатов в этой области оценки слияния (MER). Блок кандидатов в том же MER не включается в список кандидатов слияния. Следовательно, данные движения кандидата блока не обязательно должны быть доступны во время построения списка. Когда этот уровень равен, например, 32, все блоки предсказания в области 32 × 32 могут использоваться для составления списка кандидатов слияния параллельно, потому что все кандидаты слияния в одном и том же MER 32 × 32 не вставляются в список. Все потенциальные кандидаты слияния для первого PU 0 доступны, потому что все потенциальные кандидаты слияния находятся за пределами первого MER 32 × 32. Для второго MER списки кандидатов слияния для PU с 2 по 6 не могут включать в себя данные движения от этих PUs, когда оценка слияния внутри MER должна быть независимой. Поэтому, например, когда просматривается PU 5, кандидат слияния недоступен и, следовательно, не вставлен в список кандидатов слияния. В этом случае список слияния для PU5 включает в себя только временного кандидата (если доступен) и нулевого кандидата MV. Чтобы дать возможность кодеру найти компромисс между параллелизмом и эффективностью кодирования, уровень оценки параллельного слияния является адаптивным и сигнализируется как log2_parallel_merge_level_minus2 в наборе параметров изображения.
Предсказание вектора движения на основании суб-CU
Во время разработки новой технологии кодирования видео с QTBT каждый CU может иметь не более одного набора параметров движения для каждого направления предсказания. В кодере рассматриваются два способа предсказания вектора движения на уровне суб-CU путем разделения большого CU на суб-CU и получения информации движения для всех суб-CUs большого CU. Способ альтернативного временного предсказания вектора движения (alternative temporal motion vector prediction, ATMVP) позволяет каждому CU извлечь множество наборов информации движения из множества блоков меньшего размера, чем текущий CU в совмещенном опорном изображении. В способе пространственно-временного предсказания вектора движения (spatial-temporal motion vector prediction, STMVP) вектор движения суб-CU получается рекурсивно с использованием значения предсказания временного вектора движения и соседнего вектора движения в пространстве.
Для сохранения более точного поля движения для предсказания движения суб-CU, сжатие движения для опорного кадра в настоящее время отключено.
Альтернативное временное предсказание вектора движения
В способе альтернативного временного предсказания вектора движения (alternative temporal motion vector prediction, ATMVP) предсказание временного вектора движения (temporal motion vector prediction, TMVP) для вектора движения модифицируется путем выборки множества наборов информации движения (включающая в себя векторы движения и опорные индексы) из блоков, меньших, чем текущий CU. Суб-CU представляет собой квадратный блок размером N × N (где N по умолчанию равно 4).
ATMVP предсказывает вектор движения суб-CU в CU в два этапа. Первый этап заключается в определении соответствующего блока в опорном кадре с использованием временного вектора. Опорное изображение называется изображением источника движения. Второй этап заключается в разделении текущего CU на суб-CUs и получении вектора движения и опорного индекса каждого суб-CU из блока, соответствующего суб-CU.
На первом этапе, опорное изображение и соответствующий блок определяются на основании информации движения пространственного соседнего блока текущего CU. Чтобы избежать повторяющегося процесса сканирования для соседнего блока, используется первый кандидат слияния в списке кандидатов слияния для текущего CU. Первый доступный вектор движения и опорный индекс, ассоциированный с первым доступным вектором движения, устанавливаются как временной вектор и индекс исходного изображения движения. Таким образом, по сравнению с TMVP, в ATMVP соответствующий блок может быть идентифицирован более точно. В TMVP соответствующий блок (иногда называемый совмещенным блоком) всегда располагается в правом нижнем углу или по центру относительно текущего CU.
На втором этапе соответствующий блок суб-CU идентифицируется временным вектором в изображении источника движения путем добавления временного вектора к координатам текущего CU. Для каждого суб-CU информация движения соответствующего блока (наименьшая сетка движения, покрывающая центральную выборку) суб-CU используется для получения информации движения для суб-CU. После того, как информация движения соответствующего блока N × N идентифицирована, в HEVC информация движения преобразуется в вектор движения и опорный индекс текущего суб-CU таким же образом, как TMVP, и применяются масштабирование движения и другие процедуры. Например, декодер проверяет, удовлетворяется ли условие низкой задержки (то есть, POC всех опорных изображений текущего изображения меньше, чем POC текущего изображения) и, возможно, использует вектор MVx движения (вектор движения, соответствующий списку X опорных изображений) для предсказания вектора MVy движения (с X равным 0 или 1 и Y равным 1 - X) для каждого суб-CU.
Пространственно-временное предсказание вектора движения
В этом способе вектор движения суб-CU получается рекурсивно, следуя порядку сканирования растра. Считается, что CU 8 × 8 включает в себя четыре суб-CUs 4 × 4 A, B, C и D. Соседние блоки 4 × 4 в текущем кадре помечены как a, b, c и d.
Получение движения для суб-CU A начинается с идентификации двух пространственных соседей суб-CU A. Первый сосед является блоком размером N × N над суб-CU A (а именно, блок c). Если блок c недоступен или внутренне кодирован, проверяются другие блоки N × N выше суб-CU A (слева направо, начиная с блока c). Второй сосед является блоком слева от суб-CU A (а именно, блок b). Если блок b недоступен или внутренне закодирован, проверяются другие блоки слева от суб-CU A (сверху вниз, начиная с блока b). Информация движения, полученная из соседнего блока для каждого списка изменяется в соответствии с первым опорным кадром для данного списка. Затем получают значение временного предсказания вектора движения (temporal motion vector prediction value, TMVP) субблока A, следуя той же процедуре получения TMVP, которая указана в HEVC. Информация движения совместно размещенного блока в позиции D выбирается и масштабируется соответственно. Наконец, после получения и масштабирования информации движения все доступные векторы движения (до 3) усредняются отдельно для каждого справочного списка. Усредненный вектор движения назначается как вектор движения текущего суб-CU.
Объединенный с режимом слияния
В качестве дополнительного кандидата слияния используют режим суб-CU, и дополнительный элемент синтаксиса не требуется для сигнализации режима. Два дополнительных кандидата слияния добавляются в список кандидатов слияния для каждого CU, чтобы представить режим ATMVP и режим STMVP. Если набор параметров последовательности указывает применение ATMVP и STMVP, используется до семи кандидатов слияния. Логика кодирования дополнительных кандидатов слияния такая же, как и логика кодирования кандидата слияния в HM. Это означает, что для каждого CU в P- или B-сегменте необходимо выполнить еще две проверки RD для двух дополнительных кандидатов слияния.
Аффинное предсказание компенсации движения
Поле аффинного движения блока описывается с помощью двух векторов движения контрольной точки.
Поле вектора движения (motion vector field, MVF) блока описывается в соответствии со следующим уравнением:
(1.6)
где (v0x, v0y) представляет вектор движения контрольной точки в верхнем левом углу и (v1x, v1y) представляет вектор движения контрольной точки в правом верхнем углу.
Чтобы еще больше упростить предсказание компенсации движения, применяется предсказание аффинного преобразования на основании субблоков. Размер подблока M х N выводится согласно уравнению (1.7), где MvPre представляет дробную точность вектора движения (например, 1/16), и (v2x, v2y) представляет вектор движения нижней левой контрольной точки, вычисленной в соответствии с уравнению (1.6).
(1.7)
После того, как размер субблока M × N получен согласно уравнению (1.7), M и N должны быть скорректированы в сторону уменьшения, если необходимо, чтобы сделать M и N делителями w и h, соответственно.
Для получения вектор движения каждого субблока M × N, вектор движения центральной выборки субблока вычисляется согласно уравнению (1.6) и округляется до дробной точности 1/16.
Аффинный внешний режим
Для CU, ширина и высота которого больше 8, может применяться режим AF_INTER. Флаг аффинности на уровне CU сигнализируется в битовом потоке, чтобы указать, используется ли режим AF_INTER. В этом режиме список кандидатов с парой векторов движения  создается с использованием соседнего блока. выбирается из вектора движения блока A, B или C. Вектор движения из соседнего блока масштабируется в соответствии со справочном списком и соотношением между POC ссылки для соседнего блока, POC ссылки для текущего CU и POC текущего CU. Подход, используемый для выбора из соседних блоков D и E, аналогичен. Если количество списков кандидатов меньше 2, список дополняется парой векторов движения, составленной путем дублирования каждого кандидата AMVP. Когда количество списков кандидатов больше 2, кандидаты сначала сортируются в соответствии с согласованностью соседних векторов движения (сходство двух векторов движения в паре кандидатов), и сохраняются только первые два кандидата. Проверка стоимости RD используется для определения, какой кандидат пары векторов движения выбран в качестве предсказания вектора движения контрольной точки (control point motion vector prediction, CPMVP) текущего CU, и указывается индекс, указывающий позицию CPMVP в списке кандидатов в битовом потоке. Разница между CPMV и CPMVP сообщается в битовым потоке.
Режим аффинного слияния
Когда CU применяется в режиме AF_MERGE, первый блок, кодированный на основании аффинного режима, получается из действительного соседнего восстановленного блока. Порядок выбора кандидатов блока - слева, вверху, вверху справа, внизу слева, вверху слева. Если нижний левый соседний блок A кодируется на основании аффинного режима, то выводятся верхний левый, верхний правый и нижний левый векторы ,  и  движения, и CU, включающий в себя блок A. Дополнительно, вектор движения в верхнем левом углу текущего CU вычисляется согласно ,  и . Затем вычисляется правый верхний вектор движения текущего CU.
Чтобы идентифицировать, кодируется ли текущий CU на основании режима AF_MERGE, когда существует, по меньшей мере, один соседний блок, который кодируется на основании аффинного режима, аффинный флаг сигнализируется в битовом потоке.
Получение вектора движения с согласованным шаблоном
Режим получения вектора движения с согласованным шаблоном (pattern matched motion vector derivation, PMMVD) основан на технологиях преобразования с повышением частоты кадров (Frame-Rate up Conversion, FRUC). В этом режиме информация движения блока не передается, а получается на стороне декодера.
Когда флаг слияния CU истинен, сигнализируется флаг FRUC этого CU. Когда флаг FRUC имеет значение ложно, указывается индекс слияния, и используется обычный режим слияния. Когда флаг FRUC истинен, сигнализируется дополнительный флаг режима FRUC для указания, какой способ (двустороннее сопоставление или сопоставление с шаблоном) должен использоваться для получения информации движения блока.
На стороне кодера решение о том, следует ли использовать режим слияния FRUC для CU, основывается на выборе стоимости RD, как это делается для обычного кандидата на слияние. То есть, два режима сопоставления (двустороннее сопоставление и сопоставление с шаблоном) проверяются для CU с помощью выбора стоимости RD. Режим, ведущий к минимальной стоимости, дополнительно сравнивается с другими режимами CU. Если режим сопоставления FRUC является наиболее эффективным режимом, флаг FRUC устанавливается в истинное значение для CU, и используется ассоциированный режим сопоставления.
Процесс получения движения в режиме слияния FRUC включает два этапа. Сначала выполняется поиск движения на уровне CU, затем следует уточнение движения на подуровне CU. На уровне CU получают исходный вектор движения для всего CU на основании двустороннего сопоставления или сопоставления с шаблоном. Сначала составляется список кандидатов MV и выбирается кандидат, который приводит к минимальной стоимости сопоставления, в качестве начальной точки для дополнительного уточнения на уровне CU. Затем выполняется локальный поиск, основанный на двустороннем сопоставлении или сопоставлении по шаблону вокруг начальной точки, и MV, который приводит к минимальной стоимости сопоставления, используется как MV для всего CU. Впоследствии информация движения дополнительно уточняется на уровне суб-CU с использованием полученного вектора движения CU в качестве начальной точки.
Например, выполняется следующий процесс получения для вывода информации движения W х H CU. На первом этапе выводится MV всего W х H CU. На втором этапе CU дополнительно разделяется на M х M суб-CUs. Значение M вычисляется в соответствии с уравнением (1.8), D представляет заранее заданную глубину разделения и по умолчанию, установленное в JEM равным 3. Затем получают MV каждого суб-CU.
(1.8)
Двустороннее сопоставление используется для получения информации движения текущего CU путем нахождения наиболее близкого совпадения между двумя блоками вдоль траектории движения текущего CU в двух разных опорных изображениях. В предположении непрерывной траектории движения векторы MV0 и MV1 движения, указывающие на два опорных блока, должны быть пропорциональны временным расстояниям, то есть, TD0 и TD1, между текущим изображением и двумя опорными изображениями. Когда текущее изображение является временным между двумя опорными изображениями и временные расстояния между текущим изображением и двумя опорными изображениями одинаковы, двустороннее согласование становится двунаправленным MV на основании зеркала.
В режиме слияния с двусторонним соответствием всегда применяется двунаправленное предсказание, поскольку получается информация движения CU на основании наиболее близкого совпадения между двумя блоками вдоль траектории движения текущего CU в двух разных опорных изображениях. Для режима слияния шаблонов, соответствующих шаблону, такого ограничения нет. В режиме слияния сопоставления с шаблоном кодер может выбрать унифицированное предсказание из списка 0, унифицированное предсказание из списка 1 или двойное предсказание для CU. Выбор основан на следующей стоимости сопоставления шаблона:
Если costBi <= factor * min (cost0, cost1),
используется двунаправленное предсказание;
В противном случае, если cost0 <= cost1,
используется унифицированное предсказание из списка 0;
Иначе,
используется унифицированное предсказание из списка 1.
cost0 представляет собой SAD сопоставления шаблонов списка-0, cost1 представляет собой SAD сопоставления шаблонов списка-1, и costBi представляет собой SAD сопоставления шаблонов двойного предсказания. Значение коэффициента равно 1,25, что означает, что процесс выбора смещен в сторону двумерного предсказания. Выбор направления внешнего предсказания применяется только к процессу сопоставления шаблона на уровне CU.
Сопоставление с шаблоном используется для получения информации движения текущего CU путем нахождения наиболее близкого совпадения между шаблоном (верхние и/или левые соседние блоки текущего CU) в текущем изображении и блоке (с размером, таким же, как шаблон) в опорном изображении. За исключением вышеупомянутого режима слияния FRUC, сопоставление шаблонов также применяется к режиму AMVP. Новый кандидат получается с использованием способа сопоставления шаблонов. Если новый кандидат, полученный посредством сопоставления шаблонов, отличается от первого существующего кандидата AMVP, новый кандидат вставляется в самое начало списка кандидатов AMVP, и затем размер списка устанавливается равным 2 (это означает, что второй существующий кандидат AMVP удален). Когда сопоставление шаблонов применяется к режиму AMVP, применяется только поиск на уровне CU.
Кандидаты MV, установленные на уровне CU, включают в себя: a. исходный кандидат AMVP, выбранный, если режим AMVP используется для текущего CU; b. все кандидаты слияния; c. несколько MVs в интерполированном поле MV; и d. верхний и левый соседние векторы движения.
Следует отметить, что упомянутое выше интерполированное поле MV генерируется до кодирования всего изображения на основании одностороннего ME. Затем поле движения может использоваться позже как кандидат MV на уровне CU или подуровне CU. Во-первых, поле движения каждого опорного изображения в двух опорных списках пересекается на уровне 4 × 4 блока. Для каждого блока 4 × 4, если движение, связанное с блоком, проходит через 4 × 4 блока в текущем изображении, и блок не был назначен какой-либо интерполированное движение, движение опорного блока масштабируется к текущему изображению, основываясь на временных расстояниях TD 0 и TD 1 (аналогично масштабированию MV в TMVP в HEVC), и масштабированное движение назначается блоку в текущем кадре. Если масштабированный MV не назначен блоку 4 × 4, движение блока в интерполированном поле движения помечается как недоступное.
Когда используется двустороннее сопоставление, каждый действительный MV кандидат слияния используется в качестве входных данных для генерирования пары MV с предположением двустороннего сопоставления. Например, одним действительным MV кандидатом слияния является (MVa, refa) в опорном списке A. Затем опорное изображение refb его парного двустороннего MV находится в другом опорном списке B. Таким образом, refa и refb являются временно расположенными по разные стороны текущего изображения. Если такой refb недоступен в списке ссылок B, refb определяется как опорный, отличным от refa, и временное расстояние между refb и текущим изображением является минимальным в списке B. После определения refb MVb получается путем масштабирования MVa на основании временных расстояний между текущим изображением и refa и между текущим изображением и refb.
Четыре MVs из интерполированного поля MV также добавляются в список кандидатов на уровне CU. Более конкретно, добавляются интерполированные MVs на позициях (0, 0), (W / 2, 0), (0, H / 2) и (W / 2, H / 2) текущего CU.
Когда FRUC применяется к режиму AMVP, исходный кандидат AMVP также добавляется к набору кандидатов MV уровня CU.
На уровне CU в список кандидатов добавляется до 15 MV AMVP CU и до 13 MV объединенных CU.
Кандидаты MV, установленные на уровне суб-CU, включают в себя: a. MV, определенный из поиска на уровне CU; b. верхний, левый, верхний левый и верхний правый соседние MVs; c. масштабированная версия совмещенного MV из опорного изображения; d. до четырех кандидатов ATMVP; и е. до четырех кандидатов STMVP.
Масштабированный MV из опорного изображения получается следующим образом: все опорные изображения в обоих списках перемещаются, и МV на совмещенной позиции суб-CU в опорном изображении масштабируется до опорного исходного МV CU уровня.
Кандидаты ATMVP и STMVP ограничены четырьмя первыми.
На подуровне CU в список кандидатов добавляется до 17 MVs.
Уточнение вектора движения
Вектор движения может быть уточнен с использованием различных способов, комбинируемых с разными режимами внешнего предсказания.
Уточнение MV в FRUC
Уточнение MV представляет собой поиск MV на основании шаблона с критерием стоимости двустороннего сопоставления или стоимости сопоставления с шаблоном. В текущей разработке поддерживаются два шаблона поиска: неограниченный ромбовидный поиск с центральным смещением (unrestricted center-biased diamond search, UCBDS) и адаптивный перекрестный поиск, используемый для уточнения MV на уровне CU и суб-CU соответственно. Для уточнения MV как на уровне CU, так и на уровне подуровня CU, MV ищется непосредственно с точностью MV четверти выборки яркости, после чего выполняется уточнение MV одной восьмой выборки яркости. Диапазон поиска уточнения MV для CU и этапа суб-CU устанавливается равным 8 выборкам яркости.
Уточнение вектора движения на стороне декодера
В операции двойного предсказания для предсказания одного блока области два блока предсказания, сформированные с использованием MV списка-0 и MV списка-1, соответственно, объединяются для формирования единого сигнала предсказания. В способе уточнения вектора движения на стороне декодера (decoder-side motion vector refinement, DMVR) два вектора движения двунаправленного предсказания дополнительно уточняются с использованием процесса двустороннего сопоставления шаблонов. Двустороннее соответствие шаблона применяются в декодере, чтобы выполнить поиск искажений между двусторонний шаблоном и восстановленной выборкой в опорном изображении, и для получения уточненного MV без отправки дополнительной информации движения.
В DMVR генерируется двунаправленный шаблон как взвешенная комбинация (а именно, среднее значение) двух блоков предсказания из начального списка-0 MV 0 и списка-1 MV 1, соответственно. Операция согласования шаблона включает в себя вычисление величины стоимости между сгенерированным шаблоном и выборкой области (вокруг начального блока предсказания) в опорном изображении. Для каждого из двух опорных изображений MV, который дает минимальную стоимость шаблона, рассматривается как обновленный MV для списка, чтобы заменить исходный MV. В текущей версии для каждого списка ищется девять кандидатов MVs. Девять кандидатов MVs включают в себя исходный MV и восемь окружающих MVs с одним смещением выборки яркости относительно исходного MV либо в горизонтальном направлении, либо в вертикальном направлении, либо в горизонтальном и вертикальном направлениях. Наконец, два новых MVs, то есть, MV 0' и MV 1' используются для генерирования окончательного результата двунаправленного предсказания. В качестве меры стоимости используется сумма абсолютных разностей (sum of absolute differences, SAD).
DMVR применяется для режима слияния двунаправленного предсказания с одним MV из опорного изображения в прошлом, и другой MV из опорного изображения в будущем, без отправки дополнительных элементов синтаксиса.
Точность и хранение данных движения
Уменьшение объема хранения данных движения
Использование ТМVP в AMVP, а также в режиме слияния требует хранения данных движения (в том числе вектора движения, опорного индекса и режим кодирования) в совмещенном опорном изображении. Учитывая степень детализации представления движения, размер памяти, необходимый для хранения данных движения, является значительным. HEVC использует уменьшение объема данных движения для хранения (motion data storage reduction, MDSR) для уменьшения размеров буфера данных движения и ассоциированную с ним пропускной способность доступа к памяти по данным движения подвыборки в опорном кадре. Хотя информация хранится в виде блоков 4 × 4 в H.264 / AVC, в HEVC используется блок 16 × 16. В случае подвыборки сетки 4 × 4 сохраняется информация левого верхнего блока 4 × 4. Из-за этой подвыборки MDSR влияет на качество временного предсказания.
Кроме того, существует тесная корреляция между позицией MV, используемого в совмещенном изображении, и позицией MV, сохраненного с использованием MDSR. В процессе стандартизации HEVC выясняется, что сохранение данных движения верхнего левого блока внутри области 16 × 16 вместе с нижним правым и центральным кандидатами TMVP обеспечивает лучший компромисс между эффективностью кодирования и сокращением полосы пропускания памяти.
Более высокая точность сохранения вектора движения
В HEVC точность вектора движения составляет одну четверть пикселя (одна четвертая выборка яркости и одна восьмая выборка цветности для видео 4: 2: 0). В текущих разработках точность внутреннего хранения векторов движения и кандидатов слияния увеличивается до 1/16 пикселя. Более высокая точность вектора движения (1/16 пикселя) используется во внешнем предсказании компенсации движения для CU, кодированного на основании режима пропуска/слияния. Для CU, закодированного в нормальном режиме AMVP, используется движение целочисленного пикселя или движение четверти пикселя.
Адаптивное разрешение разности векторов движения
В HEVC разность векторов движения (motion vector difference, MVD) сообщается в единицах четверти выборки яркости, когда use_integer_mv_flag равно 0 в заголовке сегмента. В текущей версии вводится локально адаптивное разрешение вектора движения (locally adaptive motion vector resolution, LAMVR). MVD может быть закодирована в единицах четвертой выборки яркости, целочисленной выборки яркости или четырех выборок яркости. Разрешение MVD контролируется на уровне блока кодирования (coding unit, CU) и флаг разрешения MVD условно сигнализируется для каждого CU, который имеет, по меньшей мере, один ненулевой компонент MVD.
Для CU, который имеет, по меньшей мере, один ненулевой компонент MVD, первый флаг сигнализируется для указания, используется ли точность MV четверти выборки яркости для CU. Когда первый флаг (который равен 1) указывает, что точность MV четверти выборки яркости не используется, другой флаг сигнализируется для указания, используется ли точность MV целочисленной выборки яркости или точность MV четырех выборок яркости.
Когда первый флаг разрешения MVD CU равен нулю или не закодирован для CU (это означает, что все MVD для CU равны нулю), для CU используется четверть разрешения MV выборки яркости. Когда используется точность MV целочисленной выборки яркости или точность MV четырех выборок яркости для CU, MVP в списке кандидатов AMVP для CU округляется до соответствующей точности.
В кодере используется проверка RD на уровне CU для определения того, какое разрешение MVD должно использоваться для CU. То есть, проверка RD на уровне CU выполняется трижды для каждого разрешения MVD.
Модуль интерполяции дробной выборки
Когда вектор движения указывает на позицию дробной выборки, требуется интерполяция с компенсацией движения. Для интерполяционной фильтрации яркости используется 8-отводный разделяемый интерполяционный фильтр на основании DCT для выборки с точностью 2/4, и используется интерполяционный фильтр на основании 7-отводов с разделением на основании DCT для выборки с точностью 1/4, как показано в таблице 1.2.
Таблица 1.2
Позиция
Коэффициенты фильтра
1/4
{–1, 4, –10, 58, 17, –5, 1}
2/4
{–1, 4, –11, 40, 40, –11, 4, –1}
3/4
{1, –5, 17, 58, –10, 4, –1}
Аналогичным образом, интерполяционный фильтр на основании DCT с 4 отводами используется для фильтра интерполяции цветности, как показано в таблице 1.3.
Таблица 1.3.
Позиция
Коэффициенты фильтра
1/8
{–2, 58, 10, –2}
2/8
{–4, 54, 16, –2}
3/8
{–6, 46, 28, –4}
4/8
{–4, 36, 36, –4}
5/8
{–4, 28, 46, –6}
6/8
{–2, 16, 54, –4}
7/8
{–2, 10, 58, –2}
Для вертикальной интерполяции для 4: 2: 2 и горизонтальной и вертикальной интерполяции для каналов цветности 4: 4: 4 нечетные позиции в таблице 1.3 не используются, что приводит к 1/4-й интерполяции цветности.
Для двунаправленного предсказания битовая глубина выходного сигнала интерполяционного фильтра поддерживается с точностью до 14 битов, независимо от исходной битовой глубины, перед усреднением двух сигналов предсказания. Фактический процесс усреднения выполняется неявно с процессом уменьшения битовой глубины следующим образом:
(1.9)
(1.10)
(1.11)
Чтобы снизить сложность, для двустороннего сопоставления и сопоставления с шаблоном используется билинейная интерполяция вместо обычной 8-отводной интерполяции HEVC.
Расчет стоимости сопоставления на разных этапах немного отличается. Когда кандидат выбирается из набора кандидатов на уровне CU, стоимость сопоставления представляет собой SAD двустороннего сопоставления или сопоставления с шаблоном. После определения начального MV стоимость С сопоставления двустороннего сопоставления при поиске подуровня CU вычисляется следующим образом:
(1.12)
w представляет собой весовой коэффициент, который эмпирически установлен на 4, и  и  указывают текущее MV и начальное MV, соответственно. SAD по-прежнему используется в качестве стоимости сопоставления шаблонов при поиске на уровне суб-CU.
В режиме FRUC MV выводится только с использованием выборки яркости. Полученный вектор движения должен использоваться как для яркости, так и для цветности для внешнего предсказания MC. После определения MV выполняется окончательная MC с использованием 8-отводного интерполяционного фильтра для яркости и 4-отводного интерполяционного фильтра для цветности.
Модуль компенсации движения
Компенсация движения перекрывающегося блока
Компенсация движения перекрывающегося блока (Overlapped Block Motion Compensation, OBMC) выполняется для всех границ блока компенсации движения (motion compensation, MC), за исключением правой и нижней границ CU в текущей версии. Кроме того, компенсация движения перекрывающихся блоков применяется как для компонентов яркости, так и для компонентов цветности. Блок MC соответствует блоку кодирования. Когда CU кодируется на основании режима суб-CU (включающий в себя режимы слияния суб-CU, аффинного и FRUC), каждый субблок CU является блоком MC. Чтобы обрабатывать границу CU единообразным образом, OBMC выполняется на уровне субблока для всех границ блока MC, где размер субблока устанавливается равным 4 × 4.
Когда к текущему субблоку применяется OBMC, в дополнение к текущему вектору движения, если векторы движения четырех ассоциированных соседних подблоков доступны и не идентичны текущему вектору движения, векторы движения четырех ассоциированных соседних подблоков также используются для получения блока предсказания для текущего субблока. Множество этих блоков предсказания на основании множества векторов движения объединяются для генерирования окончательного сигнала предсказания текущего субблока.
Блок предсказания, основанный на векторе движения соседнего субблока, обозначается как PN, где N представляет индекс верхнего, нижнего, левого или правого соседнего субблока, и блок предсказания, основанный на векторе движения текущего субблока, обозначается как РС. Когда PN основан на информации движения соседнего субблока, которая включает в себя ту же информацию движения, что и текущий субблок, OBMC не выполняется из PN. В противном случае каждая выборка PN добавляется к одной и той же выборке в РС. То есть к РС добавляются четыре строки/столбца PN. Весовые коэффициенты {1/4, 1/8, 1/16, 1/32} используются для PN, и весовые коэффициенты {3/4, 7/8, 15/16, 31/32} используются для РС. Исключением является небольшой блок MC (то есть, когда высота или ширина блока кодирования равна 4 или CU кодируется на основании режима суб-CU), и для такого блока в РС добавлены только две строки/столбца PN. В этом случае весовые коэффициенты {1/4, 1/8} используются для PN и весовые коэффициенты {3/4, 7/8} используются для РС. Для PN, сгенерированного на основании вектора движения вертикального (горизонтального) соседнего субблока, выборки в той же строке (столбце) PN добавляются в PC с тем же весовым коэффициентом.
В текущих версиях для CU с размером, меньшим или равным 256 выборок яркости, сигнализируется флаг уровня CU, чтобы указать, применяется ли OBMC для текущего CU. Для CU с размером более 256 выборок яркости или CU, не закодированного на основании режима AMVP, OBMC применяется по умолчанию. В кодере, когда OBMC применяется для CU, влияние OBMC учитывается на этапе оценки движения. Сигнал предсказания, сформированный посредством OBMC с использованием информации движения верхнего соседнего блока и левого соседнего блока, используется для компенсации верхней и левой границ исходного сигнала текущего CU, и затем применяется обработка оценки нормального движения.
Инструменты оптимизации
Компенсация локальной освещенности
Компенсация локальной освещенности (Local Illumination Compensation, LIC) основана на линейной модели для изменений освещенности с использованием коэффициента а масштабирования и смещения b. Компенсация локальной освещенности включается или выключается адаптивно для каждого блока кодирования с внешним предсказанием (coding unit, CU).
Когда LIC применяется для CU, используется способ наименьших квадратов ошибок для получения параметров a и b с использованием соседней выборки текущего CU и соответствующей опорной выборки. В качестве опорного изображения используются суб-выборки (2:1 суб-выборки) соседней выборка CU и соответствующая выборка (идентифицируемая информацией движения текущего CU или суб-CU). Параметры LIC выводятся и применяются для каждого направления предсказания отдельно.
Когда CU кодируется на основании режима слияния, флаг LIC копируется из соседнего блока аналогично копированию информации движения в режиме слияния. В противном случае для CU сигнализируется флаг LIC для указания, применяется ли LIC или нет.
Когда LIC используется для изображения, необходима дополнительная проверка RD на уровне CU, чтобы определить, применяется ли LIC для CU. Когда LIC используется для CU, сумма абсолютной разницы, удаленная из среднего (mean-removed sum of absolute difference, MR-SAD), и удаленная средняя сумма абсолютной разности, преобразованной по Адамару (mean-removed sum of absolute Hadamard-transformed difference, MR-SATD) используются вместо SAD и SATD для поиска движения целочисленного пикселя и поиска движения дробного пикселя, соответственно.
Двунаправленный оптический поток
Двунаправленный оптический поток (Bi-directional Optical flow, BIO) представляет собой дискретное уточнение движения, выполняемое поверх поблочной компенсации движения для двунаправленного предсказания. Дискретное уточнение движения не использует сигнализацию.
Пусть является значением яркости из опорной к (где к = 0, 1) после блока компенсации движения, и  и  представляют собой горизонтальную составляющую и вертикальную составляющую  градиента, соответственно. Предполагая, что оптический поток действителен, поле  вектора движения задается в соответствии с уравнением (1.13):
(1.13)
Комбинирование этого уравнения оптического потока с интерполяцией Эрмита для траектории движения каждой выборки приводит к уникальному многочлену третьего порядка, который соответствует как значению  функции, так и производным  и  на концах. Значение этого полинома при t = 0 является значением предсказания BIO:
(1.14)
В данном описании  и  обозначают расстояния до опорного кадра. Расстояния  и  рассчитываются на основании POCs для Ref0 и Ref1: = POC (текущий) - POC (Ref0), = POC (Ref1) - POC (текущий). Если оба предсказания исходят из одного и того же временного направления (либо из прошлого, либо из будущего), знаки разные (то есть, ). В этом случае BIO применяется только в том случае, если предсказания не относятся к одному и тому же моменту времени (то есть, ), обе упомянутые области имеют ненулевые векторы () движения и векторы движения блока пропорциональны временным расстояниям
().
Поле  вектора движения определяется путем минимизации разности Δ между значениями в точках А и В (пересечение траектории движения и плоскостей опорных кадров). Модель использует только первый линейный член локального разложения Тейлора для ∆:
(1.15)
Все значения в уравнении (1.15) зависят от местоположения  выборки, которое до сих пор не указывалось в обозначениях. Предполагая, что движение согласовано в локальной окружающей области, ∆ минимизируется внутри (2M + 1) х (2M + 1) квадратного окна  с центром в текущей предсказанной точке , где M равно 2:
(1.16)
Для этой задачи оптимизации текущая версия использует упрощенный подход, выполняющий минимизацию сначала в вертикальном направлении и затем в горизонтальном направлении. Получается следующее:
(1.17)
(1.18)
где
(1.19)
Чтобы избежать деления на ноль или очень маленькое значение, в уравнениях (1.17) и (1.18) используются параметры r и m регуляризации.
(1.20)
(1.21)
Здесь d представляет битовую глубину выборки видео.
Чтобы доступ к памяти для BIO оставался таким же, как доступ к памяти для обычной компенсации движения с двунаправленным предсказанием, вычисляются все предсказания и значения  градиента только для позиций внутри текущего блока. В уравнении (1.19) (2M + 1) х (2M + 1) квадратное окно Ω с центром в текущей точке предсказания на границе блока предсказания должно иметь доступ к позиции за пределами блока. В текущей версии значения  вне блока устанавливаются равными ближайшему доступному значению внутри блока. Например, это можно реализовать как заполнение.
С BIO возможно, что поле движения уточняется для каждой выборки. Однако для уменьшения вычислительной сложности может использоваться блочная конструкция BIO. Уточнение движения вычисляется на основании блока 4 × 4. В блочном BIO значения sn в уравнении (1.19) всех выборок в блоке 4 × 4 агрегируются и затем агрегированные значения sn используются для получения смещения вектора движения BIO для блока 4 × 4. Следующая формула используется для получения BIO на основании блоков:
(1,22)
bk обозначает набор выборок, принадлежащих k-му блоку 4 × 4 блока предсказания. sn в уравнениях (1.17) и (1.18) заменяется на ((sn, bk) >> 4) для получения соответствующего смещения вектора движения.
В некоторых случаях MV группа BIO может быть ненадежной из-за шума или неравномерного движения. Следовательно, в BIO величина MV группы ограничена пороговым значением thBIO. Пороговое значение определяется на основании того, все ли опорные изображения текущего изображения имеют одно направление. Если все опорные изображения текущего изображения поступают из одного направления, значение порогового значения устанавливается равным ; в противном случае, устанавливается значение .
Градиент для BIO вычисляется одновременно с интерполяцией компенсации движения с использованием операции, соответствующей процессу компенсации движения HEVC (двумерный разделяемый FIR). Вход 2D разделяемого FIR является той же выборкой опорного кадра, что и процесс компенсации движения и дробные позиции (fracX, fracY) в соответствии с дробной частью вектора движения блока. В случае сигнала горизонтального градиента сначала выполняется вертикальная интерполяция с использованием BIOfilterS, соответствующего дробной позиции fracY со сдвигом масштабирования d-8, и затем применяется градиентный фильтр BIOfilterG в горизонтальном направлении, соответствующем дробной позиции fracX со сдвигом масштабирования на 18-d. В случае вертикального градиента  сначала применяется фильтр градиента по вертикали с использованием BIOfilterG, соответствующего дробной позиции fracY со сдвигом масштабирования d - 8, и затем смещение сигнала выполняется с помощью BIOfilterS в горизонтальном направлении, соответствующем дробной позиции fracX со сдвигом уменьшения масштаба на 18-d. Длины интерполяционных фильтров для вычисления BIOfilterG градиента и смещения BIOfilterS сигнала короче (6 отводов) для сохранения надлежащей сложности. В таблице 1.4 показан фильтр, используемый для вычисления градиента в различных дробных позициях вектора движения блока в BIO. В таблице 1.5 показан фильтр интерполяции для генерирования сигнала предсказания в BIO.
Таблица 1.4
Позиция фракционного пикселя
Фильтр интерполяции для градиента (BIOfilterG)
0
{8, –39, –3, 46, –17, 5}
1/16
{8, –32, –13, 50, –18, 5}
1/8
{7, –27, –20, 54, –19, 5}
3/16
{6, –21, –29, 57, –18, 5}
1/4
{4, –17, –36, 60, –15, 4}
5/16
{3, –9, –44, 61, –15, 4}
3/8
{1, –4, –48, 61, –13, 3}
7/16
{0, 1, –54, 60, –9, 2}
1/2
{–1, 4, –57, 57, –4, 1}
Таблица 1.5
Позиция фракционного пикселя
Фильтр интерполяции для сигнала предсказания (BIOfilterS)
0
{0, 0, 64, 0, 0, 0}
1/16
{1, –3, 64, 4, –2, 0}
1/8
{1, –6, 62, 9, –3, 1}
3/16
{2, –8, 60, 14, –5, 1}
1/4
{2, –9, 57, 19, –7, 2}
5/16
{3, –10, 53, 24, –8, 2}
3/8
{3, –11, 50, 29, –9, 2}
7/16
{3, –11, 44, 35, –10, 3}
1/2
{3, –10, 35, 44, –11, 3}
В текущей версии BIO применяется ко всем блокам с двунаправленным предсказанием, когда выполняют два предсказания из разных опорных изображений. Когда LIC используется для CU, BIO отключен. OBMC применяется для блока после обычного процесса MC. Чтобы уменьшить вычислительную сложность, BIO не применяется в процессе OBMC. Это означает, что BIO применяется только в процессе MC для блока, когда используется MV блока, но не применяется в процессе MC, когда MV соседнего блока используется в процессе OBMC.
Модуль предсказания взвешенной выборки
В качестве возможного инструмента в HEVC предоставляется инструмент взвешенного предсказания (weighted prediction, WP). Принцип WP заключается в замене сигнала P внешнего предсказания на сигнал P' линейного взвешенного предсказания (с весом w и смещением o):
унифицированное предсказание: P'= w × P + o (1.23)
двунаправленное предсказание: P'= (w0 × P0 + o0 + w1 × P1 + o1) / 2 (1.24)
Применимый вес и применимое смещение выбираются кодером и передаются в битовом потоке. Суффиксы L0 и L1 определяют список 0 и список 1 списков опорных изображений, соответственно. Для фильтра интерполяции глубина в битах поддерживается с точностью до 14 бит перед усреднением сигналов предсказания.
В случае двунаправленного предсказания с, по меньшей мере, одним опорным изображением, доступным в каждом из списков L0 и L1, следующая формула применяется к явной сигнализации параметра взвешенного предсказания, относящегося к каналу яркости. Соответствующая формула применяется к каналу цветности и к случаю унифицированного предсказания.
(1.25)
где
,
, ,
,
,
.
Фильтр предсказания границы (Boundary prediction filters) является способом внутреннего кодирования, используемый для дополнительной настройки выборок предсказания в крайнем левом столбце и самой верхней строке. В HEVC после того, как блок внутреннего предсказания был сгенерирован для вертикального или горизонтального внутреннего режима, выборки предсказания в крайнем левом столбце и самой верхней строке дополнительно настраиваются соответственно. Этот способ может быть дополнительно расширен до нескольких диагональных внутренних режимов, и граничные выборки до четырех столбцов или строк дополнительно настраиваются с помощью 2-отводного фильтра (для внутренних режимов 2 и 34) или 3-отводного фильтра (для внутренних режимов 3 до 6 и 30-33).
В стандарте HEVC и предшествующих стандартах опорные кадры классифицируются на две группы: прямой опорный кадр и обратный опорный кадр, и соответственно помещаются в два списка опорных кадров (список опорных изображений). Два списка опорных кадров обычно называют список 0 и список 1. Для текущего блока используется направление внешнего предсказания используется для указания направления предсказания в прямом предсказании, обратном предсказании или двунаправленном предсказании, и другой список опорного кадра, то есть, список 0, список 1 или и список 0, и список 1, выбираются на основании направления предсказания. Опорный кадр в выбранном списке выборки обозначается индексом опорного кадра. Вектор движения используются для указания позиции смещения опорного блока предсказания текущего блока в выбранной системе выборки, относительно текущего блока в текущем кадре. Затем, генерируется окончательный блок предсказания на основании направления предсказания с использованием блочного предсказания, полученные из опорного кадра в списке 0, списке 1 или обоих списков 0 и 1. Когда направление предсказания является унифицированным предсказанием, непосредственно используются блок предсказания, полученный из опорного кадра в списке 0 или 1. Когда направление предсказания является двунаправленным предсказанием, блоки предсказания, полученные из опорных кадров как в списке 0, так и в списке 1, синтезируются посредством взвешенного усреднения для получения окончательного блока предсказания.
Для решения технической задачи в традиционной технологии, заключающейся в том, что выборки предсказания, полученные на основании режима внешнего предсказания, являются пространственно прерывистыми, что влияет на эффективность предсказания, и остаточная энергия предсказания является относительно высокой, варианты осуществления настоящего изобретения предоставляют способ внешнего предсказания для фильтрации выборка предсказания с использованием соседнего восстановленного выборки после того, как выборка предсказания сгенерирована, что повышает эффективность кодирования.
Фиг. 13 является блок-схемой алгоритма способа внешнего предсказания согласно варианту осуществления настоящего изобретения. Как показано на фиг. 13, способ включает в себя этапы с S1301 по S1307.
S1301: выполнитель синтаксический анализ битового потока для получения информации движения блока изображения, подлежащего обработке.
Обрабатываемый блок изображения может упоминаться как текущий блок или текущий CU.
Можно понять, что этап S1301 может выполняться видеодекодером 200 на фиг. 1.
Например, в этом варианте осуществления настоящего изобретения технология компенсации движения на основании блоков может использоваться для поиска закодированных блоков для блока оптимального соответствия текущего блока кодирования, так что остаток между блоком предсказания и текущим блоком будет как можно меньше; и используется для вычисления смещения MV текущего блока.
Например, блок изображения, подлежащего обработке, может быть любым блоком изображения и размер блока изображения, подлежащего обработке, может быть 2 x 2, 4 x 4, 8 x 8, 16 x 16, 32 x 32, 64 x 64 или 128 x 128. Это не ограничено в этом варианте осуществления настоящего изобретения.
Например, если подлежащий обработке блок изображения (текущий блок) кодируется на стороне кодера на основании режима слияния (merge), пространственный кандидат и временной кандидат текущего блока могут быть добавлены к список кандидатов с информацией движения слияния для текущего блока. Способ такой же, как способ в HEVC. Например, любая из технологий, описанных на фиг. 8-фиг. 12, может использоваться в качестве конкретного способа для получения списка кандидатов с информацией движения слияния.
Например, если для текущего блока используется режим слияния, информация движения текущего блока определяется на основании индекса слияния, переносимого в битовом потоке. Если используется внешний режим MVP для текущего блока, информация движения текущего блока определяется на основании направления внешнего предсказания, индекса опорного кадра, индексного значения вектора предсказания движения и остаточной стоимости вектора движения, которые передаются в битовом потоке.
Этап S1301 может выполняться с использованием способа в HEVC или VTM, или может выполняться с использованием другого способа для составления списка кандидатов предсказания вектора движения. Это не ограничивается данным вариантом выполнения настоящего изобретения.
S1302: (Возможно) определить обновить блок предсказания блока изображения, подлежащего обработке.
Можно понять, что этап S1302 может выполняться видеодекодером 200 на фиг. 1.
Блок предсказания блока изображения, подлежащего обработке, является блоком предсказания текущего блока и может быть получен на основании одного или нескольких кодированных блоков.
Например, нужно ли обновлять блок предсказания блока изображения, подлежащего обработке, может быть определено на основании индикатора определения обновления блока изображения, подлежащего обработке. Другими словами, следует ли выполнять пространственную фильтрацию блока изображения, подлежащего обработке, может быть определено на основании индикатора определения обновления блока изображения, подлежащего обработке.
В возможной реализации битовый поток может быть проанализирован для получения информации указания определения обновления блока изображения, подлежащего обработке, где используется информация указания определения обновления для указания, следует ли обновить блок предсказания блока изображения, подлежащего обработке; и дополнительно определяется, на основании информации указания определения обновления блока изображения, подлежащего обработке, что блок предсказания блока изображения, подлежащего обработке, должен быть обновлен.
В другой возможной реализации может быть получена заданная информация указания определения обновления блока изображения, подлежащего обработке, где предварительно установленная информация указания определения обновления используется для указания, следует ли обновлять блок предсказания блока изображения, подлежащего обработке; и дополнительно определяется на основании заданной информации указания определения обновления, что блок предсказания блока изображения, подлежащего обработке, должен быть обновлен.
Например, если индикатор определения обновления истинен, может быть определено, что блок предсказания блока изображения, подлежащего обработке, должен быть обновлен. Другими словами, определяется, что пространственная фильтрация должна выполняться над блоком предсказания блока изображения, подлежащего обработке. Если индикатор определения обновления является ложным, определяется, что блок предсказания блока изображения, подлежащего обработке, не нуждается в обновлении. Конкретная форма индикатора определения обновления не ограничивается в этом варианте осуществления настоящего изобретения. В данном случае то, что индикатор определения обновления является истинным или ложным, просто используется в качестве примера для описания.
S1303: (Возможно) определить режим предсказания, соответствующий блоку изображения, подлежащего обработке.
Можно понять, что этап S1303 может выполняться видеодекодером 200 на фиг. 1.
Например, режим предсказания, соответствующий блоку изображения, подлежащего обработке, может быть режимом слияния (merge) и/или усовершенствованным режимом внешнего предсказания вектора движения (inter-AMVP). Это не ограничивается данным вариантом выполнения настоящего изобретения. Можно понять, что режим предсказания, соответствующий блоку изображения, подлежащего обработке, может быть только режимом слияния, только inter-AMVP режимом или комбинацией режима слияния и inter-AMVP режима.
Следует отметить, что усовершенствованный режим внешнего предсказания вектора движения (inter-AMVP) также может называться режимом внешнего предсказания вектора движения (inter-MVP).
Например, способ определения режима предсказания, соответствующего блоку изображения, подлежащего обработке, может быть следующим: анализ битового потока для получения режима предсказания, соответствующего блоку изображения, подлежащего обработке, и определение, что режим предсказания, соответствующий блоку изображения, подлежащего обработке, является режимом слияния и/или inter-AMVP режимом.
Можно понять, что в этом варианте осуществления настоящего изобретения способ пространственной фильтрации может выполняться для блока с внешним кодированием, который был закодирован на основании режима слияния и/или inter-AMVP режима. Другими словами, обработка фильтрации может выполняться на стороне декодера во время декодирования для блока, который был закодирован на основании режима слияния и/или inter-AMVP режима.
S1304: выполнить компенсацию движения над блоком изображения, подлежащего обработке, на основании информации движения, для получения блока предсказания блока изображения, подлежащего обработке.
Блок предсказания изображения, подлежащего обработке, включает в себя значение предсказания целевой выборки.
Можно понять, что этап S1304 может выполняться видеодекодером 200 на фиг. 1.
Так, например, во время компенсации движения, текущее частичное изображение предсказывается и компенсируются на основании опорного изображения. Это может уменьшить избыточность информации в последовательности кадров.
Например, когда выполняется компенсация движения на основании информации движения, блок предсказания блока изображения, подлежащего обработке, может быть получен из опорного кадра на основании направления опорного кадра, порядкового номера опорного кадра и вектора движения. Направление опорного кадра может быть прямым предсказанием, обратным предсказанием или двунаправленным предсказанием. Это не ограничивается данным вариантом выполнения настоящего изобретения.
Например, когда направление выборки является прямым предсказанием, опорный кадр, может быть выбран из набора переднего опорного изображения для кодирования текущего блока (CU) для получения опорного блока. Когда направление выборки является обратным предсказанием, опорное изображение может быть выбрано из набора обратного опорного изображения для текущего блока кодирования (CU) для получения опорного блока. Когда направление выборки является двунаправленным предсказанием, опорное изображение может быть выбрано из каждого из набора прямых опорных изображений и набора обратных опорных изображений для текущего блока кодирования (CU) для получения опорного блока.
Следует отметить, что на этапе S1304 способ для выполнения компенсации движения в блоке изображения, подлежащего обработке, на основании информации движения, может быть способом в HEVC или VTM, или может быть другим способом для получения блока предсказания блока изображения, подлежащего обработке. Это не ограничивается данным вариантом выполнения настоящего изобретения.
S1306: выполнить вычисление взвешивания одного или нескольких восстановленных значений одной или нескольких опорных выборок и значения предсказания целевой выборки, для обновления значения предсказания целевой выборки.
Опорная выборка имеет заданную пространственную позицию относительно целевой выборки.
Можно понять, что этап S1306 может выполняться видеодекодером 200 на фиг. 1.
Так, например, целевая выборка представляет собой выборку в блоке предсказания блока изображения, подлежащего обработке, и значение предсказания целевой выборки может быть определенно на основании значения выборки в опорном блоке.
Например, опорная выборка может быть восстановленной выборкой, которая пространственно смежна с текущим CU (блока изображения, подлежащего обработке). В частности, опорная выборка может быть восстановленной выборкой в блоке, отличном от текущего блока CU в изображении. Например, опорная выборка может быть восстановленной выборкой в блоке CU выше или слева от текущего CU. Это не ограничивается данным вариантом выполнения настоящего изобретения.
Можно понять, что на этапе S1306 выполняется пространственная фильтрация на выборке предсказания целевой выборки с использованием восстановленной выборки, которая пространственно смежна с текущим CU. В частности, выполняется вычисление взвешивания для выборки предсказания целевой выборки в текущем блоке и значения выборки восстановленной выборки, которая пространственно смежна с текущим CU, для получения обновленной выборки предсказания целевой выборки.
В возможной реализации, одна или несколько опорных выборок могут включать в себя восстановленную выборку, которая имеет ту же горизонтальную координату, что и целевая выборка, и имеет заданную разность вертикальных координат с целевой выборкой, или восстановленную выборку, которая имеет те же вертикальные координаты что и целевая выборка и имеет предварительно заданное горизонтальное отличие от целевой выборки.
Например, как показано на фиг. 14, верхний левый угол изображения используется как начало системы координат, направление оси X системы координат проходит вправо вдоль верхней стороны изображения, и направление оси Y системы координат продолжается вниз по левой стороне изображения. Если координаты целевой выборки в блоке изображения, подлежащего обработке (текущий CU), равны , и координаты верхней левой выборки блока изображения, подлежащего обработке, равны , то опорная выборка целевой выборки может быть восстановленной выборкой в блоке выше или слева от блока изображения, подлежащего обработке. Если опорная выборка является восстановленной выборкой в блоке над подлежащим обработке блоком изображения, поскольку опорная выборка представляет собой восстановленную выборку в блоке, отличном от блока изображения, подлежащего обработке, то вертикальная координата опорной выборки представляет собой значение, полученное путем вычитания заданного отношения положения N из вертикальной координаты верхней стороны блока изображения, подлежащего обработке, и горизонтальная координата опорной выборки такая же, как горизонтальная координата целевой выборки в блоке изображения, подлежащего обработке. Точнее, координаты опорной выборки равны . Если опорная выборка является восстановленной выборкой в блоке слева от подлежащего обработке блока изображения, поскольку опорная выборка является восстановленной выборкой в блоке, отличном от блока изображения, подлежащего обработке, горизонтальная координата опорной выборки является значением, полученным путем вычитания заданного отношения положения M из меньшей левой горизонтальной координаты блока изображения, подлежащего обработке, и вертикальная координата опорной выборки совпадает с вертикальной координатой целевой выборки в блоке изображения, подлежащего обработке. Точнее, координаты опорной выборки равны . Конкретные отношения пространственной позиции (конкретные значения M и N) между опорной выборкой и целевой выборкой не ограничиваются в этом варианте осуществления настоящего изобретения.
В возможной реализации значение предсказания целевой выборки может обновляться согласно следующей формуле:
где координаты целевой выборки равны, координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляют собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки,  и  представляют восстановленные значения опорных выборок на позициях  и  координат, соответственно, w1, w2, w3, w4, w5 и w6 являются заданными константами и M1 и M2 являются заданными положительными целыми числами.
Ниже описаны конкретные способы вычисления обновленного значения предсказания целевой выборки на основании различных случаев координат  левой верхней выборки блока изображения, подлежащего обработке.
В первом случае, если xN больше 0, yN равно 0, и опорная выборка в позиции была закодирована и восстановлена, обновленное значение предсказания целевой выборки может быть получено согласно следующей формуле :
Например, как показано на фиг. 15, что размер блока изображения, подлежащего обработке, составляет 16 x 16, используется в качестве примера для описания. Если блок изображения, подлежащего обработке, является CU 1, верхняя левая выборка  блока изображения, подлежащего обработке (CU 1) равна , и координаты целевой выборки  в блоке изображения, подлежащего обработке, равны . Поскольку горизонтальная координата xN левой верхней выборки текущего CU (CU 1) больше 0 и вертикальная координата yN верхней левой выборки текущей CU (CU 1) равна 0, можно определить, что текущий CU расположен в верхней части изображения. Когда выполняется пространственная фильтрация на целевой выборке в текущем CU, поскольку текущий CU расположен в верхней части изображения, и нет восстановленной выборки выше текущего CU, опорная выборка является восстановленной выборкой слева от текущего CU. Опорная выборка имеет ту же вертикальную координату, что и целевая выборка, и может обозначаться как , где M1 представляет собой предварительно заданную пространственную позицию между опорной выборкой и целевой выборкой. Здесь, что M1 равно 1, используется в качестве примера для описания. Когда M1 равно 1, опорная выборка целевой выборки  может быть . Таким же образом любой опорной выборкой целевой выборки  может быть .
Если опорная выборка на позиции  была закодирована и восстановлена, вычисление взвешивания может быть выполнено для восстановленного значения  опорной выборки и значения  предсказания целевой выборки для получения обновленного значения  предсказания целевой выборки.
Во втором случае, если xN равно 0, yN больше 0, и опорная выборка на позиции  была закодирована и восстановлена, обновленное значение предсказания целевой выборки может быть получено согласно следующей формуле:
Например, как показано на фиг. 15, если блок изображения, подлежащий обработке, представляет собой CU 2, верхняя левая выборка  блока изображения, подлежащего обработке (CU 2), равна , и координаты целевой выборки  равны  . Поскольку горизонтальная координата xN левой верхней выборки текущего CU (CU 2) равна 0 и вертикальная координата yN верхней левой выборки текущего CU (CU 2) больше 0, можно определить, что текущий CU расположен в левой части изображения. Когда выполняется пространственная фильтрация на целевой выборке в текущем CU, поскольку текущая CU расположена в левой части изображения, и восстановленная выборка отсутствует слева текущего CU, опорная выборка является восстановленной выборкой выше текущего CU. Опорная выборка имеет ту же горизонтальную координату, что и целевая выборка, и может быть обозначен как , где M2 представляет собой предварительно заданную пространственную позицию между опорной выборкой и целевой выборкой. Здесь в качестве примера для описания используется то, что M2 равно 1. Когда M2 равно 1, опорной выборки целевой выборки  может быть . Таким же образом любая опорная выборка целевой выборки  может быть .
Если опорная выборка на позиции  была закодирована и восстановлена, вычисление взвешивания может быть выполнено для восстановленного значения  опорной выборки и значения  предсказания целевой выборки, для получения обновленного значения  предсказания целевой выборки.
В третьем случае, если xN больше 0, yN больше 0 и опорные выборки на позициях  и  были закодированы и восстановлены, обновленное значение предсказания целевой выборки может быть получено согласно следующей формуле:
Например, как показано на фиг. 15, если блок изображения, подлежащий обработке, представляет собой CU 3, верхняя левая выборка  блока изображения, подлежащего обработке (CU 3), равна , и координаты целевой выборки  равны . Поскольку горизонтальная координата xN левой верхней выборки текущего CU (CU 3) больше 0 и вертикальная координата yN верхней левой выборки текущего CU (CU 3) больше 0, можно определить, что текущий CU не расположен на краю изображения. Когда выполняется пространственная фильтрация для целевой выборки в текущем CU, опорные выборки могут быть восстановленной выборкой над текущим CU и восстановленная выборка слева от текущего CU. Когда опорная выборка является восстановленной выборкой слева от текущего CU, восстановленная выборка имеет ту же вертикальную координату, что и целевая выборка, и может быть ; и, когда опорная выборка является восстановленной выборкой выше текущего CU, восстановленная выборка имеет ту же горизонтальную координату, что и целевая выборка, и может быть , где M1 и M2 каждый представляют собой заданную пространственную позицию отношения между каждой из опорных выборок и целевой выборкой. Здесь то, что и M1, и M2 равны 1, используется в качестве примера для описания. Когда и M1, и M2 равны 1, опорными выборками целевой выборки  может быть  и . Аналогично, любые опорные выборки целевой выборки  могут быть  и .
Если опорные выборки на позициях  и  были закодированы и восстановлены, вычисление взвешивания может быть выполнено для восстановленных значений  и  опорных выборок и значения  предсказания целевой выборки, для получения обновленного значения  предсказания целевой выборки.
Следует отметить, что значения взвешенных коэффициентов w1, w2, w3, w4, w5 и w6, а также значения M1 и M2 не ограничиваются в этом варианте осуществления настоящего изобретения, и что как M1, так и M2 равны 1 используется просто в качестве примера.
Например, набор взвешенных коэффициентов (w1, w2), (w3, w4) или (w5, w6, w7) может быть комбинацией значений w1 + w2, w3 + w4 или w5 + w6 + w7. где w1 + w2, w3 + w4 или w5 + w6 + w7 равно 2 в степени целого числа. Таким образом, операция деления больше не выполняется. Например, может использоваться комбинация значений, такая как (6, 2), (5, 3), (4, 4), (6, 1, 1) или (5, 2, 1). Это не ограничено в данном варианте осуществления настоящего изобретения, и комбинация значений, перечисленная в данном документе, просто используется в качестве примера для описания.
В другой возможной реализации значение предсказания целевой выборки может обновляться в соответствии со следующей формулой:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки,  и  представляют восстановленные значения опорных выборок на позициях  и  координат, соответственно, w1, w2 и w3 являются заданными константами и M1 и M2 являются заданными положительными целыми числами.
Например, набор взвешенных коэффициентов (w1, w2, w3) может быть комбинацией значений w1 + w2 + w3, где w1 + w2 + w3 равно 2, возведенному в степень целого числа. Таким образом, операция деления больше не выполняется. Например, может использоваться комбинация значений, такая как (6, 1, 1) или (5, 2, 1). Это не ограничено в данном варианте осуществления настоящего изобретения, и комбинация значений, перечисленная в данном документе, просто используется в качестве примера для описания.
Следует отметить, что разница между этой реализацией и предшествующей реализацией заключается в том, что выборка слева блока изображения, подлежащего обработке, и выборка над блоком изображения, подлежащего обработке, не рассматриваются в этой реализации. Когда эта реализация используется для обновления значения предсказания целевой выборки, и восстановленные значения опорных выборок недоступны, может использоваться способ на следующих этапах S13061 и S13062 для получения новой опорной выборки и обновления значения предсказания целевой выборки на основании нового стандартного выборки.
В другой возможной реализации значение предсказания целевой выборки может обновляться в соответствии со следующей формулой:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, , ,  и  представляют восстановленные значения опорных выборок на позициях , ,  и  координатах, соответственно, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 и w11 являются заданными константами и M1, M2, M3 и M4 являются заданными положительными целыми числами.
Нижеследующее конкретно описывает способы вычисления обновленного значения предсказания целевой выборки на основании различных случаев координат  верхней левой выборки блока изображения, подлежащего обработке.
В первом случае, если xN больше 0, yN равно 0, и опорные выборки в позициях  и  были закодированы и восстановлены, обновленное значение предсказания целевой выборки может быть получено согласно следующей формуле:
Можно понять, что разница между этим случаем в этой реализации и первым случаем в первой реализации состоит в том, что в этой реализации используются две опорные выборки. Если блок изображения, подлежащий обработке, является CU 1, верхняя левая выборка  блока изображения, подлежащего обработке (CU 1) равна , и координаты целевой выборки  в блоке изображения, подлежащего обработке, равны . Опорные выборки представляют собой восстановленные выборки слева от текущего CU. Каждая опорная выборка имеет ту же вертикальную координату, что и целевая выборка, и может быть обозначена как  и , где M1 и M2 представляет собой заданную пространственную позицию отношения между каждой из опорных выборок и целевой выборкой. Здесь в качестве примера для описания используется то, что M1 равно 1 и M2 равно 2. Когда M1 равно 1 и M2 равно 2, опорные выборки целевой выборки  могут быть  и . Аналогично, любые опорные выборки целевой выборки  могут быть  и .
Если опорные выборки в позициях  и  были закодированы и восстановлены, вычисление взвешивания может быть выполнено для восстановленных значений  и  опорных выборок и значения  предсказания целевой выборки, для получения обновленного значения  предсказания целевой выборки.
Во втором случае, если xN равно 0, yN больше 0 и опорные выборки на позициях  и  были закодированы и восстановлены, обновленное значение предсказания целевой выборки может быть получено согласно следующей формуле:
Например, разница между этим случаем в этой реализации и вторым случаем в первой реализации состоит в том, что в этой реализации есть две опорные выборки. Если блок изображения, подлежащий обработке, представляет собой CU 2, верхняя левая выборка  блока изображения, подлежащего обработке (CU 2), равна , и координаты целевой выборки  равны . Опорные выборки представляют собой восстановленные выборки выше текущего CU. Каждая опорная выборка имеет такую же горизонтальную координату, что и целевая выборка, и может быть обозначена как  и , где M3 и M4 представляют собой заданную пространственную позицию отношения между каждой из опорных выборок и целевой выборкой. Здесь в качестве примера для описания используется то, что M3 равно 1 и M4 равно 2. Когда M3 равно 1 и M4 равно 2, опорные выборки целевой выборки  могут быть  и . Аналогично, любые опорные выборки целевой выборки  могут быть  и .
Если опорные выборки на позициях  и  были закодированы и восстановлены, выполняться вычисление взвешивания для восстановленных значений  и  опорных выборок и значения  предсказания целевой выборки, для получения обновленного значения предсказания целевой выборки.
В третьем случае, если xN больше 0, yN больше 0 и опорные выборки в позициях , ,  и  были закодированы и восстановлены, обновленное значение предсказания целевой выборки может быть получено согласно следующей формуле:
Например, разница между этим случаем в этой реализации и третьим случаем в первой реализации заключается в том, что есть две восстановленные выборки в качестве опорных выборок над текущим CU и две восстановленные выборки в качестве опорных выборок слева от текущего CU в этой реализации. Если блок изображения, подлежащий обработке, представляет собой CU 3, то верхняя левая выборка  блока изображения, подлежащего обработке (CU 3), равна , и координаты целевой выборки  равны . Когда опорные выборки являются восстановленными выборками слева от текущего CU, каждая восстановленная выборка имеет ту же вертикальную координату, что и целевая выборка, и может быть  и ; и, когда опорные выборки являются восстановленными выборками выше текущего CU, каждая восстановленная выборка имеет ту же горизонтальную координату, что и целевая выборка, и может быть  и , где M1, M2, M3 и M4 каждая представляет собой предварительно заданную пространственную позицию отношений между каждой опорной выборкой и целевой выборкой. Здесь, что оба M1 и M3 равны 1, и оба M2 и M4 равны 2, используется в качестве примера для описания. Когда и M1 и M3 равны 1, и оба M2 и M4 равны 2, опорными выборками целевой выборки  могут быть , ,  и . Аналогично, любые опорные выборки целевой выборки  могут быть , ,  и .
Если опорные выборки на позициях , ,  и  были закодированы и восстановлены, вычисление взвешивания может быть выполнено для восстановленных значений , ,  и  опорных выборок и значения  предсказания целевой выборки для получения обновленного значения  предсказания целевой выборки.
Следует отметить, что значения взвешенных коэффициентов w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 и w11 и значения M1, M2, M3 и M4 не ограничены в варианте осуществления настоящего изобретения. То, что и M1, и M3 равны 1 и M2 и M4 равны 2, просто используется в качестве примера для описания. Можно понять, что в реальном применении значения M1 и M3 могут быть одинаковыми или разными, значения M2 и M4 могут быть одинаковыми или разными, значения M1 и M2 могут быть разными и значения M3 и M4 могут быть разными.
Например, набор взвешенных коэффициентов (w1, w2, w3), (w4, w5, w6) или (w7, w8, w9, w10, w11) может быть комбинацией значений w1 + w2 + w3, w4 + w5 + w6, или w7 + w8 + w9 + w10 + w11, где w1 + w2 + w3, w4 + w5 + w6 или w7 + w8 + w9 + w10 + w11 равно 2 в степени целого числа. Таким образом, операция деления больше не выполняется. Например, может использоваться комбинация значений, такая как (6, 1, 1), (5, 2, 1) или (3, 2, 1, 1, 1). Это не ограничено в данном варианте осуществления настоящего изобретения, и комбинация значений, перечисленная в данном документе, просто используется в качестве примера для описания.
В другой реализации значение предсказания целевой выборки может обновляться согласно следующей формуле:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляют собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, , , и  представляют восстановленные значения опорных выборок на позициях , ,  и , соответственно, w1, w2, w3, w4 и w5 являются заданными константами и M1, M2, M3 и M4 являются заданными положительными целыми числами.
Например, набор взвешенных коэффициентов (w1, w2, w3, w4, w5) может быть комбинацией значений w1 + w2 + w3 + w4 + w5, где w1 + w2 + w3 + w4 + w5 равно 2 в степени целого числа. Таким образом, операция деления больше не выполняется. Например, может использоваться комбинация значений, такая как (3, 2, 1, 1, 1). Это не ограничено в данном варианте осуществления настоящего изобретения, и комбинация значений, перечисленная в данном документе, просто используется в качестве примера для описания. Следует отметить, что различие между этой реализацией и предшествующей реализацией заключается в том, что выборка слева от блока изображения, подлежащего обработке, и выборка над блоком изображения, подлежащего обработке, в этой реализации не рассматриваются. Когда эта реализация используется для обновления значения предсказания целевой выборки и восстановленные значения опорных выборок недоступны, способ на следующих этапах S13061 и S13062 может использоваться для получения доступной опорной выборки и обновления значения предсказания целевой выборки на основании доступной опорной выборки.
В возможной реализации одна или несколько опорных выборок включают в себя одну или несколько из следующих выборок: восстановленная выборка, которая имеет ту же горизонтальную координату, что и целевая выборка, и которая примыкает к верхней стороне будущего блока изображения, подлежащего обработке, восстановленная выборка, которая имеет ту же вертикальную координату, что и целевая выборка, и которая находится рядом с левой стороной блока изображения, подлежащего обработке, верхняя правая восстановленная выборка блока изображения, подлежащего обработке, восстановленная выборка в левом нижнем углу блока изображения, подлежащего обработке, или восстановленная выборка в левом верхнем углу блока изображения, подлежащая обработке.
В другой возможной реализации значение предсказания целевой выборки может обновляться в соответствии со следующей формулой:
predQ (xP, yP) = (w1 * predP (xP, yP) + w2 * predP1 (xP, yP) + ((w1 + w2) / 2)) / (w1 + w2)
где координаты целевого пикселя равны ,  представляет значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевого пикселя и w1 и w2 являются заданными константами.
В частности, второе значение  выборки предсказания может быть сначала получено на основании соседней пространственной выборки и планарного (PLANAR) режима внутреннего предсказания. Можно понять, что в режиме PLANAR используются два линейных фильтра в горизонтальном направлении и вертикальном направлении, и среднее значение, полученное двумя линейными фильтрами, используется в качестве значения предсказания выборки в текущем блоке.
Например, второе значение  выборки предсказания может быть получено на основании PLANAR режима:
где, как показано на фиг. 16 координаты верхней левой выборки блока изображения, подлежащего обработке, равны , , ,  и  представляют собой восстановленные значения опорных выборок на позициях , ,  и  координат соответственно, и nTbW и nTbH представляют ширину и высота текущего CU (блока изображения, подлежащего обработке).
В другой возможной реализации значение предсказания целевой выборки обновляется согласно следующей формуле:
predQ (xP, yP) = (w1 * predP (xP, yP) + w2 * predV (xP, yP) + w3 * predH (xP, yP) + ((w1 + w2 + w3) / 2)) / (w1 + w2 + w3)
где predV (xP, yP) = ((nTbH - 1 - yP) * p (xP, –1) + (yP + 1) * p (–1, nTbH) + nTbH / 2) >> Log2 (nTbH), predH (xP, yP) = ((nTbW - 1 - xP) * p (–1, yP) + (xP + 1) * p (nTbW, –1) + nTbW / 2) >> Log2 (nTbW), координаты целевой выборки (xP, yP), координаты верхней левой выборки блока изображения, подлежащего обработке, равны (0, 0), predP (xP, yP) представляет значение предсказания целевой выборки перед обновление, predQ (xP, yP) представляет обновленное значение предсказания целевой выборки, p (xP, –1), p (–1, nTbH), p (–1, yP) и p (nTbW, –1) представляют восстановленные значения опорных выборок в координатах (xP, –1), (–1, nTbH), (–1, yP) и (nTbW, –1), соответственно, w1 и w2 являются заданными константами, и nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке.
В другой возможной реализации значение предсказания целевой выборки обновляется согласно следующей формуле:
predQ (xP, yP) = (((w1 * predP (xP, yP)) << (Log2 (nTbW) + Log2 (nTbH) + 1)) + w2 * predV (xP, yP) + w3 * predH (xP, yP) + (((w1 + w2 + w3) / 2) << (Log2 (nTbW) + Log2 (nTbH) + 1))) / (((w1 + w2 + w3) << (Log2 (nTbW) + Log2 (nTbH) + 1)))
где predV (xP, yP) = ((nTbH - 1 - yP) * p (xP, –1) + (yP + 1) * p (–1, nTbH)) << Log2 (nTbW), predH (xP, yP) = ((nTbW - 1 - xP) * p (–1, yP) + (xP + 1) * p (nTbW, –1)) << Log2 (nTbH), координаты целевой выборки (xP, yP), координаты верхней левой выборки блока изображения, подлежащего обработке, равны (0, 0), predP (xP, yP) представляет значение предсказания целевой выборки до обновления, predQ (xP, yP) представляет обновленное значение предсказания целевой выборки, p (xP, –1), p (–1, nTbH), p (–1, yP) и p (nTbW, –1) представляют восстановленные значения опорных выборок на позициях (xP, –1), (–1, nTbH), (–1, yP) и (nTbW, –1) координат, соответственно, w1 и w2 являются заданными константами и nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке.
Следует отметить, что алгоритм планарного (PLANAR) режима, используемый для генерирования второго значения  выборки предсказания, не ограничивается алгоритмом в VTM, и альтернативно может использоваться алгоритм PLANAR в HEVC или H.264. Это не ограничивается данным вариантом выполнения настоящего изобретения.
Следует отметить, что значения взвешенных коэффициентов w1 и w2 не ограничиваются в этом варианте осуществления настоящего изобретения. Например, набор взвешенных коэффициентов (w1, w2) может быть комбинацией значений w1 + w2, где w1 + w2 равно 2, возведенному в степень целого числа. Таким образом, операция деления больше не выполняется. Например, может использоваться комбинация значений, такая как (6, 2), (5, 3) или (4, 4). Это не ограничено в данном варианте осуществления настоящего изобретения, и комбинация значений, перечисленная в данном документе, просто используется в качестве примера для описания.
В другой возможной реализации значение предсказания целевой выборки может обновляться в соответствии со следующей формулой:
predQ (xP, yP) = (w1 * predP (xP, yP) + w2 * predP1 (xP, yP) + ((w1 + w2) / 2)) / (w1 + w2)
где
координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, , ,  и  представляют восстановленные значения опорных выборок на позициях , ,  и  координат, соответственно, w1 и w2 являются заданными константами и nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке.
В другой возможной реализации блок внешнего предсказания может обрабатываться с использованием технологии обработки комбинации позиционно-зависимого внутреннего предсказания (Position-dependent intra prediction combination process), которая используется во внутреннем предсказании, и может быть получено обновленное значение  предсказания целевой выборки с использованием способа DC режима в технологии обработки комбинации с внутренним предсказанием в VTM. Можно понять, что при использовании DC режима значение предсказания текущего блока может быть получено на основании среднего значения опорных выборок слева и над текущим блоком.
Например, обновленное значение  предсказания целевой выборки может быть получено согласно следующей формуле:
где
, , , как показано на фиг. 16, координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки,,  и  представляют восстановленные значения опорных выборок на позициях ,  и , соответственно, nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке, clip1Cmp представляет операцию отсечения.
Следует отметить, что обновленное значение  предсказания целевой выборки может быть получено с использованием не только технологии обработки комбинации внутреннего предсказания в VTM, но также алгоритма в JEM.
В возможной реализации блок внешнего предсказания может быть обработан с использованием технологии обработки комбинации позиционно-зависимого внутреннего предсказания, которая используется при внутреннем предсказании, и обновленное значение  предсказания целевой выборки может быть получено с использованием режима PLANAR в технологии обработки комбинации внутреннего предсказания в VTM. Используется следующая формула:
где,
, , как показано на фиг. 16, координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет собой значение предсказания целевой выборки до обновления,  представляет обновленное значение предсказания целевой выборки,  и  представляют восстановленные значения опорных выборок на позициях  и , соответственно, nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке, clip1Cmp представляет операцию отсечения.
Следует отметить, что обновленное значение  предсказания целевой выборки может быть получено с использованием не только алгоритма в VTM, но также алгоритма в JEM.
В возможной реализации обработка фильтрации может выполняться на выборке внешнего предсказания с использованием технологии граничной фильтрации с внутренним предсказанием. Подробнее о технологии граничной фильтрации см. в способе HEVC. Подробности здесь не описаны.
Следует отметить, что, когда значение предсказания целевой выборки обновляется в любом из указанных выше способов, если восстановленное значение опорной выборки недоступно, этап S1306 может дополнительно включать в себя следующие этапы S13061 и S13062.
S13061: когда восстановленное значение опорной выборки недоступно, определить в заданном порядке доступность выборок, прилегающих к верхней и левой стороне блока изображения, подлежащего обработке, до тех пор, пока не будет получено заданное количество доступных опорных выборок.
Можно понять, что случай, в котором восстановленное значение опорной выборки недоступно, может включать в себя следующее: когда блок изображения, подлежащий обработке, расположен на верхней стороне изображения, восстановленное значение опорной выборки отсутствует на координатной позиции ; или, когда блок изображения, подлежащий обработке, расположен на левой стороне изображения, восстановленное значение опорной выборки отсутствует на координатной позиции ; или значение реконфигурации не может быть получено для опорной выборки. Конкретный случай, в котором восстановленное значение опорной выборки недоступно, не ограничивается в этом варианте осуществления настоящего изобретения, и случай в данном документе просто используется в качестве примера для описания.
В реализации, показанной на фиг. 17, заданный порядок может быть порядком от координат (xN - 1, yN + nTbH - 1) к координатам (xN - 1, yN - 1), а затем от координат (xN, yN - 1) к координатам (xN + nTbW –1, yN - 1). Например, все выборки могут быть пройдены в порядке от координат (xN - 1, yN + nTbH - 1) до координат (xN - 1, yN - 1) и затем от координат (xN, yN - 1) до координаты (xN + nTbW - 1, yN - 1) для поиска доступной опорной выборки из выборок, смежных с верхней и левой стороной блока изображения, подлежащего обработке. Следует отметить, что конкретный заданный порядок не ограничен в этом варианте осуществления настоящего изобретения, и заданный порядок здесь используется просто в качестве примера для описания.
Например, когда есть, по меньшей мере, одна доступная опорная выборка во всех опорных выборках, если восстановленное значение опорной выборки (xN - 1, yN + nTbH - 1) недоступно, доступная выборка ищется в заданном порядке от координат (xN - 1, yN + nTbH - 1) к координатам (xN - 1, yN - 1) и затем от координат (xN, yN - 1) к координатам (xN + nTbW - 1, yN - 1). Как только найдена доступная выборка, поиск заканчивается. Если доступная выборка является (x, y), восстановленное значение опорной выборки (xN - 1, yN + nTbH - 1) устанавливается равным восстановленному значению выборки (x, y). Если восстановленное значение опорной выборки (x, y) недоступно в наборе, включающем в себя опорную выборку (xN - 1, yN + nTbH - M), восстановленное значение опорной выборки (x, y) устанавливается на восстановленное значение выборки (x, y + 1), где M больше или равно 2 и меньше или равно nTbH + 1. Если восстановленное значение опорной выборки (x, y) недоступно в наборе, включающим в себя опорную выборку (xN + N, yN - 1), восстановленное значение опорной выборки (x, y) устанавливается равным восстановленному значению опорной выборки (x - 1, y), где N больше или равно 0 и меньше или равно nTbW - 1.
Например, если восстановленное значение опорной выборки (xN - 1, yN + nTbH - M) недоступно, доступная опорная выборка может быть найдена в заданном порядке, начиная с координат (xN - 1, yN + nTbH - M), где M больше или равно 1 и меньше или равно nTbH + 1. Если доступная опорная выборка является B, восстановленное значение опорной выборки (xN - 1, yN + nTbH - M) может быть установлено на восстановленное значение опорной выборки B. Если восстановленное значение опорной выборки с координатами (xN + N, yN - 1) недоступно, доступная опорная выборка может быть найдена в заданном порядке, начиная с координаты (xN + N, yN - 1), где N больше или равно 0 и меньше или равно nTbW - 1. Если доступная опорная выборка является C, восстановленное значение опорной выборки (xN + N, yN - 1) может быть установлено на восстановленное значение опорной выборки C.
Например, если восстановленное значение опорной выборки (xN - 1, yN + nTbH - 3) недоступно, доступность выборок, смежных с верхней и левой сторонами блока изображения, которое должно быть обработано, может быть определено в порядке от координат (xN - 1, yN + nTbH - 3) до координат (xN - 1, yN - 1) до тех пор, пока не будет получено заданное количество доступных опорных выборок, и восстановленное значение опорной выборки (xN - 1, yN + nTbH - 3) может быть установлено на восстановленное значение доступной опорной выборки. Если восстановленное значение опорной выборки с координатами (xN + 3, yN - 1) недоступно, ищется доступная выборка в порядке от координат (xN + 3, yN - 1) до координат (xN + nTbW - 1, yN - 1), и восстановленное значение опорной выборки (xN + 3, yN - 1) может быть установлено на восстановленное значение доступного опорной выборки.
Например, если восстановленное значение опорной выборки (xN - 1, yN + nTbH - 1) недоступно, доступная выборка ищется в заданном порядке из координат (xN - 1, yN + nTbH - 1) в координаты (xN - 1, yN - 1) и затем из координат (xN, yN - 1) в координаты (xN + nTbW - 1, yN - 1). Как только доступная выборка найдена, поиск заканчивается. Если доступная выборка равна (x, y), восстановленное значение опорной выборки (xN - 1, yN + nTbH - 1) устанавливается равным восстановленному значению выборки (x, y). Если восстановленное значение опорной выборки (xN - 1, yN + nTbH - M) недоступно, можно искать доступную опорную выборку в порядке, обратном заданному, начиная с координат (xN - 1, yN + nTbH - M), где M больше 1 и меньше или равно nTbH + 1. Если доступная опорная выборка является C, восстановленное значение опорной выборки (xN - 1, yN + nTbH - M) может быть установить на восстановленное значение опорной выборки C. Если восстановленное значение опорной выборки с координатами (xN + N, yN - 1) недоступно, доступная опорная выборка может быть найдена в порядке, обратном заданному, начиная с координат (xN + N, yN - 1), где N больше или равно 0 и меньше или равно nTbW - 1. Если доступная опорная выборка является D, восстановленное значение опорной выборки (xN + N, yN - 1) может быть установлено равным восстановленному значению опорной выборки D.
Например, если восстановленное значение опорной выборки (xN - 1, yN + nTbH - 3) недоступно, доступность выборок, смежных с верхней и левой сторонами блока изображения, которое должно быть обработано, может быть определена в порядке от координат (xN - 1, yN + nTbH - 3) до координат (xN - 1, yN + nTbH - 1) до тех пор, пока не будет получено заданное количество доступных опорных выборок, и восстановленное значение опорной выборки (xN - 1, yN + nTbH - 3) может быть установлено на восстановленное значение доступного опорной выборки. Если восстановленное значение опорной выборки с координатами (xN + 3, yN - 1) недоступно, поиск доступной выборки осуществляется в порядке от координат (xN + 3, yN - 1) до координат (xN, yN - 1) и восстановленное значение опорной выборки (xN + 3, yN - 1) может быть установлено равным восстановленному значению доступной опорной выборки.
Следует отметить, что новая опорная выборка может быть первой доступной опорной выборкой, найденной в заданном порядке, или может быть любой доступной опорной выборкой, найденной в заданном порядке. Это не ограничивается данным вариантом выполнения настоящего изобретения.
Можно понять, что согласно способу, когда опорная выборка недоступна, доступная опорная выборка может быть найдена из выборок, смежных с верхней и левой стороной блока изображения, подлежащего обработке, в заданном порядке, и восстановленное значение доступной опорной выборки используется в качестве восстановленного значения недоступной опорной выборки.
S13062: выполнить вычисление взвешивания для восстановленного значения доступной опорной выборки и значения предсказания целевой выборки, для обновления значения предсказания целевой выборки.
Например, значение предсказания целевой выборки может обновляться на основании восстановленного значения новой опорной выборки с использованием любой из вышеупомянутых реализаций.
Следует отметить, что, если восстановленное значение опорной выборки недоступно, и на этапе S13061 определяется, что все выборки, смежные с верхней и левой стороной блока изображения, которое должно быть обработано, недоступны, восстановленное значение опорной выборки может быть установлено равным 1 << (bitDepth - 1), где bitDepth представляет битовую глубину значения выборки опорной выборки. Например, когда блок изображения, подлежащий обработке, расположен в верхнем левом углу изображения, и координаты в верхнем левом углу блока изображения, подлежащего обработке, равны (0, 0), все выборки, прилегающие к верхней и левой стороне блока изображения, подлежащего обработке, недоступны. В этом случае восстановленное значение опорной выборки, соответствующей целевой выборке в блоке изображения, подлежащего обработке, может быть установлено в 1 << (bitDepth - 1).
В вышеупомянутом множестве реализаций выполняется пространственная фильтрация на выборке внешнего предсказания в процессе генерирования выборки внешнего предсказания. По сравнению с традиционной технологией эффективность кодирования повышается.
В возможной реализации перед этапом S1306 способ может дополнительно включать в себя этап S1305.
S1305: (Возможно) Выполнить обработку фильтрации на опорной выборке.
Можно понять, что этап S1305 может выполняться блоком 206 фильтра в видеодекодере на фиг. 3.
Например, выполнение обработки фильтрации для опорной выборки может включать в себя: когда опорная выборка расположена над блоком изображения, подлежащим обработке, выполнение вычисления взвешивания для восстановленного значения опорной выборки и восстановленных значений левой соседний выборки и правой соседней выборки опорной выборки; когда опорная выборка расположена слева от блока изображения, подлежащего обработке, выполнение вычисления взвешивания восстановленного значения опорной выборки и восстановленных значений верхней соседней выборки и нижней соседней выборки опорной выборки; и обновление восстановленного значения опорной выборки с использованием результата взвешивания.
Можно понять, что после того, как обработка фильтрации выполняется для опорной выборки на этапе S1305, когда выполняется этап S1306, вычисление взвешивания может выполняться для обновленного восстановленного значения опорной выборки после обработки фильтрации и значения предсказания целевой выборки, для обновления значения предсказания целевой выборки.
Следует отметить, что для конкретного способа выполнения обработки фильтрации на опорной выборке может быть сделана ссылка на способ фильтрации на этапе S1306. Подробности здесь не описаны.
Можно понять, что обработка фильтрации выполняется на опорной выборке для обновления восстановленного значения опорной выборки, и обработка фильтрации выполняется для целевой выборки на основании обновленного восстановленного значения опорной выборки. Это может дополнительно повысить эффективность кодирования и уменьшить остаток предсказания.
В возможной реализации перед этапом S1306 или после этапа S1306 может быть дополнительно выполнен этап S1307.
S1307: (Возможно) Продолжить выполнение внешнего предсказания на основании информации движения и информации битового потока, используя технологию внешнего кодирования, отличную от этого способа.
Можно понять, что этап S1307 может выполняться внешним предиктором 210 в видеодекодере на фиг. 3.
Например, могут использоваться технологии HEVC или VTM, включающие в себя, помимо прочего, способ двунаправленного оптического потока, способ уточнения вектора движения на стороне декодера, технологию компенсации локальной освещенности (LIC), общее взвешенное предсказание (GBI), компенсация движения перекрывающихся блоков (OBMC) и технология компенсации вектора движения на стороне декодера (DMVD). Может использоваться способ в HEVC или VTM, или другой способ для составления списка кандидатов предсказания вектора движения. Это не ограничивается данным вариантом выполнения настоящего изобретения.
Следует отметить, что порядок выполнения этапов с S1301 по S1307 в вышеупомянутом способе не ограничен в этом варианте осуществления настоящего изобретения. Например, этап S1305 может выполняться перед этапом S1307 или может выполняться после этапа S1307. Это не ограничивается данным вариантом выполнения настоящего изобретения.
В возможной реализации, перед выполнением компенсации движения для блока изображения, подлежащего обработке, на основании информации движения, способ может дополнительно включать в себя: первоначальное обновление информации движения с использованием первого заданного алгоритма; и, соответственно, выполнение компенсации движения блока изображения, подлежащего обработке, на основании информации движения включает в себя: выполнение компенсации движения блока изображения, подлежащего обработке на основании изначально обновленной информации движения.
В другой возможной реализации, после того как получен блок предсказания блока изображения, подлежащего обработке, способ может дополнительно включать в себя: предварительное обновление блока предсказания с использованием второго заданного алгоритма; и, соответственно, выполнение вычисления взвешивания для одного или нескольких восстановленных значений одной или нескольких опорных выборок и значения предсказания целевой выборки включает в себя: выполнение вычисления взвешивания для одного или нескольких восстановленных значений одной или нескольких опорных выборок и предварительного обновленного значения предсказания целевой выборки.
В другой возможной реализации, после выполнения вычисления взвешивания для одного или нескольких восстановленных значений одной или нескольких опорных выборок и значения предсказания целевой выборки, для обновления значения предсказания целевой выборки, способ дополнительно включает в себя: обновление значение предсказания целевой выборки с использованием второго заданного алгоритма.
Также следует понимать, что после получения обновленного значения предсказания целевой выборки способ может дополнительно включать в себя: добавление окончательного изображения внешнего предсказания и остаточного изображения, для получения восстановленное изображение текущего блока. В частности, если текущий блок имеет остаток, остаточная информация добавляется к изображению предсказания, для получения восстановленного изображения текущего блока. Если текущий блок не имеет остатка, предсказанное изображение является восстановленным изображением текущего блока. В вышеупомянутом процессе может использоваться тот же способ, что и в HEVC или VTM, или другой способ компенсации движения или восстановления изображения. Это не ограничено.
Согласно способу внешнего предсказания, предоставленному в этом варианте осуществления настоящего изобретения, анализируется битовый поток для получения информации движения блока изображения, подлежащего обработке; выполняется компенсация движения для блока изображения, подлежащего обработке, на основании информации движения, для получения блока предсказания блока изображения, подлежащего обработке; и выполняется вычисление взвешивания для одного или нескольких восстановленных значений одной или нескольких опорных выборок и значения предсказания целевой выборки, для обновления значения предсказания целевой выборки, где опорная выборка имеет заданную взаимосвязь пространственной позиции с целевой выборкой. В этом варианте осуществления настоящего изобретения после получения значения предсказания целевой выборки в блоке изображения, подлежащего обработке, выполняется обработка фильтрации для значения предсказания целевой выборки с использованием соседней восстановленной выборки. Таким образом, эффективность сжатия кодирования может быть улучшена, и PSNR BDrate снижается на 0,5%. По сравнению с традиционной технологией пространственная фильтрация, выполняемая на выборке внешнего предсказания в процессе генерирования выборки внешнего предсказания, повышает эффективность кодирования.
Вариант осуществления настоящего изобретения предоставляет устройство внешнего предсказания. Устройство может быть видеодекодером. В частности, устройство внешнего предсказания выполнено с возможностью выполнять этапы, выполняемые устройством декодирования в вышеупомянутом способе внешнего предсказания. Устройство внешнего предсказания, предоставленное в этом варианте осуществления настоящего изобретения, может включать в себя модули, соответствующие соответствующим этапам.
В этом варианте осуществления настоящего изобретения устройство внешнего предсказания может быть разделено на функциональные модули на основании приведенных выше примеров способов. Например, функциональные модули могут быть получены путем разделения на основании соответствующих функций, или две или более функций могут быть интегрированы в один модуль обработки. Интегрированный модуль может быть реализован в виде аппаратных средств или может быть реализован в виде программного функционального модуля. В этом варианте осуществления настоящего изобретения разделение на модули является примером, представляет собой просто разделение логических функций и может быть другим разделением в фактической реализации.
Когда функциональные модули получены путем разделения на основании соответствующих функций, фиг. 18 представляет возможную схему устройства 1800 внешнего предсказания в вышеупомянутом варианте осуществления. Как показано на фиг. 18, устройство 1800 внешнего предсказания может включать в себя модуль 1801 синтаксического анализа, модуль 1802 компенсации и модуль 1803 вычислений. В частности, функции модулей следующие:
Модуль 1801 синтаксического анализа выполнен с возможностью выполнять синтаксический анализ битового потока для получения информации движения блока изображения, подлежащего обработке.
Модуль 1802 компенсации выполнен с возможностью выполнять компенсацию движения над блоком изображения, подлежащего обработке, на основании информации движения, для получения блока предсказания блока изображения, подлежащего обработке, где блок предсказания блока изображения, подлежащего обработке, содержит значение предсказания целевой выборки.
Модуль 1803 вычислений выполнен с возможностью выполнять вычисления взвешивания одного или нескольких восстановленных значений одной или нескольких опорных выборок и значения предсказания целевой выборки для обновления значения предсказания целевой выборки, где опорная выборка имеет заданную пространственную позицию относительно целевой выборки.
В возможной реализации одна или несколько опорных выборок включают в себя восстановленную выборку, которая имеет ту же горизонтальную координату, что и целевая выборка, и имеет заданную разность вертикальных координат с целевой выборкой, или восстановленную выборку, который имеет такую же вертикальную координату, что и целевая выборка и имеет заданную разность горизонтальных координат с целевой выборкой.
В возможной реализации модуль 1803 вычислений обновляет значение предсказания целевой выборки в соответствии со следующей формулой:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки,  и  представляют восстановленные значения опорных выборок на позициях  и  координат, соответственно, w1, w2, w3, w4, w5 и w6 являются заданными константами, M1 и M2 являются заданными положительными целыми числами.
В возможной реализации w1 + w2 = R, w3 + w4 = R или w5 + w6 + w7 = R, где R равно 2 в степени n, и n является неотрицательным целым числом.
В возможной реализации модуль 1803 вычислений обновляет значение предсказания целевой выборки в соответствии со следующей формулой:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, , ,  и  представляют восстановленные значения опорных выборок в координатах , ,  и , соответственно, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 и w11 являются заданными константами, M1, M2, M3 и M4 являются заданными положительными целыми числами.
В возможной реализации, w1 + w2 + w3 = S, w4 + w5 + w6 = S или w7 + w8 + w9 + w10 + w11 = S, где S равно 2 в степени n, n является целым неотрицательным числом.
В возможной реализации модуль 1803 вычислений обновляет значение предсказания целевой выборки в соответствии со следующей формулой:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет собой значение предсказания целевой выборки до обновления,  представляет обновленное значение предсказания целевой выборки,  и  представляют восстановленные значения опорных выборок на позициях  и  координат, соответственно, w1, w2 и w3 являются заданными константами, M1 и M2 являются заданными положительными целыми числами.
В возможной реализации w1 + w2 + w3 = R, где R равно 2 в степени n, и n является неотрицательным целым числом.
В возможной реализации модуль 1803 вычислений обновляет значение предсказания целевой выборки в соответствии со следующей формулой:
где координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет собой значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, , ,  и  представляют восстановленные значения опорных выборок на позициях , ,  и , соответственно, w1, w2, w3, w4 и w5 являются заданными константами, M1, M2, M3 и M4 являются заданными положительными целыми числами.
В возможной реализации w1 + w2 + w3 + w4 + w5 = S, где S равно 2 в степени n, и n является неотрицательным целым числом.
В возможной реализации один или несколько опорных выборок включают в себя один или несколько из следующих выборок: восстановленная выборка, которая имеет ту же горизонтальную координату, что и целевая выборка, и которая примыкает к верхней стороне блока изображения, подлежащего обработке, восстановленная выборка, которая имеет ту же вертикальную координату, что и целевая выборка, и которая находится рядом с левой стороной блока изображения, подлежащего обработке, верхняя правая восстановленная выборка блока изображения, подлежащего обработке, восстановленная выборка в левом нижнем углу блока изображения, подлежащего обработке, или восстановленная выборка в левом верхнем углу блока изображения, подлежащая обработке.
В возможной реализации модуль 1803 вычислений обновляет значение предсказания целевой выборки в соответствии со следующей формулой:
predQ (xP, yP) = (w1 * predP (xP, yP) + w2 * predP1 (xP, yP) + ((w1 + w2) / 2)) / (w1 + w2)
где predP1 (xP, yP) = (predV (xP, yP) + predH (xP, yP) + nTbW * nTbH) >> (Log2 (nTbW) + Log2 (nTbH) + 1), predV (xP, yP) = ((nTbH - 1 - yP) * p (xP, –1) + (yP + 1) * p (–1, nTbH)) << Log2 (nTbW), predH (xP, yP) = ((nTbW - 1 - xP) * p (–1, yP) + (xP + 1) * p (nTbW, –1)) << Log2 (nTbH), координаты целевой выборки равны (xP, yP), координаты верхней левой выборки блока изображения, подлежащего обработке, равны (0, 0), predP (xP, yP) представляет значение предсказания целевой выборки перед обновлением, predQ (xP, yP) представляет обновленное значение предсказания целевой выборки, p (xP, –1), p (–1, nTbH), p (–1, yP) и p (nTbW, –1) представляют восстановленные значения опорных выборок в координатах (xP, –1), (–1, nTbH), (–1, yP) и (nTbW, –1), соответственно, w1 и w2 являются заданными константами, nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке.
В возможной реализации значение предсказания целевой выборки обновляется согласно следующей формуле:
predQ (xP, yP) = (w1 * predP (xP, yP) + w2 * predV (xP, yP) + w3 * predH (xP, yP) + ((w1 + w2 + w3) / 2)) / (w1 + w2 + w3)
где predV (xP, yP) = ((nTbH - 1 - yP) * p (xP, –1) + (yP + 1) * p (–1, nTbH) + nTbH / 2) >> Log2 (nTbH), predH (xP, yP) = ((nTbW - 1 - xP) * p (–1, yP) + (xP + 1) * p (nTbW, –1) + nTbW / 2) >> Log2 (nTbW), координаты целевой выборки равны (xP, yP), координаты верхней левой выборки блока изображения, подлежащего обработке, равны (0, 0), predP (xP, yP) представляет значение предсказания целевой выборки перед обновления, predQ (xP, yP) представляет обновленное значение предсказания целевой выборки, p (xP, –1), p (–1, nTbH), p (–1, yP) и p (nTbW, –1) представляют восстановленные значения опорных выборок в координатах (xP, –1), (–1, nTbH), (–1, yP) и (nTbW, –1), соответственно, w1 и w2 являются заданными константами, nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке.
В возможной реализации значение предсказания целевой выборки обновляется согласно следующей формуле:
predQ (xP, yP) = (((w1 * predP (xP, yP)) << (Log2 (nTbW) + Log2 (nTbH) + 1)) + w2 * predV (xP, yP) + w3 * predH (xP, yP) + (((w1 + w2 + w3) / 2) << (Log2 (nTbW) + Log2 (nTbH) + 1))) / (((w1 + w2 + w3) << (Log2 (nTbW) + Log2 (nTbH) + 1)))
где predV (xP, yP) = ((nTbH - 1 - yP) * p (xP, –1) + (yP + 1) * p (–1, nTbH)) << Log2 (nTbW), predH (xP, yP) = ((nTbW - 1 - xP) * p (–1, yP) + (xP + 1) * p (nTbW, –1)) << Log2 (nTbH), координаты целевой выборки равны (xP, yP), координаты верхней левой выборки блока изображения, подлежащего обработке, равны (0, 0), predP (xP, yP) представляет значение предсказания целевой выборки до обновления, predQ (xP, yP) представляет обновленное значение предсказания целевой выборки, p (xP, –1), p (–1, nTbH), p (–1, yP) и p (nTbW, –1) представляют восстановленные значения опорных выборок на позициях (xP, –1), (–1, nTbH), (–1, yP) и (nTbW, –1) координат, соответственно, w1 и w2 являются заданными константами, nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке.
В возможной реализации модуль 1803 вычислений обновляет значение предсказания целевой выборки в соответствии со следующей формулой:
predQ (xP, yP) = (w1 * predP (xP, yP) + w2 * predP1 (xP, yP) + ((w1 + w2) / 2)) / (w1 + w2)
где
координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, , ,  и  представляют восстановленные значения опорных выборок на позициях , ,  и , соответственно, w1 и w2 являются заданными константами, nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке.
В возможной реализации сумма w1 и w2 равна 2 в степени n, и n является неотрицательным целым числом.
В возможной реализации модуль 1803 вычислений обновляет значение предсказания целевой выборки в соответствии со следующей формулой:
где
, , , координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки, ,  и  представляют восстановленные значения опорных выборок на позициях ,  и , соответственно, nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке, clip1Cmp представляет операцию отсечения.
В возможной реализации модуль 1803 вычисления обновляет значение предсказания целевой выборки в соответствии со следующей формулой:
Где ,  координаты целевой выборки равны , координаты верхней левой выборки блока изображения, подлежащего обработке, равны ,  представляет значение предсказания целевой выборки перед обновлением,  представляет обновленное значение предсказания целевой выборки,  и  представляют восстановленные значения опорных выборок в координатах  и , соответственно, nTbW и nTbH представляют ширину и высоту блока изображения, подлежащего обработке, clip1Cmp представляет операцию отсечения.
В возможной реализации модуль 1803 вычислений дополнительно выполнен с возможностью: когда восстановленное значение опорной выборки недоступно, определять в заданном порядке доступность выборок, смежных с верхней стороной и левой стороной блока изображения, подлежащего обработке, до тех пор, пока не будет получено заданное количество доступных опорных выборок; и выполнить вычисление взвешивания восстановленного значения доступной опорной выборки и предсказанного значения целевой выборки.
В возможной реализации модуль 1803 вычислений дополнительно выполнен с возможностью: когда опорная выборка расположена над блоком изображения, подлежащий обработке, выполнять вычисление взвешивания восстановленного значения опорной выборки и восстановленных значений левой соседней выборки и правой соседней выборки опорной выборки; когда опорная выборка расположена слева от блока изображения, подлежащего обработке, выполнять вычисление взвешивания для восстановленного значения опорной выборки и восстановленных значений верхней соседней выборки и нижней соседней выборки опорной выборки; и обновить восстановленное значение опорной выборки, используя результат вычисления взвешивания.
В возможной реализации модуль 1803 вычисления дополнительно выполнен с возможностью первоначального обновления информации движения с использованием первого заданного алгоритма. Соответственно, модуль 1802 компенсации специально выполнен с возможностью выполнять компенсацию движения над блоком изображения, подлежащего обработке, на основании первоначально обновленной информации движения.
В возможной реализации модуль 1803 вычисления дополнительно выполнен с возможностью предварительно обновлять блок предсказания с использованием второго заданного алгоритма. Соответственно, модуль 1803 вычисления специально выполнен с возможностью выполнять вычисление взвешивания одного или нескольких восстановленных значений одной или нескольких опорных выборок и предварительно обновленного значения предсказания целевой выборки.
В возможной реализации модуль 1803 вычисления дополнительно выполнен с возможностью обновлять значение предсказания целевой выборки с использованием второго заданного алгоритма.
В возможной реализации модуль 1801 синтаксического анализа дополнительно выполнен с возможностью: выполнять синтаксический анализ битового потока для получения режима предсказания, соответствующего блоку изображения, подлежащего обработке; и определять, что режим предсказания является режимом слияния (merge) и/или усовершенствованным режимом внешнего предсказания вектора движения (inter-AMVP).
В возможной реализации модуль 1801 синтаксического анализа дополнительно выполнен с возможностью: выполнять синтаксический анализ битового потока для получения информации указания определения обновления блока изображения, подлежащего обработке; и определять, что информация указания определения обновления используется для указания обновления блока предсказания блока изображения, подлежащего обработке.
В возможной реализации модуль 1803 вычисления дополнительно выполнен с возможностью: получать заданную информацию определения обновления блока изображения, подлежащего обработке; и определять, что информация указания определения обновления используется для указания обновления блока предсказания блока изображения, подлежащего обработке.
Фиг. 19 является схемой устройства 1900 внешнего предсказания согласно варианту осуществления настоящего изобретения. В частности, устройство включает в себя процессор 1901 и память 1902, которая соединена с процессором. Процессор 1901 выполнен с возможностью выполнять вариант осуществления и возможных реализаций, показанных на фиг. 13.
Процессор 1901 может быть центральным процессором (Central Processing Unit, CPU), процессором общего назначения, процессором цифровых сигналов (Digital Signal Processor, DSP), ASIC, FPGA или другим программируемым логическим устройством, транзисторным логическим устройством, аппаратным компонентом или любой их комбинацией. Процессор 1901 может реализовывать или выполнять различные примерные логические блоки, модули и схемы, описанные со ссылкой на контент, раскрытый в настоящем изобретении. В качестве альтернативы процессор может быть комбинацией процессоров, реализующих вычислительную функцию, например, комбинацией одного или нескольких микропроцессоров или комбинацией DSP и микропроцессора.
Все связанное содержимое каждого сценария в вышеупомянутом варианте осуществления способа может быть процитировано в описаниях функций соответствующих функциональных модулей. Подробности здесь снова не описываются.
Хотя конкретные аспекты настоящего изобретения были описаны со ссылкой на видеокодер 100 и видеодекодер 200, следует понимать, что технологии настоящего изобретения могут использоваться многими другими модулями кодирования и/или декодирования видео, процессорами, блоки обработки и аппаратные блоки кодирования и т.п., например, кодеры/декодеры (CODEC). Дополнительно, следует понимать, что этапы, показанные и описанные на фиг. 13, представлены просто как возможные реализации. Другими словами, этапы, показанные в возможных реализациях на фиг. 13, не обязательно выполняются в порядке, показанном на фиг. 13, и может быть выполнено меньше дополнительных или альтернативных этапов.
Кроме того, следует понимать, что в зависимости от возможных реализаций конкретные действия или события в любом из способов, описанных в этой спецификации, могут выполняться в различных последовательностях, может быть добавлено действие или событие, или действия или события могут быть объединенными или опущенными (например, не все описанные действия или события необходимы для реализации способа). Кроме того, в конкретной возможной реализации действия или события могут (например) подвергаться многопоточной обработке или обработке прерываний или могут обрабатываться множеством процессоров одновременно, а не последовательно. Кроме того, хотя конкретные аспекты настоящего изобретения описаны как выполняемые одним модулем или устройством для ясности, следует понимать, что технологии настоящего изобретения могут выполняться комбинацией модулей или модулей, ассоциированных с видеодекодером.
В одной или нескольких возможных реализациях описанные функции могут быть реализованы с использованием аппаратных средств, программного обеспечения, встроенного программного обеспечения или любой их комбинации. Если функции реализуются с использованием программного обеспечения, функции могут храниться на машиночитаемом носителе в виде одной или нескольких инструкций или кода или передаваться через машиночитаемый носитель и выполняться аппаратным блоком обработки. Машиночитаемый носитель может включать в себя машиночитаемый носитель данных или среду связи. Машиночитаемый носитель данных соответствует материальному носителю, например, носителю данных. Среда связи включает в себя любую среду, которая облегчает передачу компьютерной программы (например) из одного места в другое в соответствии с протоколом связи.
Таким образом, машиночитаемый носитель может соответствовать, например, (1) постоянному материальному машиночитаемому носителю данных или (2) среде связи, такой как сигнал или носитель. Носитель данных может быть любым доступным носителем, к которому может получить доступ один или несколько компьютеров или один или несколько процессоров для извлечения инструкций, кода и/или структур данных для реализации технологий, описанных в настоящем изобретении. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
В качестве возможной реализации, а не ограничения, машиночитаемый носитель данных может включать в себя RAM, ROM, EEPROM, CD-ROM или другое устройство хранения на оптическом диске, устройство хранения на магнитном диске или другое магнитное запоминающее устройство, флэш-память или любой другой носитель, который можно использовать для хранения необходимого кода в форме инструкции или структуры данных, и к которому может получить доступ компьютер. Точно так же любое соединение может быть соответственно названо машиночитаемым носителем. Например, если инструкция передается с веб-сайта, сервера или другого удаленного источника через коаксиальный кабель, оптоволоконный кабель, витую пару, цифровую абонентскую линию (DSL) или беспроводные технологии, такие как инфракрасный порт, радио и микроволновый сигнал, коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасный порт, радио и микроволновый сигнал используются в качестве среды.
Однако следует понимать, что машиночитаемый носитель данных и носитель данных могут не включать в себя соединение, носитель, сигнал или другой временный носитель, но альтернативно означают постоянные материальные носители данных. Магнитный диск и оптический диск, используемые в этой спецификации, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-ray. Магнитный диск обычно воспроизводит данные магнитным способом, оптический диск воспроизводит данные оптически с помощью лазера. Комбинация вышеупомянутого магнитного диска и оптического диска также должна рассматриваться в качестве машиночитаемого носителя.
Инструкция может выполняться одним или несколькими процессорами, такими как один или несколько процессоров цифровых сигналов (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA) или другие эквиваленты. интегральные или дискретные логические схемы. Следовательно, термин «процессор», используемый в этой спецификации, может быть любой из вышеупомянутых структур или другой структурой, которая используется для реализации технологий, описанных в этой спецификации. Дополнительно, в некоторых аспектах функции, описанные в этой спецификации, могут быть предоставлены в рамках выделенных аппаратных и/или программных модулей, выполненных с возможностью кодировать и декодировать или могут быть включены в комбинированный кодек. Кроме того, все технологии могут быть реализованы в одной или нескольких схемах или логических элементах.
Технологии в настоящем изобретении могут быть реализованы в различных устройствах или устройствах, включающие в себя беспроводной мобильный телефон, интегральную схему (IC) или набор IC (например, набор микросхем). В настоящем изобретении описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройства, выполненного с возможностью выполнять раскрытые технологии, но не обязательно, реализованы разными аппаратными блоками. Точнее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или обеспечены взаимодействующими аппаратными блоками (включающие в себя один или несколько процессоров, описанных выше) в комбинации с соответствующим набором программного обеспечения и/или встроенного программного обеспечения.
Приведенные выше описания являются просто конкретными реализациями настоящего изобретения, но не предназначены для ограничения объема защиты настоящего изобретения. Любое изменение или замена, легко обнаруживаемые специалистом в данной области техники в рамках технического объема, раскрытого в настоящем изобретении, должны находиться в рамках объема защиты настоящего изобретения. Следовательно, объем защиты настоящего изобретения должен соответствовать объему защиты формулы изобретения.