ОГРАНИЧЕНИЕ ИНФОРМАЦИИ ВЕКТОРА ДВИЖЕНИЯ, ИЗВЛЕКАЕМОЙ ПОСРЕДСТВОМ ИЗВЛЕЧЕНИЯ ВЕКТОРОВ ДВИЖЕНИЯ НА СТОРОНЕ ДЕКОДЕРА
LIMITING MOTION VECTOR INFORMATION EXTRACTED BY EXTRACTING MOTION VECTORS AT DECODER SIDE

[1] Данная заявка притязает на приоритет предварительной заявки на патент (США) № 62/475177, поданной 22 марта 2017 года, содержимое которой полностью содержится в данном документе по ссылке.
Область техники, к которой относится изобретение
[2] Данное раскрытие сущности относится к кодированию видео.
Уровень техники
[3] Поддержка цифрового видео может быть включена в широкий диапазон устройств, включающих в себя цифровые телевизионные приемники, системы цифровой прямой широковещательной передачи, беспроводные широковещательные системы, персональные цифровые устройства (PDA), переносные или настольные компьютеры, планшетные компьютеры, устройства для чтения электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, устройства видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, так называемые смартфоны, устройства видеоконференц–связи, устройства потоковой передачи видео и т.п. Цифровые видеоустройства реализуют технологии кодирования видео, к примеру, технологии, описанные в стандартах, заданных посредством ITU–T H.261, ISO/IEC MPEG–1 Visual, ITU–T H.262 или ISO/IEC MPEG–2 Visual, ITU–T H.263, ITU–T H.264/MPEG–4, Часть 10, усовершенствованное кодирование видео (AVC), ITU–T H.265/высокоэффективное кодирование видео (HEVC) и расширения таких стандартов, к примеру, расширения масштабируемого кодирования видео (SVC) и кодирования многовидового видео (MVC). Видеоустройства могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видеоинформацию более эффективно посредством реализации таких технологий кодирования видео.
[4] Технологии кодирования видео включают в себя пространственное (внутрикадровое) прогнозирование и/или временное (межкадровое) прогнозирование для того, чтобы уменьшать или удалять избыточность, внутренне присущую в видеопоследовательностях. Для кодирования видео на основе блоков, серия последовательных видеомакроблоков (например, видеоизображение или часть видеоизображения) может сегментироваться на видеоблоки, которые также могут упоминаться как единицы дерева кодирования (CTU), единицы кодирования (CU), и/или узлы кодирования. Видеоблоки в серии внутренне кодированных последовательных (I–) макроблоков изображения кодируются с использованием пространственного прогнозирования относительно опорных выборок в соседних блоках в идентичном изображении. Видеоблоки в серии взаимно кодированных последовательных (P– или B–) макроблоков изображения могут использовать пространственное прогнозирование относительно опорных выборок в соседних блоках в идентичном изображении или временное прогнозирование относительно опорных выборок в других опорных изображениях. Изображения могут упоминаться как кадры, и опорные изображения могут упоминаться как опорные кадры.
[5] Пространственное или временное прогнозирование приводит в результате к прогнозирующему блоку для блока, который должен кодироваться. Остаточные данные представляют пиксельные разности между исходным блоком, который должен кодироваться, и прогнозирующим блоком. Взаимно кодированный блок кодируется согласно вектору движения, который указывает на блок опорных выборок, формирующих прогнозирующий блок, и остаточным данным, указывающим разность между кодированным блоком и прогнозирующим блоком. Внутренне кодированный блок кодируется согласно режиму внутреннего кодирования и остаточным данным. Для дополнительного сжатия, остаточные данные могут преобразовываться из пиксельной области в область преобразования, что приводит к остаточным коэффициентам преобразования, которые затем могут квантоваться. Квантованные коэффициенты преобразования, первоначально размещаемые в двумерном массиве, могут сканироваться для того, чтобы формировать одномерный вектор коэффициентов преобразования, и может применяться энтропийное кодирование с тем, чтобы достигать еще большего сжатия.
Сущность изобретения
[6] В общем, это раскрытие сущности описывает технологии, связанные с извлечением векторов движения на стороне декодера (DMVD). Например, это раскрытие сущности описывает технологии, связанные с применением одного или более ограничений на информацию движения, к примеру, на вектор движения (MV), извлекаемый посредством DMVD, и/или MV–разность между начальным MV и MV, извлекаемым посредством DMVD. Эти технологии могут применяться к любому из существующих видеокодеков, таких как HEVC (стандарт высокоэффективного кодирования видео), и/или могут представлять собой эффективное инструментальное средство кодирования в любых будущих стандартах кодирования видео. Когда ограничение применяется к MV и/или MV–разностям, извлекаемым с DMVD, в определенных примерах, только извлеченная информация движения, которая удовлетворяет ограничению, рассматривается в качестве допустимой информации движения. Таким образом, список из MV и конечного выбранного MV может отличаться, если ограничение не использовано, что позволяет повышать эффективность кодирования и/или уменьшать скорость передачи битов. В некоторых примерах, ограничение включает в себя то, являются или нет извлеченные MV симметричными, являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, симметричными, являются или нет извлеченные MV антисимметричными, являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, антисимметричными. В некоторых примерах, активация ограничений на симметричные/антисимметричные MV/MV–разности явно передается в служебных сигналах. В других примерах, ограничения могут неявно определяться согласно некоторой кодированной информации. В дополнительных примерах, условия могут задаваться для ограничений таким образом, что ограничение применяется только в определенных примерах.
[7] В примере, способ декодирования видеоданных из кодированного потока видеобитов, при этом способ содержит формирование, с использованием извлечения векторов движения на стороне декодера (DMVD), множества извлеченных векторов движения, определение первого извлеченного вектора движения и второго извлеченного вектора движения из множества извлеченных векторов движения на основе показателя затрат, содержащее: определение того, что первый извлеченный вектор движения и второй извлеченный вектор движения удовлетворяют, по меньшей мере, одному ограничению на взаимосвязь между первым извлеченным вектором движения и вторым извлеченным вектором движения, причем взаимосвязь содержит: первый извлеченный вектор движения и второй извлеченный вектор движения имеют симметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдосимметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения являются антисимметричными, первый извлеченный вектор движения и второй извлеченный вектор движения имеют антисимметричную разность векторов движения, либо первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдоантисимметричную разность векторов движения, и декодирование текущего блока с использованием определенного первого извлеченного вектора движения и второго извлеченного вектора движения с использованием бипрогнозирования.
[8] В другом примере, способ кодирования видеоданных, при этом способ содержит формирование, с использованием извлечения векторов движения на стороне декодера (DMVD), множества извлеченных векторов движения, определение первого извлеченного вектора движения и второго извлеченного вектора движения из множества извлеченных векторов движения на основе показателя затрат, содержащее: определение того, что первый извлеченный вектор движения и второй извлеченный вектор движения удовлетворяют, по меньшей мере, одному ограничению на взаимосвязь между первым извлеченным вектором движения и вторым извлеченным вектором движения, причем взаимосвязь содержит: первый извлеченный вектор движения и второй извлеченный вектор движения имеют симметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдосимметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения являются антисимметричными, первый извлеченный вектор движения и второй извлеченный вектор движения имеют антисимметричную разность векторов движения, либо первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдоантисимметричную разность векторов движения, и кодирование текущего блока с использованием определенного первого извлеченного вектора движения и второго извлеченного вектора движения с использованием бипрогнозирования.
[9] В другом примере, оборудование, выполненное с возможностью декодировать видеоданные из кодированного потока видеобитов, причем оборудование содержит: запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более процессоров, поддерживающих связь с запоминающим устройством, причем один или более процессоров выполнены с возможностью: формировать, с использованием извлечения векторов движения на стороне декодера (DMVD), множество извлеченных векторов движения, определять первый извлеченный вектор движения и второй извлеченный вектор движения из множества извлеченных векторов движения на основе показателя затрат, что содержит: определение того, что первый извлеченный вектор движения и второй извлеченный вектор движения удовлетворяют, по меньшей мере, одному ограничению на взаимосвязь между первым извлеченным вектором движения и вторым извлеченным вектором движения, причем взаимосвязь содержит: первый извлеченный вектор движения и второй извлеченный вектор движения имеют симметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдосимметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения являются антисимметричными, первый извлеченный вектор движения и второй извлеченный вектор движения имеют антисимметричную разность векторов движения, либо первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдоантисимметричную разность векторов движения, и декодировать текущий блок с использованием определенного первого извлеченного вектора движения и второго извлеченного вектора движения с использованием бипрогнозирования.
[10] В другом примере, оборудование, выполненное с возможностью кодировать видеоданные, причем оборудование содержит: запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более процессоров, поддерживающих связь с запоминающим устройством, причем один или более процессоров выполнены с возможностью: формировать, с использованием извлечения векторов движения на стороне декодера (DMVD), множество извлеченных векторов движения, определять первый извлеченный вектор движения и второй извлеченный вектор движения из множества извлеченных векторов движения на основе показателя затрат, что содержит: определение того, что первый извлеченный вектор движения и второй извлеченный вектор движения удовлетворяют, по меньшей мере, одному ограничению на взаимосвязь между первым извлеченным вектором движения и вторым извлеченным вектором движения, причем взаимосвязь содержит: первый извлеченный вектор движения и второй извлеченный вектор движения имеют симметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдосимметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения являются антисимметричными, первый извлеченный вектор движения и второй извлеченный вектор движения имеют антисимметричную разность векторов движения, либо первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдоантисимметричную разность векторов движения, и декодировать текущий блок с использованием определенного первого извлеченного вектора движения и второго извлеченного вектора движения с использованием бипрогнозирования.
[11] В другом примере, оборудование, выполненное с возможностью декодировать видеоданные из кодированного потока видеобитов, причем оборудование содержит: средство для формирования, с использованием извлечения векторов движения на стороне декодера (DMVD), множества извлеченных векторов движения, средство для определения первого извлеченного вектора движения и второго извлеченного вектора движения из множества извлеченных векторов движения на основе показателя затрат, содержащее: средство для определения того, что первый извлеченный вектор движения и второй извлеченный вектор движения удовлетворяют, по меньшей мере, одному ограничению на взаимосвязь между первым извлеченным вектором движения и вторым извлеченным вектором движения, причем взаимосвязь содержит: первый извлеченный вектор движения и второй извлеченный вектор движения имеют симметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдосимметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения являются антисимметричными, первый извлеченный вектор движения и второй извлеченный вектор движения имеют антисимметричную разность векторов движения, либо первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдоантисимметричную разность векторов движения, и средство для декодирования текущего блока с использованием определенного первого извлеченного вектора движения и второго извлеченного вектора движения с использованием бипрогнозирования.
[12] В другом примере, оборудование, выполненное с возможностью кодировать видеоданные, причем оборудование содержит: средство для формирования, с использованием извлечения векторов движения на стороне декодера (DMVD), множества извлеченных векторов движения, средство для определения первого извлеченного вектора движения и второго извлеченного вектора движения из множества извлеченных векторов движения на основе показателя затрат, содержащее: средство для определения того, что первый извлеченный вектор движения и второй извлеченный вектор движения удовлетворяют, по меньшей мере, одному ограничению на взаимосвязь между первым извлеченным вектором движения и вторым извлеченным вектором движения, причем взаимосвязь содержит: первый извлеченный вектор движения и второй извлеченный вектор движения имеют симметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдосимметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения являются антисимметричными, первый извлеченный вектор движения и второй извлеченный вектор движения имеют антисимметричную разность векторов движения, либо первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдоантисимметричную разность векторов движения, и средство для кодирования текущего блока с использованием определенного первого извлеченного вектора движения и второго извлеченного вектора движения с использованием бипрогнозирования.
[13] В другом примере, это раскрытие сущности описывает машиночитаемый носитель хранения данных, сохраняющий инструкции, которые при выполнении инструктируют одному или более процессоров устройства, выполненного с возможностью формировать, с использованием извлечения векторов движения на стороне декодера (DMVD), множество извлеченных векторов движения, определять первый извлеченный вектор движения и второй извлеченный вектор движения из множества извлеченных векторов движения на основе показателя затрат, что содержит: определение того, что первый извлеченный вектор движения и второй извлеченный вектор движения удовлетворяют, по меньшей мере, одному ограничению на взаимосвязь между первым извлеченным вектором движения и вторым извлеченным вектором движения, причем взаимосвязь содержит: первый извлеченный вектор движения и второй извлеченный вектор движения имеют симметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдосимметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения являются антисимметричными, первый извлеченный вектор движения и второй извлеченный вектор движения имеют антисимметричную разность векторов движения, либо первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдоантисимметричную разность векторов движения, и декодировать текущий блок с использованием определенного первого извлеченного вектора движения и второго извлеченного вектора движения с использованием бипрогнозирования.
[14] В другом примере, это раскрытие сущности описывает машиночитаемый носитель хранения данных, сохраняющий инструкции, которые при выполнении инструктируют одному или более процессоров устройства, выполненного с возможностью формировать, с использованием извлечения векторов движения на стороне декодера (DMVD), множество извлеченных векторов движения, определять первый извлеченный вектор движения и второй извлеченный вектор движения из множества извлеченных векторов движения на основе показателя затрат, что содержит: определение того, что первый извлеченный вектор движения и второй извлеченный вектор движения удовлетворяют, по меньшей мере, одному ограничению на взаимосвязь между первым извлеченным вектором движения и вторым извлеченным вектором движения, причем взаимосвязь содержит: первый извлеченный вектор движения и второй извлеченный вектор движения имеют симметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдосимметричную разность векторов движения, первый извлеченный вектор движения и второй извлеченный вектор движения являются антисимметричными, первый извлеченный вектор движения и второй извлеченный вектор движения имеют антисимметричную разность векторов движения, либо первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдоантисимметричную разность векторов движения, и декодировать текущий блок с использованием определенного первого извлеченного вектора движения и второго извлеченного вектора движения с использованием бипрогнозирования.
[15] Подробности одного или более примеров изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества должны становиться очевидными из описания и чертежей и из формулы изобретения.
Краткое описание чертежей
[16] Фиг. 1 является блок–схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать технологии для выполнения извлечения векторов движения на стороне декодера (DMVD) этого раскрытия сущности.
[17] Фиг. 2 является блок–схемой, иллюстрирующей пример видеокодера, который может реализовывать технологии для выполнения DMVD этого раскрытия сущности.
[18] Фиг. 3 является блок–схемой, иллюстрирующей пример видеодекодера, который может реализовывать технологии для выполнения DMVD этого раскрытия сущности.
[19] Фиг. 4A и 4B являются концептуальной схемой, иллюстрирующей возможные варианты пространственных векторов движения, извлекаемые из соседних блоков.
[20] Фиг. 5A и 5B являются концептуальной схемой, иллюстрирующей первичное блочное местоположение для возможного варианта временного предиктора вектора движения (TMVP).
[21] Фиг. 6 является концептуальной схемой, иллюстрирующей принципы, связанные с билатеральным сопоставлением для извлечения информации движения текущего блока.
[22] Фиг. 7 является концептуальной схемой, иллюстрирующей принципы, связанные с сопоставлением с шаблонами для извлечения информации движения текущего блока.
[23] Фиг. 8 является блок–схемой последовательности операций способа, иллюстрирующей примерный процесс сопоставления с шаблонами на основе преобразования с повышением частоты кадров (FRUC).
[24] Фиг. 9 является блок–схемой последовательности операций способа, иллюстрирующей примерные предложенные изменения FRUC–процесса сопоставления с шаблонами по фиг. 8.
[25] Фиг. 10 является концептуальной схемой, иллюстрирующей принципы, связанные с примером двунаправленного оптического потока.
[26] Фиг. 11 является концептуальной схемой, иллюстрирующей пример градиентного вычисления для блока 8×4.
[27] Фиг. 12 является концептуальной схемой, иллюстрирующей принципы, связанные с DMVD на основе билатерального сопоставления с шаблонами.
[28] Фиг. 13A и 13B являются концептуальной схемой, иллюстрирующей принципы, связанные с перекрывающейся блочной компенсацией движения (OBMC).
[29] Фиг. 14A–14D являются концептуальными схемами, иллюстрирующими OBMC–взвешивания.
[30] Фиг. 15 является концептуальной схемой, иллюстрирующей принципы, связанные с билатеральным сопоставлением для извлечения информации движения текущего блока.
[31] Фиг. 16 является блок–схемой последовательности операций, иллюстрирующей примерный способ декодирования видеоданных в соответствии с технологиями, описанными в этом раскрытии сущности.
[32] Фиг. 17 является блок–схемой последовательности операций, иллюстрирующей примерный способ кодирования видеоданных в соответствии с технологиями, описанными в этом раскрытии сущности.
Подробное описание изобретения
[33] Это раскрытие сущности описывает технологии, связанные с извлечением векторов движения на стороне декодера (DMVD). Технологии этого раскрытия сущности могут использоваться в качестве эффективного инструментального средства кодирования в любых будущих стандартах кодирования видео.
[34] В общем, это раскрытие сущности описывает технологии для извлечения информации движения (например, одного или более векторов движения, точности векторов движения и/или разностей векторов движения и одного или более индексов опорных изображений), используемой для того, чтобы кодировать блоки видеоданных, и для определения посредством видеодекодера информации движения, идентичной информации движения, определенной посредством видеокодера. С использованием идентичных (или взаимообратных) технологий извлечения, используемых посредством видеокодера, видеодекодер может определять, без приема синтаксических элементов, конкретно идентифицирующих информацию движения, то, какая информация движения использована для того, чтобы кодировать видеоданные. Тем не менее, в некоторых сценариях кодирования, видеокодер по–прежнему может явно передавать в служебных сигналах информацию движения, используемую для того, чтобы кодировать блок.
[35] Различные технологии в этом раскрытии сущности могут описываться со ссылкой на видеокодер, который имеет намерение представлять собой общий термин, который может означать видеокодер или видеодекодер. Если в явной форме не указано иное, не следует предполагать, что технологии, описанные относительно видеокодера или видеодекодера, не могут выполняться посредством другого видеокодера или видеодекодера. Например, во многих случаях, видеодекодер выполняет идентичную или иногда взаимообратную технологию кодирования относительно видеокодера, чтобы декодировать кодированные видеоданные. Во многих случаях, видеокодер также включает в себя контур декодирования видео, и в силу этого видеокодер выполняет декодирование видео в качестве части кодирования видеоданных. Таким образом, если не указано иное, технологии, описанные в этом раскрытии сущности относительно видеодекодера, также могут выполняться посредством видеокодера, и наоборот.
[36] Это раскрытие сущности также может использовать такие термины, как текущий слой, текущий блок, текущее изображение, текущая серия последовательных макроблоков и т.д. В контексте этого раскрытия сущности, термин "текущий" имеет намерение идентифицировать слой, блок, изображение, серию последовательных макроблоков и т.д., которая в данный момент кодируется, например, в отличие от ранее кодированных слоев, блоков, изображений и серий последовательных макроблоков или подлежащих кодированию блоков, изображений и серий последовательных макроблоков.
[37] Новый стандарт кодирования видео, называемый "стандартом высокоэффективного кодирования видео (HEVC)" (также называемый "ITU–T H.265"), в том числе его расширение диапазона, многовидовое расширение (MV–HEVC) и масштабируемое расширение (SHVC), разработан посредством Объединенной группы для совместной работы над видеостандартами (JCT–VC), а также Объединенной группы для совместной работы над расширениями кодирования трехмерного видео (JCT–3V) Экспертной группы в области кодирования видео (VCEG) ITU–T и Экспертной группы по киноизображению (MPEG) ISO/IEC. HEVC–спецификация, называемая "HEVC WD" в дальнейшем в этом документе, доступна по адресу phenix.int–evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC–N1003–v1.zip.
[38] ITU–T VCEG (Q6/16) и ISO/IEC MPEG (JTC 1/SC 29/WG 11) теперь изучают потенциальную потребность в стандартизации будущей технологии кодирования видео с возможностями сжатия, которые значительно превышают возможности сжатия текущего HEVC–стандарта (в том числе его текущих расширений и ближнесрочных расширений для кодирования экранного контента и кодирования расширенного динамического диапазона). Группы совместно проводят эти изыскания объединенными коллективными усилиями, известными как Объединенная группа для исследования видео (JVET), чтобы оценивать проектные решения по технологиям сжатия, предлагаемые их экспертами в этой области. JVET в первый раз провели конференцию 19–21 октября 2015 года. Версия эталонного программного обеспечения, т.е. Объединенная модель проведения исследований 5 (JEM5), доступна по адресу jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM–16.6–JEM–5.0. Описание алгоритма JEM5 доступно по адресу phenix.it–sudparis.eu/jvet/doc_end_user/current_document.php?id=2714.
[39] Фиг. 1 является блок–схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать технологии для выполнения DMVD этого раскрытия сущности. Как показано на фиг. 1, система 10 включает в себя исходное устройство 12, которое предоставляет кодированные видеоданные, которые должны декодироваться позднее посредством целевого устройства 14. В частности, исходное устройство 12 предоставляет видеоданные в целевое устройство 14 через машиночитаемый носитель 16. Исходное устройство 12 и целевое устройство 14 могут содержать любые из широкого диапазона устройств, включающих в себя настольные компьютеры, ноутбуки (т.е. переносные компьютеры), планшетные компьютеры, абонентские приставки, телефонные аппараты, к примеру, так называемые смартфоны, так называемые интеллектуальные сенсорные панели, телевизионные приемники, камеры, устройства отображения, цифровые мультимедийные проигрыватели, консоли для видеоигр, устройство потоковой передачи видео и т.п. В некоторых случаях, исходное устройство 12 и целевое устройство 14 могут быть оснащены возможностями беспроводной связи.
[40] Целевое устройство 14 может принимать кодированные видеоданные, которые должны декодироваться, через машиночитаемый носитель 16. Машиночитаемый носитель 16 может содержать любой тип носителя или устройства, допускающего перемещение кодированных видеоданных из исходного устройства 12 в целевое устройство 14. В одном примере, машиночитаемый носитель 16 может содержать среду связи, чтобы обеспечивать возможность исходному устройству 12 передавать кодированные видеоданные непосредственно в целевое устройство 14 в реальном времени. Кодированные видеоданные могут модулироваться согласно стандарту связи, такому как протокол беспроводной связи, и передаваться в целевое устройство 14. Среда связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи. Среда связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для того, чтобы упрощать передачу из исходного устройства 12 в целевое устройство 14.
[41] В некоторых примерах, кодированные данные могут выводиться из интерфейса 22 вывода в устройство хранения данных. Аналогично, к кодированным данным может осуществляться доступ из устройства хранения данных посредством интерфейса ввода. Устройство хранения данных может включать в себя любые из множества носителей хранения данных с распределенным или локальным доступом, такие как жесткий диск, Blu–Ray–диски, DVD, CD–ROM, флэш–память, энергозависимое или энергонезависимое запоминающее устройство или любые другие подходящие цифровые носители хранения данных для сохранения кодированных видеоданных. В дополнительном примере, устройство хранения данных может соответствовать файловому серверу или другому промежуточному устройству хранения данных, которое может сохранять кодированное видео, сформированное посредством исходного устройства 12. Целевое устройство 14 может осуществлять доступ к сохраненным видеоданным из устройства хранения данных, например, через потоковую передачу или загрузку. Файловый сервер может представлять собой любой тип сервера, допускающего сохранение кодированных видеоданных и передачу этих кодированных видеоданных в целевое устройство 14. Примерные файловые серверы включают в себя веб–сервер (например, для веб–узла), FTP–сервер, устройства системы хранения данных с подключением по сети (NAS) или локальный накопитель на дисках. Целевое устройство 14 может осуществлять доступ к кодированным видеоданным через любое стандартное соединение для передачи данных, включающее в себя Интернет–соединение. Оно может включать в себя беспроводной канал (например, Wi–Fi–соединение), проводное соединение (например, DSL, кабельный модем и т.д.), или комбинацию означенного, которая является подходящей для осуществления доступа к кодированным видеоданным, сохраненным на файловом сервере. Передача кодированных видеоданных из устройства хранения данных может представлять собой потоковую передачу, передачу на основе загрузки или комбинацию вышеозначенного.
[42] Технологии этого раскрытия сущности не обязательно ограничены приложениями или настройками беспроводной связи. Технологии могут применяться к кодированию видео в поддержку любых из множества мультимедийных приложений, таких как телевизионные широковещательные передачи по радиоинтерфейсу, кабельные телевизионные передачи, спутниковые телевизионные передачи, потоковые передачи видео по Интернету, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое кодируется на носитель хранения данных, декодирование цифрового видео, сохраненного на носителе хранения данных, или другие приложения. В некоторых примерах, система 10 может быть выполнена с возможностью поддерживать одностороннюю или двустороннюю передачу видео для того, чтобы поддерживать такие приложения, как потоковая передача видео, воспроизведение видео, широковещательная передача видео и/или видеотелефония.
[43] В примере по фиг. 1, исходное устройство 12 включает в себя видеоисточник 18, видеокодер 20 и интерфейс 22 вывода. Целевое устройство 14 включает в себя интерфейс 28 ввода, видеодекодер 30 и устройство 32 отображения. В других примерах, исходное устройство 12 и целевое устройство 14 могут включать в себя другие компоненты или компоновки. Например, исходное устройство 12 может принимать видеоданные из внешнего видеоисточника 18, такого как внешняя камера. Аналогично, целевое устройство 14 может взаимодействовать с внешним устройством отображения вместо включения в себя интегрированного устройства отображения. В соответствии с этим раскрытием сущности, видеокодер 20 исходного устройства 12 и/или видеодекодер 30 целевого устройства 14 могут быть выполнены с возможностью выполнять одну или более DMVD–технологий, описанных в данном документе. Например, видеокодер 20 и/или видеодекодер 30 могут быть выполнены с возможностью применять одно или более ограничений к (1) MV, извлекаемому посредством DMVD, и/или (2) к MV–разности между начальным MV и MV, извлекаемым посредством DMVD. Ограничение может включать в себя ограничение на векторы движения, извлекаемые посредством DMVD–процесса. Примерные ограничения этого раскрытия сущности могут включать в себя ограничения, которые предписывают некоторую предварительно заданную взаимосвязь между MV и MVD в двух списках опорных изображений (например, List0 и List1). Когда ограничение применяется к DMVD, в определенных примерах, только извлеченная информация движения, которая удовлетворяет ограничению, рассматривается в качестве допустимой информации движения. Таким образом, список из MV и конечного выбранного MV может отличаться, если ограничение не использовано. В первом примере, ограничение включает в себя то, являются или нет извлеченные MV симметричными. Во втором примере, ограничение включает в себя то, являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, симметричными. В третьем примере, ограничение включает в себя то, являются или нет извлеченные MV антисимметричными. В четвертом примере, ограничение включает в себя то, являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, антисимметричными. В некоторых примерах, активация ограничений на симметричные/антисимметричные MV/MV–разности явно передается в служебных сигналах. В других примерах, ограничения могут неявно определяться согласно некоторой кодированной информации.
[44] В дополнительных примерах, условия могут задаваться для ограничений таким образом, что ограничение применяется только в определенных примерах. Условия могут включать в себя ограничение на то, когда активируются ограничения. Например, (1) ограничение активируется только тогда, когда начальные MV являются симметричными; (2) ограничение активируется только тогда, когда начальные MV являются псевдосимметричными; (3) ограничение активируется только тогда, когда начальные MV являются антисимметричными; (4) ограничение активируется только тогда, когда начальные MV являются псевдоантисимметричными; (5) ограничение активируется только тогда, когда начальные MV не являются симметричными; (6) ограничение активируется только тогда, когда начальные MV не являются псевдосимметричными; (7) ограничение активируется только тогда, когда начальные MV не являются антисимметричными; (8) ограничение активируется только тогда, когда начальные MV не являются псевдоантисимметричными; (9) ограничение активируется только тогда, когда опорные List0– и List1–изображения начальных MV находятся до или после текущего изображения; (10) ограничение активируется только тогда, когда опорные List0– и List1–изображения начальных MV не находятся до или после текущего изображения; (11) ограничение активируется только тогда, когда опорный индекс начальных MV равен нулю; (12) ограничение активируется только тогда, когда опорный индекс начальных MV не равен нулю; (13) ограничение активируется только тогда, когда POC–расстояния между опорным List0–изображением и текущим изображением и POC–расстояния между опорным List1–изображением и текущим изображением являются идентичными; (14) ограничение активируется только тогда, когда POC–расстояния между опорным List0–изображением и текущим изображением и POC–расстояния между опорным List1–изображением и текущим изображением не являются идентичными; (15) ограничение симметричной MV–разности применяется, когда начальные MV не являются симметричными; и/или (16) ограничение антисимметричной MV–разности применяется, когда начальные MV являются симметричными.
[45] В дополнительном примере, MV–разрешение симметричного ограничения может назначаться детерминированным способом. В одном примере, для целочисленнопелной детализации билатерального сопоставления с шаблонами, симметричное/псевдосимметричное/асимметричное ограничение не должно налагаться, и вышеуказанные ограничения составляют только полупелную, четвертьпелную или более высокоточную детализацию движения. Уровень ограничения (при каком MV–разрешении) может передаваться в служебных сигналах через SPS/PPS/заголовок серии последовательных макроблоков. Разрешение также может определяться наряду с тем, активируются или нет другие инструментальные средства детализации движения, такие как BIO, субпелное преобразование с повышением частоты кадров (FRUC). Например, когда BIO активируется, ограничение не должно налагаться на четвертьпелную или более высокоточную детализацию движения.
[46] В другом примере, уровень ограничения может задаваться адаптивным согласно абсолютной разности между List0– (также называемым "L0") и List1– (называемым "L1") MV, масштабированной (на основе их относительного POC–расстояния) абсолютной разности между List0– и List1–MV или начальным SAD–значениям между интерполированными выборками List0 и List1 (а именно, P0 и P1 в этом примере). Альтернативно, отношение SAD–значений между (текущим шаблоном, P0) и текущим шаблоном, P1) может использоваться для того, чтобы определять то, при каком MV–разрешении должно налагаться ограничение. В этом примере, если отношение SAD–значений ниже порогового значения, то вышеуказанные симметричные ограничения не должны налагаться.
[47] Кроме того, в некоторых примерах, одно ограничение (например, симметричные MV, симметричная MV–разность, антисимметричные MV или антисимметричная MV–разность) применяется к извлеченным MV на основе условия. В других примерах, несколько ограничений применяются к извлеченным MV на основе нескольких условий.
[48] Проиллюстрированная система 10 по фиг. 1 является просто одним примером. Технологии для выполнения DMVD этого раскрытия сущности могут выполняться посредством любого устройства кодирования и/или декодирования цифрового видео. Например, технологии для ограничения (1) MV, извлекаемого посредством DMVD, и/или (2) MV–разности между начальным MV и MV, извлекаемым посредством DMVD, могут выполняться посредством любого устройства кодирования и/или декодирования цифрового видео. Хотя, в общем, технологии этого раскрытия сущности выполняются посредством устройства кодирования видео, технологии также могут выполняться посредством видеокодера/декодера, типично называемого "кодеком". Кроме того, технологии этого раскрытия сущности также могут выполняться посредством видеопрепроцессора. Исходное устройство 12 и целевое устройство 14 являются просто примерами таких устройств кодирования, в которых исходное устройство 12 формирует кодированные видеоданные для передачи в целевое устройство 14. В некоторых примерах, устройства 12, 14 могут работать практически симметрично, так что каждое из устройств 12, 14 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 12, 14, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.
[49] Видеоисточник 18 исходного устройства 12 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, и/или интерфейс прямой видеотрансляции, чтобы принимать видео от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 18 может формировать данные компьютерной графики в качестве исходного видео или комбинацию передаваемого вживую видео, архивного видео и машиногенерируемого видео. В некоторых случаях, если видеоисточник 18 представляет собой видеокамеру, исходное устройство 12 и целевое устройство 14 могут формировать так называемые камерофоны или видеофоны. Тем не менее, как упомянуто выше, технологии, описанные в этом раскрытии сущности, могут быть применимыми к кодированию видео в целом и могут применяться к беспроводным и/или проводным вариантам применения. В каждом случае, захваченное, предварительно захваченное или машиногенерируемое видео может кодироваться посредством видеокодера 20. Кодированная видеоинформация затем может выводиться посредством интерфейса 22 вывода на машиночитаемый носитель 16.
[50] Машиночитаемый носитель 16 может включать в себя энергозависимые носители, такие как беспроводная широковещательная передача или проводная сетевая передача, либо носители хранения данных (т.е. энергонезависимые носители хранения данных), такие как жесткий диск, флэш–накопитель, компакт–диск, цифровой видеодиск, Blu–Ray–диск или другие машиночитаемые носители. В некоторых примерах, сетевой сервер (не показан) может принимать кодированные видеоданные из исходного устройства 12 и предоставлять кодированные видеоданные в целевое устройство 14, например, через сетевую передачу. Аналогично, вычислительное устройство оборудования для изготовления носителей, такого как оборудование для штамповки дисков, может принимать кодированные видеоданные из исходного устройства 12 и изготавливать диск, содержащий кодированные видеоданные. Следовательно, можно понимать, что машиночитаемый носитель 16 включает в себя один или более машиночитаемых носителей различных форм, в различных примерах.
[51] Интерфейс 28 ввода целевого устройства 14 принимает информацию из машиночитаемого носителя 16. Информация машиночитаемого носителя 16 может включать в себя синтаксическую информацию, заданную посредством видеокодера 20, которая также используется посредством видеодекодера 30, которая включает в себя синтаксические элементы, которые описывают характеристики и/или обработку блоков и других кодированных единиц. Устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества устройств отображения, таких как дисплей на электронно–лучевой трубке (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[52] Видеокодер 20 и видеодекодер 30 могут работать согласно стандарту кодирования видео, такому как стандарт высокоэффективного кодирования видео (HEVC), также называемый "ITU–T H.265". Альтернативно, видеокодер 20 и видеодекодер 30 могут работать согласно другим собственным или отраслевым стандартам, таким как стандарт ITU–T H.264, альтернативно называемый "MPEG–4, часть 10, усовершенствованное кодирование видео (AVC)", или расширениям таких стандартов. Тем не менее, технологии этого раскрытия сущности не ограничены каким–либо конкретным стандартом кодирования. Другие примеры стандартов кодирования видео включают в себя MPEG–2 и ITU–T H.263. Хотя не показано на фиг. 1, в некоторых аспектах, видеокодер 20 и видеодекодер 30 могут быть интегрированы с аудио–кодером и декодером, соответственно, и могут включать в себя соответствующие модули мультиплексора–демультиплексора либо другие аппаратные средства и программное обеспечение для того, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или в отдельных потоках данных. Если применимо, модули мультиплексора–демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[53] Видеокодер 20 и видеодекодер 30 могут реализовываться как любая из множества подходящих схем кодера и/или декодера, к примеру, как один или более микропроцессоров, схема обработки (включающая в себя фиксированную функциональную схему и/или программируемую схему обработки), процессоры цифровых сигналов (DSP), специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение или любые комбинации вышеозначенного. Когда технологии реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения на подходящем энергонезависимом машиночитаемом носителе и выполнять инструкции в аппаратных средствах с использованием одного или более процессоров, чтобы осуществлять технологии этого раскрытия сущности. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем устройстве. Устройство, включающее в себя видеокодер 20 и/или видеодекодер 30, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.
[54] В общем, согласно ITU–T H.265, видеоизображение может разделяться на последовательность единиц дерева кодирования (CTU) (или наибольших единиц кодирования (LCU)), которые могут включать в себя выборки сигнала яркости и сигнала цветности. Альтернативно, CTU могут включать монохромные данные (т.е. только выборки сигнала яркости). Синтаксические данные в потоке битов могут задавать размер для CTU, которая представляет собой наибольшую единицу кодирования с точки зрения числа пикселов. Серия последовательных макроблоков включает в себя определенное число последовательных CTU в порядке кодирования. Видеоизображение может сегментироваться на одну или более серий последовательных макроблоков. Каждая CTU может разбиваться на единицы кодирования (CU) согласно дереву квадрантов. В общем, структура данных в виде дерева квадрантов включает в себя один узел в расчете на CU, при этом корневой узел соответствует CTU. Если CU разбивается на четыре суб–CU, узел, соответствующий CU, включает в себя четыре концевых узла, каждый из которых соответствует одной из суб–CU.
[55] Каждый узел структуры данных в виде дерева квадрантов может предоставлять синтаксические данные для соответствующей CU. Например, узел в дереве квадрантов может включать в себя флаг разбиения, указывающий то, разбивается или нет CU, соответствующая узлу, на суб–CU. Синтаксические элементы для CU могут задаваться рекурсивно и могут зависеть от того, разбивается или нет CU на суб–CU. Если CU не разбивается дополнительно, она называется "концевой CU". В этом раскрытии сущности, четыре под–CU концевой CU также называются "концевыми CU", даже если отсутствует явное разбиение исходной концевой CU. Например, если CU размера 16×16 не разбивается дополнительно, четыре под–CU 8×8 также называются "концевыми CU", хотя CU 16×16 вообще не разбивается.
[56] CU имеет назначение, аналогичное назначению макроблока стандарта H.264, за исключением того, что CU не имеет различения размера. Например, CTU может разбиваться на четыре дочерних узла (также называемые "под–CU"), и каждый дочерний узел, в свою очередь, может быть родительским узлом и разбиваться еще на четыре дочерних узла. Конечный неразбиваемый дочерний узел, называемый "концевым узлом дерева квадрантов", содержит узел кодирования, также называемый "концевой CU". Синтаксические данные, ассоциированные с кодированным потоком битов, могут задавать максимальное число раз, которое может разбиваться CTU, называемое "максимальной CU–глубиной", и также могут задавать минимальный размер узлов кодирования. Соответственно, поток битов также может задавать наименьшую единицу кодирования (SCU). Это раскрытие сущности использует термин "блок", чтобы ссылаться на любое из CU, единицы прогнозирования (PU) или единицы преобразования (TU) в контексте HEVC, или аналогичные структуры данных в контексте других стандартов (например, макроблоки и их субблоки в H.264/AVC).
[57] CU включает в себя узел кодирования и единицы прогнозирования (PU) и единицы преобразования (TU), ассоциированные с узлом кодирования. Размер CU соответствует размеру узла кодирования и, в общем, должен иметь квадратную форму. Размер CU может колебаться от 8×8 пикселов вплоть до размера CTB с максимальным размером, например, в 64×64 пикселов или более. Каждая CU может содержать одну или более PU и одну или более TU. Синтаксические данные, ассоциированные с CU, могут описывать, например, сегментацию CU на одну или более PU. Режимы сегментации могут отличаться между тем, является CU кодированной в режиме пропуска или прямом режиме, кодированной в режиме внутреннего прогнозирования или кодированной в режиме взаимного прогнозирования. PU могут сегментироваться таким образом, что они имеют неквадратную форму. Синтаксические данные, ассоциированные с CU, также могут описывать, например, сегментацию CU на одну или более TU согласно дереву квадрантов. TU может иметь квадратную или неквадратную (например, прямоугольную) форму.
[58] HEVC–стандарт обеспечивает возможность преобразований согласно TU, которые могут отличаться для различных CU. Размеры TU типично задаются на основе размера PU (или сегментов CU) в данной CU, заданного для сегментированной CTU, хотя это может не всегда иметь место. TU типично имеют идентичный размер или меньше, чем PU (или сегменты CU, например, в случае внутреннего прогнозирования). В некоторых примерах, остаточные выборки, соответствующие CU, могут подразделяться на меньшие единицы с использованием структуры в виде дерева квадрантов, известной как "остаточное дерево квадрантов" (RQT). Концевые узлы RQT могут называться "единицами преобразования (TU)". Значения пиксельных разностей, ассоциированные с TU, могут преобразовываться, чтобы формировать коэффициенты преобразования, которые могут квантоваться.
[59] Концевая CU может включать в себя одну или более единиц прогнозирования (PU) при прогнозировании с использованием взаимного прогнозирования. В общем, PU представляет пространственную область, соответствующую всем или части соответствующей CU, и может включать в себя данные для извлечения и/или формирования опорной выборки для PU. Кроме того, PU включает в себя данные, связанные с прогнозированием. Когда CU кодируется во взаимном режиме, одна или более PU CU могут включать в себя данные, задающие информацию движения, к примеру, один или более векторов движения, или PU могут кодироваться в режиме пропуска. Данные, задающие вектор движения для PU, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, точность в одну четверть пиксела или точность в одну восьмую пиксела), опорное изображение, на которое указывает вектор движения, и/или список опорных изображений (например, List0 или List1) для вектора движения.
[60] Концевые CU также могут прогнозироваться во внутреннем режиме. В общем, внутреннее прогнозирование заключает в себе прогнозирование концевой CU (либо ее сегментов) с использованием внутреннего режима. Видеокодер может выбирать набор соседних, ранее кодированных пикселов относительно концевой CU, чтобы использовать для того, чтобы прогнозировать концевую CU (или ее сегментов).
[61] Концевая CU также может включать в себя одну или более единиц преобразования (TU). Единицы преобразования могут указываться с использованием RQT (также называемой "структурой в виде дерева квадрантов TU"), как пояснено выше. Например, флаг разбиения может указывать то, разбивается или нет концевая CU на четыре единицы преобразования. Затем, каждая TU дополнительно может разбиваться на дополнительные под–TU. Когда TU не разбивается дополнительно, она может называться "концевой TU". В общем, для внутреннего кодирования, все концевые TU, принадлежащие концевой CU, совместно используют идентичный режим внутреннего прогнозирования. Иными словами, идентичный режим внутреннего прогнозирования, в общем, применяется для того, чтобы вычислять прогнозированные значения для всех TU концевой CU. Для внутреннего кодирования, видеокодер 20 может вычислять остаточное значение для каждой концевой TU с использованием режима внутреннего прогнозирования, в качестве разности между частью CU, соответствующей TU, и исходным блоком. TU не обязательно ограничивается размером PU. Таким образом, TU могут быть больше или меньше PU. Для внутреннего кодирования, сегменты CU или непосредственно CU, могут совместно размещаться с соответствующей концевой TU для CU. В некоторых примерах, максимальный размер концевой TU может соответствовать размеру соответствующей концевой CU.
[62] Кроме того, TU концевых CU также могут быть ассоциированы с соответствующими структурами данных в виде дерева квадрантов, называемыми "остаточными деревьями квадрантов (RQT)". Иными словами, концевая CU может включать в себя дерево квадрантов, указывающее то, как концевая CU сегментируется на TU. Корневой узел дерева квадрантов TU, в общем, соответствует концевой CU, в то время как корневой узел дерева квадрантов CU, в общем, соответствует CTU (или LCU). TU RQT, которые не разбиваются, называются "концевыми TU". В общем, это раскрытие сущности использует термины CU и TU, чтобы ссылаться на концевую CU и концевую TU, соответственно, если не указано иное.
[63] Видеопоследовательность типично включает в себя последовательность видеокадров или изображений, начиная с изображения на основе точки произвольного доступа (RAP). Видеопоследовательность может включать в себя синтаксические данные в наборе параметров последовательности (SPS), который характеризирует видеопоследовательность. Каждая серия последовательных макроблоков изображения может включать в себя синтаксические данные серии последовательных макроблоков, которые описывают режим кодирования для соответствующей серии последовательных макроблоков. Видеокодер 20 типично управляет видеоблоками в пределах отдельных серий последовательных видеомакроблоков для того, чтобы кодировать видеоданные. Видеоблок может соответствовать узлу кодирования в CU. Видеоблоки могут иметь фиксированные или варьирующиеся размеры и могут отличаться по размеру согласно указанному стандарту кодирования.
[64] В качестве примера, прогнозирование может выполняться для PU различных размеров. При условии, что размер конкретной CU составляет 2Nx2N, внутреннее прогнозирование может выполняться для PU–размеров 2Nx2N или NxN, и взаимное прогнозирование может выполняться для симметричных PU–размеров 2Nx2N, 2NxN, Nx2N или NxN. Асимметричная сегментация для взаимного прогнозирования также может выполняться для PU–размеров 2NxnU, 2NxnD, nLx2N и nRx2N. При асимметричной сегментации, одно направление CU не сегментируется, в то время как другое направление сегментируется на 25% и 75%. Часть CU, соответствующая 25%–ому сегменту, указывается посредством "n", после чего идет индикатор относительно "вверх (Up)", "вниз (Down)", "влево (Left)" или "вправо (Right)". Таким образом, например, "2NxnU" ссылается на CU 2Nx2N, которая сегментируется горизонтально с PU 2Nx0,5N вверху и PU 2Nx1,5N внизу.
[65] В этом раскрытии сущности, "NxN" и "N на N" могут использоваться взаимозаменяемо для того, чтобы ссылаться на размеры в пикселах видеоблока с точки зрения размеров по вертикали и горизонтали, например, 16×16 пикселов, или 16 на 16 пикселов. В общем, блок 16×16 должен иметь 16 пикселов в вертикальном направлении (y=16) и 16 пикселов в горизонтальном направлении (x=16). Аналогично, блок NxN, в общем, имеет N пикселов в вертикальном направлении и N пикселов в горизонтальном направлении, при этом N представляет неотрицательное целочисленное значение. Пикселы в блоке могут размещаться в строках и столбцах. Кроме того, блок не обязательно должен иметь совпадающее число пикселов в горизонтальном направлении и в вертикальном направлении. Например, блоки могут содержать NxM пикселов, причем M не обязательно равно N.
[66] После внутреннего прогнозирующего кодирования или взаимного прогнозирующего кодирования с использованием PU CU, видеокодер 20 может вычислять остаточные данные для TU CU. PU могут содержать синтаксические данные, описывающие способ или режим формирования прогнозирующих пиксельных данных в пространственной области (также называемой "пиксельной областью"), и TU могут содержать коэффициенты в области преобразования после применения преобразования, например, дискретного косинусного преобразования (DCT), целочисленного преобразования, вейвлет–преобразования или концептуально аналогичного преобразования к остаточным видеоданным. Остаточные данные могут соответствовать пиксельным разностям между пикселами некодированного изображения и прогнозными значениями, соответствующими PU. Видеокодер 20 может формировать TU, которые включают в себя квантованные коэффициенты преобразования, представляющие остаточные данные для CU. Таким образом, видеокодер 20 может вычислять остаточные данные (в форме остаточного блока), преобразовывать остаточный блок, чтобы формировать блок коэффициентов преобразования, и затем квантовать коэффициенты преобразования, чтобы формировать квантованные коэффициенты преобразования. Видеокодер 20 может формировать TU, включающую в себя квантованные коэффициенты преобразования, а также другую синтаксическую информацию (например, информацию разбиения для TU).
[67] Как отмечено выше, после преобразований для того, чтобы формировать коэффициенты преобразования, видеокодер 20 может выполнять квантование коэффициентов преобразования. Квантование, в общем, означает процесс, в котором коэффициенты преобразования квантуются, чтобы, возможно, уменьшать объем данных, используемых для того, чтобы представлять коэффициенты, обеспечивая дополнительное сжатие. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n–битовое значение может быть округлено в меньшую сторону до m–битового значения в ходе квантования, при этом n больше m.
[68] После квантования видеокодер может сканировать коэффициенты преобразования, формирующие одномерный вектор, из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может быть спроектировано с возможностью размещать коэффициенты с более высокой энергией (и, следовательно, более низкой частотой) в начале массива и размещать коэффициенты с более низкой энергией (и, следовательно, более высокой частотой) в конце массива. В некоторых примерах, видеокодер 20 может использовать предварительно заданный порядок сканирования для того, чтобы сканировать квантованные коэффициенты преобразования, так чтобы формировать преобразованный в последовательную форму вектор, который может энтропийно кодироваться. В других примерах, видеокодер 20 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования, чтобы формировать одномерный вектор, видеокодер 20 может энтропийно кодировать одномерный вектор, например, согласно контекстно–адаптивному кодированию переменной длины (CAVLC), контекстно–адаптивному двоичному арифметическому кодированию (CABAC), синтаксическому контекстно–адаптивному двоичному арифметическому кодированию (SBAC), энтропийному кодированию на основе сегментирования на интервалы вероятности (PIPE), или другой технологии энтропийного кодирования. Видеокодер 20 также может энтропийно кодировать синтаксические элементы, ассоциированные с кодированными видеоданными, для использования посредством видеодекодера 30 при декодировании видеоданных.
[69] Чтобы выполнять CABAC, видеокодер 20 может назначать контекст в контекстной модели символу, который должен быть передаваться. Контекст может быть связан, например, с тем, являются соседние значения символа ненулевыми или нет. Чтобы выполнять CAVLC, видеокодер 20 может выбирать код переменной длины для символа, который должен передаваться. Кодовые слова в VLC могут иметь такую структуру, что относительно более короткие коды соответствуют более вероятным символам, в то время как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC позволяет добиваться экономии битов, например, по сравнению с использованием кодовых слов равной длины для каждого символа, который должен быть передаваться. Определение вероятности может быть основано на контексте, назначаемом символу.
[70] В общем, видеодекодер 30 выполняет практически аналогичный, хотя взаимообратный процесс относительно процесса, выполняемого посредством видеокодера 20, чтобы декодировать кодированные данные. Например, видеодекодер 30 обратно квантует и обратно преобразует коэффициенты принимаемой TU, чтобы воспроизводить остаточный блок. Видеодекодер 30 использует передаваемый в служебных сигналах режим прогнозирования (внутреннее или взаимное прогнозирование), чтобы формировать прогнозированный блок. Затем видеодекодер 30 комбинирует прогнозированный блок и остаточный блок (попиксельно), чтобы воспроизводить исходный блок. Дополнительная обработка может выполняться, к примеру, выполнение процесса удаления блочности, чтобы уменьшать визуальные артефакты вдоль границ блоков. Кроме того, видеодекодер 30 может декодировать синтаксические элементы с использованием CABAC способом, практически аналогичным, хотя и взаимообратным, относительно процесса CABAC–кодирования видеокодера 20.
[71] Видеокодер 20 дополнительно может отправлять синтаксические данные, к примеру, синтаксические данные на основе блоков, синтаксические данные на основе изображений и синтаксические данные на основе последовательностей, в видеодекодер 30, например, в заголовке изображения, заголовке блока, заголовке серии последовательных макроблоков или других синтаксических данных, таких как набор параметров последовательности (SPS), набор параметров изображения (PPS), или набор параметров видео (VPS).
[72] Фиг. 2 является блок–схемой, иллюстрирующей пример видеокодера 20, который может быть выполнен с возможностью выполнять одну или более DMVD–технологий этого раскрытия сущности. Например, видеокодер 20 может быть выполнен с возможностью применять одно или более ограничений к (1) MV, извлекаемому посредством DMVD, и/или (2) к MV–разности между начальным MV и MV, извлекаемым посредством DMVD. Когда ограничение применяется к DMVD, в определенных примерах, только извлеченная информация движения, которая удовлетворяет ограничению, рассматривается в качестве допустимой информации движения. Таким образом, список из MV и конечного выбранного MV может отличаться, если ограничение не использовано.
[73] В первом примере, ограничение включает в себя то, являются или нет извлеченные MV симметричными. Во втором примере, ограничение включает в себя то, являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, симметричными. В третьем примере, ограничение включает в себя то, являются или нет извлеченные MV антисимметричными. В четвертом примере, ограничение включает в себя то, являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, антисимметричными. В некоторых примерах, активация ограничений на симметричные/антисимметричные MV/MV–разности явно передается в служебных сигналах. В других примерах, ограничения могут неявно определяться согласно некоторой кодированной информации. В дополнительных примерах, условия могут задаваться для ограничений таким образом, что ограничение применяется только в некоторых примерах.
[74] В частности, видеокодер 20 может выполнять DMVD–технологии этого раскрытия сущности во время контура восстановления, который включает в себя процессы, выполняемые посредством модуля 58 обратного квантования, модуля 60 обратного преобразования и сумматора 62. Кроме того, как пояснено выше, видеокодер 20 может передавать в служебных сигналах определенные значения, которые могут помогать видеодекодеру, такому как видеодекодер 30, в выполнении DMVD.
[75] Видеокодер 20 может выполнять внутреннее и взаимное кодирование видеоблоков в сериях последовательных видеомакроблоков. Внутреннее кодирование основано на пространственном прогнозировании для того, чтобы уменьшать или удалять пространственную избыточность видео в данном видеокадре или изображении. Взаимное кодирование основано на временном прогнозировании для того, чтобы уменьшать или удалять временную избыточность видео в смежных кадрах или изображениях видеопоследовательности. Внутренний режим (I–режим) может означать любой из нескольких режимов пространственного кодирования. Взаимные режимы, к примеру, однонаправленное прогнозирование (P–режим) или бипрогнозирование (B–режим), могут означать любой из нескольких режимов временного кодирования.
[76] Как показано на фиг. 2, видеокодер 20 принимает текущий видеоблок в видеокадре, который должен кодироваться. В примере по фиг. 2, видеокодер 20 включает в себя запоминающее устройство 66 видеоданных, модуль 40 выбора режима, запоминающее устройство 64 опорных изображений (которое также может упоминаться как буфер декодированных изображений (DPB)), сумматор 50, модуль 52 обработки преобразования, модуль 54 квантования и модуль 56 энтропийного кодирования. Модуль 40 выбора режима, в свою очередь, включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, модуль 46 внутреннего прогнозирования и модуль 48 сегментации. Для восстановления видеоблоков, видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Фильтр удаления блочности (не показан на фиг. 2) также может быть включен для того, чтобы фильтровать границы блоков, чтобы удалять артефакты блочности из восстановленного видео. Если требуется, фильтр удаления блочности типично должен фильтровать вывод сумматора 62. Дополнительные фильтры (внутриконтурные или постконтурные) также могут использоваться в дополнение к фильтру удаления блочности. Такие фильтры не показаны для краткости, но если требуется, могут фильтровать вывод сумматора 50 (в качестве внутриконтурного фильтра).
[77] Запоминающее устройство 66 видеоданных может быть выполнено с возможностью сохранять видеоданные, которые должны кодироваться посредством компонентов видеокодера 20. Видеоданные, сохраненные в запоминающем устройстве 101 видеоданных, могут получаться, например, из видеоисточника 18. Буфер 116 декодированных изображений может представлять собой запоминающее устройство опорных изображений, которое сохраняет опорные видеоданные для использования при кодировании видеоданных посредством видеокодера 20, например, в режимах внутреннего или взаимного прогнозирования. Запоминающее устройство 101 видеоданных может формироваться посредством любого из множества запоминающих устройств, к примеру, как динамическое оперативное запоминающее устройство (DRAM), включающее в себя синхронное DRAM (SDRAM), магниторезистивное RAM (MRAM), резистивное RAM (RRAM), или другие типы запоминающих устройств. Запоминающее устройство 101 видеоданных может предоставляться посредством идентичного запоминающего устройства или отдельных запоминающих устройств. В различных примерах, запоминающее устройство 101 видеоданных может быть внутрикристальным с другими компонентами видеокодера 20 или внекристальным относительно этих компонентов.
[78] Во время процесса кодирования, видеокодер 20 принимает видеокадр или серию последовательных макроблоков, которая должна кодироваться. Кадр или серия последовательных макроблоков может быть разделена на несколько видеоблоков. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют взаимное прогнозирующее кодирование принимаемого видеоблока относительно одного или более блоков в одном или более опорных кадров, чтобы предоставлять временное прогнозирование. Модуль 46 внутреннего прогнозирования альтернативно может выполнять внутреннее прогнозирующее кодирование принимаемого видеоблока относительно одного или более соседних блоков в идентичном кадре или серии последовательных макроблоков, что и блок, который должен кодироваться, чтобы предоставлять пространственное прогнозирование. Видеокодер 20 может выполнять несколько проходов кодирования, например, для того чтобы выбирать надлежащий режим кодирования для каждого блока видеоданных.
[79] Кроме того, модуль 48 сегментирования может сегментировать блоки видеоданных на субблоки на основе оценки предыдущих схем сегментирования в предыдущих проходах кодирования. Например, модуль 48 сегментирования может первоначально сегментировать кадр или серию последовательных макроблоков на CTU и сегментировать каждую из CTU на под–CU на основе анализа искажения в зависимости от скорости передачи (например, оптимизации искажения в зависимости от скорости передачи). Модуль 40 выбора режима дополнительно может формировать структуру данных в виде дерева квадрантов, указывающую сегментирование CTU на под–CU. CU концевого узла дерева квадрантов могут включать в себя одну или более PU и одну или более TU.
[80] Модуль 40 выбора режима может выбирать один из режимов прогнозирования, внутренних или взаимных, например, на основе результатов по ошибкам, и предоставляет результирующий прогнозированный блок в сумматор 50, чтобы формировать остаточные данные, и в сумматор 62, чтобы восстанавливать кодированный блок для использования в качестве опорного кадра. Модуль 40 выбора режима также предоставляет синтаксические элементы, такие как векторы движения, индикаторы внутреннего режима, информация сегментов и другая такая синтаксическая информация, в модуль 56 энтропийного кодирования.
[81] Модуль 42 оценки движения и модуль 44 компенсации движения могут иметь высокую степень интеграции, но проиллюстрированы отдельно в концептуальных целях. Оценка движения, выполняемая посредством блока 42 оценки движения, представляет собой процесс формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение PU видеоблока в текущем видеокадре или изображении относительно прогнозного блока в опорном кадре (или другой кодированной единицы) относительно текущего блока, кодируемого в текущем кадре (или другой кодированной единицы). Прогнозный блок представляет собой блок, для которого обнаруживается то, что он практически совпадает с блоком, который должен кодироваться, с точки зрения пиксельной разности, которая может определяться посредством суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD), или других разностных показателей. В некоторых примерах, видеокодер 20 может вычислять значения для субцелочисленнопиксельных позиций опорных изображений, сохраненных в запоминающем устройстве 64 опорных изображений. Например, видеокодер 20 может интерполировать значения позиций в одну четверть пиксела, позиций в одну восьмую пиксела или других дробнопиксельных позиций опорного изображения. Следовательно, модуль 42 оценки движения может выполнять поиск движения относительно полнопиксельных позиций и дробнопиксельных позиций и выводить вектор движения с дробнопиксельной точностью.
[82] Модуль 42 оценки движения вычисляет вектор движения для PU видеоблока в серии взаимно кодированных последовательных макроблоков посредством сравнения позиции PU с позицией прогнозного блока опорного изображения. Опорное изображение может выбираться из первого списка опорных изображений (List0) или второго списка опорных изображений (List1), каждый из которых идентифицируют одно или более опорных изображений, сохраненных в запоминающем устройстве 64 опорных изображений. Модуль 42 оценки движения отправляет вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения.
[83] Компенсация движения, выполняемая посредством модуля 44 компенсации движения, может заключать в себе выборку или формирование прогнозирующего блока на основе вектора движения, определенного посредством модуля 42 оценки движения. С другой стороны, модуль 42 оценки движения и модуль 44 компенсации движения могут быть функционально интегрированы в некоторых примерах. При приеме вектора движения для PU текущего видеоблока, модуль 44 компенсации движения может находить прогнозный блок, на который указывает вектор движения в одном из списков опорных изображений. Сумматор 50 формирует остаточный видеоблок посредством вычитания пиксельных значений прогнозного блока из пиксельных значений текущего кодируемого видеоблока, формируя значения пиксельных разностей, как пояснено ниже. В общем, модуль 42 оценки движения выполняет оценку движения относительно компонентов сигнала яркости, и модуль 44 компенсации движения использует векторы движения, вычисленные на основе компонентов сигнала яркости, как для компонентов сигнала цветности, так и для компонентов сигнала яркости. Модуль 40 выбора режима также может формировать синтаксические элементы, ассоциированные с видеоблоками и серией последовательных видеомакроблоков, для использования посредством видеодекодера 30 при декодировании видеоблоков серии последовательных видеомакроблоков.
[84] Модуль 46 внутреннего прогнозирования может внутренне прогнозировать текущий блок, в качестве альтернативы взаимному прогнозированию, выполняемому посредством модуля 42 оценки движения и модуля 44 компенсации движения, как описано выше. В частности, модуль 46 внутреннего прогнозирования может определять режим внутреннего прогнозирования для использования для того, чтобы кодировать текущий блок. В некоторых примерах, модуль 46 внутреннего прогнозирования может кодировать текущий блок с использованием различных режимов внутреннего прогнозирования, например, во время отдельных проходов кодирования, и модуль 46 внутреннего прогнозирования (либо модуль 40 выбора режима в некоторых примерах) может выбирать надлежащий режим внутреннего прогнозирования для использования из тестированных режимов.
[85] Например, модуль 46 внутреннего прогнозирования может вычислять значения искажения в зависимости от скорости передачи с использованием анализа искажения в зависимости от скорости передачи для различных тестированных режимов внутреннего прогнозирования и выбирать режим внутреннего прогнозирования, имеющий наилучшие характеристики искажения в зависимости от скорости передачи, из тестированных режимов. Анализ искажения в зависимости от скорости передачи, в общем, определяет величину искажения (или ошибки) между кодированным блоком и исходным некодированным блоком, который кодирован для того, чтобы формировать кодированный блок, а также скорость передачи битов (т.е. число битов), используемую для того, чтобы формировать кодированный блок. Модуль 46 внутреннего прогнозирования может вычислять отношения из искажений и скоростей для различных кодированных блоков, чтобы определять то, какой режим внутреннего прогнозирования демонстрирует наилучшее значение искажения в зависимости от скорости передачи для блока.
[86] После выбора режима внутреннего прогнозирования для блока, модуль 46 внутреннего прогнозирования может предоставлять информацию, указывающую выбранный режим внутреннего прогнозирования для блока, в модуль 56 энтропийного кодирования. Модуль 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим внутреннего прогнозирования. Видеокодер 20 может включать в передаваемый поток битов конфигурационные данные, которые могут включать в себя множество индексных таблиц режимов внутреннего прогнозирования и множество модифицированных индексных таблиц режимов внутреннего прогнозирования (также называемых "таблицами преобразования кодовых слов"), определения контекстов кодирования для различных блоков и индикаторы относительно наиболее вероятного режима внутреннего прогнозирования, индексной таблицы режимов внутреннего прогнозирования и модифицированной индексной таблицы режимов внутреннего прогнозирования, которые следует использовать для каждого из контекстов.
[87] Видеокодер 20 формирует остаточный видеоблок посредством вычитания прогнозирующих данных из модуля 40 выбора режима из кодируемого исходного видеоблока. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 52 обработки преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT), или концептуально аналогичное преобразование, к остаточному блоку, формируя видеоблок, содержащий значения коэффициентов преобразования. Вейвлет–преобразования, целочисленные преобразования, подполосные преобразования, дискретные синусные преобразования (DST) или другие типы преобразований могут использоваться вместо DCT. В любом случае, модуль 52 обработки преобразования применяет преобразование к остаточному блоку, формируя блок коэффициентов преобразования. Преобразование может преобразовывать остаточную информацию из пиксельной области в область преобразования, такую как частотная область. Модуль 52 обработки преобразования может отправлять результирующие коэффициенты преобразования в модуль 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования, чтобы дополнительно уменьшать скорость передачи битов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может модифицироваться посредством регулирования параметра квантования.
[88] После квантования, модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнять контекстно–адаптивное кодирование переменной длины (CAVLC), контекстно–адаптивное двоичное арифметическое кодирование (CABAC), синтаксическое контекстно–адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование на основе сегментирования на интервалы вероятности (PIPE) или другую технологию энтропийного кодирования. В случае контекстного энтропийного кодирования, контекст может быть основан на соседних блоках. После энтропийного кодирования посредством модуля 56 энтропийного кодирования, кодированный поток битов может передаваться в другое устройство (к примеру, в видеодекодер 30) или архивироваться для последующей передачи или извлечения.
[89] Модуль 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, для того чтобы восстанавливать остаточный блок в пиксельной области. В частности, сумматор 62 суммирует восстановленный остаточный блок с прогнозным блоком с компенсацией движения, сформированным посредством модуля 44 компенсации движения или модуля 46 внутреннего прогнозирования, чтобы формировать восстановленный видеоблок для хранения в запоминающем устройстве 64 опорных изображений. Восстановленный видеоблок может использоваться посредством модуля 42 оценки движения и модуля 44 компенсации движения в качестве опорного блока для того, чтобы взаимно кодировать блок в последующем видеокадре.
[90] Фиг. 3 является блок–схемой, иллюстрирующей пример видеодекодера 30, который может быть выполнен с возможностью выполнять одну или более DMVD–технологий этого раскрытия сущности. Например, видеодекодер 30 может быть выполнен с возможностью применять одно или более ограничений к (1) MV, извлекаемому посредством DMVD, и/или (2) к MV–разности между начальным MV и MV, извлекаемым посредством DMVD. Когда ограничение применяется к DMVD, в определенных примерах, только извлеченная информация движения, которая удовлетворяет ограничению, рассматривается в качестве допустимой информации движения. Таким образом, список из MV и конечного выбранного MV может отличаться, если ограничение не использовано.
[91] В первом примере, ограничение включает в себя то, являются или нет извлеченные MV симметричными. Во втором примере, ограничение включает в себя то, являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, симметричными. В третьем примере, ограничение включает в себя то, являются или нет извлеченные MV антисимметричными. В четвертом примере, ограничение включает в себя то, являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, антисимметричными. В некоторых примерах, активация ограничений на симметричные/антисимметричные MV/MV–разности явно передается в служебных сигналах. В других примерах, ограничения могут неявно определяться согласно некоторой кодированной информации. В дополнительных примерах, условия могут задаваться для ограничений таким образом, что ограничение применяется только в некоторых примерах.
[92] В примере по фиг. 3, видеодекодер 30 включает в себя запоминающее устройство 68 видеоданных, модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 внутреннего прогнозирования, модуль 76 обратного квантования, модуль 78 обратного преобразования, запоминающее устройство 82 опорных изображений и сумматор 80. Видеодекодер 30, в некоторых примерах, может выполнять проход декодирования, в общем, взаимно–обратный относительно прохода кодирования, описанного относительно видеокодера 20 (фиг. 2). Модуль 72 компенсации движения может формировать прогнозирующие данные на основе векторов движения, принимаемых из модуля 70 энтропийного декодирования, в то время как модуль 74 внутреннего прогнозирования может формировать прогнозирующие данные на основе индикаторов режима внутреннего прогнозирования, принимаемых из модуля 70 энтропийного декодирования.
[93] Запоминающее устройство 68 видеоданных может сохранять кодированные видеоданные, такие как кодированный поток видеобитов, которые должны декодироваться посредством компонентов видеодекодера 30. Видеоданные, сохраненные в запоминающем устройстве 68 видеоданных, могут получаться, например, из машиночитаемого носителя 16, например, из локального видеоисточника, такого как камера, через передачу по проводной или беспроводной сети видеоданных, либо посредством осуществления доступа к физическим носителям хранения данных. Запоминающее устройство 68 видеоданных может формировать буфер кодированных изображений (CPB), который сохраняет кодированные видеоданные из кодированного потока видеобитов. Запоминающее устройство 82 опорных изображений может представлять собой запоминающее устройство, которое сохраняет опорные видеоданные для использования при декодировании видеоданных посредством видеодекодера 30, например, в режимах внутреннего или взаимного прогнозирования или для вывода. Запоминающее устройство 68 видеоданных и запоминающее устройство 82 опорных изображений могут формироваться посредством любого из множества запоминающих устройств, таких как DRAM, включающих в себя SDRAM, MRAM, RRAM или другие типы запоминающих устройств. Запоминающее устройство 68 видеоданных и запоминающее устройство 82 опорных изображений могут предоставляться посредством идентичного запоминающего устройства или отдельных запоминающих устройств. В различных примерах, запоминающее устройство 68 видеоданных может быть внутрикристальным с другими компонентами видеодекодера 30 или внекристальным относительно этих компонентов.
[94] Запоминающее устройство 68 видеоданных принимает и сохраняет кодированные видеоданные (например, NAL–единицы) потока битов. Модуль 70 энтропийного декодирования может принимать кодированные видеоданные (например, NAL–единицы) из запоминающего устройства 68 видеоданных и может синтаксически анализировать NAL–единицы, чтобы получать синтаксические элементы. Модуль 70 энтропийного декодирования может энтропийно декодировать энтропийно кодированные синтаксические элементы в NAL–единицах. В ходе процесса декодирования, видеодекодер 30 принимает кодированный поток видеобитов, который представляет видеоблоки кодированной серии последовательных видеомакроблоков, и ассоциированные синтаксические элементы из видеокодера 20. Модуль 70 энтропийного декодирования видеодекодера 30 энтропийно декодирует поток битов, чтобы формировать квантованные коэффициенты, векторы движения или индикатора режима прогнозирования и другие синтаксические элементы. Модуль 70 энтропийного декодирования перенаправляет векторы движения и другие синтаксические элементы в модуль 72 компенсации движения. Видеодекодер 30 может принимать синтаксические элементы на уровне серии последовательных видеомакроблоков и/или на уровне видеоблока.
[95] Когда серия последовательных видеомакроблоков кодируется в качестве серии внутренне кодированных последовательных (I–) макроблоков, модуль 74 внутреннего прогнозирования может формировать прогнозирующие данные для видеоблока текущей серии последовательных видеомакроблоков на основе передаваемого в служебных сигналах режима внутреннего прогнозирования и данных из ранее декодированных блоков текущего кадра или изображения. Когда видеокадр кодируется в качестве серии взаимно кодированных последовательных (т.е. B– или P–) макроблоков, модуль 72 компенсации движения формирует прогнозные блоки для видеоблока текущей серии последовательных видеомакроблоков на основе векторов движения и других синтаксических элементов, принимаемых из блока 70 энтропийного декодирования. Прогнозные блоки могут формироваться из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может составлять списки опорных кадров, List0 и List1, с использованием технологий составления по умолчанию на основе опорных изображений, сохраненных в запоминающем устройстве 82 опорных изображений. Модуль 72 компенсации движения определяет информацию прогнозирования для видеоблока текущей серии последовательных видеомакроблоков посредством синтаксического анализа векторов движения и других синтаксических элементов и использует информацию прогнозирования для того, чтобы формировать прогнозирующие блоки для текущего декодируемого видеоблока. Например, модуль 72 компенсации движения использует некоторые из принимаемых синтаксических элементов для того, чтобы определять режим прогнозирования (например, внутреннее или взаимное прогнозирование), используемый для того, чтобы кодировать видеоблоки серии последовательных видеомакроблоков, тип серии последовательных макроблоков взаимного прогнозирования (например, серия последовательных B–макроблоков или серия последовательных P–макроблоков), информацию составления для одного или более списков опорных изображений для серии последовательных макроблоков, векторы движения для каждого взаимно кодированного видеоблока серии последовательных макроблоков, состояние взаимного прогнозирования для каждого взаимно кодированного видеоблока серии последовательных макроблоков и другую информацию для того, чтобы декодировать видеоблоки в текущей серии последовательных видеомакроблоков.
[96] Модуль 72 компенсации движения также может выполнять интерполяцию на основе интерполяционных фильтров. Модуль 72 компенсации движения может использовать интерполяционные фильтры, используемые посредством видеокодера 20 в ходе кодирования видеоблоков, для того чтобы вычислять интерполированные значения для субцелочисленных пикселов опорных блоков. В этом случае, модуль 72 компенсации движения может определять интерполяционные фильтры, используемые посредством видеокодера 20, из принимаемых синтаксических элементов и использовать интерполяционные фильтры для того, чтобы формировать прогнозные блоки.
Y
[97] Модуль 76 обратного квантования обратно квантует, т.е. деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов и декодированные посредством модуля 70 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра QP квантования, вычисленного посредством видеодекодера 30 для каждого видеоблока в серии последовательных видеомакроблоков, чтобы определять степень квантования и, аналогично, степень обратного квантования, которое должно применяться.
[98] Модуль 78 обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования, чтобы формировать остаточные блоки в пиксельной области.
[99] После того, как модуль 72 компенсации движения формирует прогнозный блок для текущего видеоблока на основе векторов движения и других синтаксических элементов, видеодекодер 30 формирует декодированный видеоблок посредством суммирования остаточных блоков из модуля 78 обратного преобразования с соответствующими прогнозными блоками, сформированными посредством модуля 72 компенсации движения. Сумматор 80 представляет компонент или компоненты, которые выполняют эту операцию суммирования. Если требуется, фильтр удаления блочности также может применяться для того, чтобы фильтровать декодированные блоки, чтобы удалять артефакты блочности. Другие контурные фильтры (в контуре кодирования или после контура кодирования) также могут использоваться для того, чтобы сглаживать пиксельные переходы или иным образом повышать качество видео. Декодированные видеоблоки в данном кадре или изображении затем сохраняются в запоминающем устройстве 82 опорных изображений, которое сохраняет опорные изображения, используемые для последующей компенсации движения. Запоминающее устройство 82 опорных изображений также сохраняет декодированное видео для последующего представления на устройстве отображения, таком как устройство 32 отображения по фиг. 1.
[100] В соответствии с технологиями этого раскрытия сущности, видеокодер, к примеру, видеокодер 20 и видеодекодер 30, может выполнять DMVD для того, чтобы извлекать информацию движения для текущего блока видеоданных. В частности, эти технологии могут включать в себя любые из следующих технологий, отдельно или в любой комбинации.
[101] Один из принципов этого раскрытия сущности заключается в том, чтобы улучшать DMVD. Технологии конкретно представлены в нескольких различных детализированных аспектах, как пояснено ниже. Следующие технологии для того, чтобы улучшать DMVD, могут применяться отдельно. Альтернативно, любая комбинация технологий, описанных в этом раскрытии сущности, может применяться вместе. Следующие DMVD–технологии, независимо от того, применяются отдельно или в какой–либо комбинации, могут повышать эффективность кодирования и/или уменьшать скорость передачи битов. Например, ограничение (1) MV, извлекаемого посредством DMVD, и/или (2) MV–разности между начальным MV и MV, извлекаемым посредством DMVD, может повышать эффективность кодирования и/или уменьшать скорость передачи битов. В каждом из вышеприведенных примеров, ограничения могут применяться на основе условия.
[102] В HEVC, наибольшая единица кодирования в серии последовательных макроблоков называется "блоком дерева кодирования (CTB)" или "единицей дерева кодирования (CTU)". CTB содержит дерево квадрантов, узлы которого представляют собой единицы кодирования. Размер CTB может составлять в диапазоне от 16×16 до 64×64 в основном HEVC–профиле (хотя технически могут поддерживаться CTB–размеры 8×8). Единица кодирования (CU) может иметь идентичной размер CTB, хотя не больше 8×8. Каждая единица кодирования кодируется с помощью одного режима. Когда CU взаимно кодируется, она дополнительно может сегментироваться на 2 или 4 единицы прогнозирования (PU) либо становиться только одной PU, когда не применяется дополнительное сегментирование. Когда две PU присутствуют в одной CU, они могут представлять собой прямоугольники с половиной размера или два прямоугольника с 1/4 или 3/4 от размера CU. Когда CU взаимно кодируется, один набор информации движения присутствует для каждой PU. Помимо этого, каждая PU кодируется с помощью уникального режима взаимного прогнозирования, чтобы извлекать набор информации движения.
[103] В HEVC–стандарте, предусмотрено два режима взаимного прогнозирования, называемых "режимом объединения" (пропуск рассматривается как частный случай объединения), и "режимом усовершенствованного прогнозирования векторов движения (AMVP)", соответственно, для единицы прогнозирования (PU). В AMVP–режиме или в режиме объединения, список возможных вариантов векторов движения (MV) поддерживается для нескольких предикторов векторов движения. Вектор(ы) движения, а также опорные индексы в режиме объединения текущей PU формируются посредством извлечения одного возможного варианта из списка возможных MV–вариантов.
[104] Список возможных MV–вариантов содержит до 5 возможных вариантов для режима объединения и только два возможных варианта для AMVP–режима. Возможный вариант объединения может содержать набор информации движения, например, векторы движения, соответствующие обоим спискам опорных изображений (List0 и List1), и опорные индексы. Если возможный вариант объединения идентифицируется посредством индекса объединения, опорные изображения используются для прогнозирования текущих блоков, а также определяются ассоциированные векторы движения. Тем не менее, в AMVP–режиме для каждого потенциального направления прогнозирования из List0 или из List1, опорный индекс должен явно передаваться в служебных сигналах, вместе с индексом MV–предиктора (MVP), в список возможных MV–вариантов, поскольку возможный AMVP–вариант содержит только вектор движения. В AMVP–режиме, могут дополнительно детализироваться прогнозные векторы движения. Как можно видеть выше, возможный вариант объединения соответствует полному набору информации движения, в то время как возможный AMVP–вариант содержит всего один вектор движения для конкретного направления прогнозирования и опорного индекса. Возможные варианты для обоих режимов извлекаются аналогично из идентичных пространственных и временных соседних блоков.
[105] Принцип DMVD–технологий служит для видеокодера (например, видеокодера 20 или видеодекодера 30) для того, чтобы извлекать информацию движения, такую как векторы движения и направления прогнозирования, с использованием ранее декодированной информации. При использовании в данном документе, аббревиатура "MV" означает вектор движения. List0 и List1 представляют собой два списка, которые имеют структуру списков изображений в буфере декодированных изображений (DPB), или запоминающем устройстве 82 опорных изображений (по фиг. 3). Индекс, называемый "индексом опорного изображения", используется для того, чтобы идентифицировать конкретное изображение в одном из этих списков. Для унипрогнозирования, изображение может выбираться из любого из этих списков. Для бипрогнозирования, два изображения выбираются, по одному из каждого списка (например, одно из List0 и одно из List1). В текущих подходах, List0– и List1–MV, извлекаемые посредством DMVD, определяются независимо для некоторых DMVD–технологий, таких как билатеральное сопоставление с шаблонами и сопоставление с шаблонами на основе преобразования с повышением частоты кадров (FRUC). В этом раскрытии сущности, при извлечении бипрогнозированных MV (например, пары MV, включающих в себя List0–MV и List1–MV) на основе начальных MV, может применяться ограничение симметричного/антисимметричного MV и/или разности симметричного/антисимметричного MV. В некоторых примерах, может применяться более одного ограничения, к примеру, применение ограничения на симметричные MV и ограничения на симметричные MV–разности. Ограничение может включать в себя одно или более условий. В некоторых примерах, когда ограничение применяется к DMVD (например, посредством применения ограничения к MV и/или MV–разности, извлекаемой из DMVD), только извлеченная информация движения, которая удовлетворяет (например, подходит) ограничению, может рассматриваться в качестве допустимой информации движения. Например, MV, извлекаемый из DMVD, которое удовлетворяет (например, подходит) ограничению, может рассматриваться в качестве допустимого MV, и MV, извлекаемый из DMVD, которое не удовлетворяет ограничению, может рассматриваться в качестве недопустимого MV. В качестве другого примера, MV–разность, извлекаемая из DMVD, которое удовлетворяет ограничению, может рассматриваться в качестве допустимой MV–разности, и MV–разность, извлекаемая из DMVD, которое не удовлетворяет ограничению, может рассматриваться в качестве недопустимой MV–разности. В некоторых примерах, видеокодер (например, видеокодер 20 или видеодекодер 30) может быть выполнен с возможностью использовать допустимую информацию вектора движения, чтобы кодировать видеоданные (например, текущий блок видеоданных), и не использовать недопустимую информацию вектора движения, чтобы кодировать видеоданные (например, текущий блок видеоданных). В некоторых примерах, допустимая информация вектора движения затем может сравниваться с другой допустимой информацией вектора движения, и выбирается допустимая информация вектора движения, определенная как имеющая наименьший показатель затрат.
[106] Пространственные возможные MV–варианты извлекаются из соседних блоков, показанных на фиг. 4, для конкретной PU (PU0), хотя способы для формирования возможных вариантов из блоков отличаются для режима объединения и AMVP–режима. В режиме объединения, до четырех пространственных возможных MV–вариантов могут извлекаться с порядками, показанными на фиг. 4A с помощью номеров, и порядок является следующим: левый (0, A1), верхний (1, B1), правый верхний (2, B0), левый нижний (3, A0) и левый верхний (4, B2), как показано на фиг. 4A.
[107] В AMVP–режиме, соседние блоки разделяются на две группы: левую группу, состоящую из блока 0 и 1, и верхнюю группу, состоящую из блоков 2, 3 и 4, как показано на фиг. 4B. Для каждой группы, потенциальный возможный вариант в соседнем блоке, ссылающийся на опорное изображение, идентичное опорному изображению, указываемому посредством передаваемого в служебных сигналах опорного индекса, имеет наивысший приоритет для выбора с возможностью формировать конечный возможный вариант группы. Возможно то, что все соседние блоки не содержат вектор движения, указывающий на идентичное опорное изображение. Следовательно, если такой возможный вариант не может обнаруживаться, первый доступный возможный вариант должен масштабироваться с возможностью формировать конечный возможный вариант, в силу чего могут компенсироваться разности временного расстояния.
[108] Возможные варианты временных предикторов векторов движения (TMVP), если активируются и являются доступными, добавляются в список возможных MV–вариантов после возможных вариантов пространственных векторов движения. Процесс извлечения векторов движения для возможного TMVP–варианта является идентичным для режима объединения и AMVP–режима; тем не менее, целевой опорный индекс для возможного TMVP–варианта в режиме объединения может всегда задаваться равным 0. Первичное блочное местоположение для извлечения возможных TMVP–вариантов представляет собой нижний правый блок за пределами совместно размещенной PU, как показано на фиг. 5A, в качестве блока "T", чтобы компенсировать смещение в верхнем и левом блоках, используемое для того, чтобы формировать пространственные соседние возможные варианты. Тем не менее, если этот блок расположен за пределами текущей CTB–строки, или информация движения не доступна, блок заменяется на центральный блок PU.
[109] Вектор движения для возможного TMVP–варианта извлекается из совместно размещенной PU совместно размещенного изображения, указываемого на уровне серии последовательных макроблоков. Вектор движения для совместно размещенной PU называется "совместно размещаемым MV". Аналогично временному прямому режиму в AVC, для того чтобы извлекать вектор движения возможного TMVP–варианта, совместно размещенный MV должен масштабироваться, чтобы компенсировать разности временного расстояния, как показано на фиг. 5.
[110] Ниже поясняются несколько аспектов режима объединения и AMVP–режима.
[111] Масштабирование векторов движения: Предполагается, что значение векторов движения является пропорциональным расстоянию изображений во времени представления. Вектор движения ассоциирует два изображения, опорное изображение и изображение, содержащее вектор движения (а именно, вложенное изображение). Когда вектор движения используется для того, чтобы прогнозировать другой вектор движения, расстояние вложенного изображения и опорного изображения вычисляется на основе значений номеров в последовательности изображений (POC).
[112] Для вектора движения, который должен прогнозироваться, его ассоциированное вложенное изображение и опорное изображение могут отличаться. Следовательно, новое расстояние (на основе POC) вычисляется. Кроме того, вектор движения масштабируется на основе двух POC–расстояний. Для пространственного соседнего возможного варианта, вложенные изображения для двух векторов движения являются идентичными, в то время как опорные изображения отличаются. В HEVC, масштабирование векторов движения применяется к TMVP и к AMVP для пространственных и временных соседних возможных вариантов.
[113] Формирование искусственных возможных вариантов векторов движения: Если список возможных вариантов векторов движения не закончен (т.е. меньше предварительно определенного максимального числа возможных вариантов), искусственные возможные варианты векторов движения формируются и вставляются в конец списка до тех пор, пока он не будет иметь все возможные варианты.
[114] В режиме объединения, предусмотрено два типа искусственных возможных MV–вариантов: комбинированный возможный вариант, извлекаемый только для серий последовательных B–макроблоков, и нулевые возможные варианты, используемые только для AMVP, если первый тип не предоставляет достаточное количество искусственных возможных вариантов.
[115] Для каждой пары возможных вариантов, которые уже находятся в списке возможных вариантов и имеют необходимую информацию движения, двунаправленные комбинированные возможные варианты векторов движения извлекаются посредством комбинации вектора движения первого возможного варианта, ссылающегося на изображение в List0, и вектора движения второго возможного варианта, ссылающегося на изображение в List1.
[116] Процесс отсечения для вставки возможных вариантов: Может оказываться, что возможные варианты из различных блоков являются идентичными, что снижает эффективность списка возможных AMVP–вариантов/возможных вариантов объединения. Процесс отсечения применяется, чтобы разрешать эту проблему. Он сравнивает один возможный вариант с другими в текущем списке возможных вариантов, чтобы не допускать вставки идентичного возможного варианта в известной мере. Чтобы уменьшать сложность, применяются только ограниченные числа процессов отсечения, вместо сравнения каждого потенциального возможного варианта со всеми другими существующими возможными вариантами.
[117] В одном примере эталонного программного обеспечения JEM, имеется несколько инструментальных средств взаимного кодирования, которые извлекают или детализируют вектор движения (MV) для текущего блока на стороне декодера. Эти подходы DMVD конкретно представлены, как пояснено ниже.
[118] Фиг. 6 и 7 являются концептуальными схемами, иллюстрирующими принципы для извлечения векторов движения на основе сопоставления с шаблонами (PMMVD). PMMVD–режим представляет собой специальный режим объединения на основе технологий преобразования с повышением частоты кадров (FRUC). В этом режиме, информация движения блока не передается в служебных сигналах, а извлекается на стороне декодера. Эта технология включена в один пример JEM.
[119] FRUC–флаг передается в служебных сигналах для CU, когда ее флаг объединения является истинным. Когда FRUC–флаг является ложным, индекс объединения передается в служебных сигналах, и регулярный режим объединения используется. Когда FRUC–флаг является истинным, дополнительный флаг FRUC–режима передается в служебных сигналах, чтобы указывать то, какой способ (билатеральное сопоставление или сопоставление с шаблонами) должен использоваться для того, чтобы извлекать информацию движения для блока.
[120] Во время процесса извлечения движения, начальный вектор движения сначала извлекается для полной CU на основе билатерального сопоставления или сопоставления с шаблонами. Во–первых, проверяется список объединения CU, альтернативно называемых "инициирующими PMMVD–числами", и возможный вариант, который приводит к минимальным затратам на сопоставление (например, для функции затрат на искажение в зависимости от скорости передачи (RD)), выбирается в качестве начальной точки. Затем выполняется локальный поиск на основе билатерального сопоставления или сопоставления с шаблонами вокруг начальной точки, и MV, приводящий к минимальным затратам на сопоставление, рассматривается в качестве MV для целой CU. После этого, информация движения дополнительно детализируется на уровне субблока с извлеченными CU–векторами движения в качестве начальных точек.
[121] Согласно настоящим технологиям этого раскрытия сущности, ограничения могут применяться к извлеченным CU–векторам движения на основе того, является, например, MV, извлекаемый посредством DMVD, симметричным или антисимметричным, и/или (2) того, является MV–разность между начальным MV и MV, извлекаемым посредством DMVD, симметричной или антисимметричной. В каждом из вышеприведенных примеров, ограничения могут применяться на основе условия, например, относительно начальных MV или извлеченных MV.
0
1
0
1
0
1
[122] Как показано на фиг. 6, билатеральное сопоставление используется для того, чтобы извлекать информацию движения текущего блока (Cur) посредством нахождения наилучшего совпадения между двумя опорными блоками (R и R) вдоль траектории движения текущего блока в двух различных опорных изображениях (Ref0 и Ref1). Траектория движения может включать в себя тракт, которому пиксел в блоке следует в пространстве и времени, при рассмотрении последовательности изображений (например, опорных кадров и текущего кадра) в качестве трехмерного непрерывного пространственно–временного поля. Согласно допущению относительно траектории непрерывного движения, векторы MV0 и MV1 движения, указывающие на два опорных блока (R и R), являются пропорциональными временным расстояниям между текущим изображением (Cur) и двумя опорными изображениями (Ref0 и Ref1). Извлеченные MV 600 и 602 извлекаются с использованием билатерального сопоставления и указывают на опорные блоки R' и R', соответственно. В качестве частного случая, когда текущее изображение (Cur) временно находится между двумя опорными изображениями (Ref0 и Ref1), и временное расстояние от текущего изображения до двух опорных изображений является идентичным, билатеральное сопоставление становится двунаправленным MV на основе зеркалирования. Последовательно, извлеченные векторы 600 и 602 движения аналогично зеркально отражаются.
0
1
0
1
0
1
[123] Как показано на фиг. 7, сопоставление с шаблонами используется для того, чтобы извлекать информацию движения текущего блока (Cur) посредством нахождения наилучшего совпадения между шаблоном (верхним и/или левым соседними блоками текущего блока) в текущем изображении и блоком (с идентичным размером с шаблоном) в опорном изображении (Ref0 и Ref1). Шаблон может включать в себя соседние пикселы блока, который используется для того, чтобы сравнивать интересующий блок (Cur) с опорными возможными вариантами (R с MV0 и R с MV1) или с извлеченными опорными вариантами (R' с MV 700 и R'с MV 702) посредством выполнения поиска в соседних блоках R и R. Наиболее аналогичный опорный элемент затем используется в качестве прогнозирования.
[124] В видеокодере 20, решении касательно того, основано использование FRUC–режима объединения для CU на основе выбора RD–затрат принимается для нормального возможного варианта объединения. Таким образом, два режима сопоставления (билатеральное сопоставление и сопоставление с шаблонами) проверяются на предмет CU посредством использования выбора RD–затрат. Первый из них, приводящий к минимальным затратам, дополнительно сравнивается с другими CU–режимами. Если FRUC–режим сопоставления является наиболее эффективным, FRUC–флаг задается как истинный для CU, и связанный режим сопоставления используется.
0
1
[125] На 5–ой конференции JVET, "Enhanced Template Matching in FRUC Mode", JVET–E0035, доступный по адресу http://phenix.it–sudparis.eu/jvet/, предложен для того, чтобы дополнительно улучшать FRUC–сопоставление с шаблонами. Блок–схема последовательности операций способа примерного FRUC–режима сопоставления с шаблонами показана на фиг. 8. На первом этапе, обнаруживается то, что шаблон T (и его соответствующая информация MV0 движения) совпадает с текущим шаблоном Tc текущего блока из опорных list0–изображений. На втором этапе, шаблон T (и его соответствующая информация MV1 движения) обнаруживается из опорных list1–изображений. Полученная информация MV0 и MV1 движения используется для того, чтобы выполнять бипрогнозирование таким образом, чтобы формировать предиктор текущего блока.
[126] FRUC–режим сопоставления с шаблонами может улучшаться посредством введения двунаправленного сопоставления с шаблонами и адаптивного выбора между унипрогнозированием и бипрогнозированием. Примерные модификации относительно фиг. 8 подчеркнуты на фиг. 9.
0
C
[127] Двунаправленное сопоставление с шаблонами может реализовываться на основе однонаправленного сопоставления с шаблонами. Как показано на фиг. 8, совпадающий шаблон T сначала обнаруживается на первом этапе сопоставления с шаблонами из опорных List0–изображений (800). Следует отметить, что List0 здесь рассматривается только в качестве примера. Фактически, List0 или List1, используемые на первом этапе, являются адаптивными к начальным затратам в зависимости от искажения между текущим шаблоном и начальным шаблоном в соответствующем опорном изображении. Начальный шаблон может определяться с начальной информацией движения текущего блока, который доступен перед выполнением первого сопоставления с шаблонами. Список опорных изображений, соответствующий минимальным начальным затратам в зависимости от искажения между шаблонами, используется на первом этапе сопоставления с шаблонами. Например, если начальные затраты в зависимости от искажения между шаблонами, соответствующие List0, не превышают затраты, соответствующие List1, List0 используется на первом этапе сопоставления с шаблонами, и List1 используется на втором этапе, то текущий шаблон T текущего блока обновляется следующим образом:
C
C
0
T'=2*T–T
C
C
1
1
[128] Обновленный текущий шаблон T', вместо текущего шаблона T, используется для того, чтобы находить другой совпадающий шаблон T из опорных List1–изображений во втором сопоставлении с шаблонами (802). Как результат, совпадающий шаблон T обнаруживается посредством объединенного использования опорных List0– и List1–изображений (804). Этот процесс сопоставления называется "двунаправленным сопоставлением с шаблонами".
0
1
C
1
C
0
1
[129] Выбор между унипрогнозированием и бипрогнозированием для прогнозирования с компенсацией движения (MCP) может быть основан на искажении при сопоставлении с шаблонами. Как показано на фиг. 9, во время сопоставления с шаблонами, искажение между шаблоном T и Tc (текущим шаблоном) может вычисляться как cost0 (900), текущий шаблон может обновляться (902), и искажение между шаблоном T и T' (обновленным текущим шаблоном) может вычисляться как cost1 (904). Если cost0 меньше 0,5*cost1 (906), унипрогнозирование на основе MV0 может применяться к FRUC–режиму сопоставления с шаблонами (908); в противном случае, бипрогнозирование на основе MV0 и MV1 применяется (910). Следует отметить, что cost0 сравнивается 0,5*cost1, поскольку cost1 указывает разность между шаблоном T и T' (обновленным текущим шаблоном), которая равна 2–кратной разности между Tc (текущим шаблоном) и его прогнозированием 0,5*(T+T). Следует отметить, что MCP может применяться к детализации движения на уровне PU. Детализация движения на уровне суб–PU может быть оставлена без изменений.
[130] В соответствии с технологиями этого раскрытия сущности, видеокодер 20 и видеодекодер 30 могут ограничивать извлеченные векторы движения из FRUC–режима сопоставления с шаблонами (одно– и двунаправленного) на уровне PU или уровне суб–PU на основе того, включает или нет (1) ограничение в себя то, являются или нет извлеченные MV симметричными, (2), являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, симметричными, (3), являются или нет извлеченные MV антисимметричными и/или (4), являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, антисимметричными. Условия могут задаваться для ограничений таким образом, что ограничение применяется только на основе начальных MV или FRUC–шаблона.
[131] Фиг. 10 является концептуальной схемой, иллюстрирующей принципы, связанные с двунаправленным оптическим потоком в одном примере JEM. Двунаправленный оптический поток (BIO) представляет собой попиксельную детализацию движения, которая выполняется поверх поблочной компенсации движения в случае бипрогнозирования. Поскольку BIO компенсирует точное движение в блоке, активация BIO приводит к увеличению размера блока для компенсации движения. Детализация движения на уровне выборки не требует исчерпывающего поиска или передачи служебных сигналов, поскольку имеется явное уравнение, которое обеспечивает точный вектор движения для каждой выборки.
[132] Пусть представляет собой значение яркости из опорного элемента k (k=0, 1) после блочного движения с компенсацией, и, представляют собой горизонтальные и вертикальные компоненты градиента, соответственно. При условии, что оптический поток является допустимым, поле векторов движения задается посредством уравнения
(1)
[133] При комбинировании уравнения оптического потока с эрмитовой интерполяцией для траектории движения каждой выборки, получается уникальный полином третьего порядка, который совпадает как со значениями функции , так и с производными на концах. Значение этого полинома в t=0 представляет собой BIO–прогнозирование:
(2)
0
1
0
1
1
[134] Здесь τ и τ обозначают расстояние до опорных кадров, как показано на фиг. 10. Расстояния τ и τ вычисляются на основе POC для Ref0 и Ref1: τ0(current)=POC–POC(Ref0), τ=POC (Ref1)–POC(current). Если оба прогнозирования исходят из идентичного направления времени (из прошлого или из будущего), то знаки отличаются . В этом случае, BIO применяется, только если прогнозирование исходит не из идентичного момента времени (), обе области, на которые ссылаются, имеют ненулевое движение (), и блочные векторы движения являются пропорциональными временному расстоянию ().
[135] Поле векторов движения определяется посредством минимизации разности Δ между значениями в точках A и B (пересечении траектории движения и плоскостей опорных кадров на фиг. 10). Модель использует только первый линейный член локального разложения в ряд Тейлора для Δ:
(3)
[136] Все значения в (1) зависят от выборочного местоположения , которое опущено до сих пор. При условии, что движение является согласованным в локальном окружении, минимизируется Δ внутри квадратного окна Ω (2M+1)*(2M+1), центрированного в текущей прогнозированной точке :
(4)
[137] Для этой проблемы оптимизации, используется упрощенное решение с осуществлением первой минимизации в вертикальном, а затем в горизонтальном направлении. Это приводит к следующему:
(5)
(6)
где:
(7)
[138] Чтобы исключать деление на нуль или очень небольшое значение, параметры r и m регуляризации вводятся в уравнениях (2), (3).
(8)
(9)
[139] Здесь d является внутренней битовой глубиной входного видео.
[140] В некоторых примерах, MV–детализация BIO может быть ненадежной вследствие шума или нерегулярного движения. Следовательно, в BIO, абсолютная величина MV–детализации отсекается до определенного порогового значения (thBIO). Пороговое значение определяется на основе того, исходят или нет все опорные изображения текущего изображения из одного направления. Если все опорные изображения текущих изображений для текущего изображения исходят из одного направления, пороговое значение задается равным , в противном случае, оно задается равным .
[141] Градиенты для BIO вычисляются одновременно с интерполяцией на основе компенсации движения с использованием операций в соответствии с HEVC–процессом компенсации движения (двумерной разделимой конечной импульсной характеристикой (FIR)). Ввод для этой двумерной разделимой FIR представляет собой идентичную опорную кадровую выборку с процессом компенсации движения и дробную позицию (fracX, fracY) согласно дробной части блочного вектора движения. В случае горизонтального градиента , сигнал сначала интерполируется вертикально с использованием BIOfilterS, соответствующего дробной позиции fracY со сдвигом d–8 при обратном масштабировании, затем градиентный фильтр BIOfilterG применяется в горизонтальном направлении, соответствующем дробной позиции fracX со сдвигом при обратном масштабировании посредством 18–d. В случае вертикального градиента , первый градиентный фильтр применяется вертикально с использованием BIOfilterG, соответствующего дробной позиции fracY со сдвигом d–8 при обратном масштабировании, затем смещение сигналов выполняется с использованием BIOfilterS в горизонтальном направлении, соответствующем дробной позиции fracX со сдвигом при обратном масштабировании посредством 18–d. Длина интерполяционного фильтра для градиентного вычисления (BIOfilterG) и смещения сигналов (BIOfilterF) короче (6–отводный), чтобы поддерживать обоснованную сложность. Таблица 1 показывает фильтры, используемые для градиентного вычисления для различных дробных позиций блочного вектора движения в BIO. Таблица 2 показывает интерполяционные фильтры, используемые для формирования сигналов прогнозирования в BIO.
x
y
[142] Фиг. 11 является концептуальной схемой, иллюстрирующей пример градиентного вычисления для блока 8×4. Для блока 8×4, видеокодер осуществляет выборку предикторов с компенсацией движения и вычисляет горизонтальные/вертикальные (HOR/VER) градиенты всех пикселов в текущем блоке, а также внешние две линии пикселов, поскольку решение v и v для каждого пиксела требует значений HOR/VER–градиента и предикторы с компенсацией движения пикселов в окне Ω, центрированных в каждом пикселе, как показано в уравнении (4). Кроме того, в одном примере JEM, размер этого окна задается равным 5×5. Следовательно, видеокодер (например, видеокодер 20 и/или видеодекодер 30) осуществляет выборку предикторов с компенсацией движения и вычисляет градиенты для внешних двух линий пикселов вокруг точек A и B.
Таблица 1. Фильтры для градиентного вычисления в BIO
Дробнопелная позиция
Интерполяционный фильтр (BIOfilterG) для градиента
0
{ 8, –39, –3, 46, –17, 5}
1/16
{ 8, –32, –13, 50, –18, 5}
1/8
{ 7, –27, –20, 54, –19, 5}
3/16
{ 6, –21, –29, 57, –18, 5}
1/4
{ 4, –17, –36, 60, –15, 4}
5/16
{ 3, –9, –44, 61, –15, 4}
3/8
{ 1, –4, –48, 61, –13, 3}
7/16
{ 0, 1, –54, 60, –9, 2}
1/2
{ 1, 4, –57, 57, –4, 1}
Таблица 2. Интерполяционные фильтры для формирования сигналов прогнозирования в BIO
Дробнопелная позиция
Интерполяционный фильтр (BIOfilterS) для сигнала прогнозирования
0
{ 0, 0, 64, 0, 0, 0}
1/16
{ 1, –3, 64, 4, –2, 0}
1/8
{ 1, –6, 62, 9, –3, 1}
3/16
{ 2, –8, 60, 14, –5, 1}
1/4
{ 2, –9, 57, 19, –7, 2}
5/16
{ 3, –10, 53, 24, –8, 2}
3/8
{ 3, –11, 50, 29, –9, 2}
7/16
{ 3, –11, 44, 35, –10, 3}
1/2
{ 1, –7, 38, 38, –7, 1}
[143] В примерах JEM, BIO применяется ко всем двунаправленным прогнозированным блокам, когда два прогнозирования исходят из различных опорных изображений. Когда локальная компенсация освещенности (LIC) активируется для CU, BIO деактивируется.
[144] В соответствии с технологиями этого раскрытия сущности, видеокодер 20 и видеодекодер 30 могут ограничивать извлеченные векторы движения из BIO на основе того, включает или нет (1) ограничение в себя то, являются или нет извлеченные MV симметричными, (2), являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, симметричными, (3), являются или нет извлеченные MV антисимметричными и/или (4), являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, антисимметричными. Условия могут задаваться для ограничений таким образом, что ограничение применяется только на основе начальных MV.
0
1
0
1
0
1
0
1
[145] Фиг. 12 является концептуальной схемой, иллюстрирующей принципы, связанные с предложенным извлечением векторов движения на стороне декодера (DMVD) на основе билатерального сопоставления с шаблонами. Видеокодер может формировать билатеральный шаблон в качестве комбинирования со взвешиванием двух прогнозных блоков (R и R), из начального MV0 List0 и MV1 List1, соответственно, как показано на фиг. 12. В одном примере, билатеральный шаблон может формироваться посредством усреднения опорных List0– и List1–блоков (R и R) с использованием формулы: (R+R)>>1, или (R+R)/2.
0
1
[146] Операция сопоставления с шаблонами включает в себя вычисление показателей затрат между сформированным шаблоном и выборочной областью (вокруг начального прогнозного блока) в опорном изображении. Для каждого из двух опорных изображений (R и R), MV, который дает в результате минимальные шаблонные затраты, рассматривается как обновленный MV этого списка, чтобы заменять начальный MV (MV0 из List0 или MV1 из List1). В завершение, два новых MV, т.е. MV0' и MV1', как показано на фиг. 12, используются для регулярного бипрогнозирования. Поскольку оно обычно используется в оценке движения с поблочным сопоставлением, сумма абсолютных разностей (SAD) используется в качестве показателя затрат.
[147] Извлечение векторов движения на стороне декодера (DMVD) может применяться для режима объединения бипрогнозирования с одним из опорного изображения в прошлом и другим из опорного изображения в будущем, без передачи дополнительного синтаксического элемента. В JEM4.0, когда LIC, аффинный, возможный вариант объединения суб–CU или FRUC выбирается для одной CU, DMVD не применяется.
[148] В соответствии с технологиями этого раскрытия сущности, видеокодер 20 и видеодекодер 30 могут ограничивать извлеченные векторы движения из билатерального сопоставления с шаблонами на основе DMVD на основе того, включает или нет (1) ограничение в себя то, являются или нет извлеченные MV симметричными, (2), являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, симметричными, (3), являются или нет извлеченные MV антисимметричными и/или (4), являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, антисимметричными. Условия могут задаваться для ограничений таким образом, что ограничение применяется только на основе начальных MV или билатерального шаблона.
[149] Фиг. 13A и 13B являются концептуальными схемами, иллюстрирующими принципы, связанные с перекрывающейся блочной компенсацией движения (OBMC) в примерах JEM. OBMC использована для ранних поколений видеостандартов, например, аналогично H.263. В примерах JEM, OBMC выполняется для границ блоков с компенсацией движения (MC), отличных от правой и нижней границ CU. Кроме того, она применяется для компонентов сигнала яркости и сигнала цветности. В одном примере JEM, MC–блок соответствует блоку кодирования. Когда CU кодируется с помощью суб–CU–режима (включающего в себя режим объединение суб–CU, аффинный и FRUC–режим), каждый субблок CU представляет собой MC–блок. Чтобы обрабатывать границы CU равномерным способом, OBMC выполняется на уровне субблока для всех границ MC–блоков, при этом размер субблока задается равным 4×4, как проиллюстрировано на фиг. 13A и 13B.
[150] Видеокодер 20 и видеодекодер 30 могут применять OBMC к текущему субблоку, помимо текущих векторов движения, векторы движения четырех соединенных соседних субблоков, если они являются доступными и не являются идентичными текущему вектору движения, также используются для того, чтобы извлекать прогнозный блок для текущего субблока. Эти несколько прогнозных блоков на основе нескольких векторов движения комбинируются, чтобы формировать конечный сигнал прогнозирования текущего субблока.
N
C
N
N
N
C
N
C
N
N
C
N
C
N
N
C
N
[151] Фиг. 14A–14D являются концептуальными схемами, иллюстрирующими OBMC–взвешивания. Фиг. 14A–14D иллюстрируют то, что прогнозный блок на основе векторов движения соседнего субблока обозначается как P, где N указывает индекс для соседнего верхнего (фиг. 14A), нижнего (фиг. 14B), левого (фиг. 14C) и правого (фиг. 14D), субблоков, и прогнозный блок на основе векторов движения текущего субблока обозначается как P. Когда P основан на информации движения соседнего субблока, который содержит идентичную информацию движения с текущим субблоком, OBMC не выполняется из P. В противном случае, каждый пиксел P добавляется в идентичный пиксел в P, т.е. четыре строки/столбца P добавляются в P. Весовые коэффициенты {1/4, 1/8, 1/16, 1/32}используются для P, и весовые коэффициенты {3/4, 7/8, 15/16, 31/32}используются для PC. Исключением являются небольшие MC–блоки (т.е. когда высота или ширина блока кодирования равна 4, или CU кодируется с суб–CU–режимом), для которого только две строки/столбца P добавляются в P. В этом случае, весовые коэффициенты {1/4, 1/8} используются для P, и весовые коэффициенты {3/4, 7/8} используются для P. Для P, сформированного на основе векторов движения вертикально (горизонтально) соседнего субблока, пикселы в идентичной строке (столбца) P добавляются в P с идентичным весовым коэффициентом. Следует отметить, что BIO также применяется для извлечения прогнозного блока P.
[152] В примерах JEM, для CU с размером, меньшим или равным 256 выборкам сигнала яркости, флаг уровня CU передается в служебных сигналах, чтобы указывать то, применяется или нет OBMC для текущей CU. Для CU с размером, большим 256 выборок сигнала яркости, либо не кодированных с помощью AMVP–режима, OBMC применяется по умолчанию. В кодере, когда OBMC применяется для CU, ее влияние учитывается в ходе стадии оценки движения. Сигнал прогнозирования посредством использования информации движения верхнего соседнего блока и левого соседнего блока используется для того, чтобы компенсировать верхнюю и левую границы исходного сигнала текущей CU, и затем нормальный процесс оценки движения применяется.
[153] В соответствии с технологиями этого раскрытия сущности, видеокодер 20 и видеодекодер 30 могут ограничивать извлеченные векторы движения из OBMC на основе того, включает или нет (1) ограничение в себя то, являются или нет извлеченные MV симметричными, (2), являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, симметричными, (3), являются или нет извлеченные MV антисимметричными и/или (4), являются или нет MV–разности между начальными MV и MV, извлекаемыми посредством DMVD–способов, антисимметричными. Условия могут задаваться для ограничений таким образом, что ограничение применяется только на основе начальных MV.
[154] Связанные с DMVD способы (например, BIO, билатеральное FRUC–сопоставление, FRUC–сопоставление с шаблонами, билатеральное сопоставление с шаблонами и т.д.) могут предоставлять значительные уменьшения скорости передачи битов. Это раскрытие сущности описывает несколько технологий, которые дополнительно могут улучшать DMVD, что позволяет повышать эффективность кодирования и/или уменьшать скорость передачи битов. Например, ограничение (1) MV, извлекаемого посредством DMVD, и/или (2) MV–разности между начальным MV и MV, извлекаемым посредством DMVD, может повышать эффективность кодирования и/или уменьшать скорость передачи битов.
[155] Нижеприведенная таблица 3 описывает различные термины, используемые ниже.
Табл. 3
L0_POC_Init,L0_MV_X_Init,L0_MV_Y_Init,L1_POC_Init,L1_MV_X_Init,L1_MV_Y_Init
X–, Y–компоненты начальных MV в List0 и List1Начальный номер в последовательности изображений для List0 и List1. Номер в последовательности изображений может представлять собой POC, как задано в HEVC.
L0_POC_Derived,L0_MV_X_Derived,L0_MV_Y_Derived,L1_POC_Derived,L1_MV_X_Derived,L1_MV_Y_Derived
X–, Y–компоненты MV, извлекаемых посредством DMVD–способов для L0 и L1Извлеченный номер в последовательности изображений для List0 и List1. Номер в последовательности изображений может представлять собой POC, как задано в HEVC.
L0_MV_X_Diff,L0_MV_Y_Diff,L1_MV_X_Diff,L1_MV_Y_Diff
X–, Y–компоненты MV–разностей между начальными MV и извлеченными MV посредством DMVD–способов List0 и List1
CURR_POC
Номер в последовательности изображений (например, POC как задано в HEVC) текущей серии последовательных макроблоков/изображения
[156] Симметричные векторы движения: В некоторых примерах, MV, извлекаемые посредством DMVD, могут ограничиваться посредством видеокодера (например, видеокодера 20 или видеодекодера 30) таким образом, что извлеченные MV должны быть симметричными. В одном примере, чтобы быть симметричным, видеокодер (например, видеокодер 20 или видеодекодер 30) может быть выполнен с возможностью ограничивать извлеченные MV таким образом, что извлеченные MV удовлетворяют одному или более (например, всем) следующих условий относительно друг друга:
1. L0_MV_X_Derived*(CURR_POC–L1_POC_Derived)= L1_MV_X_Derived*(CURR_POC–L0_POC_Derived), и/или
2. L0_MV_Y_Derived*(CURR_POC–L1_POC_Derived)= L1_MV_Y_Derived*(CURR_POC–L0_POC_Derived).
[157] В некоторых примерах, вышеприведенные условия (1) и (2) могут считаться отдельным ограничением на симметричные MV или могут считаться одним ограничением на симметричные MV, когда оба из них применяются. В этом отношении, ссылка на активацию ограничения в данном документе может означать активацию условия, которое работает в качестве ограничения. Например, ссылка на активацию ограничения на симметричные MV может включать в себя (i) активацию вышеприведенного условия (1), активацию вышеприведенного (ii) условия (2) или (iii) активацию вышеприведенных условий (1) и (2).
[158] В некоторых примерах, чтобы достигать дополнительных упрощений и/или улучшений кодирования, MV, извлекаемые посредством DMVD, могут ограничиваться посредством видеокодера (например, видеокодера 20 или видеодекодера 30) таким образом, что извлеченные MV, возможно, должны удовлетворять одному или более (например, всем, условиям (a) и/или (b), когда условие (1) является истинным, и/или условиям (c) и/или (d), когда условие (2) является истинным) нижеприведенных условий (которые могут упоминаться как псевдосимметричные условия):
1. Когда опорное List0– и List1–изображение находятся до или после текущего изображения (например, (CURR_POC–L0_POC_Derived)*(CURR_POC–L1_POC_Derived)>0),
a. L0_MV_X_Derived=L1_MV_X_Derived, и/или
b. L0_MV_Y_Derived=L1_MV_Y_Derived;
и/или
2. Когда опорное List0– и List1–изображение не находятся до или после текущего изображения (например, (CURR_POC–L0_POC_Derived)*(CURR_POC–L1_POC_Derived)<0),
c. L0_MV_X_Derived=–1*L1_MV_X_Derived, и/или
d. L0_MV_Y_Derived=–1*L1_MV_Y_Derived.
[159] В некоторых примерах, видеокодер (например, видеокодер 20 или видеодекодер 30) может быть выполнен с возможностью проверять или определять POC–разность посредством конфигурирования с возможностью использовать, например, POC–информацию начальных MV и/или POC–информацию извлеченных MV. Например, видеокодер (например, видеокодер 20 или видеодекодер 30) может быть выполнен с возможностью проверять или определять POC–разность, например, на основе POC–информации начальных MV и/или POC–информации извлеченных MV.
[160] Симметричные разности векторов движения: В некоторых примерах, MV–разности между начальными MV и MV, извлекаемыми посредством DMVD, могут ограничиваться посредством видеокодера (например, видеокодера 20 или видеодекодера 30) таким образом, что MV–разности должны быть симметричными. MV–разность представляет собой разность между начальными MV и извлеченными MV посредством DMVD. MV–разность может определяться на основе Y–компонента и X–компонента. В одном примере, чтобы быть симметричным, видеокодер (например, видеокодер 20 или видеодекодер 30) может быть выполнен с возможностью требовать, чтобы извлеченные MV–разности удовлетворяли одному или более (например, всем) следующих условий:
1. L0_MV_X_Diff*(CURR_POC–L1_POC_Derived)= L1_MV_X_Diff*а(CURR_POC–L0_POC_Derived), и/или
2. L0_MV_Y_Diff*(CURR_POC–L1_POC_Derived)= L1_MV_Y_Diff*(CURR_POC–L0_POC_Derived).
[161] В некоторых примерах, чтобы достигать дополнительных упрощений и/или улучшений кодирования, MV–разности, извлекаемые посредством DMVD, могут ограничиваться посредством видеокодера (например, видеокодера 20 или видеодекодера 30) таким образом, что извлеченные MV–разности, возможно, должны удовлетворять одному или более (например, всем, условиям (a) и/или (b), когда условие (1) является истинным, и/или условиям (c) и/или (d), когда условие (2) является истинным) нижеприведенных условий (которые могут упоминаться как псевдосимметричные условия):
1. Когда опорное List0– и List1–изображение находятся до или после текущего изображения (например, (CURR_POC–L0_POC_Init)*(CURR_POC–L1_POC_Init)>0),
a. L0_MV_X_Diff=L1_MV_X_Diff, и/или
b. L0_MV_Y_Diff=L1_MV_Y_Diff;
и/или
2. Когда опорное List0– и List1–изображение не находятся до или после текущего изображения (например, (CURR_POC–L0_POC_Init)*(CURR_POC–L1_POC_Init)<0),
c. L0_MV_X_Diff=–1*L1_MV_X_Diff, и/или
d. L0_MV_Y_Diff=–1*L1_MV_Y_Diff.
[162] В некоторых примерах, видеокодер (например, видеокодер 20 или видеодекодер 30) может быть выполнен с возможностью проверять или определять POC–разность посредством конфигурирования с возможностью использовать, например, POC–информацию начальных MV и/или POC–информацию извлеченных MV. Например, видеокодер (например, видеокодер 20 или видеодекодер 30) может быть выполнен с возможностью проверять или определять POC–разность, например, на основе POC–информации начальных MV и/или POC–информации извлеченных MV.
[163] Антисимметричные векторы движения: В некоторых примерах, MV, извлекаемые посредством DMVD, могут ограничиваться посредством видеокодера (например, видеокодера 20 или видеодекодера 30) таким образом, что извлеченные MV должны быть антисимметричными. В одном примере, чтобы быть антисимметричным, видеокодер (например, видеокодер 20 или видеодекодер 30) может быть выполнен с возможностью требовать, чтобы извлеченные MV удовлетворяли одному или более (например, всем) следующих условий:
1. L0_MV_X_Derived*(CURR_POC–L1_POC_Derived)=–1*L1_MV_X_Derived*(CURR_POC–L0_POC_Derived), и/или
2. L0_MV_Y_Derived*(CURR_POC–L1_POC_Derived)=–1*L1_MV_Y_Derived*(CURR_POC–L0_POC_Derived).
[164] В некоторых примерах, чтобы достигать дополнительных упрощений и/или улучшений кодирования, MV–разности, извлекаемые посредством DMVD, могут ограничиваться посредством видеокодера (например, видеокодера 20 или видеодекодера 30) таким образом, что извлеченные MV–разности, возможно, должны удовлетворять одному или более (например, всем, условиям (a) и/или (b), когда условие (1) является истинным, и/или условиям (c) и/или (d), когда условие (2) является истинным) нижеприведенных условий (которые могут упоминаться как псевдоантисимметричные условия):
1. Когда опорное List0– и List1–изображение находятся до или после текущего изображения (например, (CURR_POC–L0_POC_Derived)*(CURR_POC–L1_POC_Derived)>0),
a. L0_MV_X_Derived=–1*L1_MV_X_Derived, и/или
b. L0_MV_Y_Derived=–1*L1_MV_Y_Derived;
и/или
2. Когда опорное List0– и List1–изображение не находятся до или после текущего изображения (например, (CURR_POC–L0_POC_Derived)*(CURR_POC–L1_POC_Derived)<0),
c. L0_MV_X_Derived=L1_MV_X_Derived, и/или
d. L0_MV_Y_Derived=L1_MV_Y_Derived.
[165] В некоторых примерах, видеокодер (например, видеокодер 20 или видеодекодер 30) может быть выполнен с возможностью проверять или определять POC–разность посредством конфигурирования с возможностью использовать, например, POC–информацию начальных MV и/или POC–информацию извлеченных MV. Например, видеокодер (например, видеокодер 20 или видеодекодер 30) может быть выполнен с возможностью проверять или определять POC–разность, например, на основе POC–информации начальных MV и/или POC–информации извлеченных MV.
[166] Антисимметричные разности векторов движения: В некоторых примерах, MV–разности между начальными MV и MV, извлекаемыми посредством DMVD, могут ограничиваться посредством видеокодера (например, видеокодера 20 или видеодекодера 30) таким образом, что MV–разности должны быть антисимметричными. В одном примере, чтобы быть антисимметричным, видеокодер (например, видеокодер 20 или видеодекодер 30) может быть выполнен с возможностью требовать, чтобы извлеченные MV–разности удовлетворяли одному или более (например, всем) следующих условий:
1. L0_MV_X_Diff*(CURR_POC–L1_POC_Derived)=–1*L1_MV_X_Diff*(CURR_POC–L0_POC_Derived), и/или
2. L0_MV_Y_Diff*(CURR_POC–L1_POC_Derived)=–1*L1_MV_Y_Diff*(CURR_POC–L0_POC_Derived).
[167] В некоторых примерах, чтобы достигать дополнительных упрощений и/или улучшений кодирования, MV–разности, извлекаемые посредством DMVD, могут ограничиваться посредством видеокодера (например, видеокодера 20 или видеодекодера 30) таким образом, что извлеченные MV–разности, возможно, должны удовлетворять одному или более (например, всем, условиям (a) и/или (b), когда условие (1) является истинным, и/или условиям (c) и/или (d), когда условие (2) является истинным) нижеприведенных условий (которые могут упоминаться как псевдоантисимметричные условия):
1. Когда опорное List0– и List1–изображение находятся до или после текущего изображения (например, (CURR_POC–L0_POC_Init)*(CURR_POC–L1_POC_Init)>0),
a. L0_MV_X_Diff=–1*L1_MV_X_Diff, и/или
b. L0_MV_Y_Diff=–1*L1_MV_Y_Diff;
и/или
2. Когда опорное List0– и List1–изображение не находятся до или после текущего изображения (например, (CURR_POC–L0_POC_Init)*(CURR_POC–L1_POC_Init)<0),
c. L0_MV_X_Diff=L1_MV_X_Diff, и/или
d. L0_MV_Y_Diff=L1_MV_Y_Diff.
[168] В некоторых примерах, видеокодер (например, видеокодер 20 или видеодекодер 30) может быть выполнен с возможностью проверять или определять POC–разность посредством конфигурирования с возможностью использовать, например, POC–информацию начальных MV и/или POC–информацию извлеченных MV. Например, видеокодер (например, видеокодер 20 или видеодекодер 30) может быть выполнен с возможностью проверять или определять POC–разность, например, на основе POC–информации начальных MV и/или POC–информации извлеченных MV.
[169] Условия для применения ограничений на MV/MV–разности: активация ограничений (например, ограничений на симметричные/антисимметричные MV/MV–разности) на информацию движения DMVD, в некоторых примерах, может явно передаваться в служебных сигналах или может неявно определяться согласно некоторой кодированной информации. В некоторых примерах, передача в служебных сигналах активаций ограничения или определение активации ограничения, соответственно, может описываться в качестве передачи в служебных сигналах того, что ограничение применено или должно применяться, или определения того, что ограничение применено или должно применяться.
[170] В некоторых примерах, видеокодер (например, видеокодер 20) может быть выполнен с возможностью предоставлять одно или более ограничений на MV и/или MV–разности, описанных в данном документе. Например, видеокодер (например, видеокодер 20) может быть выполнен с возможностью передавать в служебных сигналах одно или более значений, указывающих то, активируется или нет одно или более ограничений.
[171] В качестве одного примера, видеокодер (например, видеокодер 20) может быть выполнен с возможностью передавать в служебных сигналах значение в потоке битов, соответствующее первому синтаксическому элементу, причем значение, соответствующее первому синтаксическому элементу, служит признаком того, активируются или нет одно или более ограничений на симметричные MV. Значение может составлять истинное значение (например, значение 1), чтобы указывать активацию, или ложное значение (например, значение 0), чтобы указывать деактивацию, либо значение может составлять ложное значение (например, значение 0), чтобы указывать активацию, или истинное значение (например, значение 1), чтобы указывать деактивацию. В некоторых примерах, видеокодер (например, видеокодер 20) может быть выполнен с возможностью передавать в служебных сигналах значение, соответствующее первому синтаксическому элементу, только тогда, когда активируются одно или более ограничений на симметричные MV. В других примерах, видеокодер (например, видеокодер 20) может быть выполнен с возможностью передавать в служебных сигналах значение, соответствующее первому синтаксическому элементу, только тогда, когда деактивируются одно или более ограничений на симметричные MV.
[172] В качестве другого примера, видеокодер (например, видеокодер 20) может быть выполнен с возможностью передавать в служебных сигналах значение в потоке битов, соответствующее второму синтаксическому элементу, причем значение, соответствующее второму синтаксическому элементу, служит признаком того, активируются или нет одно или более ограничений на симметричные MV–разности. Значение может составлять истинное значение (например, значение 1), чтобы указывать активацию, или ложное значение (например, значение 0), чтобы указывать деактивацию, либо значение может составлять ложное значение (например, значение 0), чтобы указывать активацию, или истинное значение (например, значение 1), чтобы указывать деактивацию. В некоторых примерах, видеокодер (например, видеокодер 20) может быть выполнен с возможностью передавать в служебных сигналах значение, соответствующее второму синтаксическому элементу, только тогда, когда активируются одно или более ограничений на симметричные MV–разности. В других примерах, видеокодер (например, видеокодер 20) может быть выполнен с возможностью передавать в служебных сигналах значение, соответствующее второму синтаксическому элементу, только тогда, когда деактивируются одно или более ограничений на симметричные MV–разности.
[173] В качестве другого примера, видеокодер (например, видеокодер 20) может быть выполнен с возможностью передавать в служебных сигналах значение в потоке битов, соответствующее третьему синтаксическому элементу, причем значение, соответствующее третьему синтаксическому элементу, служит признаком того, активируются или нет одно или более ограничений на антисимметричные MV. Значение может составлять истинное значение (например, значение 1), чтобы указывать активацию, или ложное значение (например, значение 0), чтобы указывать деактивацию, либо значение может составлять ложное значение (например, значение 0), чтобы указывать активацию, или истинное значение (например, значение 1), чтобы указывать деактивацию. В некоторых примерах, видеокодер (например, видеокодер 20) может быть выполнен с возможностью передавать в служебных сигналах значение, соответствующее третьему синтаксическому элементу, только тогда, когда активируются одно или более ограничений на антисимметричные MV. В других примерах, видеокодер (например, видеокодер 20) может быть выполнен с возможностью передавать в служебных сигналах значение, соответствующее третьему синтаксическому элементу, только тогда, когда деактивируются одно или более ограничений на антисимметричные MV.
[174] В качестве другого примера, видеокодер (например, видеокодер 20) может быть выполнен с возможностью передавать в служебных сигналах значение в потоке битов, соответствующее четвертому синтаксическому элементу, причем значение, соответствующее четвертому синтаксическому элементу, служит признаком того, активируются или нет одно или более ограничений на антисимметричные MV–разности. Значение может составлять истинное значение (например, значение 1), чтобы указывать активацию, или ложное значение (например, значение 0), чтобы указывать деактивацию, либо значение может составлять ложное значение (например, значение 0), чтобы указывать активацию, или истинное значение (например, значение 1), чтобы указывать деактивацию. В некоторых примерах, видеокодер (например, видеокодер 20) может быть выполнен с возможностью передавать в служебных сигналах значение, соответствующее четвертому синтаксическому элементу, только тогда, когда активируются одно или более ограничений на антисимметричные MV–разности. В других примерах, видеокодер (например, видеокодер 20) может быть выполнен с возможностью передавать в служебных сигналах значение, соответствующее четвертому синтаксическому элементу, только тогда, когда деактивируются одно или более ограничений на антисимметричные MV–разности.
[175] В некоторых примерах, видеокодер (например, видеодекодер 30) может быть выполнен с возможностью принимать поток битов и определять то, активируется или нет одно или более ограничений на MV и/или MV–разности, описанных в данном документе, на основе одного или более значений, присутствующих в потоке битов, соответствующем одному или более синтаксических элементов (например, одному или более из первого, второго, третьего и четвертого синтаксических элементов, описанных в данном документе).
[176] В других примерах, видеокодер (например, видеокодер 20 или видеодекодер 30) может быть выполнен с возможностью определять (например, неявно определять), активируется или нет одно или более ограничений на MV и/или MV–разности, описанных в данном документе на основе другой кодированной информации.
[177] Несколько примерных условий для того, чтобы адаптивно предоставлять одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), перечислены, как пояснено ниже.
1. В некоторых примерах, одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), могут активироваться только тогда, когда начальные MV являются симметричными.
2. В некоторых примерах, одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), могут активироваться только тогда, когда начальные MV являются псевдосимметричными.
3. В некоторых примерах, одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), могут активироваться только тогда, когда начальные MV являются антисимметричными.
4. В некоторых примерах, одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), могут активироваться только тогда, когда начальные MV являются псевдоантисимметричными.
5. В некоторых примерах, одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), могут активироваться только тогда, когда начальные MV не являются симметричными.
6. В некоторых примерах, одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), могут активироваться только тогда, когда начальные MV не являются псевдосимметричными.
7. В некоторых примерах, одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), могут активироваться только тогда, когда начальные MV не являются антисимметричными.
8. В некоторых примерах, одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), могут активироваться только тогда, когда начальные MV не являются псевдоантисимметричными.
9. В некоторых примерах, одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), могут активироваться только тогда, когда опорные List0– и List1–изображения начальных MV находятся до или после текущего изображения.
10. В некоторых примерах, одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), могут активироваться только тогда, когда опорные List0– и List1–изображения начальных MV не находятся до или после текущего изображения.
11. В некоторых примерах, одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), могут активироваться только тогда, когда опорный индекс начальных MV равен нулю.
12. В некоторых примерах, одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), могут активироваться только тогда, когда опорный индекс начальных MV не равен нулю.
13. В некоторых примерах, одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), могут активироваться только тогда, когда POC–расстояния между опорным List0–изображением и текущим изображением и POC–расстояния между опорным List1–изображением и текущим изображением являются идентичными.
14. В некоторых примерах, одно или более ограничений, описанных в данном документе (например, одно или более ограничений на симметричные/антисимметричные MV/MV–разности), могут активироваться только тогда, когда POC–расстояния между опорным List0–изображением и текущим изображением и POC–расстояния между опорным List1–изображением и текущим изображением не являются идентичными.
15. В некоторых примерах, одно или более ограничений на симметричные MV–разности могут применяться, когда начальные MV не являются симметричными,
16. В некоторых примерах, одно или более ограничений на антисимметричные MV–разности могут применяться, когда начальные MV являются симметричными,
17. В некоторых примерах, MV–разрешение одного или более симметричных ограничений может назначаться детерминированным способом. В одном примере, для целочисленнопелной детализации билатерального сопоставления с шаблонами, симметричное/псевдосимметричное/асимметричное ограничение не может налагаться, и вышеуказанные ограничения составляют только полупелную, четвертьпелную или более высокоточную детализацию движения. Уровень ограничения (при каком MV–разрешении) может передаваться в служебных сигналах через SPS/PPS/заголовок серии последовательных макроблоков. Разрешение также может определяться наряду с тем, активируются или нет другие инструментальные средства детализации движения, такие как BIO, субпелное FRUC. Например, когда BIO активируется, ограничение может не налагаться на четвертьпелную или более высокоточную детализацию движения.
18. В некоторых примерах, уровень ограничения (например, какие ограничения активируются) может задаваться адаптивным согласно абсолютной разности между List0– и List1–MV, масштабированной (на основе их относительного POC–расстояния) абсолютной разности между List0– и List1–MV или начальным SAD–значениям между интерполированными выборками List0 и List1 (а именно, P0 и P1 в этом примере). В других примерах, отношение значений суммы абсолютных разностей (SAD) между (текущим шаблоном, P0) и (текущим шаблоном, P1) может использоваться для того, чтобы определять то, при каком MV–разрешении должно налагаться ограничение. В этом примере, если отношение SAD–значений ниже порогового значения, то вышеуказанные симметричные ограничения не должны налагаться.
[178] Таблица 4 перечисляет примеры применяемых условий и ограничений на основе удовлетворения вышеприведенных условий.
[179] Этот пример проиллюстрирован в качестве примера 1 ограничений в таблице 4, которая также включает в себя другие примеры различных ограничений.
Таблица 4. Примеры условий и ограничений
Примеры ограничения
Условия
Применяемые ограничения
1
Начальные MV являются симметричными
Без ограничения
Начальные MV не являются симметричными
Псевдосимметричная MV–разность
2
Начальные MV являются симметричными
Без ограничения
Начальные MV не являются симметричными
Симметричная MV–разность
3
Начальные MV являются псевдосимметричными
Без ограничения
Начальные MV не являются псевдосимметричными
Псевдосимметричная MV–разность
4
Начальные MV являются псевдосимметричными
Без ограничения
Начальные MV не являются псевдосимметричными
Симметричная MV–разность
5
Начальные MV являются симметричными
Непсевдосимметричная MV–разность
Начальные MV не являются симметричными
Псевдосимметричная MV–разность
6
Начальные MV являются симметричными
Несимметричная MV–разность
Начальные MV не являются симметричными
Симметричная MV–разность
7
Начальные MV являются псевдосимметричными
Непсевдосимметричная MV–разность
Начальные MV не являются псевдосимметричными
Псевдосимметричная MV–разность
8
Начальные MV являются псевдосимметричными
Несимметричная MV–разность
Начальные MV не являются псевдосимметричными
Симметричная MV–разность
0
1
0
1
0
1
0
1
0
1
[180] Фиг. 15 иллюстрирует примерный вариант использования билатерального сопоставления с шаблонами согласно настоящему раскрытию сущности. Фиг. 15 иллюстрирует пример, в котором одно или более ограничений псевдосимметричной MV–разности, описанных в данном документе, могут применяться к билатеральному сопоставлению с шаблонами только тогда, когда начальные MV не являются симметричными. Согласно таким примерам, для билатерального сопоставления с шаблонами, когда начальные MV не являются симметричными, конечные MV могут извлекаться таким образом, что MV–разности между начальными MV и конечными MV должны быть псевдосимметричными. Например, как показано на фиг. 15, билатеральный шаблон 1506 может сначала извлекаться с использованием начальных MV в List0 (L0_MV_Init, указывающего на блок R 1502) и List1 (L1_MV_Init, указывающего на блок R 1504) (например, MV возможного варианта бипрогнозированного объединения), посредством усреднения R и R, и затем билатеральный шаблон 1506 может использоваться для того, чтобы выполнять поиск наилучшего совпадения с блоками в List0 и List1, чтобы находить наилучшие List0/List1–MV. Билатеральное сопоставление с шаблонами может выполняться в предварительно заданном диапазоне поиска (например, в целочисленном пикселе от –1 до +1), центрированном в начальных MV при поиске в List0/List1 на предмет блоков, например, R' 1508 и R' 1510. Разность между начальными блоками (блоком R 1502 и блоком R 1504) и искомыми блоками (R' 1508 и R' 1510) показана посредством соответствующей MV–разности (обозначенной L0_MV_Diff и L1_MV_Diff). В некоторых примерах, только MV–пары, которые имеют псевдосимметричную MV–разность (сравнение L0_MV_Diff и L1_MV_Diff) в List0 и List1, могут рассматриваться в качестве допустимых MV. Допустимая MV–пара с наилучшим совпадением с затратами затем может рассматриваться в качестве конечных извлеченных MV посредством билатерального сопоставления с шаблонами. Проиллюстрированный пример обозначается как пример 1 ограничений в таблице 4, показанной выше.
[181] Фиг. 16 является блок–схемой последовательности операций, показывающей примерный способ согласно технологиям этого раскрытия сущности. Технологии по фиг. 16 могут реализовываться посредством одного или более из целевого устройства 14 или видеодекодера 30 (см. фиг. 1 и 3).
[182] В одном примере раскрытия сущности, видеодекодер 30 может быть выполнен с возможностью формировать, с использованием извлечения векторов движения на стороне декодера (DMVD), множество извлеченных векторов движения (100). В некоторых примерах, использование DMVD для того, чтобы формировать множество извлеченных векторов движения, содержит использование одного из BIO–процесса, FRUC–процесса, процесса билатерального сопоставления, FRUC–процесса сопоставления с шаблонами или процесса билатерального сопоставления с шаблонами. В некоторых примерах, видеодекодер 30 может формировать множество извлеченных векторов движения на основе определения того, удовлетворяют либо нет первый и второй начальные векторы движения одному или более условий. Видеодекодер 30 может быть выполнен с возможностью определять первый извлеченный вектор движения и второй извлеченный вектор движения из множества извлеченных векторов движения на основе показателя затрат и определения того, удовлетворяется или нет ограничение (102). В примере, показатель затрат включает в себя сумму абсолютных разностей. Ограничение может включать в себя то, первый извлеченный вектор движения и второй извлеченный вектор движения имеют симметричную разность векторов движения, имеют псевдосимметричную разность векторов движения, являются антисимметричными, имеют антисимметричную разность векторов движения или имеют псевдоантисимметричную разность векторов движения. Видеодекодер 30 может быть выполнен с возможностью определять то, первый извлеченный вектор движения и второй извлеченный вектор движения имеют симметричную разность векторов движения, имеют псевдосимметричную разность векторов движения, являются антисимметричными, имеют антисимметричную разность векторов движения или имеют псевдоантисимметричную разность векторов движения. Ограничение может передаваться в служебных сигналах через поток битов, может извлекаться или предварительно программироваться.
[183] В примере, видеодекодер 30 может быть выполнен с возможностью определять то, что первый извлеченный вектор движения и второй извлеченный вектор движения имеют симметричную разность векторов движения, что содержит определение того, что: L0_MV_X_Diff*(CURR_POC–L1_POC_Derived)=L1_MV_X_Diff*(CURR_POC–L0_POC_Derived), или L0_MV_Y_Diff*(CURR_POC–L1_POC_Derived)=L1_MV_Y_Diff*(CURR_POC–L0_POC_Derived), при этом: L0_MV_X_Diff представляет собой X–компонент разности между первым начальным вектором движения и первым извлеченным вектором движения, L0_MV_Y_Diff представляет собой Y–компонент разности между первым начальным вектором движения и первым извлеченным вектором движения, L1_MV_X_Diff представляет собой X–компонент разности между вторым начальным вектором движения и вторым извлеченным вектором движения, L1_MV_Y_Diff представляет собой Y–компонент разности между вторым начальным вектором движения и вторым извлеченным вектором движения, CURR_POC представляет собой текущий POC текущего изображения, L0_POC_Derived представляет собой извлеченный POC для первого списка векторов движения, и L1_POC_Derived представляет собой извлеченный POC для второго списка векторов движения.
[184] В другом примере, видеодекодер 30 может быть выполнен с возможностью определять то, что первый извлеченный вектор движения и второй извлеченный вектор движения имеют антисимметричную разность векторов движения, что содержит определение того, что: L0_MV_X_Diff*(CURR_POC–L1_POC_Derived)=–1*L1_MV_X_Diff*(CURR_POC–L0_POC_Derived), или L0_MV_Y_Diff*(CURR_POC–L1_POC_Derived)=–1*L1_MV_Y_Diff*(CURR_POC–L0_POC_Derived), при этом: L0_MV_X_Diff представляет собой X–компонент разности между первым начальным вектором движения и первым извлеченным вектором движения, L0_MV_Y_Diff представляет собой Y–компонент разности между первым начальным вектором движения и первым извлеченным вектором движения, L1_MV_X_Diff представляет собой X–компонент разности между вторым начальным вектором движения и вторым извлеченным вектором движения, L1_MV_Y_Diff представляет собой Y–компонент разности между вторым начальным вектором движения и вторым извлеченным вектором движения, CURR_POC представляет собой текущий POC текущего изображения, L0_POC_Derived представляет собой извлеченный POC для первого списка векторов движения, и L1_POC_Derived представляет собой извлеченный POC для второго списка векторов движения.
[185] В другом примере, видеодекодер 30 может быть выполнен с возможностью определять то, что первый извлеченный вектор движения и второй извлеченный вектор движения являются антисимметричными, что содержит определение того, что: L0_MV_X_Derived*(CURR_POC–L1_POC_Derived)=–1*L1_MV_X_Derived*(CURR_POC–L0_POC_Derived), или L0_MV_Y_Derived*(CURR_POC–L1_POC_Derived)=–1*L1_MV_Y_Derived*(CURR_POC–L0_POC_Derived), при этом: L0_MV_X_Derived представляет собой X–компонент первого извлеченного вектора движения, L0_MV_Y_Derived представляет собой Y–компонент первого извлеченного вектора движения, L1_MV_X_Derived представляет собой X–компонент второго извлеченного вектора движения, L1_MV_Y_Derived представляет собой Y–компонент второго извлеченного вектора движения, CURR_POC представляет собой текущий POC текущего изображения, L0_POC_Derived представляет собой извлеченный POC для первого списка векторов движения, и L1_POC_Derived представляет собой извлеченный POC для второго списка векторов движения.
[186] В другом примере, видеодекодер 30 может быть выполнен с возможностью определять то, что первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдосимметричную разность векторов движения, что содержит определение того, что: L0_MV_X_Diff=L1_MV_X_Diff, L0_MV_Y_Diff=L1_MV_Y_Diff, L0_MV_X_Diff=–1*L1_MV_X_Diff или L0_MV_Y_Diff=–1*L1_MV_Y_Diff, при этом: L0_MV_X_Diff представляет собой X–компонент разности между первым начальным вектором движения и первым извлеченным вектором движения, L0_MV_Y_Diff представляет собой Y–компонент разности между первым начальным вектором движения и первым извлеченным вектором движения, L1_MV_X_Diff представляет собой X–компонент разности между вторым начальным вектором движения и вторым извлеченным вектором движения, и L1_MV_Y_Diff представляет собой Y–компонент разности между вторым начальным вектором движения и вторым извлеченным вектором движения.
[187] В другом примере, видеодекодер 30 может быть выполнен с возможностью определять то, что первый извлеченный вектор движения и второй извлеченный вектор движения имеют псевдоантисимметричную разность векторов движения, что содержит определение того, что: L0_MV_X_Diff=L1_MV_X_Diff, L0_MV_Y_Diff=L1_MV_Y_Diff, L0_MV_X_Diff=–1*L1_MV_X_Diff или L0_MV_Y_Diff=–1*L1_MV_Y_Diff, при этом: L0_MV_X_Diff представляет собой X–компонент разности между первым начальным вектором движения и первым извлеченным вектором движения, L0_MV_Y_Diff представляет собой Y–компонент разности между первым начальным вектором движения и первым извлеченным вектором движения, L1_MV_X_Diff представляет собой X–компонент разности между вторым начальным вектором движения и вторым извлеченным вектором движения, и L1_MV_Y_Diff представляет собой Y–компонент разности между вторым начальным вектором движения и вторым извлеченным вектором движения.
[188] В другом примере, видеодекодер 30 может быть выполнен с возможностью определять то, что первый начальный вектор движения в списке возможных вариантов векторов движения и второй начальный вектор движения в списке возможных вариантов векторов движения удовлетворяют, по меньшей мере, одному условию относительно взаимосвязи между первым начальным вектором движения и вторым начальным вектором движения, причем взаимосвязь содержит: первый начальный вектор движения и второй начальный вектор движения являются симметричными, первый начальный вектор движения и второй начальный вектор движения являются псевдосимметричными, первый начальный вектор движения и второй начальный вектор движения имеют симметричную разность векторов движения, первый начальный вектор движения и второй начальный вектор движения являются антисимметричными, первый начальный вектор движения и второй начальный вектор движения являются псевдоантисимметричными, или первый начальный вектор движения и второй начальный вектор движения имеют антисимметричную разность векторов движения, при этом формирование множества извлеченных векторов движения основано на первом начальном векторе движения и втором начальном движении, удовлетворяющих, по меньшей мере, одному условию.
[189] В другом примере, видеодекодер 30 может быть выполнен с возможностью определять то, находятся первый начальный вектор движения в списке возможных вариантов векторов движения и второй начальный вектор движения в списке возможных вариантов векторов движения перед текущим изображением или после текущего изображения, при этом определение первого извлеченного вектора движения и второго извлеченного вектора движения из множества извлеченных векторов движения на основе показателя затрат дополнительно основано на определении.
[190] В другом примере, видеодекодер 30 может быть выполнен с возможностью определять то, равно или нет первое расстояние на основе номера в последовательности изображений (POC) между первым опорным изображением, ассоциированным с первым списком возможных вариантов векторов движения, и текущим изображением нулю, и то, равно или нет второе POC–расстояние между вторым опорным изображением, ассоциированным со вторым списком возможных вариантов векторов движения, и текущим изображением нулю, при этом определение первого извлеченного вектора движения и второго извлеченного вектора движения из множества извлеченных векторов движения на основе показателя затрат дополнительно основано на определении.
[191] В другом примере, видеодекодер 30 может быть выполнен с возможностью определять то, равно или нет первое расстояние на основе номера в последовательности изображений (POC) между первым опорным изображением, ассоциированным с первым списком возможных вариантов векторов движения, и текущим изображением нулю, и то, равно или нет второе POC–расстояние между вторым опорным изображением, ассоциированным со вторым списком возможных вариантов векторов движения, и текущим изображением нулю, при этом определение первого извлеченного вектора движения и второго извлеченного вектора движения из множества извлеченных векторов движения на основе показателя затрат, формирующего множество извлеченных векторов движения, дополнительно основано на определении того, что первое POC–расстояние между первым опорным изображением, ассоциированным с первым списком возможных вариантов векторов движения, и текущим изображением равно нулю, и второе POC–расстояние между вторым опорным изображением, ассоциированным со вторым списком возможных вариантов векторов движения, и текущим изображением равно нулю согласно определению.
[192] В другом примере, видеодекодер 30 может быть выполнен с возможностью определять, по меньшей мере, одно ограничение из кодированного потока видеобитов.
[193] Видеодекодер 30 может быть выполнен с возможностью декодировать текущий блок с использованием определенного первого извлеченного вектора движения и второго извлеченного вектора движения (104).
[194] Фиг. 17 является блок–схемой последовательности операций, показывающей примерный способ согласно технологиям этого раскрытия сущности. Технологии по фиг. 17 могут реализовываться посредством одного или более из исходного устройства 12 или видеокодера 20 (см. фиг. 1 и 2).
[195] Видеокодер 20 может быть выполнен с возможностью формировать множество извлеченных векторов движения с использованием DMVD (200). В некоторых примерах, видеокодер 20 может формировать множество извлеченных векторов движения на основе определения того, удовлетворяют либо нет первый и второй начальные векторы движения одному или более условий.
[196] Видеокодер 20 может быть выполнен с возможностью определять первый извлеченный вектор движения и второй извлеченный вектор движения из множества извлеченных векторов движения на основе показателя затрат и определения того, удовлетворяется или нет ограничение (202). Ограничение может включать в себя то, первый извлеченный вектор движения и второй извлеченный вектор движения имеют симметричную разность векторов движения, имеют псевдосимметричную разность векторов движения, являются антисимметричными, имеют антисимметричную разность векторов движения или имеют псевдоантисимметричную разность векторов движения. Видеокодер 20 может быть выполнен с возможностью кодировать текущий блок с использованием определенного первого извлеченного вектора движения и второго извлеченного вектора движения (204). Видеокодер 20 может быть выполнен с возможностью кодировать ограничение. Видеокодер 20 может быть дополнительно выполнен с возможностью отправлять ограничение через поток битов.
[197] Следует признавать, что в зависимости от примера, определенные этапы или события любой из технологий, описанных в данном документе, могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные этапы или события требуются для практической реализации технологий). Кроме того, в определенных примерах, этапы или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерывания или посредством нескольких процессоров, а не последовательно.
[198] В одном или более примеров, описанные функции могут реализовываться в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой комбинации вышеозначенного. При реализации в программном обеспечении, функции могут сохраняться или передаваться, в качестве одной или более инструкций или кода, по машиночитаемому носителю и выполняться посредством аппаратного модуля обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители хранения данных, которые соответствуют материальному носителю, такие как носители хранения данных, или среды связи, включающие в себя любой носитель, который упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители, в общем, могут соответствовать (1) материальному машиночитаемому носителю хранения данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители хранения данных могут представлять собой любые доступные носители, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в этом раскрытии сущности. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
[199] В качестве примера, а не ограничения, эти машиночитаемые носители хранения данных могут содержать RAM, ROM, EEPROM, CD–ROM или другое устройство хранения данных на оптических дисках, устройство хранения данных на магнитных дисках или другие магнитные устройства хранения, флэш–память либо любой другой носитель, который может использоваться для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Кроме того, любое соединение корректно называть машиночитаемым носителем. Например, если инструкции передаются из веб–узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL), или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включаются в определение носителя. Тем не менее, следует понимать, что машиночитаемые носители хранения данных и носители хранения данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители хранения данных. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт–диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu–Ray, при этом диски (disk) обычно воспроизводят данные магнитно, тогда как диски (disc) обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число машиночитаемых носителей.
[200] Инструкции могут выполняться посредством одного или более процессоров, к примеру, посредством одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, схемы обработки (включающей в себя фиксированную функциональную схему и/или программируемую схему обработки), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) либо других эквивалентных интегрированных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может предоставляться в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования или декодирования либо встроенных в комбинированный кодек. Кроме того, технологии могут полностью реализовываться в одной или более схем или логических элементов.
[201] Технологии этого раскрытия сущности могут реализовываться в широком спектре устройств или оборудования, в том числе в беспроводном переносном телефоне, в интегральной схеме (IC), или в наборе IC (к примеру, в наборе микросхем). Различные компоненты, модули или блоки описываются в этом раскрытии сущности для того, чтобы подчеркивать функциональные аспекты устройств, выполненных с возможностью осуществлять раскрытые технологии, но необязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные модули могут комбинироваться в аппаратный модуль кодека или предоставляться посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.
[202] Выше описаны различные примеры. Эти и другие примеры находятся в пределах объема прилагаемой формулы изобретения.