СПОСОБ И УСТРОЙСТВО ДВУНАПРАВЛЕННОГО МЕЖКАДРОВОГО ПРЕДСКАЗАНИЯ
METHOD AND APPARATUS FOR BIDIRECTIONAL INTERFRAME PREDICTION

[0001] Настоящая заявка испрашивает приоритет на основании патентной заявки Китая №. 201810274457.X, поданная в Китайское национальное управление по интеллектуальной собственности 29 марта 2018 г. и озаглавленная «СПОСОБ И УСТРОЙСТВО ДВУНАПРАВЛЕННОГО МЕЖКАДРОВОГО ПРЕДСКАЗАНИЯ», которая полностью включена в настоящий документ посредством ссылки.
Область техники, к которой относится изобретение
[0002] Варианты осуществления настоящей заявки относятся к области технологий кодирования видеоизображений и, в частности, к способу и устройству двунаправленного межкадрового предсказания.
Уровень техники
[0003] В технологии кодирования видео, блок изображения предсказания текущего блока изображения может быть сформирован на основе только одного опорного блока изображения (который упоминается как однонаправленное межкадровое предсказание), или блок изображения предсказания текущего блока изображения может быть сформирован на основе по меньшей мере двух опорных блоков изображения (что называется двунаправленным межкадровым предсказанием). По меньшей мере два опорного блока изображения могут быть из одного и того же опорного кадра или разных опорных кадров.
[0004] В обеспечение использования одного и того же опорного блока изображения декодером и кодером, кодер должен отправить информацию о движении каждого блока изображения на декодер в битовом потоке. Как правило, информация о движении текущего блока изображения включает в себя значение индекса опорного кадра, метка предиктора вектора движения (motion Vector Predictor, MVP), и разность векторов движения (Motion Vector Difference, MVD). Декодер может найти правильный опорный блок изображения в выбранном опорном кадре на основе значения индекса опорного кадра, метки MVP и MVD.
[0005] Соответственно, при двунаправленном межкадровом предсказании кодер должен отправлять на декодер информацию о движении каждого блока изображения в каждом направлении. Следовательно, информация о движении занимает относительно большое количество ресурсов передачи. Это снижает эффективное использование ресурсов передачи, скорость передачи и эффективность сжатия кодирования.
Сущность изобретения
[0006] Варианты осуществления настоящей заявки обеспечивают способ и устройство двунаправленного межкадрового предсказания для решения проблемы, заключающейся в том, что эффективное использование ресурсов передачи, скорость передачи и эффективность сжатия кодирования снижаются, поскольку информация о движении занимает относительно большое количество ресурсов передачи.
[0007] Для достижения вышеуказанных целей в вариантах осуществления настоящей заявки используются следующие технические решения:
[0008] Согласно первому аспекту обеспечивается способ двунаправленного межкадрового предсказания. Способ включает в себя этапы, на которых: получают информацию индикации, используемую для указания определения второй информации о движении на основе первой информации о движении, где первая информация о движении является информацией о движении текущего блока изображения в первом направлении, а вторая информация о движении является информацией о движении текущего блока изображения во втором направлении; получают первую информацию о движении; определяют вторую информацию о движении на основе полученной первой информации о движении; и определяют сэмплы предсказания текущего блока изображения на основе полученной первой информации о движении и определенной второй информации о движении.
[0009] Согласно способу двунаправленного межкадрового предсказания, обеспеченному в настоящей заявке, после того, как информация индикации получена, вторая информация о движении определяется на основе первой информации о движении. Таким образом, битовый поток должен включать в себя только информацию индикации и первую информацию о движении и больше не должен включать в себя вторую информацию о движении. По сравнению с предшествующим уровнем техники, в котором битовый поток включает в себя информацию о движении каждого блока изображения в каждом направлении, способ двунаправленного межкадрового предсказания, обеспечиваемый в настоящей заявке, эффективно уменьшает информацию о движении, включенную в битовый поток, и улучшает эффективное использование ресурсов передачи, скорость передачи, и скорость кодирования.
[0010] Необязательно, в возможной реализации настоящей заявки, способ «определения второй информации о движении на основе первой информации о движении» содержит этапы, на которых: получают значение индекса первого опорного кадра в первой информации о движении, и определяют порядковый номер первого опорного кадра на основании значения индекса первого опорного кадра и первого списка опорных кадров, при этом первый опорный кадр в данном описании представляет собой опорный кадр текущего блока изображения в первом направлении, а значение индекса первого опорного кадра представляет собой номер первого опорного кадра в первом списке опорных кадров; получают значение индекса второго опорного кадра, и определяют порядковый номер второго опорного кадра на основании значения индекса второго опорного кадра и второго списка опорных кадров, при этом второй опорный кадр в данном описании представляет собой опорный кадр текущего блока изображения во втором направлении, а значение индекса второго опорного кадра является номером второго опорного кадра во втором списке опорных кадров; определяют первый вектор движения на основе первой разности векторов движения и первой метки предиктора вектора движения, которые находятся в первой информации о движении, где первый вектор движения является вектором движения текущего блока изображения в первом направлении; и получают второй вектор движения во второй информации о движении согласно следующей формуле:
[0011] В приведенных выше формулах,  представляет собой второй вектор движения,  представляет собой порядковый номер текущего кадра,  представляет собой порядковый номер первого опорного кадра,  представляет собой порядковый номер второго опорного кадра,  представляет собой первый вектор движения, и второй вектор движения - это вектор движения текущего блока изображения во втором направлении.
[0012] Необязательно, в другой возможной реализации настоящей заявки, способ «определения второй информации о движении на основе первой информации о движении» содержит этапы, на которых: получают значение индекса первого опорного кадра в первой информации о движении, где первый опорный кадр представляет собой опорный кадр текущего блока изображения в первом направлении, а значение индекса первого опорного кадра представляет собой номер первого опорного кадра в первом списке опорных кадров; получают значение индекса второго опорного кадра, причем второй опорный кадр представляет собой опорный кадр текущего блока изображения во втором направлении, а значение индекса второго опорного кадра представляет собой номер второго опорного кадра во втором списке опорных кадров; определяют первый вектора движения на основе первой разности векторов движения и первой метки предиктора вектора движения, которые находятся в первой информации о движении, где первый вектор движения является вектором движения текущего блока изображения в первом направлении; и когда первый опорный кадр является будущим опорным кадром текущего блока изображения, а второй опорный кадр является предыдущим опорным кадром текущего блока изображения, или когда первый опорный кадр является предыдущим опорным кадром текущего блока изображения и второй опорный кадр является будущим опорным кадром текущего блока изображения, или когда каждый из первого опорного кадра и второго опорного кадра является будущим опорным кадром текущего блока изображения, или когда каждый из первого опорного кадра и второго опорного кадра является предыдущим опорным кадром текущего блока изображения, получают второй вектор движения во второй информации о движении согласно следующей формуле:
[0013] В приведенной выше формуле  представляет второй вектор движения,  представляет первый вектор движения, и второй вектор движения представляет собой вектор движения текущего блока изображения во втором направлении.
[0014] Как то, что «первый опорный кадр является будущим опорным кадром текущего блока изображения, а второй опорный кадр - предыдущим опорным кадром текущего блока изображения», так и то, что «первый опорный кадр является предыдущим опорным кадром текущего блока изображения, а второй опорный кадр - будущим опорным кадром текущего блока изображения», может быть представлено с использованием формулы  или может быть представлено с использованием формулы . В данной заявке это особым образом не ограничено.
[0015] Кроме того, и то, что «первый опорный кадр, и второй опорный кадр, каждый является будущим опорным кадром текущего блока изображения», и то, что «первый опорный кадр и второй опорный кадр, каждый является предыдущим опорным кадром текущего блока изображения» может быть представлено с использованием формулы .
[0016]  представляет собой порядковый номер текущего кадра,  представляет собой порядковый номер первого опорного кадра и  представляет собой порядковый номер второго опорного кадра.
[0017] Необязательно, в другой возможной реализации настоящей заявки, способ «определения второй информации о движении на основе первой информации о движении» содержит этапы, на которых: получают значение индекса первого опорного кадра и первую разность векторов движения, которые находятся в первой информации о движении и определяют порядковый номер первого опорного кадра на основании значения индекса первого опорного кадра и первого списка опорных кадров, при этом первый опорный кадр представляет собой опорный кадр текущего блока изображения в первом направлении, а значение индекса первого опорного кадра представляет собой номер первого опорного кадра в первом списке опорных кадров; получают значение индекса второго опорного кадра, определяют порядковый номер второго опорного кадра на основании значения индекса второго опорного кадра и второго списка опорных кадров, и определяют второй предсказанный вектор движения на основе значения индекса второго опорного кадра и второго списка возможных предсказанных векторов движения, где второй предсказанный вектор движения является предсказанным вектором движения текущего блока изображения во втором направлении, второй опорный кадр является опорным кадром текущего блока изображения во втором направлении, а значение индекса второго опорного кадра является номером второго опорного кадра во втором списке опорных кадров; получают вторую разность векторов движения во второй информации о движении по следующей формуле:
где в приведенной выше формуле,  представляет собой вторую разность векторов движения,  представляет собой порядковый номер текущего кадра,  представляет собой порядковый номер первого опорного кадра,  представляет собой порядковый номер второго опорного кадра, и  представляет собой первую разность векторов движения; и определяют второй вектор движения на основе второго предсказанного вектора движения и второй разности векторов движения, где второй вектор движения является вектором движения текущего блока изображения во втором направлении.
[0018] Необязательно, в другой возможной реализации настоящей заявки, способ «определения второй информации о движении на основе первой информации о движении» содержит этапы, на которых: получают значение индекса первого опорного кадра и первый вектор движения, которые находятся в первой информации о движении, где первый опорный кадр представляет собой опорный кадр текущего блока изображения в первом направлении, а значение индекса первого опорного кадра представляет собой номер первого опорного кадра в первом списке опорных кадров; получают значение индекса второго опорного кадра, и определяют второй предсказанный вектор движения на основе значения индекса второго опорного кадра и второго списка возможных предсказанных векторов движения, где второй предсказанный вектор движения является предсказанным вектором движения текущего блока изображения во втором направлении, второй опорный кадр представляет собой опорный кадр текущего блока изображения во втором направлении, а значение индекса второго опорного кадра является номером второго опорного кадра во втором списке опорных кадров; когда первый опорный кадр является будущим опорным кадром текущего блока изображения, а второй опорный кадр является предыдущим опорным кадром текущего блока изображения, или когда первый опорный кадр является предыдущим опорным кадром текущего блока изображения, а второй опорный кадр является будущим опорным кадром текущего блока изображения, или когда каждый из первого опорного кадра и второго опорного кадра является будущим опорным кадром текущего блока изображения, или когда каждый из первого опорного кадра и второго опорного кадра представляет собой предыдущий опорный кадр текущего блока изображения, получают вторую разность векторов движения во второй информации о движении в соответствии со следующей формулой:
где в приведенной выше формуле  представляет вторую разность векторов движения, а  представляет первую разность векторов движения; и определяют второй вектор движения на основе второго предсказанного вектора движения и второй разности векторов движения, где второй вектор движения является вектором движения текущего блока изображения во втором направлении.
[0019] Точно так же и то, что «первый опорный кадр является будущим опорным кадром текущего блока изображения, а второй опорный кадр является предыдущим опорным кадром текущего блока изображения», и то, что «первый опорный кадр является предыдущим опорным кадром текущего блока изображения, а второй опорный кадр является будущим опорным кадром текущего блока изображения» может быть представлено с использованием формулы  или может быть представлено с использованием формулы . В данной заявке это особым образом не ограничено.
[0020] И то, что «первый опорный кадр, и второй опорный кадр, каждый является будущим опорным кадром текущего блока изображения», и то, что «первый опорный кадр и второй опорный кадр, каждый является предыдущим опорным кадром текущего блока изображения» может быть представлено с использованием формулы .
[0021]  представляет собой порядковый номер текущего кадра,  представляет собой порядковый номер первого опорного кадра и  представляет собой порядковый номер второго опорного кадра.
[0022] Можно узнать, что способ двунаправленного межкадрового предсказания, обеспечиваемый в настоящей заявке, может содержать этап, на котором: определяют второй вектор движения на основе первого вектора движения или может содержать этап, на котором: определяют вторую разность векторов движения на основе первой разности векторов движения и определяют второй вектор движения на основе второй разности векторов движения.
[0023] Необязательно, в другой возможной реализации данной заявки, способ «получения значения индекса второго опорного кадра» содержит этапы, на которых: вычисляют первый порядковый номер на основе порядкового номера текущего кадра и порядкового номера первого опорного кадра в соответствии с формулой , где POC_Cur представляет собой порядковый номер текущего кадра, POC_listX представляет собой порядковый номер первого опорного кадра и POC_listY0 представляет собой первый порядковый номер; и когда второй список опорных кадров включает в себя первый порядковый номер, определяют, как значение индекса второго опорного кадра, номер опорного кадра, представленного посредством первого порядкового номера во втором списке опорных кадров.
[0024] Необязательно, в другой возможной реализации данной заявки, способ «получения значения индекса второго опорного кадра» содержит этапы, на которых: вычисляют второй порядковый номер на основе порядкового номера текущего кадра и порядкового номера первого опорного кадра в соответствии с формулой , где  представляет второй порядковый номер; и когда второй список опорных кадров включает в себя второй порядковый номер, определяют, как значение индекса второго опорного кадра, номер опорного кадра, представленного посредством второго порядкового номера во втором списке опорных кадров.
[0025] Необязательно, в другой возможной реализации данной заявки, способ «получения значения индекса второго опорного кадра» содержит этапы, на которых: вычисляют третий порядковый номер на основе порядкового номера текущего кадра и порядкового номера первого опорного кадра в соответствии с формулой , где  представляет третий порядковый номер; и определяют, как значение индекса второго опорного кадра, номер опорного кадра, представленного посредством третьего порядкового номера во втором списке опорных кадров.
[0026] Необязательно, в другой возможной реализации данной заявки, способ «получения значения индекса второго опорного кадра» содержит этапы, на которых: вычисляют первый порядковый номер на основе порядкового номера текущего кадра и порядкового номера первого опорного кадра в соответствии с формулой , где POC_Cur представляет собой порядковый номер текущего кадра, POC_listX представляет собой порядковый номер первого опорного кадра и POC_listY0 представляет собой первый порядковый номер. Когда второй список опорных кадров включает в себя первый порядковый номер, номер опорного кадра, представленного посредством первого порядкового номера во втором списке опорных кадров определяется как значение индекса второго опорного кадра. Когда второй список опорных кадров не включает в себя первый порядковый номер, второй порядковый номер рассчитывается на основе порядкового номера текущего кадра и порядкового номера первого опорного кадра в соответствии с формулой , где POC_listY0' представляет второй порядковый номер. Когда второй список опорных кадров включает в себя второй порядковый номер, номер опорного кадра, представленного посредством второго порядкового номера во втором списке опорных кадров определяется как значение индекса второго опорного кадра. Когда второй список опорных кадров не включает в себя второй порядковый номер, третий порядковый номер рассчитывается на основе порядкового номера текущего кадра и порядкового номера первого опорного кадра в соответствии с формулой POC_listX ≠ POC_listY0'', где POC_listY0'' представляет третий порядковый номер; и номер опорного кадра, представленный посредством третьего порядкового номера во втором списке опорных кадров определяется как значение индекса второго опорного кадра.
[0027] Необязательно, в другой возможной реализации данной заявки, способ «получения значения индекса второго опорного кадра» содержит этап, на котором: проводят синтаксический анализ битового потока для получения значения индекса второго опорного кадра.
[0028] Можно узнать, что возможно множество способов «получения значения индекса второго опорного кадра» в данной заявке. Конкретный способ, используемый для получения значения индекса второго опорного кадра потребностей необходимо определить на основе фактических требований или может быть предварительно задан.
[0029] Согласно второму аспекту обеспечивается устройство двунаправленного межкадрового предсказания. Устройство двунаправленного межкадрового предсказания включает в себя блок получения и блок определения.
[0030] В частности, блок получения выполнен с возможностью: получения информации индикации, где информация индикации используется для указания определения второй информации о движении на основе первой информации о движении, первая информация о движении является информацией о движении текущего блока изображения в первом направлении, и вторая информация о движении - это информация о движении текущего блока изображения во втором направлении; и получения первой информации о движении. Блок определения выполнен с возможностью: определения второй информации о движении на основе первой информации о движении, полученной посредством блока получения, и определения сэмплов предсказания текущего блока изображения на основе первой информации о движении и второй информации о движении.
[0031] Необязательно, в возможной реализации настоящей заявки блок определения, в частности, выполнен с возможностью: получения значения индекса первого опорного кадра в первой информации о движении, и определения порядкового номера первого опорного кадра на основе значения индекса первого опорного кадра и первого списка опорных кадров, где первый опорный кадр представляет собой опорный кадр текущего блока изображения в первом направлении, а значение индекса первого опорного кадра представляет собой номер первого опорного кадра в первом списке опорных кадров; получения значения индекса второго опорного кадра и определения порядкового номера второго опорного кадра на основании значения индекса второго опорного кадра и второго списка опорных кадров, где второй опорный кадр представляет собой опорный кадр текущего блока изображения во втором направлении, а значение индекса второго опорного кадра является номером второго опорного кадра во втором списке опорных кадров; определения первого вектора движения на основе первой разности векторов движения и первой метки предиктора вектора движения, которые находятся в первой информации о движении, где первый вектор движения представляет собой вектор движения текущего блока изображения в первом направлении; и получения второго вектора движения во второй информации о движении по следующей формуле:
[0032] В приведенной выше формуле,  представляет собой второй вектор движения,  представляет собой порядковый номер текущего кадра,  представляет собой порядковый номер первого опорного кадра,  представляет собой порядковый номер второго опорного кадра,  представляет собой первый вектор движения, и второй вектор движения - это вектор движения текущего блока изображения во втором направлении.
[0033] Необязательно, в другой возможной реализации настоящей заявки, блок определения, в частности, выполнен с возможностью: получения значения индекса первого опорного кадра в первой информации о движении, где первый опорный кадр представляет собой опорный кадр текущего блока изображения в первом направлении, и значение индекса первого опорного кадра представляет собой номер первого опорного кадра в первом списке опорных кадров; получения значения индекса второго опорного кадра, причем второй опорный кадр представляет собой опорный кадр текущего блока изображения во втором направлении, а значение индекса второго опорного кадра является номером второго опорного кадра во втором списке опорных кадров; определения первого вектора движения на основе первой разности векторов движения и первой метки предиктора вектора движения, которые находятся в первой информации о движении, где первый вектор движения представляет собой вектор движения текущего блока изображения в первом направлении; и когда первый опорный кадр является будущим опорным кадром текущего блока изображения, а второй опорный кадр является предыдущим опорным кадром текущего блока изображения, или когда первый опорный кадр является предыдущим опорным кадром текущего блока изображения и второй опорный кадр является будущим опорным кадром текущего блока изображения, или когда каждый из первого опорного кадра и второго опорного кадра является будущим опорным кадром текущего блока изображения, или когда каждый из первого опорного кадра и второго опорного кадра является предыдущим опорным кадром текущего блока изображения, получения второго вектора движения во второй информации о движении в соответствии со следующей формулой:
[0034] В приведенной выше формуле  представляет второй вектор движения,  представляет первый вектор движения, и второй вектор движения представляет собой вектор движения текущего блока изображения во втором направлении.
[0035] Необязательно, в другой возможной реализации настоящей заявки блок определения, в частности, выполнен с возможностью: получения значения индекса первого опорного кадра и первой разности векторов движения, которые находятся в первой информации о движении, и определения порядкового номера первого опорного кадра на основании значения индекса первого опорного кадра и первого списка опорных кадров, при этом первый опорный кадр представляет собой опорный кадр текущего блока изображения в первом направлении, а значение индекса первого опорного кадра является номером первого опорного кадра в первом списке опорных кадров; получения значения индекса второго опорного кадра, определения порядкового номера второго опорного кадра на основании значения индекса второго опорного кадра и второго списка опорных кадров, и определения второго предсказанного вектора движения на основе значения индекса второго опорного кадра и второго списка возможных предсказанных векторов движения, где второй предсказанный вектор движения является предсказанным вектором движения текущего блока изображения во втором направлении, второй опорный кадр является опорным кадром текущего блока изображения во втором направлении, а значение индекса второго опорного кадра является номером второго опорного кадра во втором списке опорных кадров; получения второй разности векторов движения во второй информации о движении по следующей формуле:
где  представляет собой вторую разность векторов движения,  представляет собой порядковый номер текущего кадра,  представляет собой порядковый номер первого опорного кадра,  представляет собой порядковый номер второго опорного кадра, и  представляет собой первую разность векторов движения; и определения второго вектора движения на основе второго предсказанного вектора движения и второй разности векторов движения, где второй вектор движения является вектором движения текущего блока изображения во втором направлении.
[0036] Необязательно, в другой возможной реализации настоящей заявки блок определения, в частности, выполнен с возможностью: получения значения индекса первого опорного кадра и первого вектора движения, которые находятся в первой информации о движении, где первый опорный кадр представляет собой опорный кадр текущего блока изображения в первом направлении, а значение индекса первого опорного кадра представляет собой номер первого опорного кадра в первом списке опорных кадров; получения значения индекса второго опорного кадра, и определения второго предсказанного вектора движения на основе значения индекса второго опорного кадра и второго списка возможных предсказанных векторов движения, где второй предсказанный вектор движения является предсказанным вектором движения текущего блока изображения во втором направлении, второй опорный кадр представляет собой опорный кадр текущего блока изображения во втором направлении, а значение индекса второго опорного кадра является номером второго опорного кадра во втором списке опорных кадров; когда первый опорный кадр является будущим опорным кадром текущего блока изображения, а второй опорный кадр является предыдущим опорным кадром текущего блока изображения, или когда первый опорный кадр является предыдущим опорным кадром текущего блока изображения, а второй опорный кадр является будущим опорным кадром текущего блока изображения, или когда каждый из первого опорного кадра и второго опорного кадра является будущим опорным кадром текущего блока изображения, или когда каждый из первого опорного кадра и второго опорного кадра представляет собой предыдущий опорный кадр текущего блока изображения, получения второй разности векторов движения во второй информации о движении по следующей формуле:
где  представляет вторую разность векторов движения, а  представляет первую разность векторов движения; и определяют второй вектор движения на основе второго предсказанного вектора движения и второй разности векторов движения, где второй вектор движения является вектором движения текущего блока изображения во втором направлении.
[0037] Необязательно, в другой возможной реализации настоящей заявки блок получения, в частности, выполнен с возможностью: вычисления первого порядкового номера на основе порядкового номера текущего кадра и порядкового номера первого опорного кадра в соответствии с формулой , где POC_Cur представляет собой порядковый номер текущего кадра, POC_listX представляет собой порядковый номер первого опорного кадра и POC_listY0 представляет собой первый порядковый номер; и когда второй список опорных кадров включает в себя первый порядковый номер, определения, как значения индекса второго опорного кадра, номера опорного кадра, представленного посредством первого порядкового номера во втором списке опорных кадров.
[0038] Необязательно, в другой возможной реализации настоящей заявки блок получения, в частности, выполнен с возможностью: вычисления второго порядкового номера на основе порядкового номера текущего кадра и порядкового номера первого опорного кадра в соответствии с формулой , где  представляет второй порядковый номер; и когда второй список опорных кадров включает в себя второй порядковый номер, определения, как значения индекса второго опорного кадра, номера опорного кадра, представленного посредством второго порядкового номера во втором списке опорных кадров.
[0039] Необязательно, в другой возможной реализации настоящей заявки блок получения, в частности, выполнен с возможностью: вычисления третьего порядкового номера на основе порядкового номера текущего кадра и порядкового номера первого опорного кадра в соответствии с формулой POC_listX ≠ POC_listY0'', где  представляет третий порядковый номер; и определения, как значения индекса второго опорного кадра, номера опорного кадра, представленного посредством третьего порядкового номера во втором списке опорных кадров.
[0040] Согласно третьему аспекту обеспечивается способ двунаправленного межкадрового предсказания. Существует множество реализаций способа двунаправленного межкадрового предсказания.
[0041] Одна реализация содержит этапы, на которых: проводят синтаксический анализ битового потока для получения первого идентификатора, где первый идентификатор используется для указания того, следует ли определять вторую информацию о движении на основе первой информации о движении, первая информация о движении является информацией о движении текущего блока изображения в первом направлении, а вторая информация о движении - это информация о движении текущего блока изображения во втором направлении; если значение первого идентификатора является первым предварительно заданным значением, то получают первую информацию о движении и определяют вторую информацию о движении на основе первой информации о движении; и определяют сэмплы предсказания текущего блока изображения на основе первой информации о движении и второй информации о движении.
[0042] Другая реализация содержит этапы, на которых: проводят синтаксический анализ битового потока для получения второго идентификатора, где второй идентификатор используется для указания того, следует ли вычислять информацию о движении текущего блока изображения с использованием алгоритма получения информации о движении; если значение второго идентификатора является вторым предварительно заданным значением, то получают третий идентификатор, где третий идентификатор используется для указания того, следует ли определять вторую информацию о движении на основе первой информации о движении, первая информация о движении является информацией о движении текущего блока изображения в первом направлении, а вторая информация о движении - это информация о движении текущего блока изображения во втором направлении; если значение третьего идентификатора является третьим предварительно заданным значением, то получают первую информацию о движении и определяют вторую информацию о движении на основе первой информации о движении; и определяют сэмплы предсказания текущего блока изображения на основе первой информации о движении и второй информации об операции.
[0043] Другая реализация содержит этапы, на которых: проводят синтаксический анализ битового потока для получения второго идентификатора, где второй идентификатор используется для указания того, следует ли вычислять информацию о движении текущего блока изображения с использованием алгоритма получения информации о движении; если значение второго идентификатора является вторым предварительно заданным значением, то получают первую информацию о движении и определяют вторую информацию о движении на основе первой информации о движении, где первая информация о движении является информацией о движении текущего блока изображения в первом направлении, а вторая информация о движении - это информация о движении текущего блока изображения во втором направлении; и определяют сэмплы предсказания текущего блока изображения на основе первой информации о движении и второй информации о движении.
[0044] Другая реализация содержит этапы, на которых: проводят синтаксический анализ битового потока для получения четвертого идентификатора, где четвертый идентификатор используется для указания того, следует ли вычислять информацию о движении текущего блока изображения, используя алгоритм получения информации о движении; если значение четвертого идентификатора является четвертым предварительно заданным значение, то определяют значение индекса первого опорного кадра и значение индекса второго опорного кадра на основе первого списка опорных кадров и второго списка опорных кадров, при этом первый список опорных кадров - это список опорных кадров текущего блока изображения в первом направлении, второй список опорных кадров - это список опорных кадров текущего блока изображения во втором направлении, первый опорный кадр является опорным кадром текущего блока изображения в первом направлении, а второй опорный кадр является опорным кадром текущего блока изображения во втором направлении; получают первую разность векторов движения и первую метку предиктора вектора движения, и определяют вторую информацию о движении на основе первой информации о движении, где первая информация о движении включает в себя значение индекса первого опорного кадра, первую разность векторов движения, и первую метку предиктора вектора движения, а вторая информация о движении представляет собой информацию о движении текущего блока изображения во втором направлении; и определяют сэмплы предсказания текущего блока изображения на основе первой информации о движении и второй информации о движении.
[0045] Другая реализация содержит этапы, на которых: проводят синтаксический анализ битового потока для получения первого идентификатора, где первый идентификатор используется для указания того, следует ли определять вторую информацию о движении на основе первой информации о движении, первая информация о движении является информацией о движении текущего блока изображения в первом направлении, а вторая информация о движении - это информация о движении текущего блока изображения во втором направлении; если значение первого идентификатора является восьмым предварительно заданным значением, то получают пятый идентификатор, где пятый идентификатор используется для указания того, следует ли определять первую информацию о движении на основе второй информации о движении; если значение пятого идентификатора является пятым предварительно заданным значением, то получают вторую информацию о движении и определяют первую информацию о движении на основе второй информации о движении; и определяют сэмплы предсказания текущего блока изображения на основе первой информации о движении и второй информации о движении.
[0046] Другая реализация содержит этапы, на которых: проводят синтаксический анализ битового потока для получения второго идентификатора, где второй идентификатор используется для указания того, следует ли вычислять информацию о движении текущего блока изображения с использованием алгоритма получения информации о движении; если значение второго идентификатора является вторым предварительно заданным значением, то получают третий идентификатор, где третий идентификатор используется для указания того, следует ли определять вторую информацию о движении на основе первой информации о движении, первая информация о движении является информацией о движении текущего блока изображения в первом направлении, а вторая информация о движении - это информация о движении текущего блока изображения во втором направлении; если значение третьего идентификатора является шестым предварительно заданным значением, то получают вторую информацию о движении и определяют первую информацию о движении на основе второй информации о движении; и определяют сэмплы предсказания текущего блока изображения на основе первой информации о движении и второй информации об операции.
[0047] Конкретные описания идентификаторов с первого по четвертый см. в следующих описаниях.
[0048] В способе двунаправленного межкадрового предсказания, обеспеченном в настоящей заявке, после того, как идентификатор получен посредством синтаксического анализа битового потока, определяют то, определять ли вторую информацию о движении на основе первой информации о движении, на основе значения идентификатора. После того, как определено, что вторая информация о движении должна быть определена на основе первой информации о движении, получают первую информацию о движении, а затем определяют вторую информацию о движении на основе полученной первой информации о движении. Таким образом, битовый поток должен включать в себя только соответствующий идентификатор и первую информацию о движении и больше не должен включать в себя вторую информацию о движении. По сравнению с предшествующим уровнем техники, в котором битовый поток включает в себя информацию о движении каждого блока изображения в каждом направлении, способ двунаправленного межкадрового предсказания, обеспечиваемый в настоящей заявке, эффективно уменьшает информацию о движении, включенную в битовый поток, и улучшает эффективное использование ресурсов передачи, скорость передачи, и скорость кодирования.
[0049] Согласно четвертому аспекту обеспечено устройство двунаправленного межкадрового предсказания. Устройство двунаправленного межкадрового предсказания включает в себя блок получения и блок определения.
[0050] В частности, в реализации блок получения выполнен с возможностью: синтаксического анализа битового потока для получения первого идентификатора, где первый идентификатор используется для указания того, следует ли определять вторую информацию о движении на основе первой информации о движении, первая информация о движении является информацией о движении текущего блока изображения в первом направлении, а вторая информация о движении представляет собой информацию о движении текущего блока изображения во втором направлении; и если значение первого идентификатора является первым предварительно заданным значением, получения первой информации о движении. Блок определения выполнен с возможностью: определения второй информации о движении на основе первой информации о движении, полученной посредством блока получения, и определения сэмплов предсказания текущего блока изображения на основе первой информации о движении и второй информации о движении.
[0051] В другой реализации блок получения выполнен с возможностью: синтаксического анализа битового потока для получения второго идентификатора, при этом второй идентификатор используется для указания того, следует ли вычислять информацию о движении текущего блока изображения с использованием алгоритма получения информации о движении; если значение второго идентификатора является вторым предварительно заданным значением, то получают третий идентификатор, где третий идентификатор используется для указания того, следует ли определять вторую информацию о движении на основе первой информации о движении, первая информация о движении является информацией о движении текущего блока изображения в первом направлении, а вторая информация о движении представляет собой информацию о движении текущего блока изображения во втором направлении; и если значение третьего идентификатора является третьим предварительно заданным значением, получения первой информации о движении. Блок определения выполнен с возможностью: определения второй информации о движении на основе первой информации о движении, полученной посредством блока получения, и определения сэмплов предсказания текущего блока изображения на основе первой информации о движении и второй информации о движении.
[0052] В другой реализации блок получения выполнен с возможностью: синтаксического анализа битового потока для получения второго идентификатора, при этом второй идентификатор используется для указания того, следует ли вычислять информацию о движении текущего блока изображения с использованием алгоритма получения информации о движении; и если значение второго идентификатора является вторым предварительно заданным значением, получения первой информации о движении. Блок определения выполнен с возможностью: определения второй информации о движении на основе первой информации о движении, полученной посредством блока получения, где первая информация о движении является информацией о движении текущего блока изображения в первом направлении, а вторая информация о движении является информацией о движении текущего блока изображения во втором направлении; и определения сэмплов предсказания текущего блока изображения на основе первой информации о движении и второй информации о движении.
[0053] В другой реализации блок получения выполнен с возможностью синтаксического анализа битового потока для получения четвертого идентификатора, где четвертый идентификатор используется для указания того, следует ли вычислять информацию о движении текущего блока изображения, используя алгоритм получения информации о движении. Блок определения выполнен с возможностью: если значение четвертого идентификатора, полученного посредством блока получения, является четвертым предварительно заданным значением, определения значения индекса первого опорного кадра и значения индекса второго опорного кадра на основе первого списка опорных кадров и второго списка опорных кадров, где первый список опорных кадров является списком опорных кадров текущего блока изображения в первом направлении, второй список опорных кадров является списком опорных кадров текущего блока изображения во втором направлении, первый опорный кадр - это опорный кадр текущего блока изображения в первом направлении, а второй опорный кадр – это опорный кадр текущего блока изображения во втором направлении. Блок получения дополнительно выполнен с возможностью получения первой разности векторов движения и первой метки предиктора вектора движения. Блок определения дополнительно выполнен с возможностью: определения второй информации о движении на основе первой информации о движении, где первая информация о движении включает в себя значение индекса первого опорного кадра, первую разность векторов движения, и первую метку предиктора вектора движения, а вторая информация о движении - это информация о движении текущего блока изображения во втором направлении; и определения сэмплов предсказания текущего блока изображения на основе первой информации о движении и второй информации о движении.
[0054] Согласно пятому аспекту обеспечен терминал. Терминал включает в себя один или несколько процессоров, память и интерфейс связи. Память и интерфейс связи связаны с одним или несколькими процессорами. Память выполнена с возможностью хранения компьютерного программного кода. Компьютерной программный код включает в себя инструкцию. Когда один или несколько процессоров выполняют инструкцию, терминал выполняет способ двунаправленного межкадрового предсказания согласно любому из первого аспекта или возможных реализаций первого аспекта, или выполняет способ двунаправленного межкадрового предсказания согласно любому из третьего аспекта или возможных реализаций третьего аспекта.
[0055] Согласно шестому аспекту обеспечен видеодекодер, включающий в себя энергонезависимый носитель данных и центральный процессор. На энергонезависимом носителе данных хранится исполняемая программа. Центральный процессор подключен к энергонезависимому носителю данных и выполняет исполняемую программу для реализации способа двунаправленного межкадрового предсказания согласно любому из первого аспекта или возможных реализаций первого аспекта, или способа двунаправленного межкадрового предсказания согласно любому из третьего аспекта или возможных реализаций третьего аспекта.
[0056] Согласно седьмому аспекту обеспечен декодер. Декодер включает в себя устройство двунаправленного межкадрового предсказания во втором аспекте и модуль восстановления, где модуль восстановления выполнен с возможностью определения восстановленных значений сэмплов текущего блока изображения на основе сэмплов предсказания, полученных посредством устройства двунаправленного межкадрового предсказания; или декодер включает в себя устройство двунаправленного межкадрового предсказания в четвертом аспекте и модуль восстановления, где модуль восстановления выполнен с возможностью определения восстановленных значений сэмплов текущего блока изображения на основе сэмплов предсказания, полученных посредством устройства двунаправленного межкадрового предсказания.
[0057] Согласно восьмому аспекту обеспечен считываемый компьютером носитель данных. Считываемый компьютером носитель данных хранит инструкцию. Когда инструкцию запускают на терминале в пятом аспекте, терминал имеет возможность выполнять способ двунаправленного межкадрового предсказания согласно любому из первого аспекта или возможных реализаций первого аспекта, или выполнять способ двунаправленного межкадрового предсказания согласно любому из третьего аспекта или возможных реализаций третьего аспекта.
[0058] Согласно девятому аспекту обеспечен компьютерный программный продукт, включающий в себя инструкцию. Когда компьютерный программный продукт запускают на терминале в пятом аспекте, терминал имеет возможность выполнять способ двунаправленного межкадрового предсказания согласно любому из первого аспекта или возможных реализаций первого аспекта, или выполнять способ двунаправленного межкадрового предсказания в соответствии с любым из третьего аспекта или возможных реализаций третьего аспекта.
[0059] В настоящей заявке название устройства двунаправленного межкадрового предсказания не накладывает никаких ограничений на устройства или функциональные модули. В реальной реализации устройства или функциональные модули могут иметь другие названия. При условии, что функции устройств или функциональных модулей аналогичны функциям в настоящей заявке, устройства или функциональные модули подпадают под объем формулы изобретения в настоящей заявке и ее эквивалентных технологий.
[0060] Для конкретных описаний аспектов с пятого по девятый и реализаций с пятого по девятый аспектов см. подробные описания первого аспекта и реализаций первого аспекта или подробные описания третьего аспекта и реализаций третьего аспекта. Кроме того, для положительных эффектов аспектов с пятого по девятый и реализаций аспектов с пятого по девятый обратитесь к анализу положительных эффектов первого аспекта и реализаций первого аспекта или анализу положительных эффектов третьего аспекта и реализаций третьего аспекта. Подробности не описаны здесь снова.
[0061] Эти аспекты или другие аспекты в настоящей заявке более краткие и понятны в следующем описании.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0062] Фиг. 1 - схематическая структурная схема системы кодирования видео согласно варианту осуществления настоящей заявки;
[0063] Фиг. 2 - схематическая структурная схема видеокодера согласно варианту осуществления настоящей заявки;
[0064] Фиг. 3 - схематическая структурная схема видеодекодера согласно варианту осуществления настоящей заявки;
[0065] Фиг. 4 - схематическая блок-схема способа двунаправленного межкадрового предсказания согласно варианту осуществления настоящей заявки;
[0066] Фиг. 5 - первая схематическая структурная схема устройства двунаправленного межкадрового предсказания согласно варианту осуществления настоящей заявки; и
[0067] Фиг. 6 - вторая схематическая структурная схема устройства двунаправленного межкадрового предсказания согласно варианту осуществления настоящей заявки.
Описание вариантов осуществления
[0068] В описании, формуле изобретения и сопровождающих чертежах настоящей заявки термины «первый», «второй», «третий», «четвертый» и так далее предназначены для различения разных объектов, но не указывают конкретный порядок.
[0069] В вариантах осуществления настоящей заявки слово «пример» или «например» используется для представления примера, иллюстрации или описания. Любой вариант осуществления или проектная схема, описанные как «пример» или «например» в вариантах осуществления настоящей заявки, не следует объяснять как более предпочтительные или имеющие больше преимуществ, чем другой вариант осуществления или проектная схема. Точно, использование слова «пример» или «например» или тому подобное предназначено для представления соответствующей концепции определенным образом.
[0070] Чтобы облегчить понимание вариантов осуществления настоящей заявки, сначала описаны соответствующие элементы в вариантах осуществления настоящей заявки.
[0071] Кодирование изображений (picture encoding): процесс сжатия последовательности изображений в битовый поток.
[0072] Декодирование изображения (picture decoding): процесс восстановления битового потока в восстановленное изображение в соответствии с определенным правилом синтаксиса и определенным способом обработки.
[0073] В настоящее время процесс кодирования видеоизображения выглядит следующим образом: кодер сначала разделяет кадр исходного изображения на множество частей, которые не перекрывают друг друга, причем каждая часть может использоваться как блок изображения. Затем кодер выполняет такие операции, как предсказание (Prediction), преобразование (Transform) и квантование (Quantization) для каждого блока изображения для получения битового потока, соответствующе блоку изображения, где предсказание выполняется для получения блока предсказания блока изображения, так что только разница (или называемая остатком или остаточным блоком) между блоком изображения и блоком предсказания блока изображения может кодироваться и передаваться для уменьшения издержек передачи. Наконец, кодер отправляет битовый поток, соответствующий блоку изображения, на декодер.
[0074] Соответственно, после приема битового потока декодер выполняет процесс декодирования видео. В частности, декодер выполняет такие операции, как предсказание, обратное квантование и обратное преобразование принятого битового потока для получения восстановленного блока изображения (или называемого блоком изображения после восстановления). Этот процесс называется процессом восстановления изображения (или процессом восстановления изображения). Затем декодер собирает восстановленный блок каждого блока изображения в исходном изображении для получения восстановленного изображения исходного изображения и воспроизводит восстановленное изображение.
[0075] Существующая технология кодирования видеоизображений включает в себя внутрикадровое предсказание и межкадровое предсказание. Межкадровое предсказание - это предсказание, завершенное посредством кодирования блока изображения/декодирования блока изображения с использованием корреляции между текущим кадром и опорным кадром текущего кадра. Текущий кадр может иметь один или несколько опорных кадров. В частности, блок изображения предсказания текущего блока изображения формируется на основе сэмплов в опорном кадре текущего блока изображения.
[0076] Как правило, блок изображения предсказания текущего блока изображения может быть сформирован на основе только одного опорного блока изображения, или блок изображения предсказания текущего блока изображения может быть сформирован на основе по меньшей мере двух опорных блоков изображения. Формирование блока изображения предсказания текущего блока изображения на основе одного опорного блока изображения называется однонаправленным предсказанием, а формирование блока изображения предсказания текущего блока изображения на основании по меньшей мере двух опорных блоков изображения упоминается как двунаправленное межкадровое предсказание. По меньшей мере два опорного блока изображения в двунаправленном межкадровом предсказании могут быть от одного и того же опорного кадра или разных опорных кадров. Другими словами, «направление» в настоящей заявке - это обобщенное определение. Одно направление в настоящей заявке соответствует одному опорному блоку изображения. Следующие первое направление и второе направление соответствуют разным опорным блокам изображения. Два опорного блока изображения могут быть включены в будущий опорный кадр/предыдущий опорный кадр текущего блока изображения; или один опорный блок изображения может быть включен в будущий опорный кадр текущего блока изображения, а другой опорный блок изображения может быть включен в предыдущий опорный кадр текущего блока изображения.
[0077] Необязательно, двунаправленное межкадровое предсказание может быть межкадровым предсказанием, выполняемым с использованием корреляции между текущим видеокадром и видеокадром, который кодируется и воспроизводится до текущего видеокадра, и корреляции между текущим видеокадром и видеокадром, который кодируется до текущего видеокадра и воспроизводится после текущего видеокадра.
[0078] Можно узнать, что двунаправленное межкадровое предсказание включает в себя межкадровое предсказание в двух направлениях, что обычно называется прямым межкадровым предсказанием и обратным межкадровым предсказанием. Прямое межкадровое предсказание - это межкадровое предсказание, выполняемое с использованием корреляции между текущим видеокадром и видеокадром, который кодируется и воспроизводится перед текущим видеокадром. Обратное межкадровое предсказание - это межкадровое предсказание, выполняемое с использованием корреляции между текущим видеокадром и видеокадром, который кодируется перед текущим видеокадром и воспроизводится после текущего видеокадра.
[0079] Прямое межкадровое предсказание соответствует списку L0 будущих опорных кадров, а обратное межкадровое предсказание соответствует списку L1 предыдущих опорных кадров. Два списка опорных кадров могут включать в себя одинаковое количество опорных кадров или разное количество опорных кадров.
[0080] Компенсация движения (Motion Compensation, МС) представляет собой процесс предсказания текущего блока изображения с использованием опорного блока изображения.
[0081] В большинстве структур кодирования видеопоследовательность включает в себя серию изображений (picture), изображение разделяется по меньшей мере на один слайс (slice), и каждый слайс дополнительно разделяется на блоки (block) изображения. Кодирование/декодирование видео выполняется посредством блока изображения. Обработка кодирования/декодирования может выполняться слева направо и сверху вниз, строка за строкой, начиная с положения верхнего левого угла изображения. Здесь блок изображения может быть макроблоком (macro block, MB) в стандарте кодирования видео H.264 или может быть единицей кодирования (Coding Unit, CU) в стандарте высокоэффективного кодирования видео (High Efficiency Video Coding, HEVC). Это конкретно не ограничено в вариантах осуществления настоящей заявки.
[0082] В настоящей заявке блок изображения, который кодируется/декодируется, называется текущим блоком изображения (текущий блок), а изображение, в котором расположен текущий блок изображения, называется текущим кадром.
[0083] Как правило, текущий кадр может быть кадром однонаправленного предсказания (P-кадром) или может быть кадром двунаправленного предсказания (B-кадром). Когда текущий кадр является P-кадром, текущий кадр имеет один список опорных кадров. Когда текущий кадр является B-кадром, текущий кадр имеет два списка опорных кадров, и эти два списка обычно обозначаются как L0 и L1 соответственно. Каждый список опорных кадров включает в себя по меньшей мере один восстановленный кадр, который используется в качестве опорного кадра текущего кадра. Опорный кадр используется для обеспечения опорного сэмпла для межкадрового предсказания текущего кадра.
[0084] В текущем кадре соседний блок изображения (например, по левую, верхнюю или правую сторону от текущего блока) текущего блока изображения может быть кодирован/декодирован, и будет получено восстановленное изображение. Соседний блок изображения называется восстановленным блоком изображения. Доступна (available) такая информация, как режим кодирования и восстановленный сэмпл восстановленного блока изображения.
[0085] Кадр, который был кодирован/декодирован до кодирования/декодирования текущего кадра, называется восстановленным кадром.
[0086] Вектор движения (Motion Vector, MV) является важным параметром в процессе межкадрового предсказания и представляет пространственное смещение кодированного блока изображения относительно текущего блока изображения. Обычно вектор движения может быть получен с использованием способа оценки движения (Motion Estimation, ME), такого как поиск движения. В технологии предварительного межкадрового предсказания кодер передает вектор движения текущего блока изображения в битовом потоке, так что декодер воспроизводит сэмплы предсказания текущего блока изображения для получения восстановленного блока. Для дальнейшего повышения эффективности кодирования, способ дифференцированного кодирования вектора движения с использованием опорного вектора движения обеспечен далее, более конкретно, лишь разность векторов движения (Motion Vector Difference, MVD) кодируется.
[0087] В обеспечение использования декодером и кодером одного и того же опорного блока изображения, кодер должен отправить информацию о движении каждого блока изображения на декодер в битовом потоке. Если кодер непосредственно кодирует вектор движения каждого блока изображения, потребляется большое количество ресурсов передачи. Поскольку векторы движения пространственно соседних блоков изображения сильно коррелированы, вектор движения текущего блока изображения может быть предсказан на основе вектора движения кодированного соседнего блока изображения. Вектор движения, полученный посредством предсказания, называется MVP, а разность между вектором движения текущего блока изображения и MVP называется MVD.
[0088] В стандарте кодирования видео H.264 предсказание кадров с множеством опорных кадров используется в процессе оценки движения для повышения точности предсказания. В частности, создается буфер, хранящий множество восстановленных кадров, и все восстановленные кадры в буфере просматриваются в поисках оптимального опорного блока изображения для компенсации движения, чтобы лучше исключить временную избыточность. В стандарте кодирования видео H.264 для межкадрового предсказания используются два буфера: список 0 опорных кадров (reference list 0) и список 1 опорных кадров (reference list 1). Опорный кадр, в котором находится оптимальный опорный блок в каждом списке, помечается значением индекса, а именно ref_idx_l0 и ref_idx_l1. В каждом списке опорных кадров, информация о движении опорного блока изображения включает в себя значение индекса опорного кадра (ref_idx_l0 или ref_idx_l1), метку MVP, и MVD. Декодер может найти правильный опорный блок изображения в выбранном опорном кадре на основе значения индекса опорного кадра, метки MVP и MVD.
[0089] В настоящее время режимы межкадрового предсказания, часто используемые в стандарте HEVC, представляют собой режим расширенного предсказания вектора движения (Advanced Motion Vector Prediction, AMVP), режим объединения (Merge) и режим предсказания модели непоступательного движения.
[0090] В режиме AMVP кодер составляет список возможных векторов движения, используя вектор движения кодированного блока изображения, который пространственно или временно смежен с текущим блоком изображения, и определяет оптимальный вектор движения в списке возможных векторов движения как MVP текущего блока изображения на основе издержек искажения скорости. Кроме того, кодер выполняет поиск движения в окрестности с центром в MVP для получения вектора движения текущего блока изображения. Кодер передает значение индекса (а именно, метку MVP) MVP в списке возможных векторов движения, значение индекса опорного кадра и MVD на декодер.
[0091] В режиме объединения кодер создает список информации о возможном движении, используя информацию о движении кодированного блока изображения, который пространственно или временно смежен с текущим блоком изображения, и определяет оптимальную информацию о движении в списке информации о возможном движении как информацию о движении текущего блока изображения на основе издержек искажения скорости. Кодер передает значение индекса положения оптимальной информации о движении в списке информации о возможном движении на декодер.
[0092] В режиме предсказания модели непоступательного движения кодер и декодер получают информацию о движении всех подблоков текущего блока изображения, используя одну и ту же модель движения, и выполняют компенсацию движения на основе информации о движении всех подблоков для получения блока изображения предсказания. Это повышает эффективность предсказания. Модель движения, часто используемая кодером и декодером, представляет собой аффинную модель с 4 параметрами, аффинную модель с 6 параметрами или билинейную модель с 8 параметрами.
[0093] Например, аффинная модель с 4 параметрами может быть представлена с использованием векторов движения двух сэмплов и координат двух сэмплов относительно сэмпла в верхнем левом углу текущего блока изображения. Здесь сэмпл, используемый для представления параметра модели движения, называется контрольной точкой. Если сэмпл в верхнем левом углу (0, 0) текущего блока изображения и сэмпл в верхнем правом углу (, 0) текущего блока изображения являются контрольными точками, а векторы движения сэмплов в верхнем левом углу и верхнем правом углу текущего блока изображения - это () и () соответственно, информация о движении каждого подблока текущего блока изображения получается в соответствии со следующей формулой (1). В следующей формуле (1) () – это координаты подблока относительно сэмпла в верхнем левом углу текущего блока изображения, () – это вектор движения подблока, а  - ширина текущего блока изображения.
(1)
[0094] Например, аффинная модель с 6 параметрами может быть представлена с использованием векторов движения трех сэмплов и координат трех сэмплов относительно сэмпла в верхнем левом углу текущего блока изображения. Если сэмпл в верхнем левом углу (0, 0) текущего блока изображения, сэмпл в верхнем правом углу (, 0) текущего блока изображения и сэмпл в нижнем левом углу (0, ) текущего блока изображения являются контрольными точками, а векторами движения сэмплов в верхнем левом углу, верхнем правом углу и нижнем левом углу текущего блока изображения являются (),() и () соответственно, информация о движении каждого подблока текущего блока изображения получается согласно следующей формуле (2). В следующей формуле (2) () - это координаты подблока относительно сэмпла в верхнем левом углу текущего блока изображения, () – это вектор движения подблока,  и  - ширина и высота текущего блока изображения соответственно.
(2)
[0095] Например, билинейная модель с 8 параметрами может быть представлена с использованием векторов движения четырех сэмплов и координат четырех сэмплов относительно сэмпла в верхнем левом углу текущего блока изображения. Если сэмпл в верхнем левом углу (0, 0) текущего блока изображения, сэмпл в верхнем правом углу (, 0) текущего блока изображения, сэмпл в нижнем левом углу (0, ) текущего блока изображения, и сэмпл в правом нижнем углу (, ) текущего блока изображения являются контрольными точками, а векторы движения сэмплов в верхнем левом углу, верхнем правом углу, нижнем левом углу и нижнем правом углу текущего блока изображения - это (),(),() и () соответственно, информация о движении каждого подблока текущего блока изображения получается по следующей формуле (3). В следующей формуле (3) () – это координаты подблока относительно сэмпла в верхнем левом углу текущего блока изображения, () – это вектор движения подблока, а  и  - ширина и высота текущего блока изображения соответственно.
(3)
[0096] Легко понять, что в любом из вышеупомянутых режимов межкадрового предсказания, если межкадровое предсказание является двунаправленным межкадровым предсказанием, кодеру необходимо отправлять информацию о движении каждого блока изображения в каждом направлении на декодер. Следовательно, информация о движении занимает относительно большое количество ресурсов передачи. Это снижает эффективное использование ресурсов передачи, скорость передачи и эффективность сжатия кодирования.
[0097] Чтобы решить вышеупомянутую проблему, настоящая заявка обеспечивает способ двунаправленного межкадрового предсказания. При двунаправленном межкадровом предсказании кодер отправляет информацию о движении текущего блока изображения в первом направлении на декодер, и после приема информации о движении текущего блока изображения в первом направлении декодер вычисляет информацию о движении текущего блока изображения во втором направлении на основе информации о движении текущего блока изображения в первом направлении. Таким образом, сэмплы предсказания текущего блока изображения могут быть вычислены на основе информации о движении текущего блока изображения в первом направлении и информации о движении текущего блока изображения во втором направлении.
[0098] Способ двунаправленного межкадрового предсказания, представленный в настоящей заявке, может быть выполнен посредством устройства двунаправленного межкадрового предсказания, устройства кодирования видео, видеокодека или другого устройства, имеющего функцию кодирования видео.
[0099] Способ двунаправленного межкадрового предсказания, представленный в настоящей заявке, применим к системе кодирования видео. В системе кодирования видео видеокодер 100 и видеодекодер 200 выполнены с возможностью вычисления информации о движении текущего блока изображения согласно примерам способа двунаправленного межкадрового предсказания, обеспеченного в настоящей заявке. В частности, информация о движении текущего блока изображения во втором направлении вычисляется на основе информации о движении текущего блока изображения в первом направлении, так что сэмплы предсказания текущего блока изображения определяются на основе информации о движении текущего блока изображения в первом направлении и информации о движении текущего блока изображения во втором направлении. Таким образом, между видеокодером 100 и видеокодером 200 необходимо передавать только информацию о движении текущего блока изображения в первом направлении. Это эффективно улучшает использование ресурсов передачи и эффективность сжатия кодирования.
[00100] Фиг. 1 показывает структуру системы 1 кодирования видео. Как показано на фиг. 1, система 1 кодирования видео включает в себя исходное устройство 10 и устройство 20 назначения. Исходное устройство 10 формирует кодированные видеоданные. Исходное устройство 10 также может называться устройством кодирования видео. Устройство 20 назначения может декодировать кодированные видеоданные, сформированные посредством исходного устройства 10. Устройство 20 назначения также может называться устройством декодирования видео. Исходное устройство 10 и/или устройство 20 назначения может включать в себя по меньшей мере один процессор и память, связанную с по меньшей мере одним процессором. Память может включать в себя, помимо прочего, постоянное запоминающее устройство ( Read-Only Memory, ROM), оперативное запоминающее устройство (Random Access Memory, RAM), электрически стираемое программируемое постоянное запоминающее устройство (Electrically Erasable Programmable Read-Only Memory, EEPROM), флэш-память или любой другой носитель данных, который может быть выполнен с возможностью хранения необходимого программного кода в форме инструкции или структуры данных, к которой может получить доступ компьютер. В данной заявке это особым образом не ограничено.
[00101] Исходное устройство 10 и устройство 20 назначения могут включать в себя различные устройства, в том числе настольный компьютер, мобильное вычислительное устройство, ноутбук (например, портативный компьютер), планшетный компьютер, телеприставку, портативный телефонный аппарат, такой как «умный» телефон, телевизор, фотоаппарат, устройство отображения, цифровой медиаплеер, игровую консоль, установленный на транспортном средстве компьютер или подобное устройство.
[00102] Устройство 20 назначения может принимать кодированные видеоданные от исходного устройства 10 по линии 30 связи. Линия 30 связи может включать в себя одну или несколько сред и/или устройств, которые могут передавать кодированные видеоданные от исходного устройства 10 в устройство 20 назначения. В одном из примеров линия 30 связи может включать в себя одну или несколько сред связи, которые позволяют исходному устройству 10 непосредственно передавать кодированные видеоданные в устройство 20 назначения в реальном времени. В этом примере исходное устройство 10 может модулировать кодированные видеоданные в соответствии со стандартом связи (например, протоколом беспроводной связи) и может передавать модулированные видеоданные в устройство 20 назначения. Одна или несколько сред связи могут включать в себя беспроводные и/или проводные среды связи, например, радиочастотный (Radio Frequency, RF) спектр или один или несколько физических кабелей передачи. Одна или несколько сред связи могут составлять часть сети с пакетной передачей данных, а сеть с пакетной передачей данных представляет собой, например, локальную сеть, региональную сеть или глобальную сеть (например, Интернет). Одна или несколько сред связи могут включать в себя маршрутизатор, коммутатор, базовую станцию или другое устройство, реализующее связь от исходного устройства 10 к устройству 20 назначения.
[00103] В другом примере кодированные видеоданные могут выводиться в запоминающее устройство 40 через интерфейс 140 вывода. Точно так же к кодированным видеоданным можно получить доступ из запоминающего устройства 40 через интерфейс 240 ввода. Запоминающее устройство 40 может включать в себя множество типов локально доступных носителей данных, таких как диск Blu-ray, цифровой видеодиск (Digital Video Disc, DVD) высокой плотности, постоянное запоминающее устройство компакт-дисков (Compact Disc Read-Only Memory, CD-ROM), флэш-память или другой подходящий цифровой носитель данных, выполненный с возможностью хранения кодированных видеоданных.
[00104] В другом примере запоминающее устройство 40 может соответствовать файловому серверу или другому промежуточному запоминающему устройству, в котором хранятся кодированные видеоданные, сформированные посредством исходного устройства 10. В этом примере устройство 20 назначения может получать сохраненные видеоданные из запоминающего устройства 40 посредством потоковой передачи или загрузки. Файловый сервер может быть сервером любого типа, который может хранить кодированные видеоданные и передавать кодированные видеоданные в устройство 20 назначения. Например, файловый сервер может включать в себя сервер всемирной паутины (World Wide Web, Web) (например, используемый для веб-сайта), сервер протокола передачи файлов (File Transfer Protocol, FTP), сетевое хранилище (Network Attached Storage, NAS) и локальный диск.
[00105] Устройство 20 назначения может получить доступ к кодированным видеоданным через любое стандартное соединение для передачи данных (например, Интернет-соединение). Примерный тип соединения для передачи данных включает в себя беспроводной канал или проводное соединение (например, кабельный модем), которое подходит для доступа к кодированным видеоданным, хранящимся на файловом сервере, или их комбинации. Кодированные видеоданные могут передаваться с файлового сервера в потоковом режиме, посредством загрузки или их комбинации.
[00106] Способ двунаправленного межкадрового предсказания в настоящей заявке не ограничивается сценарием беспроводного применения. Например, способ двунаправленного межкадрового предсказания в настоящей заявке может применяться к кодированию видео для поддержки множества мультимедийных применений, таких как следующие применения: эфирное телевещание, передача кабельного телевидения, передача спутникового телевидения, потоковая передача видео (например, через Интернет), кодирование видеоданных, хранящихся на носителе данных, декодирование видеоданных, хранящихся на носителе данных, или другое применение. В некоторых примерах система 1 кодирования видео может быть выполнена с возможностью поддержки однонаправленной или двунаправленной передачи видео, для поддержки таких применений, как потоковая передача видео, воспроизведение видео, широковещательная передача видео и/или видеотелефония.
[00107] Следует отметить, что система 1 кодирования видео, показанная на фиг. 1, является просто примером системы кодирования видео и не ограничивает систему кодирования видео в настоящей заявке. Способ двунаправленного межкадрового предсказания, представленный в настоящей заявке, может быть дополнительно применим к сценарию, в котором нет обмена данными между устройством кодирования и устройством декодирования. В других примерах подлежащие кодированию видеоданные или кодированные видеоданные могут быть извлечены из локальной памяти или могут быть переданы в режиме потоковой передачи по сети и т.п. Устройство кодирования видео может кодировать видеоданные, которые должны быть кодированы, и сохранять кодированные видеоданные в памяти. Устройство декодирования видео также может получать кодированные видеоданные из памяти и декодировать кодированные видеоданные.
[00108] На фиг. 1 исходное устройство 10 включает в себя видеоисточник 101, видеокодер 102 и интерфейс 103 вывода. В некоторых примерах интерфейс 103 вывода может включать в себя регулятор/демодулятор (модем) и/или передатчик. Видеоисточник 101 может включать в себя устройство видеозаписи (например, камеру), видеоархив, включающий ранее записанные видеоданные, интерфейс ввода видео для приема видеоданных от поставщика видеоконтента и/или систему компьютерной графики для формирования видеоданных или комбинацию вышеупомянутых источников видеоданных.
[00109] Видеокодер 102 может кодировать видеоданные, которые поступают из видеоисточника 101. В некоторых примерах исходное устройство 10 непосредственно передает кодированные видеоданные в устройство 20 назначения через интерфейс 103 вывода. В других примерах кодированные видеоданные могут альтернативно сохраняться в запоминающем устройстве 40, так что устройство 20 назначения впоследствии получает доступ к кодированным видеоданным для декодирования и/или воспроизведения.
[00110] В примере на фиг. 1 устройство 20 назначения включает в себя устройство 201 отображения, видеодекодер 202 и интерфейс 203 ввода. В некоторых примерах интерфейс 203 ввода включает в себя приемник и/или модем. Интерфейс 203 ввода может принимать кодированные видеоданные по линии 30 связи и/или от запоминающего устройства 40. Устройство 201 отображения может быть интегрировано с устройством 20 назначения или может быть расположено вне устройства 20 назначения. Обычно устройство 201 отображения отображает декодированные видеоданные. Устройство 201 отображения может включать в себя множество типов устройств отображения, например, жидкокристаллический дисплей, плазменный дисплей, дисплей на органических светодиодах или устройство отображения другого типа.
[00111] Необязательно, видеокодер 102 и видеодекодер 202 могут быть соответственно интегрированы с аудиокодером и аудиодекодером и могут включать в себя соответствующий блок мультиплексора-демультиплексора или другое аппаратное и программное обеспечение для кодирования как аудио, так и видео в общем потоке данных или отдельных потоках данных.
[00112] Видеокодер 102 и видеодекодер 202 могут включать в себя по меньшей мере один микропроцессор, процессор цифровых сигналов (Digital Signal Processor, DSP), специализированную интегральную схему (Application-Specific Integrated Circuit, ASIC), программируемую пользователем вентильную матрицу (Field Programmable Gate Array, FPGA), дискретную логику, оборудование или любую их комбинацию. Если способ двунаправленного межкадрового предсказания, обеспеченный в настоящей заявке, реализован с использованием программного обеспечения, инструкция, используемая для программного обеспечения, может быть сохранена на соответствующем энергонезависимом считываемом компьютером носителе данных, и по меньшей мере один процессор может использоваться для выполнения инструкции в оборудовании для реализации настоящей заявки. Любой из вышеупомянутых компонентов (включая оборудование, программное обеспечение, комбинацию оборудования и программного обеспечения и т.п.) может рассматриваться как по меньшей мере один процессор. Видеокодер 102 может быть включен в кодер, видеодекодер 202 может быть включен в декодер, а кодер или декодер может быть частью комбинированного кодера/декодера (кодека) в соответствующем устройстве.
[00113] Видеокодер 102 и видеодекодер 202 в настоящей заявке могут выполнять операции в соответствии со стандартом сжатия видео (например, HEVC) или могут выполнять операции в соответствии с другим отраслевым стандартом. В данной заявке это особым образом не ограничено.
[00114] Видеокодер 102 выполнен с возможностью: выполнения двунаправленной оценки движения для текущего блока изображения, для определения информации о движении текущего блока изображения в первом направлении и вычисления информации о движении текущего блока изображения во втором направлении на основе информации о движении текущего блока изображения в первом направлении. Таким образом, видеокодер 102 определяет блок изображения предсказания текущего блока изображения на основе информации о движении текущего блока изображения в первом направлении и информации о движении текущего блока изображения во втором направлении. Кроме того, видеокодер 102 выполняет такие операции, как преобразование и квантование остатка между текущим блоком изображения и блоком изображения предсказания текущего блока изображения для формирования битового потока, и отправляет битовый поток в видеодекодер 202. Битовый поток включает в себя информацию о движении текущего блока изображения в первом направлении и информацию индикации, которая используется для указания определения второй информации о движении на основе первой информации о движении. Информация индикации может быть представлена с использованием разных идентификаторов. Для способа представления информации индикации см. следующие описания.
[00115] Необязательно, способ, используемый посредством видеокодера 102 для вычисления информации о движении текущего блока изображения во втором направлении на основе информации о движении текущего блока изображения в первом направлении, может быть следующим: видеокодер 102 определяет вектор движения текущего блока изображения во втором направлении на основе вектора движения текущего блока изображения в первом направлении; или видеокодер 102 определяет разность векторов движения текущего блока изображения во втором направлении на основе разности векторов движения текущего блока изображения в первом направлении и определяет вектор движения текущего блока изображения во втором направлении на основе разности векторов движения текущего блока изображения во втором направлении и предсказанного вектора движения текущего блока изображения во втором направлении.
[00116] Обратитесь к следующей фиг. 4. Видеодекодер 202 выполнен с возможностью: получения битового потока и синтаксического анализа битового потока для получения информации индикации, используемой для указания определения второй информации о движении на основе первой информации о движении (S400), другими словами, для определения получения и вычисления на основе информации о движении в одном направлении, информации о движении в другом направлении, где первая информация о движении является информацией о движении текущего блока изображения в первом направлении, вторая информация о движении является информацией о движении текущего блока изображения во втором направлении, и первое направление и второе направление здесь различны; получения первой информации о движении (S401); определения второй информации о движении на основе полученной первой информации о движении (S402); и определения сэмплов предсказания текущего блока изображения на основе первой информации о движении и второй информации о движении (S403).
[00117] Способ, используемый посредством видеодекодера 202 для вычисления информации о движении текущего блока изображения во втором направлении на основе информации о движении текущего блока изображения в первом направлении, может быть следующим: видеодекодер 202 определяет вектор движения текущего блока изображения во втором направлении на основе вектора движения текущего блока изображения в первом направлении; или видеодекодер 202 определяет разность векторов движения текущего блока изображения во втором направлении на основе разности векторов движения текущего блока изображения в первом направлении и определяет вектор движения текущего блока изображения во втором направлении на основе разности векторов движения текущего блока изображения во втором направлении и предсказанного вектора движения текущего блока изображения во втором направлении.
[00118] Фиг. 2 представляет собой схематическую структурную схему видеокодера 102 согласно варианту осуществления настоящей заявки. Как показано на фиг. 2, видеокодер 102 выполнен с возможностью вывода видео на объект 41 постобработки. Объект 41 постобработки представляет собой пример видеообъекта, иеющего возможность обработки кодированных видеоданных, которые поступают из видеокодера 102, например, сетевой элемент с поддержкой мультимедиа (MANE - media aware network element) или устройство монтажа/устройство редактирования. В некоторых случаях объект 41 постобработки может быть примером сетевого объекта. В некоторых системах кодирования видео объект 41 постобработки и видеокодер 102 могут быть компонентами отдельных устройств. В других случаях функции, описанные в отношении объекта 41 постобработки, могут выполняться тем же самым устройством, включающим в себя видеокодер 102. В примере объект 41 постобработки является примером запоминающего устройства 40 на фиг. 1.
[00119] Видеокодер 102 может выводить и вычислять информацию о движении текущего блока изображения во втором направлении на основе информации о движении текущего блока изображения в первом направлении и дополнительно определять блок изображения предсказания текущего блока изображения на основе информации о движении текущего блока изображения в первом направлении и информации о движении текущего блока изображения во втором направлении для дальнейшего завершения кодирования с двунаправленным межкадровым предсказанием.
[00120] Как показано на фиг. 2, видеокодер 102 включает в себя преобразователь 301, квантователь 302, энтропийный кодер 303, фильтр 306, память 307, блок 308 обработки предсказаний и сумматор 312. Блок 308 обработки предсказаний включает в себя блок 309 внутрикадрового предсказания и блок 310 межкадрового предсказания. Чтобы восстановить блок изображения, видеокодер 102 дополнительно включает в себя обратный квантователь 304, обратный преобразователь 305 и сумматор 311. Фильтр 306 определен для представления одного или нескольких контурных фильтров, например, фильтра удаления блочности, адаптивного контурного фильтра и сэмпл-адаптивного фильтра смещения.
[00121] Память 307 может хранить видеоданные, кодированные посредством компонента видеокодера 102. Видеоданные, хранящиеся в памяти 307, могут быть получены из видеоисточника 101. Память 307 может быть памятью опорных изображений, в которой хранятся опорные видеоданные, используемые посредством видеокодера 102 для кодирования видеоданных в режиме внутрикадрового или межкадрового кодирования. Память 307 может быть динамическим оперативным запоминающим устройством (dynamic RAM, DRAM), включая синхронное DRAM (synchronous DRAM, SDRAM), магниторезистивное RAM (magnetoresistive RAM, MRAM), резистивное RAM (resistive RAM, RRAM) или запоминающее устройство другого типа.
[00122] Видеокодер 102 принимает видеоданные и сохраняет видеоданные в памяти видеоданных. Блок разделения разделяет видеоданные на несколько блоков изображения, и эти блоки изображения могут быть дополнительно разделены на более мелкие блоки, например, разделение блока изображения на основе структуры дерева квадрантов или структуры двоичного дерева. Разделение может дополнительно включать в себя разделение на слайсы (slice), тайлы (tile) или другие более крупные блоки. Видеокодер 102 обычно является компонентом для кодирования блока изображения в слайсе видео, который должен быть кодирован. Слайс может быть разделен на множество блоков изображения (и может быть разделен на наборы блоков изображения, которые называются тайлами).
[00123] Блок 309 внутрикадрового предсказания в блоке 308 обработки предсказаний может выполнять кодирование с внутрикадровым предсказанием для текущего блока изображения относительно одного или нескольких соседних блоков изображения в кадре или слайсе, который является таким же, как у текущего блока изображения для исключения пространственной избыточности. Блок 310 межкадрового предсказания в блоке 308 обработки предсказаний может выполнять кодирование с межкадровым предсказанием для текущего блока изображения относительно одного или нескольких блоков изображения предсказания в одном или нескольких опорных изображениях для исключения временной избыточности.
[00124] Блок 308 обработки предсказаний может обеспечить полученные с внутрикадровыми кодированием и межкадровым кодированными блоки изображений для сумматора 310 для формировании остаточного блока, а также обеспечить остаточный блок для сумматора 309 для восстановления кодированного блока, используемого в качестве опорного изображения.
[00125] После того, как блок 308 обработки предсказаний формирует блок изображения предсказания текущего блока изображения посредством межкадрового предсказания и внутрикадрового предсказания, видеокодер 102 формирует остаточный блок изображения посредством вычитания блока изображения предсказания из текущего блока изображения, который должен быть кодирован. Сумматор 312 представляет один или несколько компонентов, которые выполняют эту операцию вычитания. Остаточные видеоданные в остаточном блоке могут быть включены в один или несколько блоков преобразования (transform unit, TU) и применены к преобразователю 301. Преобразователь 301 преобразует остаточные видеоданные в коэффициент остаточного преобразования посредством преобразования, такого как дискретное косинусное преобразование (discrete cosine transform, DCT) или концептуально аналогичное преобразование. Преобразователь 301 может преобразовывать остаточные видеоданные из области значений сэмплов в область преобразования, например, в частотную область.
[00126] Преобразователь 301 может отправить полученный коэффициент преобразования в квантователь 302. Квантователь 302 квантует коэффициент преобразования, чтобы дополнительно снизить скорость передачи данных. В некоторых примерах квантователь 302 может дополнительно сканировать матрицу, включающую в себя квантованный коэффициент преобразования. Альтернативно энтропийный кодер 303 может выполнять сканирование.
[00127] После квантования энтропийный кодер 303 выполняет энтропийное кодирование квантованного коэффициента преобразования. Например, энтропийный кодер 303 может выполнять контекстно-адаптивное кодирование с переменной длиной (context-adaptive variable-length coding, CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (context based adaptive binary arithmetic coding, CABAC) или другой способ или технологию энтропийного кодирования. После того, как энтропийный кодер 303 выполняет энтропийное кодирование, кодированный битовый поток может быть отправлен в видеодекодер 202 или может быть заархивирован для последующей отправки или последующего извлечения посредством видеодекодера 202. Энтропийный кодер 303 может дополнительно выполнять энтропийное кодирование синтаксического элемента текущего блока изображения, который должен быть кодирован.
[00128] Обратный квантователь 304 и обратный преобразователь 305, соответственно, выполняют обратное квантование и обратное преобразование для восстановления остаточного блока в области сэмпла, например, для использования впоследствии в качестве опорного блока опорного кадра. Сумматор 311 добавляет восстановленный остаточный блок к блоку изображения предсказания, сформированному посредством блока 310 межкадрового предсказания или блока 309 внутрикадрового предсказания, для формировании восстановленного блока изображения. Блок изображения предсказания блока изображения может быть получен посредством обработки (обработки, такой как интерполирования) опорного блока изображения блока изображения.
[00129] Следует понимать, что другие структурные варианты видеокодера 102 могут использоваться для кодирования видеопотока. Например, для некоторых блоков изображения или кадров изображения видеокодер 102 может непосредственно квантовать остаточный сигнал, и, соответственно, обработка посредством преобразователя 301 и обратного преобразователя 305 не требуется. В качестве альтернативы, для некоторых блоков изображения или кадров изображения видеокодер 102 не формирует остаточные данные, и, соответственно, обработка посредством преобразователя 301, квантователя 302, обратного квантователя 304 и обратного преобразователя 305 не требуется. В качестве альтернативы, видеокодер 102 может непосредственно хранить восстановленный блок изображения в качестве опорного блока, и обработки посредством фильтра 306 не требуется. В качестве альтернативы, квантователь 302 и обратный квантователь 304 в видеокодере 102 могут быть объединены.
[00130] Фиг. 3 представляет собой схематическую структурную схему видеодекодера 202 согласно варианту осуществления настоящей заявки. Как показано на фиг. 3, видеодекодер 202 включает в себя энтропийный декодер 401, обратный квантователь 402, обратный преобразователь 403, фильтр 404, память 405, блок 406 обработки предсказаний и сумматор 409. Блок 406 обработки предсказаний включает в себя блок 407 внутрикадрового предсказания и блок 408 межкадрового предсказания. В некоторых примерах видеодекодер 202 может выполнять процесс декодирования, который примерно обратен процессу кодирования, описанному в отношении видеокодера 102 на фиг.2.
[00131] В процессе декодирования видеодекодер 202 принимает битовый поток от видеокодера 102. Видеодекодер 202 может принимать видеоданные от сетевого объекта 42 и дополнительно может сохранять видеоданные в памяти видеоданных (которая не показана на фигуре). Память видеоданных может хранить видеоданные, которые должны быть декодированы посредством компонента видеодекодера 202, например, кодированный битовый поток. Видеоданные, хранящиеся в памяти видеоданных, могут быть получены, например, из локального видеоисточника, такого как запоминающее устройство 40 или камера, через проводную или беспроводную сетевую связь или посредством доступа к физическому носителю данных. Хотя память видеоданных не показана на фиг. 3, память видеоданных и память 405 могут быть одной и той же памятью или могут быть отдельно сконфигурированной памятью. Память видеоданных и память 405, каждая, может состоять из любого из множества типов устройств памяти, например, динамического оперативного запоминающего устройства (DRAM), включая синхронное DRAM (SDRAM), магниторезистивное RAM (MRAM), резистивное RAM (RRAM) или запоминающее устройство другого типа. В различных примерах память видеоданных может быть интегрирована в микросхему вместе с другими компонентами видеодекодера 202 или может быть расположена вне микросхемы относительно этих компонентов.
[00132] Сетевой объект 42 может быть, например, сервером, MANE, видеоредактором/устройством видеомонтажа или другим подобным устройством, выполненным с возможностью реализации одной или нескольких технологий, описанных выше. Сетевой объект 42 может включать или не включать в себя видеокодер, например видеокодер 102. Перед тем, как сетевой объект 42 отправит битовый поток на видеодекодер 202, сетевой объект 42 может реализовать часть технологий, описанных в настоящей заявке. В некоторых системах декодирования видео сетевой объект 42 и видеодекодер 202 могут быть компонентами отдельных устройств. В других случаях функции, описанные в отношении сетевого объекта 42, могут выполняться посредством того же устройства, включающего в себя видеодекодер 202. В некоторых случаях сетевой объект 42 может быть примером запоминающего устройства 40 на фиг. 1.
[00133] Энтропийный декодер 401 видеодекодера 202 выполняет энтропийное декодирование битового потока для формирования квантованного коэффициента и некоторых синтаксических элементов. Энтропийный декодер 401 пересылает синтаксические элементы в фильтр 404. Видеодекодер 202 может принимать синтаксические элементы/синтаксический элемент на уровне слайса видео и/или уровне блока изображения. В настоящей заявке, в примере, синтаксический элемент здесь может включать в себя информацию индикации, относящуюся к текущему блоку изображения, и информация индикации используется для указания определения второй информации о движении на основе первой информации о движении. Кроме того, в некоторых примерах видеокодер 102 может отправлять сигнал для уведомления о конкретном синтаксическом элементе, указывающем, следует ли определять вторую информацию о движении на основе первой информации о движении.
[00134] Блок 402 обратного квантования выполняет обратное квантование, другими словами, деквантует квантованный коэффициент преобразования, обеспеченный в битовом потоке и декодированный посредством энтропийного декодера 401. Процесс обратного квантования может включать в себя этапы, на которых: определяют степень квантования, подлежащую применению, с использованием параметра квантования, вычисленного посредством видеокодера 102 для каждого блока изображения в слайсе видео, и аналогично определяют степень обратного квантования, которая должна применяться. Обратный преобразователь 403 выполняет обратное преобразование, например обратное DCT, обратное целочисленное преобразование или концептуально подобный процесс обратного преобразования над коэффициентом преобразования для формирования остаточного блока области сэмпла.
[00135] После того, как блок 406 обработки предсказания формирует блок изображения предсказания для текущего блока изображения или блок изображения предсказания для подблока текущего блока изображения, видеодекодер 202 суммирует остаточный блок от обратного преобразователя 403 и соответствующий сформированный блок изображения предсказания, сформированный посредством блока 406 обработки предсказанй для получения восстановленного блока, другими словами, декодированного блока изображения. Сумматор 409 (который также упоминается как блок 409 восстановления) представляет компонент, который выполняет эту операцию суммирования. При необходимости фильтр (в цикле декодирования или после цикла декодирования) может дополнительно использоваться для сглаживания сэмплов, или качество видео может быть улучшено другим способом. Фильтр 404 может быть одним или несколькими контурными фильтрами, например фильтром исключения блочности, адаптивным контурным фильтром (ALF - adaptive loop filter) и сэмпл-адаптивным фильтром смещения (SAO - sample adaptive offset).
[00136] Следует понимать, что другие структурные варианты видеодекодера 202 могут использоваться для декодирования битового потока. Например, для некоторых блоков изображения или кадров изображения энтропийный декодер 401 видеодекодера 202 не получает квантованный коэффициент посредством декодирования, и, соответственно, обработка посредством обратного квантователя 402 и обратного преобразователя 403 не требуется. Например, обратный квантователь 402 и обратный преобразователь 403 в видеодекодере 202 могут быть объединены.
[00137] На основе системы 1 кодирования видео, показанной на фиг. 1, видеокодер 102, показанный на фиг. 2, и видеодекодер 202, показанный на фиг. 3, ниже подробно описан способ двунаправленного межкадрового предсказания, обеспеченный в настоящей заявке.
[00138] Фиг. 4 - схематическая блок-схема способа двунаправленного межкадрового предсказания согласно варианту осуществления настоящей заявки. Способ, показанный на фиг. 4, выполняется посредством устройства двунаправленного межкадрового предсказания. Устройство двунаправленного межкадрового предсказания может быть видеодекодером 202 на фиг. 1. Фиг. 4 описывается с использованием примера, в котором устройство двунаправленного межкадрового предсказания является видеодекодером 202.
[00139] Как показано на фиг. 4, способ двунаправленного межкадрового предсказания в этом варианте осуществления настоящей заявки может включать в себя следующие этапы.
[00140] S400: Видеодекодер 202 проводит синтаксический анализ полученного битового потока и получает информацию индикации.
[00141] Необязательно, видеодекодер 202 проводит синтаксический анализ битового потока и определяет на основе значения синтаксического элемента в битовом потоке режим межкадрового предсказания, используемый для выполнения межкадрового предсказания для текущего блока изображения в текущем кадре. Когда режим межкадрового предсказания является режимом двустороннего межкадрового предсказания, видеодекодер 202 получает информацию индикации.
[00142] Видеодекодер 202 может принимать кодированный битовый поток, отправленный посредством видеокодера 102, или может получать кодированный битовый поток из запоминающего устройства 40.
[00143] Необязательно, видеодекодер 202 в этом варианте осуществления настоящей заявки определяет, на основе значения синтаксического элемента inter_pred_idc, режим межкадрового предсказания, используемый для выполнения межкадрового предсказания для текущего блока изображения в текущем кадре. Из вышеприведенного описания можно узнать, что межкадровое предсказание включает в себя однонаправленное межкадровое предсказание и двунаправленное межкадровое предсказание. Необязательно, когда значение синтаксического элемента inter_pred_idc равно 0, видеодекодер 202 определяет, что режим межкадрового предсказания, используемый для выполнения межкадрового предсказания для текущего блока изображения в текущем кадре, является прямым межкадровым предсказанием. Когда значение синтаксического элемента inter_pred_idc равно 1, видеодекодер 202 определяет, что режим межкадрового предсказания, используемый для выполнения межкадрового предсказания для текущего блока изображения в текущем кадре, является обратным межкадровым предсказанием. Когда значение синтаксического элемента inter_pred_idc равно 2, видеодекодер 202 определяет, что режим межкадрового предсказания, используемый для выполнения межкадрового предсказания для текущего блока изображения в текущем кадре, является двунаправленным межкадровым предсказанием.
[00144] Необязательно, после определения того, что значение синтаксического элемента inter_pred_idc равно 2, видеодекодер 202 получает информацию индикации, используемую для указания определения второй информации о движении на основе первой информации о движении. Первая информация о движении - это информация о движении текущего блока изображения в первом направлении, вторая информация о движении - это информация о движении текущего блока изображения во втором направлении, а первое направление и второе направление различны.
[00145] Блок изображения в настоящей заявке может быть базовым блоком для выполнения кодирования видео или декодирования видео, например, блоком кодирования (Coding Unit, CU), или может быть базовым блоком для выполнения операции предсказания, например, блоком предсказания (Prediction Unit, PU). Это не является конкретно ограниченным в этом варианте осуществления настоящей заявки.
[00146] Если блок изображения является базовым блоком для выполнения кодирования видео или декодирования видео, текущий блок изображения в этом варианте осуществления настоящей заявки включает в себя по меньшей мере один подблок. Соответственно, первая информация о движении включает в себя информацию о движении каждого из по меньшей мере одного подблока в текущем блоке изображения в первом направлении, вторая информация о движении включает в себя информацию о движении каждого из по меньшей мере одного подблока в текущем блоке изображения во втором направлении, и информация индикации используется для указания определения информации о движении подблока во втором направлении на основе информации о движении подблока в первом направлении.
[00147] Видеодекодер 202 может получать информацию индикации множеством способов.
[00148] В первой реализации видеодекодер 202 проводит синтаксический анализ первого идентификатора. Когда значение первого идентификатора является первым предварительно заданным значением, видеодекодер 202 определяет провести синтаксический анализ первой информации о движении и определяет вторую информацию о движении на основе первой информации о движении. Другими словами, видеодекодер 202 получает информацию индикации. Когда значение первого идентификатора является восьмым предварительно заданным значением, видеодекодер 202 проводит синтаксический анализ битового потока для получения пятого идентификатора. Когда значение пятого идентификатора является пятым предварительно заданным значением, видеодекодер 202 определяет провести синтаксический анализ второй информации о движении и вычисляет первую информацию о движении на основе второй информации о движении. Когда значение пятого идентификатора является девятым предварительно заданным значением, видеодекодер 202 получает первую информацию о движении и вторую информацию о движении. Первое предварительно заданное значение и пятое предварительно заданное значение могут быть одинаковыми или разными. Это не является конкретно ограниченным в этом варианте осуществления настоящей заявки.
[00149] Например, первый идентификатор - это mv_dehibited_flag_l0, пятый идентификатор - mv_dehibited_flag_l1, первое предварительно заданное значение и пятое предварительно заданное значение равны 1, а восьмое предварительно заданное значение и девятое предварительно заданное значение равны 0. Видеодекодер 202 сначала проводит синтаксический анализ mv_dehibited_flag_l0. Когда значение mv_dehibited_flag_l0 равно 1, видеодекодер 202 проводит синтаксический анализ первой информации о движении и определяет вторую информацию о движении на основе первой информации о движении. Когда значение mv_dehibited_flag_l0 равно 0, видеодекодер 202 проводит синтаксический анализ mv_dehibited_flag_l1. Когда значение mv_dehibited_flag_l1 равно 1, видеодекодер 202 проводит синтаксический анализ второй информации о движении и вычисляет первую информацию о движении на основе второй информации о движении. Когда и значение mv_dehibited_flag_l0, и значение mv_dehibited_flag_l1 равны 0, видеодекодер 202 проводит синтаксический анализ первой информации о движении и второй информации о движении.
[00150] Во второй реализации видеодекодер 202 проводит синтаксический анализ второго идентификатора. Когда значение второго идентификатора является вторым предварительно заданным значением, видеодекодер 202 определяет вычислить информацию о движении текущего блока изображения, используя алгоритм получения информации о движении. Затем видеодекодер 202 проводит синтаксический анализ третьего идентификатора. Когда значение третьего идентификатора является третьим предварительно заданным значением, видеодекодер 202 определяет провести синтаксический анализ первой информации о движении и определяет вторую информацию о движении на основе первой информации о движении. Другими словами, видеодекодер 202 получает информацию индикации. Когда значение третьего идентификатора является шестым предварительно заданным значением, видеодекодер 202 определяет провести синтаксический анализ второй информации о движении и вычисляет первую информацию о движении на основе второй информации о движении.
[00151] Например, вторым идентификатором является derived_mv_flag, третьим идентификатором - derived_mv_direction, третье предварительно заданное значение равно 1, а шестое предварительно заданное значение - 0. Видеодекодер 202 сначала проводит синтаксический анализ derived_mv_flag. Когда значение derived_mv_flag равно 1, видеодекодер 202 определяет вычислить информацию о движении текущего блока изображения с использованием алгоритма получения информации о движении. Когда значение derived_mv_flag равно 0, видеодекодер 202 проводит синтаксический анализ первой информации о движении и второй информации о движении. Когда значение derived_mv_direction равно 1, видеодекодер 202 проводит синтаксический анализ первой информации о движении и определяет вторую информацию о движении на основе первой информации о движении. Когда значение derived_mv_direction равно 0, видеодекодер 202 проводит синтаксический анализ второй информации о движении и вычисляет первую информацию о движении на основе второй информации о движении.
[00152] В третьей реализации видеодекодер 202 проводит синтаксический анализ второго идентификатора. Когда значение второго идентификатора является вторым предварительно заданным значением, видеодекодер 202 определяет вычислить информацию о движении текущего блока изображения, используя алгоритм получения информации о движении. Затем видеодекодер 202 определяет на основе предварительно заданного полученного направления провести синтаксический анализ первой информации о движении, и определяет вторую информацию о движении на основе первой информации о движении. Другими словами, видеодекодер 202 получает информацию индикации. Другими словами, в этой реализации предварительно задано «определение второй информации о движении на основе первой информации о движении». Когда значение второго идентификатора является седьмым предварительно заданным значением, видеодекодер 202 проводит синтаксический анализ первой информации о движении и второй информации о движении.
[00153] Например, вторым идентификатором является derived_mv_flag, вторым предварительно заданным значением является 1, а седьмым предварительно заданным значением является 0. Видеодекодер 202 проводит синтаксический анализ derived_mv_flag. Когда значение derived_mv_flag равно 1, видеодекодер 202 определяет вычислить информацию о движении текущего блока изображения с использованием алгоритма получения информации о движении. Кроме того, видеодекодер 202 определяет провести синтаксический анализ первой информации о движении и определяет вторую информацию о движении на основе первой информации о движении. Когда значение derived_mv_flag равно 0, видеодекодер 202 проводит синтаксический анализ первой информации о движении и второй информации о движении.
[00154] В четвертой реализации видеодекодер 202 проводит синтаксический анализ четвертого идентификатора (например, mv_dehibited_flag_l0). Когда значение четвертого идентификатора является четвертым предварительно заданным значением, видеодекодер 202 определяет вычислить информацию о движении текущего блока изображения, используя алгоритм получения информации о движении, и вычисляет переменную derived_ref_num на основе первого списка опорных кадров и второго списка опорных кадров. Переменная представляет собой количество зеркально отображаемых/линейных пар опорных кадров, которые могут быть образованы посредством первого опорного кадра и второго опорного кадра. Когда количество пар опорных кадров равно 1, видеодекодер 202 непосредственно определяет значения индексов опорных кадров. Затем видеодекодер 202 определяет на основе предварительно заданного полученного направления провести синтаксический анализ перво информации о движении, и определяет вторую информацию о движении на основе первой информации о движении. Другими словами, видеодекодер 202 получает информацию индикации. Первый список опорных кадров - это список опорных кадров текущего блока изображения в первом направлении, второй список опорных кадров - это список опорных кадров текущего блока изображения во втором направлении, первый опорный кадр является опорным кадром текущего блока изображения в первом направлении, а второй опорный кадр является опорным кадром текущего блока изображения во втором направлении. Значение индекса опорного кадра в данном варианте осуществления настоящей заявки является номером опорного кадра в соответствующем списке опорных кадров.
[00155] Например, порядковый номер текущего кадра равен 4, первый список опорных кадров - {2, 0}, второй список опорных кадров - {6, 7}, и определено на основе нижеследующего условия B или условия C, что опорный кадр, порядковый номер которого равен 2 в первом списке опорных кадров, и опорный кадр, порядковый номер которого равен 6 во втором списке опорных кадров, могут составлять пару опорных кадров. В этом случае, как значение индекса первого опорного кадра, так и значение индекса второго опорного кадра равно 0.
[00156] Например, порядковый номер текущего кадра равен 4, первый список опорных кадров - {2, 0}, второй список опорных кадров - {6, 7}, и определено на основе нижеследующего условия B или условия C, что опорный кадр, порядковый номер которого равен 2 в первом списке опорных кадров, и опорный кадр, порядковый номер которого равен 6 во втором списке опорных кадров, может составлять пару опорных кадров, и что опорный кадр, порядковый номер которого равен 0 в первом списке опорных кадров и опорный кадр, порядковый номер которого равен 7 во втором списке опорных кадров, также могут составлять пару опорных кадров. В этом случае, видеодекодер 202 должен провести синтаксический анализ значения индекса опорного кадра.
[00157] Кроме того, при определении того, что режим межкадрового предсказания является режимом двунаправленного межкадрового предсказания, видеодекодер 202 может дополнительно определять, удовлетворяет ли информация о характеристиках текущего кадра предварительно заданному условию. Таким образом, когда информация о характеристиках текущего кадра удовлетворяет предварительно заданному условию, видеодекодер 202 получает информацию индикации. В частности, процесс S401 может быть следующим: видеодекодер 202 получает информацию индикации при определении того, что режим межкадрового предсказания является режимом двунаправленного межкадрового предсказания и что информация о характеристиках текущего кадра удовлетворяет первому предварительно заданному условию.
[00158] Информация о характеристиках текущего кадра включает в себя по меньшей мере одно из порядкового номера, ID а временного уровня (Temporal Level ID, TID) или количества опорных кадров. Битовый поток, полученный посредством видеодекодера 202, включает в себя набор параметров последовательности (Sequence Parameter Set, SPS), набор параметров изображения (Picture Parameter Set, PPS), заголовок слайса (slice header) или заголовок сегмента слайса (slice segment header), и кодированные данные изображения. Затем видеодекодер 202 проводит синтаксический анализ битового потока для получения информации о характеристиках текущего кадра.
[00159] Предварительно заданное условие включает в себя по меньшей мере одно из следующих условий:
[00160] Условие A: текущий блок изображения имеет по меньшей мере два опорных кадра.
[00161] Условие В: Порядковый номер текущего кадра, порядковый номер первого опорного кадра и порядковый номер второго опорного кадра удовлетворяет следующей формуле:
[00162] В приведенной выше формуле,  представляет собой порядковый номер текущего кадра,  представляет собой порядковый номер первого опорного кадра,  представляет собой порядковый номер второго опорного кадра, первый опорный кадр представляет собой опорный кадр текущего блока изображения в первом направлении, а второй опорный кадр является опорным кадром текущего блока изображения во втором направлении.
[00163] Условие C: порядковый номер текущего кадра, порядковый номер первого опорного кадра, и порядковый номер второго опорного кадра удовлетворяют следующей формуле:
[00164] В приведенной выше формуле,  представляет собой порядковый номер текущего кадра,  представляет собой порядковый номер первого опорного кадра,  представляет собой порядковый номер второго опорного кадра, первый опорный кадр представляет собой опорный кадр текущего блока изображения в первом направлении, а второй опорный кадр является опорным кадром текущего блока изображения во втором направлении.
[00165] Условие D: TID текущего кадра больше или равен предварительно заданному значению.
[00166] Предварительно заданное условие в этом варианте осуществления настоящей заявки может быть предварительно задано или может быть указано в синтаксисе более высокого уровня, например, в наборе параметров, таком как SPS, PPS, заголовок слайса (slice header) или заголовок сегмента слайса (slice segment header). Это не является конкретно ограниченным в этом варианте осуществления настоящей заявки.
[00167] В частности, для условия B (или условия С), видеодекодер 202 получает один порядковый номер опорного кадра из каждого из первого списка опорных кадров и второго списка опорных кадров, и определяет, удовлетворяют ли полученный порядковый номер опорного кадра и порядковый номер текущего кадра условию B или условию C. Информацию индикации получают, когда удовлетворяется условие B (или условие C).
[00168] В этом варианте осуществления настоящей заявки способ, используемый посредством видеодекодера 202 для получения информации индикации при определении того, что режим межкадрового предсказания является режимом двунаправленного межкадрового предсказания и что информация о характеристиках текущего кадра удовлетворяет предварительно заданному условию, является таким же, как способ, используемый посредством видеодекодера 202 для получения информации индикации при определении того, что режим межкадрового предсказания является режимом двунаправленного межкадрового предсказания.
[00169] На основании вышеизложенного описания таблица 1 представляет собой таблицу синтаксиса, используемую, когда видеодекодер 202 получает, при определении того, что режим межкадрового предсказания является режимом двунаправленного межкадрового предсказания и что информация о характеристиках текущего кадра удовлетворяет предварительно заданному условию, информацию индикации в первой реализации. prediction_unit() является синтаксической структурой блока изображения предсказания и описывает способ определения информации о движении каждого подблока в текущем блоке изображения.
[00170] В таблице 1 x0 и y0 соответственно указывают смещение по горизонтальной координате и смещение по вертикальной координате подблока в текущем блоке изображения относительно верхнего левого угла текущего блока изображения, nPbW указывает ширину текущего блока изображения, и nPbH указывает высоту текущего блока изображения. Когда значение inter_pred_idc[x0][y0] равно PRED_L0, это указывает, что межкадровое предсказание текущего подблока является прямым предсказанием. Когда значение inter_pred_idc[x0][y0] равно PRED_L1, это указывает, что межкадровое предсказание текущего подблока является обратным предсказанием. Когда значение inter_pred_idc[x0][y0] равно PRED_BI, это указывает, что межкадровое предсказание текущего подблока является двунаправленным предсказанием.
[00171] Для двунаправленного межкадрового предсказания (то есть inter_pred_idc[x0][y0] == PRED_BI), если предварительно заданное условие (условия) удовлетворяется (удовлетворяются), проводится синтаксический анализ mv_dehibited_flag_l0[x0][y0]. Если значение mv_dehibited_flag_l0 не является первым предварительно заданным значением, проводится синтаксический анализ mv_dehibited_flag_l1[x0][y0]. Когда значение mv_derived_flag_l0 является первым предварительно заданным значением или значение mv_derived_flag_l1[х0][у0] является пятым предварительно заданным значением, информация о движении подблока текущего блока изображения определяется, более конкретно, определяются значение индекса опорного кадра ref_idx_l0[x0][y0], метка предиктора вектора движения mvp_l0_flag[x0][y0] и разность векторов движения mvd_coding(x0, y0, 0).
Таблица 1
prediction_unit (x0, y0, nPbW, nPbH) {
…
/*кодирование вектора движения*/
if( slice_type==B )
inter_pred_idc[x0][y0]
if( inter_pred_idc[x0][y0]==PRED_L0 ) {
if( num_ref_idx_l0_active_minus1 > 0 )
ref_idx_l0[x0][y0]
mvd_coding( x0, y0, 0 )
mvp_l0_flag[x0][y0]
}
if( inter_pred_idc[x0][y0]==PRED_L1 ) {
if( num_ref_idx_l1_active_minus1 > 0 )
ref_idx_l1[x0][y0]
mvd_coding( x0, y0, 1)
mvp_l1_flag[x0][y0]
}
if( inter_pred_idc[x0][y0]==PRED_BI ) {
if( conditions ) {
mv_derived_flag_l0[x0][y0]
if( !mv_derived_flag_l0[x0][y0]) {
mv_derived_flag_l1[x0][y0]
}
if( !mv_derived_flag_l0[x0][y0]) {
if( num_ref_idx_l0_active_minus1 > 0 )
ref_idx_l0[x0][y0]
mvd_coding( x0, y0, 0 )
mvp_l0_flag[x0][y0]
}
if( !mv_derived_flag_l1[x0][y0]) {
if( num_ref_idx_l1_active_minus1 > 0 )
ref_idx_l1[x0][y0]
mvd_coding(x0, y0, 0 )
mvp_l1_flag[x0][y0]
}
}
[00172] На основе вышеизложенного описания Таблица 2 представляет собой таблицу синтаксиса, используемую, когда видеодекодер 202 получает, при определении того, что режим межкадрового предсказания является режимом двунаправленного межкадрового предсказания и что информация о характеристиках текущего кадра удовлетворяет предварительно заданному условию, информацию индикации с использованием третьей реализации.
[00173] В Таблице 2 для двунаправленного межкадрового предсказания (другими словами, inter_pred_idc[x0][y0] == PRED_BI), если предварительно заданное условие (условия) удовлетворяется (удовлетворяются), проводится синтаксический анализ derived_mv_flag[x0][y0]. Когда значение derived_mv_flag[x0][y0] является вторым предварительно заданным значением, информация о движении подблока текущего блока изображения определяется, более конкретно, определяются значение индекса опорного кадра ref_idx_lx[х0][у0], метка предиктора вектора движения mvp_lx_flag[x0][y0] и разность векторов движения mvd_coding(x0, y0, x).
Таблица 2
prediction_unit (x0, y0, nPbW, nPbH) {
…
/*кодирование вектора движения*/
if( slice_type==B )
inter_pred_idc[x0][y0]
if( inter_pred_idc[x0][y0]==PRED_L0 ) {
if( num_ref_idx_l0_active_minus1 > 0 )
ref_idx_l0[x0][y0]
mvd_coding( x0, y0, 0 )
mvp_l0_flag[x0][y0]
}
if( inter_pred_idc[x0][y0]==PRED_L1 ) {
if( num_ref_idx_l1_active_minus1 > 0 )
ref_idx_l1[x0][y0]
mvd_coding( x0, y0, 1)
mvp_l1_flag[x0][y0]
}
if( inter_pred_idc[x0][y0]==PRED_BI ) {
if( conditions ) {
derived_mv_flag[ x0 ][ y0 ]
if( derived_mv_flag[x0][y0] ) {
if( num_ref_idx_lx_active_minus1 > 0 )
ref_idx_lx[ x0 ][ y0 ]
mvd_coding( x0, y0, x )
mvp_lx_flag[ x0 ][ y0 ]
} else {
…
}
}
[00174] На основе вышеприведенных описаний таблица 3 представляет собой таблицу синтаксиса, используемую, когда видеодекодер 202 получает, при определении того, что режим межкадрового предсказания является режимом двунаправленного межкадрового предсказания и что информация о характеристиках текущего кадра удовлетворяет первому предварительно заданному условию, информацию индикации с использованием четвертой реализации.
[00175] В Таблице 3 для двунаправленного межкадрового предсказания (другими словами, inter_pred_idc[x0][y0] == PRED_BI), если предварительно заданное условие (условия) удовлетворяется (удовлетворяются), проводится синтаксический анализ derived_mv_flag[x0][y0]. Когда значение derived_mv_flag[x0][y0] является четвертым предварительно заданным значением, определяется derived_ref_num, а когда значение derived_ref_num больше 1, определяется информация о движении подблока в текущем блоке изображения, а именно, определяются значение индекса опорного кадра ref_idx_lx[х0][у0], метка предиктора вектора движения mvp_lx_flag[х0][у0], и разность векторов движения mvd_coding(х0, у0, х).
Таблица 3
prediction_unit (x0, y0, nPbW, nPbH) {
…
/*кодирование вектора движения*/
if( slice_type==B )
inter_pred_idc[x0][y0]
if( inter_pred_idc[x0][y0]==PRED_L0 ) {
if( num_ref_idx_l0_active_minus1 > 0 )
ref_idx_l0[x0][y0]
mvd_coding( x0, y0, 0 )
mvp_l0_flag[x0][y0]
}
if( inter_pred_idc[x0][y0]==PRED_L1 ) {
if( num_ref_idx_l1_active_minus1 > 0 )
ref_idx_l1[x0][y0]
mvd_coding( x0, y0, 1)
mvp_l1_flag[x0][y0]
}
if( inter_pred_idc[x0][y0]==PRED_BI ) {
if( conditions ) {
derived_mv_flag[x0][y0]
if( derived_mv_flag[x0][y0] ) {
if( num_ref_idx_lx_active_minus1 > 0 && derived_ref_num > 1)
ref_idx_lx[x0][y0]
mvd_coding(x0, y0, x )
mvp_lx_flag[x0][y0]
} else {
…
}
}
[00176] Первый идентификатор, второй идентификатор, третий идентификатор и четвертый идентификатор могут быть предварительно заданы или могут быть указаны в синтаксисе более высокого уровня, например, в наборе параметров, таком как SPS, PPS, заголовок слайса (slice header) или заголовок сегмента слайса (slice segment header). Это не является конкретно ограниченным в этом варианте осуществления настоящей заявки.
[00177] Видеодекодер 202 получает информацию индикации при определении того, что режим межкадрового предсказания является режимом двунаправленного межкадрового предсказания и что информация о характеристиках текущего кадра удовлетворяет предварительно заданному условию. Это эффективно улучшает скорость декодирования видеодекодера 202 и снижает избыточность информации.
[00178] S401: Видеодекодер 202 получает первую информацию о движении.
[00179] Необязательно, видеодекодер 202 проводит синтаксический анализ битового потока для получения значения индекса первого опорного кадра, первой метки предиктора вектора движения и первой разности векторов движения, другими словами, для получения первой информации о движении. Первая метка предиктора вектора движения используется для указания значения индекса первого предсказанного вектора движения в первом списке возможных векторов движения, первый предсказанный вектор движения представляет собой предсказанный вектор движения текущего блока изображения в первом направлении, первая разность векторов движения - это разность между первым предсказанным вектором движения и первым вектором движения, а первый вектор движения - это вектор движения текущего блока изображения в первом направлении.
[00180] В каждой из синтаксических таблиц, показанных в таблицах с 1 по 3, видеодекодер 202 определяет информацию о движении подблока в текущем блоке изображения в первом направлении.
[00181] S402: Видеодекодер 202 определяет вторую информацию о движении на основе первой информации о движении.
[00182] В первой реализации видеодекодером 202 для определения второй информации о движении используется следующий способ: видеодекодер 202 выбирает значение индекса первого опорного кадра из первой информации о движении, и определяет порядковый номер первого опорного кадра на основании значения индекса первого опорного кадра и первого списка опорных кадров; вычисляет порядковый номер второго опорного кадра на основании порядкового номера текущего кадра и порядкового номера первого опорного кадра в соответствии с предварительно заданной формулой; определяет значение индекса второго опорного кадра на основании порядкового номера второго опорного кадра и второго списка опорных кадров; и определяет вторую информацию о движении на основе первой информации о движении и значении индекса второго опорного кадра.
[00183] Здесь предварительно заданная формула может иметь вид . POC_Cur представляет собой порядковый номер текущего кадра, POC_listX представляет собой порядковый номер первого опорного кадра и POC_listY представляет собой порядковый номер второго опорного кадра.
[00184] Например, если порядковый номер текущего кадра равен 4, порядковый номер первого опорного кадра равен 2, второй список опорных кадров - [6, 8], и определено, в соответствии с формулой , что порядковый номер второго опорного кадра равен 6, видеодекодер 202 определяет, что значение индекса ref_lY_idx второго опорного кадра равен 0.
[00185] Необязательно, предварительно заданная формула может иметь вид . Следует отметить, что, если множество порядковых номеров опорных кадров во втором списке опорных кадров удовлетворяют формуле, видеодекодер 202 сначала выбирает опорный кадр с минимальным значением abs((POC_listY-POC_Cur) - (POC_Cur-POC_listX)), а затем выбирает опорный кадр с минимальным значением abs(POC_listY-POC_Cur), чтобы определить значение индекса второго опорного кадра. abs - это функция абсолютного значения.
[00186] Например, если порядковый номер текущего кадра равен 4, порядковый номер первого опорного кадра равен 2, второй список опорных кадров - [5, 7, 8], и определено, в соответствии с формулой , что порядковый номер второго опорного кадра равен 5, видеодекодер 202 определяет, что значение индекса ref_lY_idx второго опорного кадра равно 0.
[00187] Необязательно, предварительно заданная формула может альтернативно иметь вид . Следует отметить, что, если множество порядковых номеров опорных кадров во втором списке опорных кадров удовлетворяют формуле, то видеодекодер 202 сначала выбирает опорный кадр с минимальным значением abs((POC_listY-POC_Cur) - (POC_Cur-POC_listX)), а затем выбирает опорный кадр с минимальным значением abs(POC_listY-POC_Cur), чтобы определить значение индекса второго опорного кадра. abs - это функция абсолютного значения.
[00188] Например, если порядковый номер текущего кадра равен 4, порядковый номер первого опорного кадра равен 2, второй список опорных кадров - [3, 2, 1, 0], и определено, в соответствии с формулой , что порядковый номер второго опорного кадра равен 3, видеодекодер 202 определяет, что значение индекса ref_lY_idx второго опорного кадра равен 0.
[00189] В качестве альтернативы предварительно заданная формула может иметь вид ,  и . В этом случае способ, используемый посредством видеодекодера 202 для определения значения индекса второго опорного кадра, в частности, содержит этапы, на которых: вычисляют первый порядковый номер на основе порядкового номера текущего кадра и порядкового номера первого опорного кадра, с использованием формулы POC_listY0 = 2*POC_Cur-POC_listX, где POC_Cur представляет собой порядковый номер текущего кадра, POC_listX представляет собой порядковый номер первого опорного кадра и POC_listY0 представляет собой первый порядковый номер; и когда второй список опорных кадров включает в себя первый порядковый номер, определяют, как значение индекса второго опорного кадра, номер опорного кадра, представленный посредством первого порядкового номера во втором списке опорных кадров; или когда второй список опорных кадров не включает в себя первый порядковый номер, вычисляют второй порядковый номер на основе порядкового номера текущего кадра и порядкового номера первого опорного кадра, используя (POC_Cur-POC_listX)*(POC_listY0'- POC_Cur) > 0, где POC_listY0' представляет собой второй порядковый номер, а когда второй список опорных кадров включает в себя второй порядковый номер, определяют, как значение индекса второго опорного кадра, номер опорного кадра, представленный посредством второго порядкового номера во втором списке опорных кадров, или когда второй список опорных кадров не включает в себя второй порядковый номер, вычисляют третий порядковый номер на основе порядкового номера текущего кадра и порядкового номера первого опорного кадра, используя формулу POC_listX ≠ POC_listY0'', где POC_listY0'' представляет собой третий порядковый номер, и определяют, как значение индекса второго опорного кадра, номер опорного кадра, представленного посредством третьего порядкового номера во втором списке опорных кадров.
[00190] Во второй реализации видеодекодером 202 для определения второй информации о движении используется следующий способ: видеодекодер 202 проводит синтаксический анализ битового потока для получения значения индекса второго опорного кадра, и определяют вторую информацию о движении на основе первой информации о движении и значения индекса второго опорного кадра. Значение индекса второго опорного кадра может быть предварительно заданным, или может быть задано в наборе параметров, например, в SPS, PPS, заголовке слайса (slice header), или заголовке сегмента слайса (slice segment header). Это не является конкретно ограниченным в этом варианте осуществления настоящей заявки.
[00191] Может быть известно, что, как в первом варианте осуществления, так и во втором варианте осуществления, видеодекодер 202 определяет вторую информацию о движении на основе первой информации о движении и значения индекса второго опорного кадра.
[00192] Необязательно, видеодекодер 202 может вычислить всю информацию о движении текущего блока изображения во втором направлении или может вычислить часть информации о движении текущего блока изображения во втором направлении.
[00193] Ниже описан процесс, в котором видеодекодер 202 определяет вторую информацию о движении на основе первой информации о движении и значения индекса второго опорного кадра.
[00194] Необязательно, способ, используемый видеодекодером 202 для определения второй информации о движении на основе первой информации о движении и значения индекса второго опорного кадра может содержать этапы, на которых: получают значение индекса первого опорного кадра в первой информации о движении, и определяют порядковый номер первого опорного кадра на основании значения индекса первого опорного кадра и первого списка опорных кадров; получают значение индекса второго опорного кадра, и определяют порядковый номер второго опорного кадра на основании значения индекса второго опорного кадра и второго списка опорных кадров; определяют первый вектор движения (вектор движения текущего блока изображения в первом направлении) на основе первой разности векторов движения и первой метки предиктора вектора движения, которые находятся в первой информации о движении; и получают второй вектор движения во второй информации о движении согласно следующей формуле:
[00195] В приведенных выше формулах,  представляет собой второй вектор движения,  представляет собой порядковый номер текущего кадра,  представляет собой порядковый номер первого опорного кадра,  представляет собой порядковый номер второго опорного кадра,  представляет собой первый вектор движения, и второй вектор движения - это вектор движения текущего блока изображения во втором направлении.
[00196] Видеодекодер 202 создает список информации о возможном движении таким же образом, как кодер создает список информации о возможном движении в режиме AMVP или режиме объединения, и определяет первый предсказанный вектор движения в списке информации о возможном движении на основе метки предсказания первого вектора движения. Таким образом, видеодекодер 202 может определять сумму первого предсказанного вектора движения и первой разности векторов движения как первый вектор движения.
[00197] Необязательно, когда первый опорный кадр является будущим опорным кадром текущего блока изображения, а второй опорный кадр является предыдущим опорным кадром текущего блока изображения или когда первый опорный кадр является предыдущим опорным кадром текущего блока изображения, а второй опорный кадр является будущим опорным кадром текущего блока изображения, или когда каждый из первого опорного кадра и второго опорного кадра является будущим опорным кадром текущего блока изображения, или когда каждый из первого опорного кадра и второго опорного кадра является предыдущим опорным кадром текущего блока изображения, видеодекодер 202 может непосредственно установить .
[00198] Например, как то, что «первый опорный кадр является будущим опорным кадром текущего блока изображения, а второй опорный кадр - предыдущим опорным кадром текущего блока изображения», так и то, что «первый опорный кадр является предыдущим опорным кадром текущего блока изображения, а второй опорный кадр является будущим опорным кадром текущего блока изображения », может быть представлено с использованием формулы  или может быть представлено с использованием формулы .
[00199] И то, что «первый опорный кадр и второй опорный кадр, каждый является будущим опорным кадром текущего блока изображения», и то, что «первый опорный кадр и второй опорный кадр, каждый является предыдущим опорным кадром текущего блока изображения» может быть представлено как с использованием формулы .
[00200] Необязательно, способ, используемый видеодекодером 202 для определения второй информации о движении на основе первой информации о движении и значения индекса второго опорного кадра содержать этапы, на которых: получают значение индекса первого опорного кадра и первую разность векторов движения, находящихся в первой информации о движении, и определяют порядковый номер первого опорного кадра на основании значения индекса первого опорного кадра и первого списка опорных кадров; получают значение индекса второго опорного кадра, определяют порядковый номер второго опорного кадра на основе значения индекса второго опорного кадра и второго списка опорных кадров и определяют второй предсказанный вектор движения на основе значения индекса второго опорного кадра и второго списка возможных  предсказанных векторов движения, где второй предсказанный вектор движения является предсказанным вектором движения текущего блока изображения во втором направлении; получают вторую разность векторов движения во второй информации о движении по следующей формуле:
где  представляет вторую разность векторов движения,  представляет собой порядковый номер текущего кадра,  представляет собой порядковый номер первого опорного кадра,  представляет собой порядковый номер второго опорного кадра, и  представляет собой первую разность векторов движения; и определяют второй вектор движения на основе второго предсказанного вектора движения и второй разности векторов движения, где второй вектор движения является вектором движения текущего блока изображения во втором направлении.
[00201] Необязательно, когда первый опорный кадр является будущим опорным кадром текущего блока изображения, а второй опорный кадр является предыдущим опорным кадром текущего блока изображения или когда первый опорный кадр является предыдущим опорным кадром текущего блока изображения, а второй опорный кадр является будущим опорным кадром текущего блока изображения, или когда каждый из первого опорного кадра и второго опорного кадра является будущим опорным кадром текущего блока изображения, или когда каждый из первого опорного кадра и второго опорного кадра является предыдущим опорным кадром текущего блока изображения, видеодекодер 202 может непосредственно установить .
[00202] Например, если , POC_listY = 2*POC_Cur-POC_listX или (POC_Cur-POC_listX) * (POC_listY-POC_Cur) < 0, видеодекодер 202 непосредственно устанавливает mvd_lY = -mvd_lX.
[00203] S403: Видеодекодер 202 определяет сэмплы предсказания текущего блока изображения на основе первой информации о движении и второй информации о движении.
[00204] Необязательно, видеодекодер 202 определяет первый вектор движения и второй вектор движения на этапе S402. Таким образом, видеодекодер 202 может определять первый опорный блок изображения на основе первого вектора движения и первого списка опорных кадров и определять второй опорный блок изображения на основе второго вектора движения и второго списка опорных кадров. Кроме того, видеодекодер 202 определяет сэмплы предсказания текущего блока изображения на основе первого опорного блока изображения и второго опорного блока изображения. Другими словами, видеодекодер 202 завершает процесс компенсации движения.
[00205] Для способа, используемого посредством видеодекодера 202, чтобы определить сэмплы предсказания текущего блока изображения на основе первого опорного блока изображения и второго опорного блока изображения, обратитесь к любому существующему способу. Это не является конкретно ограниченным в этом варианте осуществления настоящей заявки.
[00206] В способе двунаправленного межкадрового предсказания, обеспеченном в этом варианте осуществления настоящей заявки, видеодекодер 202 может получить только первую информацию о движении из кодированного битового потока. После получения первой информации о движении видеодекодер 202 вычисляет вторую информацию о движении на основе первой информации о движении и дополнительно определяет сэмплы предсказания текущего блока изображения на основе первой информации о движении и второй информации о движении. Согласно способу, обеспеченному в настоящей заявке, больше не требуется передавать информацию о движении каждого блока изображения во всех направлениях, что отличается от предшествующего уровня техники. Это эффективно уменьшает количество передаваемой информации о движении и улучшает эффективное использование ресурсов передачи, скорость передачи и эффективность сжатия кодирования.
[00207] Способ двунаправленного межкадрового предсказания, показанный на фиг. 4, описывается для текущего блока изображения, то есть можно понять, что межкадровое предсказание выполняется для текущего блока изображения на основе режима AMVP.
[00208] Легко понять, что способ двунаправленного межкадрового предсказания, представленный в настоящей заявке, также применим к режиму предсказания модели непоступательного движения, например, модели движения с 4-параметрическим аффинным преобразованием, модели движения с 6-параметрическим аффинным преобразованием или модели билинейного движения с 8 параметрами. В этом сценарии текущий блок изображения включает в себя по меньшей мере один подблок, а информация о движении текущего блока изображения включает в себя информацию о движении каждого из всех подблоков текущего блока изображения. Способ, используемый посредством видеодекодера 202 для определения информации о движении (информации о движении в первом направлении и информации о движении во втором направлении) каждого подблока, аналогичен способу, используемому посредством видеодекодера 202 для определения информации о движении текущего блока изображения.
[00209] В режиме предсказания модели непоступательного движения видеодекодер 202 вычисляет вектор движения i-й контрольной точкиво втором направлении на основе вектора движения i-й контрольной точкив первом направлении согласно следующей формуле:
[00210] В приведенной выше формуле  представляет вектор движения i-й контрольнойточки во втором направлении,   представляет вектор движения i-й контрольнойточки в первом направлении,  представляет порядковый номер текущего кадра,  представляет порядковый номер первого опорного кадра и  представляет порядковый номер второго опорного кадра.
[00211] Соответственно, видеодекодер 202 вычисляет разность векторов движения i-й контрольнойточки во втором направлении на основе разности векторов движения i-й контрольнойточки в первом направлении, используя следующую формулу:
[00212] В приведенной выше формуле  представляет разность векторов движения i-й контрольнойточки во втором направлении,  представляет разность векторов движения i-й контрольнойточки в первом направлении,  представляет порядковый номер текущего кадра,  представляет собой порядковый номер первого опорного кадра и  представляют собой порядковый номер второго опорного кадра.
[00213] По сравнению с видеодекодером 202, видеокодер 102 в вариантах осуществления настоящей заявки выполняет двунаправленную оценку движения для текущего блока изображения, чтобы определить информацию о движении текущего блока изображения в первом направлении, и вычисляет информацию о движении текущего блока изображения во втором направлении на основе информации о движении текущего блока изображения в первом направлении. Таким образом, видеокодер 102 определяет блок изображения предсказания текущего блока изображения на основе информации о движении текущего блока изображения в первом направлении и информации о движении текущего блока изображения во втором направлении. Затем видеокодер 102 выполняет такие операции, как преобразование и квантование остатка между текущим блоком изображения и блоком изображения предсказания текущего блока изображения, для сформирования битового потока и отправляет битовый поток в видеодекодер 202. Битовый поток включает в себя информацию о движении текущего блока изображения в первом направлении.
[00214] Для способа, используемого посредством видеокодера 102 для вычисления информации о движении текущего блока изображения во втором направлении на основе информации о движении текущего блока изображения в первом направлении, обратитесь к способу, используемому посредством видеодекодера 202 для определения второй информации о движении, на основе первой информации о движении, другими словами, обратитесь к описаниям на этапе S402. Подробности не описываются снова в настоящей заявке.
[00215] В заключение, согласно способу двунаправленного межкадрового предсказания, обеспеченному в настоящей заявке, во время двунаправленного межкадрового предсказания больше не требуется передавать информацию о движении каждого блока изображения во всех направлениях, и необходимо передавать только информацию о движении в одном направлении. Это эффективно уменьшает количество передаваемой информации о движении и улучшает эффективное использование ресурсов передачи, скорость передачи и эффективность сжатия кодирования.
[00216] Вариант осуществления настоящей заявки обеспечивает устройство двунаправленного межкадрового предсказания. Устройство двунаправленного межкадрового предсказания может быть видеодекодером. В частности, устройство двунаправленного межкадрового предсказания выполнено с возможностью выполнения этапов, выполняемых посредством видеодекодера 202 в вышеупомянутом способе двунаправленного межкадрового предсказания. Устройство двунаправленного межкадрового предсказания, обеспеченное в этом варианте осуществления настоящей заявки, может включать в себя модули для соответствующих этапов.
[00217] В вариантах осуществления настоящей заявки устройство двунаправленного межкадрового предсказания может быть разделено на функциональные модули на основе вышеупомянутых примеров способов. Например, каждый функциональный модуль может быть получен посредством разделения на основе соответствующей функции, или две или более функций могут быть интегрированы в один модуль обработки. Интегрированный модуль может быть реализован в виде аппаратных средств или может быть реализован в виде программного функционального модуля. В вариантах осуществления настоящей заявки разделение на модули является примером и представляет собой просто разделение логических функций. При фактической реализации может использоваться другой способ разделения.
[00218] Когда каждый функциональный модуль получается посредством разделения на основе соответствующей функции, фиг. 5 - возможная схематическая структурная схема устройства двунаправленного межкадрового предсказания в вышеупомянутых вариантах осуществления. Как показано на фиг. 5, устройство 5 двунаправленного межкадрового предсказания включает в себя блок 50 получения и блок 51 определения.
[00219] Блок 50 получения выполнен с возможностью поддержки устройства двунаправленного межкадрового предсказания для выполнения S400, S401 и т.п. в вышеупомянутом варианте осуществления и/или используется в другом процессе технологии, описанной в этом описании.
[00220] Блок 51 определения выполнен с возможностью поддержки устройства двунаправленного межкадрового предсказания для выполнения S402, S403 и т.п. в вышеупомянутом варианте осуществления и/или используется в другом процессе технологии, описанной в этом описании.
[00221] Все соответствующее содержание этапов в вышеупомянутых вариантах осуществления способа может быть процитировано в описаниях соответствующих функциональных модулей. Подробности не описаны здесь снова.
[00222] Конечно, устройство двунаправленного межкадрового предсказания, обеспеченное в этом варианте осуществления настоящей заявки, включает в себя, но не ограничивается вышеупомянутыми модулями. Например, устройство двунаправленного межкадрового предсказания может дополнительно включать в себя блок 52 хранения.
[00223] Блок 52 хранения может быть выполнен с возможностью хранения программного кода и данных устройства двунаправленного межкадрового предсказания.
[00224] Когда используется интегрированный блок, фиг. 6 - схематическая структурная схема устройства двунаправленного межкадрового предсказания, обеспеченного в вариантах осуществления настоящей заявки. Как показано на фиг. 6, устройство 6 двунаправленного межкадрового предсказания включает в себя модуль 60 обработки и модуль 61 связи. Модуль 60 обработки выполнен с возможностью контроля и управления действием устройства двунаправленного межкадрового предсказания, например, выполнения этапов, выполняемых посредством блока 50 получения и блока 51 определения, и/или выполнен с возможностью выполнения другого процесса технологии, описанной в данном описании. Модуль 61 связи выполнен с возможностью поддержки взаимодействия между устройством двунаправленного межкадрового предсказания и другим устройством. Как показано на фиг. 6, устройство двунаправленного межкадрового предсказания может дополнительно включать в себя модуль 62 хранения. Модуль 62 хранения выполнен с возможностью хранения программного кода и данных устройства двунаправленного межкадрового предсказания, например, для хранения контента, хранящегося в блоке 52 хранения.
[00225] Модуль 60 обработки может быть процессором или контроллером, например, может быть центральным процессором (Central Processing Unit, CPU), процессором общего назначения, процессором цифровых сигналов (Digital Signal Processor, DSP), ASIC, FPGA или другим программируемым логическим устройством, транзисторным логическим устройством, аппаратным компонентом или любой их комбинацией. Процессор или контроллер могут реализовывать или выполнять различные примерные логические блоки, модули и схемы, описанные со ссылкой на контент, раскрытый в настоящей заявке. В качестве альтернативы процессор может быть комбинацией для реализации вычислительной функции, например, комбинацией, включающей один или несколько микропроцессоров, или комбинацией DSP и микропроцессора. Модуль 61 связи может быть приемопередатчиком, радиочастотной схемой, интерфейсом связи и т.п. Модуль 62 хранения может быть памятью.
[00226] Весь соответствующий контент сценариев в вышеупомянутых вариантах осуществления способа может быть процитирован в описаниях функций соответствующих функциональных модулей. Подробности не описаны здесь снова.
[00227] Как устройство 5 двунаправленного межкадрового предсказания, так и устройство 6 двунаправленного межкадрового предсказания могут выполнять способ двунаправленного межкадрового предсказания, показанный на фиг. 4. В частности, устройство 5 двунаправленного межкадрового предсказания и устройство 6 двунаправленного межкадрового предсказания могут быть устройствами декодирования видео или другими устройствами, имеющими функцию кодирования видео. Устройство 5 двунаправленного межкадрового предсказания и устройство 6 двунаправленного межкадрового предсказания могут быть выполнены с возможностью выполнения предсказания изображения в процессе декодирования.
[00228] Настоящая заявка дополнительно обеспечивает терминал. Терминал включает в себя один или несколько процессоров, память и интерфейс связи. Память и интерфейс связи связаны с одним или несколькими процессорами. Память выполнена с возможностью хранения компьютерного программного кода. Код компьютерной программы включает в себя инструкцию. Когда один или несколько процессоров выполняют инструкцию, терминал выполняет способ двунаправленного межкадрового предсказания в вариантах осуществления настоящей заявки.
[00229] Терминал здесь может быть устройством отображения видео, смартфоном, портативным компьютером или другим устройством, которое может обрабатывать или воспроизводить видео.
[00230] Настоящая заявка дополнительно обеспечивает видеодекодер, включающий в себя энергонезависимый носитель данных и центральный процессор. На энергонезависимом носителе данных хранится исполняемая программа. Центральный процессор подключен к энергонезависимому носителю данных и выполняет исполняемую программу для выполнения способа двунаправленного межкадрового предсказания в вариантах осуществления настоящей заявки.
[00231] Настоящая заявка дополнительно обеспечивает декодер. Декодер включает в себя устройство двунаправленного межкадрового предсказания (устройство 5 двунаправленного межкадрового предсказания или устройство 6 двунаправленного межкадрового предсказания) в вариантах осуществления настоящей заявки и модуль восстановления. Модуль восстановления выполнен с возможностью определения восстановленных значений сэмплов текущего блока изображения на основе сэмплов предсказания, полученных посредством устройства двунаправленного межкадрового предсказания.
[00232] Другой вариант осуществления настоящей заявки дополнительно обеспечивает считываемый компьютером носитель данных. Считываемый компьютером носитель данных включает в себя одну или несколько частей программного кода. Одна или несколько частей программного кода включают в себя инструкцию. Когда процессор терминала выполняет программный код, терминал выполняет способ двунаправленного межкадрового предсказания, показанный на фиг. 4.
[00233] В другом варианте осуществления настоящей заявки дополнительно обеспечивается компьютерный программный продукт. Компьютерный программный продукт включает в себя исполняемую компьютером инструкцию. Исполняемая компьютером инструкция хранится на считываемом компьютером носителе данных. По меньшей мере один процессор терминала может считывать исполняемую компьютером инструкцию со считываемого компьютером носителя данных. По меньшей мере один процессор выполняет исполняемую компьютером инструкцию в обеспечение выполнения терминалом этапов, выполняемых посредством видеодекодера 202 в способе двунаправленного межкадрового предсказания, показанном на фиг. 4.
[00234] Все или некоторые из вышеупомянутых вариантов осуществления могут быть реализованы с использованием программного обеспечения, аппаратного обеспечения, микропрограммного обеспечения или их любой комбинации. Когда программное обеспечение используется для реализации вариантов осуществления, варианты осуществления могут быть реализованы полностью или частично в форме компьютерного программного продукта. Компьютерный программный продукт включает в себя одну или более компьютерных инструкций. Когда инструкции компьютерной программы загружаются и выполняются на компьютере, процедуры или функции согласно вариантам осуществления настоящей заявки формируются полностью или частично.
[00235] Компьютер может быть компьютером общего назначения, специализированным компьютером, сетью компьютеров или другими программируемыми устройствами. Компьютерные инструкции могут храниться на считываемом компьютером носителе данных или могут передаваться с одного считываемого компьютером носителя данных на другой считываемый компьютером носитель данных. Например, компьютерные инструкции могут передаваться с веб-сайта, компьютера, сервера или центра хранения и обработки данных на другой веб-сайт, компьютер, сервер или центр хранения и обработки данных проводным (например, коаксиальный кабель, оптоволокно или цифровая абонентская линия (DSL - digital subscriber line)) или беспроводным (например, инфракрасным, радио или микроволновым) способом. Считываемый компьютером носитель данных может быть любым используемым носителем данных, доступным для компьютера, или устройством хранения данных, таким как сервер или центр обработки данных, объединяющим один или несколько используемых носителей данных. Используемый носитель данных может быть магнитным носителем данных (например, гибким диском, жестким диском или магнитной лентой), оптическим носителем данных (например, DVD), полупроводниковым носителем данных (например, твердотельным накопителем Solid State Disk (SSD)) и т.п.
[00236] Приведенное выше описание реализаций позволяет специалисту в данной области техники ясно понять, что для удобства и краткого описания разделение вышеупомянутых функциональных модулей взято в качестве примера для иллюстрации. В реальном применении вышеупомянутые функции могут быть назначены различным функциональным модулям и реализованы на основе требования, то есть внутренняя структура устройства разделена на разные функциональные модули для реализации всех или некоторых функций, описанных выше.
[00237] Следует понимать, что в нескольких вариантах осуществления, обеспеченных в настоящей заявке, раскрытые устройство и способ могут быть реализованы другими способами. Например, описанный вариант осуществления устройства является лишь примером. Например, разделение на модули или блоки является просто разделением логических функций и может быть другим разделением в фактической реализации. Например, множество блоков или компонентов могут быть объединены или интегрированы в другое устройство, или некоторые функции могут игнорироваться или не выполняться. Кроме того, отображаемые или обсуждаемые взаимные соединения или непосредственные соединения или соединения связи могут быть реализованы с использованием некоторых интерфейсов. Опосредованные соединения или соединения связи между устройствами или блоками могут быть реализованы в электрической, механической или других формах.
[00238] Блоки, описанные как отдельные части, могут быть или не быть физически отдельными, а части, отображаемые как блоки, могут быть одним или несколькими физическими блоками, могут быть расположены в одном месте или могут быть распределены в разных местах. Некоторые или все блоки могут быть выбраны на основе фактических требований для достижения целей решений в упомянутых вариантах осуществления.
[00239] Кроме того, функциональные блоки в вариантах осуществления настоящей заявки могут быть интегрированы в один блок обработки, или каждый из блоков может существовать отдельно физически, или два или более блоков интегрируются в один блок. Интегрированный блок может быть реализован в виде аппаратных средств или может быть реализован в виде программного функционального блока.
[00240] Когда интегрированный блок реализован в виде программного функционального блока и продается или используется как независимый продукт, интегрированный блок может храниться на считываемом носителе данных. Основываясь на таком понимании, технические решения в вариантах осуществления настоящей заявки по существу или часть, вносящая вклад в предшествующий уровень техники, или все или некоторые из технических решений могут быть реализованы в форме программного продукта. Программный продукт хранится на носителе данных и включает в себя несколько инструкций для выдачи инструкций устройству (которое может быть микрокомпьютером с одной микросхемой, микросхемой и т.п.) или процессору (processor) на выполнение всех или некоторых из этапов способов, описанных в вариантах осуществления настоящей заявки. Вышеуказанный носитель данных включает в себя: любой носитель данных, который может хранить программный код, такой как флэш-накопитель USB, съемный жесткий диск, постоянное запоминающее устройство (Read-Only Memory, ROM), оперативное запоминающее устройство (Random Access Memory, RAM), магнитный диск или оптический диск.
[00241] Вышеприведенное описание представляет собой лишь конкретные реализации данной заявки, но оно не предназначено для ограничения объема охраны данной заявки. Любые изменения или замены в пределах технического объема, раскрытого в настоящей заявке, должны подпадать под объем охраны настоящей заявки. Следовательно, объем охраны данной заявки подлежит защите формулой изобретения.