Способ и устройство для видеокодирования
METHOD AND APPARATUS FOR VIDEO ENCODING

[0001] Настоящее изобретение испрашивает приоритет патентной заявки США №16/822,075, "Method and Apparatus for Video coding" поданной 18 марта 2020 г., которая испрашивает приоритет предварительной заявки США №62/820,196, "Affine Inter Prediction Refinement Methods", поданной 18 марта 2019 г., №62/828,425, "LIC Signaling and Affine Refinement" поданной 2 апреля 2019 г., №62/838,798, "Inter Prediction Refinement Methods", поданной 25 апреля 2019 г.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] В настоящей заявке описаны варианты осуществления, в целом относящиеся к видеокодированию.
УРОВЕНЬ ТЕХНИКИ
[0003] Описание уровня техники приведено здесь с целью представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники, лежащим в основе настоящего изобретения.
[0004] Кодирование и декодирование видеосигнала может осуществляться с использованием предсказания между изображениями с компенсацией движения. Цифровое видео без сжатия может включать в себя последовательность изображений, каждое из которых имеет пространственный размер, например, 1920 × 1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. Видео без сжатия предъявляет значительные требования к битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920 × 1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с.Час такого видео требует объема памяти более 600 ГБ.
[0005] Одной целью кодирования и декодирования видеосигнала может быть снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе или объему памяти, в ряде случаев на два порядка величины или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так чтобы реконструированный сигнал можно было использовать для намеченного применения. Сжатие с потерями широко применяется для видео. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями, чем пользователи телевещательных приложений. Достижимая степень сжатия может отражать, что более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.
[0006] Компенсация движения может представлять собой метод сжатия с потерями и может относятся к методам, где блок данных отсчетов из ранее реконструированного изображения или его части (опорного изображения), подвергнутый пространственному сдвигу в направлении, указанном вектором движения (далее MV, motion vector), используется для предсказания вновь реконструированного изображения или части изображения. В ряде случаев опорное изображение может быть идентично реконструируемому в данный момент изображению. MV могут иметь два измерения X и Y или три измерения, причем третье указывает используемое опорное изображение (последнее, косвенно, может быть временным измерением).
[0007] В некоторых методах сжатия видео, MV, применимый к определенной области данных отсчетов, можно предсказывать из других MV, например, связанных с другой областью данных отсчетов, пространственно соседних с реконструируемой областью, и предшествующих этому MV в порядке декодирования. Это позволяет существенно сократить объем данных, необходимый для кодирования MV, тем самым устраняя избыточность и повышая степень сжатия. Предсказание MV может работать эффективно, например, благодаря тому, что при кодировании входного видеосигнала, полученного от камеры (известного как естественное видео) существует статистическая вероятность того, что области, более обширные, чем область, к которой применим один-единственный MV, движутся в аналогичном направлении, и поэтому в ряде случаев могут предсказываться с использованием аналогичного вектора движения, полученного из MV соседней области. В результате MV, найденный для данной области, оказывается аналогичным или идентичным MV, предсказанному из окружающих MV, и который, в свою очередь, может быть представлен, после энтропийного кодирования, меньшим количеством битов, чем использовалось бы при кодировании MV напрямую. В ряде случаев, предсказание MV может служить примером сжатия без потерь (а именно, MV), полученного из исходного сигнала (а именно: потока отсчетов). В других случаях предсказание MV само может быть с потерями, например, ввиду ошибок округления при вычислении предсказателя из нескольких окружающих MV.
[0008] Различные механизмы предсказания MV описаны в H.265/HEVC (ITU-T Rec. Н.265, "High Efficiency Video Coding", декабрь 2016). Из множества механизмов предсказания MV, предлагаемых в Н.265, здесь описан метод далее именуемый "пространственным объединением ".
[0009] Согласно фиг.1, текущий блок (101) содержит отсчеты, найденные кодером в процессе поиска движения, для предсказания из предыдущего блока того же размера, который был пространственно сдвинут.Вместо того, чтобы кодировать этот MV напрямую, MV можно получить из метаданных, связанных с одним или более опорными изображениями, например, из самого последнего (в порядке декодирования) опорного изображения, с использованием MV, связанного с любым из пяти окружающих отсчетов, обозначенных А0, А1, и В0, B1, В2 (102-106, соответственно). В Н.265 предсказание MV может использовать предсказатели из того же опорного изображения, которое использует соседний блок.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0010] Аспекты изобретения предусматривают способы и устройства для кодирования/декодирования видеосигнала. В некоторых примерах устройство для видеодекодирования включает в себя схему обработки. Схема может быть выполнена с возможностью определения, применять ли PROF к аффинному кодированному блоку, и в ответ на определение применять PROF к аффинному кодированному блоку, осуществления процесса PROF.
[0011] Например, в ходе процесса PROF, может генерироваться отсчет I(i,j) предсказания в положении (i,j) отсчета в аффинном кодированном блоке. В положении (i,j) отсчета в аффинном кодированном блоке могут генерироваться пространственные градиенты g_х (i,j) и g_y (i,j). На основании пространственных градиентов g х (i,j) и g у (i,j) может генерироваться уточнение ΔI(i,j) предсказания. Для генерации уточненного отсчета предсказания к отсчету I(i,j) предсказания может прибавляться уточнение Δ1(i,j) предсказания.
[0012] В примере, синтаксический элемент, указывающий, разрешено ли PROF для аффинного предсказания, принимается в декодере. В примере, PROF по умолчанию разрешено для аффинного предсказания.
[0013] В примере, синтаксический элемент сигнализируется на уровне последовательностей, уровне слайсов, уровне тайлов, уровне групп тайлов или уровне изображений. В примере, применять ли PROF к аффинному кодированному блоку, может определяться на основании значений аффинных параметров аффинной модели аффинного кодированного блока. В примере, пространственные градиенты g_x (i,j) и g_y (i,j) в положении (i,j) отсчета генерируются на основании первого(ых) отсчет(ов) предсказания первого подблока, включающего в себя отсчет I(i,j) предсказания и второго(ых) отсчета(ов) предсказания второго подблока, соседнего с первым подблоком. Первый подблок и второй подблок могут получаться разбиением аффинного кодированного блока. В примере, осуществляется внешнее предсказание для подблоков аффинного кодированного блока, и пространственные градиенты в положениях отсчетов генерируются на основании отсчетов предсказания всего аффинного кодированного блока.
[0014] В примере, пространственные градиенты g_х (i,j) и g_у (i,j) в положении (i,j) отсчета генерируются с использованием сгенерированного градиентного фильтра для опорных отсчетов в опорном изображении аффинного кодированного блока. Например, сгенерированный градиентный фильтр может генерироваться посредством свертки первого градиентного фильтра и интерполяционного фильтра. Применение интерполяционного фильтра для опорных отсчетов в опорном изображении аффинного кодированного блока генерирует отсчеты предсказания аффинного кодированного блока, и затем применение первого градиентного фильтра к сгенерированным отсчетам предсказания аффинного кодированного блока генерирует пространственные градиенты g_х (i,j) и g_у (i,j).
[0015] В примере, применять ли PROF к аффинному кодированному блоку, определяется на основании принятого синтаксического элемента, указывающего, разрешено ли PROF для аффинного предсказания, и сигнализации, указывающей, разрешена ли локальная компенсация освещенности (LIC, local illumination compensation). В примере, аффинный кодированный блок кодируется в аффинном режиме объединения, и значение флага LIC аффинного кодированного блока наследуется от блока, соседнего с аффинным кодированным блоком, который используется как источник для наследования аффинной модели или построения аффинной модели аффинного кодированного блока.
[0016] В некоторых примерах, другое устройство для видеодекодирования может включать в себя схему обработки, выполненную с возможностью определения промежуточного вектора MVblock движения текущего блока, имеющего высокую точность по сравнению с низкой точностью, поддерживаемой интерполяционным фильтром текущего блока, округления промежуточного вектора MVblock движения для генерации округленного вектора MVround движения текущего блока, имеющего низкую точность, поддерживаемую интерполяционным фильтром текущего блока, и генерации блока предсказания текущего блока на основании округленного вектора MVround движения и интерполяционного фильтра. Смещение ΔI(i,j) уточнения предсказания может определяться по формуле:
где  - градиенты отсчета предсказания блока предсказания в положении (i,j) в направлениях хну, соответственно, и  и  - разности векторов движения между промежуточным вектором MVblock движения и округленным вектором MVround движения в направлениях х и у, соответственно. Смещение ΔI(i,j) уточнения предсказания можно добавлять в отсчет предсказания блока предсказания для генерации уточненного отсчета предсказания.
[0017] В примере, текущий блок является блоком или подблоком, кодированным в режиме временного предсказания вектора движения (TMVP, temporal motion vector prediction mode), в режиме TMVP на основе подблоков (SbTMVP, sub-block-based TMVP mode), объединения с использованием разности векторов движения (MMVD, merge with motion vector difference), аффинного опережающего предсказания вектора движения (AMVP, affine advance motion vector prediction), или режима пространственного предсказания вектора движения, где промежуточный вектор MVblock движения генерируется в операции масштабирования вектора движения, или текущий блок кодируется с использованием предсказателя вектора движения с высокой точностью.
[0018] В примере, может приниматься синтаксический элемент, указывающий высокую точность в наборе параметров последовательности (SPS, sequence parameter set), наборе параметров изображения (PPS, picture parameter set), заголовке слайса, заголовке группы тайлов. В примере, промежуточный вектор MVblock движения, имеющий высокую точность, может сохраняться в памяти. Другой блок в текущем изображении, включающем в себя текущий блок, может кодироваться с использованием промежуточного вектора MVblock движения для пространственного предсказания вектора движения.
[0019] Аспекты изобретения также предусматривают компьютерно-считываемые носители где хранятся инструкции, которые при выполнении компьютером для видеодекодирования предписывают компьютеру осуществлять способы видеодекодирования.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0020] Дополнительные особенности, характер и различные преимущества раскрытого изобретения будут понятны из нижеследующего подробного описания и прилагаемых чертежей, на которых:
[0021] Фиг. 1 - схема текущего блока и окружающих его кандидатов на пространственное объединение в одном примере.
[0022] Фиг. 2 - упрощенная блок-схема системы (200) связи в соответствии с вариантом осуществления.
[0023] Фиг. 3 - упрощенная блок-схема системы (300) связи в соответствии с вариантом осуществления.
[0024] Фиг. 4 - упрощенная блок-схема декодера в соответствии с вариантом осуществления.
[0025] Фиг. 5 - упрощенная блок-схема кодера в соответствии с вариантом осуществления.
[0026] Фиг. 6 - блок-схема кодера в соответствии с другим вариантом осуществления.
[0027] Фиг. 7 - блок-схема декодера в соответствии с другим вариантом осуществления.
[0028] Фиг. 8 - позиции кандидатов, из которых можно выбирать набор кандидатов на пространственное объединение для построения расширенного списка кандидатов на объединение в соответствии с вариантом осуществления.
[0029] Фиг. 9 - пары кандидатов в расширенном списке объединения для процесса проверки избыточности в соответствии с вариантом осуществления.
[0030] Фиг. 10 - пример вывода кандидата на временное объединение в расширенном списке объединения в текущем изображении в соответствии с вариантом осуществления.
[0031] Фиг. 11 - позиции кандидатов, из которых можно выбирать кандидат на временное объединение в расширенном списке объединения в соответствии с вариантом осуществления.
[0032] Фиг. 12 - позиции предсказания, из которых можно выбирать предсказание в режиме объединения с использованием разности векторов движения (MMVD) в соответствии с вариантом осуществления.
[0033] Фиг. 13А - два вектора движения контрольной точки (CPMV) для представления 2-параметрической аффинной модели.
[0034] Фиг. 13В - три CPMV для представления 3- параметрической аффинной модели.
[0035] Фиг. 14 - векторы движения, выведенные для подблоков, полученных разбиением текущего блока, кодированного в режиме аффинного предсказания.
[0036] Фиг. 15 - блок, соседний с текущим блоком для вывода кандидата на унаследованное аффинное объединение.
[0037] Фиг. 16 - позиции блоков-кандидатов для вывода кандидатов на построенное аффинное объединение.
[0038] Фиг. 17А - схема соседних в пространстве блоков, которые могут использоваться для определения предсказательной информации движения для текущего блока с использованием способа временного предсказания вектора движения на основе подблоков (SbTMVP) на основании информации движения соседних в пространстве блоков в соответствии с одним вариантом осуществления.
[0039] Фиг. 17В - схема выбранного соседнего в пространстве блока для способа SbTMVP в соответствии с одним вариантом осуществления.
[0040] Фиг. 18 - схема примера способа уточнения предсказания с помощью оптического потока (PROF, prediction refinement with optical flow) в соответствии с вариантом осуществления.
[0041] Фиг. 19 - пример соседних отсчетов 1901 текущего блока 1900 и соседних отсчетов соответствующего опорного блока 1910, используемых для вывода параметров локальной компенсации освещенности (LIC).
[0042] Фиг. 20 пример использования локальной компенсации освещенности (LIC) с двойным предсказанием.
[0043] Фиг. 21 - пример использования LIC с многогипотезным внутренним/внешним предсказанием.
[0044] Фиг. 22 - пример первого способа выборки опорных отсчетов.
[0045] Фиг. 23 - пример второго способа выборки опорных отсчетов.
[0046] Фиг. 24 - пример третьего способа, где опорные отсчеты выбираются на основе подблоков.
[0047] Фиг. 25 - пример области расширенной единицы кодирования (CU, coding unit), соответствующей CU (2510), используемой в двунаправленном оптическом потоке (BDOF, bi-directional optical flow).
[0048] Фиг. 26 - примеры ядер фильтров Собеля, Шарра, Превитта и Робертса.
[0049] Фиг. 27 - блок-схема операций процесса (2700) согласно варианту осуществления изобретения.
[0050] Фиг. 28 - другая блок-схема операций процесса (2800) согласно варианту осуществления изобретения.
[0051] Фиг. 29 - схема компьютерной системы в соответствии с вариантом осуществления.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0052] I. Кодер и декодер для видео кодирования
[0053] На фиг. 2 показана упрощенная блок-схема системы (200) связи согласно варианту осуществления настоящего изобретения. Система (200) связи включает в себя множество оконечных устройств, которые могут осуществлять связь друг с другом, например, через сеть (250). Например, система (200) связи включает в себя первую пару оконечных устройств (210) и (220), соединенных между собой через сеть (250). В примере, приведенном на фиг. 2, первая пара оконечных устройств (210) и (220) осуществляет однонаправленную передачу данных. Например, оконечное устройство (210) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством (210)), для передачи в другое оконечное устройство (220) через сеть (250). Кодированные видеоданные могут передаваться в форме одного или более битовых потоков кодированного видео. Оконечное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и отображения видеоизображений согласно восстановленным видеоданным. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.
[0054] В другом примере, система (200) связи включает в себя вторую пару оконечных устройств (230) и (240) которые осуществляют двунаправленную передачу кодированных видеоданных, которые могут возникать, например, в ходе видеоконференцсвязи. Для двунаправленной передачи данных, в порядке примера, каждое оконечное устройство из оконечных устройств (230) и (240) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством) для передачи в другое оконечное устройство из оконечных устройств (230) и (240) через сеть (250). Каждое оконечное устройство из оконечных устройств (230) и (240) также может принимать кодированные видеоданные, передаваемые другим оконечным устройством из оконечных устройств (230) и (240), и может декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения на доступном устройстве отображения согласно восстановленным видеоданным.
[0055] В примере, приведенном на фиг. 2, оконечные устройства (210), (220), (230) и (240) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. Варианты осуществления настоящего изобретения находят применение для портативных компьютеров, планшетных компьютеров, медиаплееров и/или специального оборудования для видеоконференцсвязи. Сеть (250) представляет любое количество сетей, которые переносят кодированные видеоданные между оконечными устройствами (210), (220), (230) и (240), включая, например, проводные и/или беспроводные сети связи. Сеть (250) связи позволяет обмениваться данными в режиме канальной коммутации и/или пакетной коммутации. Иллюстративные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или интернет.В целях настоящего рассмотрения, архитектура и топология сети (250) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.
[0056] На фиг. 3 показано, в порядке примера применения раскрытого изобретения, размещение видеокодера и видеодекодера в окружении потоковой передачи. Раскрытое изобретение может быть в равной степени применимо к другим применениям обработки видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, в том числе CD, DVD, карте памяти и т.п., и т.д.
[0057] Система потоковой передачи может включать в себя подсистему (313) захвата, которая может включать в себя источник (301) видеосигнала, например, цифровую камеру, создающую, например, поток (302) видеоизображений, не подвергнутых сжатию. Например, поток (302) видеоизображений включает в себя отсчеты, взятые цифровой камерой. Поток (302) видеоизображений, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (304) (или битовыми потоками кодированного видео), может обрабатываться электронным устройством (320), которое включает в себя видеокодер (303), подключенный к источнику (301) видеосигнала. Видеокодер (303) может включать в себя оборудование, программное обеспечение или их комбинацию для обеспечения или реализации аспектов раскрытого изобретения, как более подробно описано ниже. Кодированные видеоданные (304) (или битовый поток (304) кодированного видео), изображенные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком (302) видеоизображений, могут храниться на потоковом сервере (305) для использования в будущем. Одна или более клиентских подсистем потоковой передачи, например, клиентские подсистемы (306) и (308) на фиг.3, могут осуществлять доступ к потоковому серверу (305) для извлечения копий (307) и (309) кодированных видеоданных (304). Клиентская подсистема (306) может включать в себя видеодекодер (310), например, в электронном устройстве (330). Видеодекодер (310) декодирует входящую копию (307) кодированных видеоданных и создает исходящий поток (311) видеоизображений, который может визуализироваться на дисплее (312) (например, отображающем экране) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи, кодированные видеоданные (304), (307) и (309) (например, битовые потоки видео) могут кодироваться согласно тем или иным стандартам кодирования/сжатия видео. Примеры этих стандартов включают в себя ITU-Т Recommendation Н.265. Например, разрабатывается стандарт видеокодирования под официальным названием "универсальное видеокодирование" (VVC, Versatile Video Coding). Раскрытое изобретение может использоваться в контексте VVC.
[0058] Заметим, что электронные устройства (320) и (330) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (320) может включать в себя видеодекодер (не показан), и электронное устройство (330) также может включать в себя видеокодер (не показан).
[0059] На фиг. 4 показана блок-схема видеодекодера (410) согласно варианту осуществления настоящего изобретения. Видеодекодер (410) может входить в состав электронного устройства (430). Электронное устройство (430) может включать в себя приемник (431) (например, приемные схемы). Видеодекодер (410) может использоваться вместо видеодекодера (310) в примере, приведенном на фиг.3.
[0060] Приемник (431) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (410); в том же или другом варианте осуществления, по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (401), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (431) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут ретранслироваться на соответствующие использующие и объекты (не показаны). Приемник (431) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети, буферная память (415) может быть подключена между приемником (431) и энтропийным декодером / анализатором (420) (далее "анализатором (420)"). В некоторых вариантах применения буферная память (415) входит в состав видеодекодера (410). В других она может не входить в состав видеодекодера (410) (не показан). В прочих вариантах может существовать буферная память (не показана) вне видеодекодера (410), например, для борьбы с джиттером сети, помимо другой буферной памяти (415) в составе видеодекодера (410), например, для управления хронированием доигрывания. Когда приемник (431) принимает данные от устройства хранения/ретрансляции с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (415) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшей попытки, например, Интернете, буферная память (415) может требоваться, может быть сравнительно большой и может иметь преимущественно адаптивный размер, и по меньшей мере частично может быть реализована в операционной системе или аналогичных элементах (не показаны) вне видеодекодера (410).
[0061] Видеодекодер (410) может включать в себя анализатор (420) для реконструкции символов (421) из кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (410), и возможно информацию для управления устройством визуализации, например, устройством (412) визуализации (например, отображающим экраном), которое не является неотъемлемой частью электронного устройства (430), но может быть подключено к электронному устройству (430), как показано на фиг.4. Информация управления для устройств(а) визуализации может представлять собой сообщения информации дополнительного улучшения (SEI, Supplemental Enhancement Information) или фрагменты набора параметров информации пригодности видео (VUI, Video Usability Information) (не показаны). Анализатор (420) может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать различным принципам, в том числе кодированию с переменной длиной серии, кодированию по Хаффману, арифметическому кодированию с контекстной чувствительностью или без нее и т.д. Анализатор (420) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основании по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP, Groups of Pictures), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU, Coding Units), блоки, единицы преобразования (TU, Transform Units), единицы предсказания (PU, Prediction Units) и т.д. Анализатор (420) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[0062] Анализатор (420) может осуществлять операцию энтропийного декодирования / анализа видеопоследовательности, принятой из буферной памяти (415), для создания символов (421).
[0063] Для реконструкции символов (421) могут использоваться несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например: интер- и интра-изображения, интер- и интра-блока) и других факторов. Какие модули используются, и как, может определяться информацией управления подгруппами, выделенной из кодированной видеопоследовательности анализатором (420). Поток такой информации управления подгруппами между анализатором (420) и множественными модулями для простоты в дальнейшем не показан
[0064] Помимо ранее упомянутых функциональных блоков, видеодекодер (410) может принципиально подразделяться на несколько функциональных модулей, как описано ниже. В практической реализации, работающей в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания раскрытого изобретения уместно принципиальное подразделение на нижеперечисленные функциональные модули.
[0065] Первым модулем является модуль (451) масштабирования / обратного преобразования. Модуль (451) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую в себя используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (421) от анализатора (420). Модуль (451) масштабирования / обратного преобразования может выводить блоки, содержащие значения отсчетов, которые можно вводить в агрегатор (455).
[0066] В ряде случаев, выходные отсчеты блока (451) масштабирования / обратного преобразования могут относиться к внутренне-кодированному блоку; то есть блоку, который не использует предсказанную информацию из ранее реконструированных изображений, но может использовать предсказанную информацию из ранее реконструированных частей текущего изображения. Такая предсказанная информация может обеспечиваться модулем (452) предсказания внутри изображения. В ряде случаев модуль (452) предсказания внутри изображения генерирует блок такого же размера и формы, как блок, подлежащий реконструкции, с использованием информации ранее реконструированного окружения, извлеченной из буфера (458) текущего изображения. Буфер (458) текущего изображения буферизует, например, частично реконструированное текущее изображение и/или полностью реконструированное текущее изображение. Агрегатор (455) в ряде случаев добавляет, для каждого отсчета, информацию предсказания, сгенерированную модулем (452) внутреннего предсказания, в информацию выходных отсчетов, обеспеченную модулем (451) масштабирования / обратного преобразования.
[0067] В других случаях выходные отсчеты модуля (451) масштабирования / обратного преобразования могут относиться к внутренне кодированному блоку, возможно, с компенсацией движения. В таком случае, модуль (453) предсказания с компенсацией движения может осуществлять доступ к памяти (457) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (421), относящимися к блоку, эти отсчеты могут добавляться агрегатором (455) к выходному сигналу модуля (451) масштабирования / обратного преобразования (в этом случае именуемому остаточными отсчетами или остаточным сигналом) для генерации информации выходных отсчетов. Адреса в памяти (457) опорных изображений, откуда модуль (453) предсказания с компенсацией движения извлекает предсказанные отсчеты, могут регулироваться векторами движения, доступными модулю (453) предсказания с компенсацией движения, в форме символов (421), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (457) опорных изображений, когда используются точные векторы движения под-отсчетов, механизмы предсказания векторов движения и т.д.
[0068] К выходным отсчетам агрегатора (455) можно применять различные методы контурной фильтрации в модуле (456) контурного фильтра. Технологии сжатия видео могут включать в себя технологии деблокирующего фильтра под управлением параметров, включенных в кодированную видеопоследовательность (также именуемую битовым потоком кодированного видео) и становиться доступными модулю (456) контурного фильтра в качестве символов (421) от анализатора (520), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.
[0069] Модуль (456) контурного фильтра может выдавать поток отсчетов, который может поступать на устройство (412) визуализации, а также сохраняться в памяти (457) опорных изображений для использования в будущем предсказании между изображениями.
[0070] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью реконструировано, и кодированное изображение идентифицировано как опорное изображение (например, анализатором (420)), буфер (458) текущего изображения может становиться частью памяти (457) опорных изображений, и свежий буфер текущего изображения может повторно выделяться до начала реконструкции следующего кодированного изображения.
[0071] Видеодекодер (410) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видео, например, по стандарту ITU-T Rec. Н.265. Кодированная видеопоследовательность может согласовываться с синтаксисом, заданным используемой/ым технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность может придерживаться как синтаксиса технологии или стандарта сжатия видео, так и профилей, задокументированных в технологии или стандарте сжатия видео. В частности, профиль может выбирать некоторые инструменты как инструменты, доступные для использования только под этим профилем, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видео. В ряде случаев, уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемого в кодированной видеопоследовательности.
[0072] Согласно варианту осуществления, приемник (431) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (410) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, слои улучшения во времени, пространстве или отношения сигнал/шум (SNR, signal noise ratio), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.
[0073] На фиг. 5 показана блок-схема видеокодера (503) согласно варианту осуществления настоящего изобретения. Видеокодер (503) входит в состав электронного устройства (520). Электронное устройство (520) включает в себя передатчик (540) (например, передающую схему). Видеокодер (503) может использоваться вместо видеокодера (303) в примере, приведенном на фиг. 3.
[0074] Видеокодер (503) может принимать отсчеты видео от источника (501) видеосигнала (который не входит в состав электронного устройства (520) в примере, показанном на фиг.5), который может захватывать видеоизображение(я), подлежащее(ие) кодированию видеокодером (503). В другом примере источник (501) видеосигнала входит в состав электронного устройства (520).
[0075] Источник (501) видеосигнала может обеспечивать исходную видеопоследовательность, подлежащую кодированию видеокодером (503) в форме потока отсчетов цифрового видео любой подходящей битовой глубины (например: 8 бит, 10 бит, 12 бит,…), любого цветового пространства (например, ВТ.601 Y CrCB, RGB, …), и любой подходящей структуры дискретизации (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе службы массовой информации источником (501) видеосигнала может быть запоминающее устройство, где хранится ранее подготовленное видео. В система видеоконференцсвязи источником (501) видеосигнала может быть камера, которая захватывает информацию локального изображения как видеопоследовательность. Видеоданные могут обеспечиваться как множество отдельных изображений, которые создают ощущение движения при наблюдении в последовательности. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемых структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники нетрудно понять соотношение между пикселями и отсчетами. Нижеследующее описание посвящено отсчетам.
[0076] Согласно варианту осуществления, видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с учетом любых других временных ограничений, налагаемых применением. Установление надлежащей скорости кодирования является одной из функций контроллера (550). В некоторых вариантах осуществления контроллер (550) управляет другими функциональными модулями, как описано ниже, и функционально подключен к другим функциональным модулям. Подключение для простоты не показано. Параметры, установленные контроллером (550), могут включать в себя параметры, связанные регулировкой частоты (пропуск изображения, квантователь, значение лямбда, применяемое при оптимизация скорости-искажения,...), размер изображения, схему групп изображений (GOP, group of pictures), максимальную зону поиска вектора движения и т.д. Контроллер (550) может быть выполнен с возможностью иметь другие подходящие функции, относящиеся к видеокодеру (503), оптимизированному для той или иной конструкции системы.
[0077] В некоторых вариантах осуществления видеокодер (503) выполнен с возможностью работать в петле кодирования. В качестве очень упрощенного описания, в порядке примера, петля кодирования может включать в себя исходный кодер (530) (например, отвечающий за создание символов, например, потока символов, на основе входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локальный) декодер (533), встроенный в видеокодер (503). Декодер (533) реконструирует символы для создания данных отсчетов, аналогично тому, как это делал бы (удаленный) декодер (поскольку любое сжатие между символами и битовым потоком кодированного видео происходит без потерь в технологиях сжатия видео, рассматриваемых в раскрытом изобретении). Реконструированный поток отсчетов (данные отсчетов) поступают в память (534) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, не зависящим от положения декодера (локального или удаленного), содержимое памяти (534) опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, предсказанная часть кодера "видит" в качестве отсчетов опорного изображения точно такие же значения отсчетов, как "видел" бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронизма опорного изображения (и, в итоге, дрейф, если синхронизм не удается поддерживать, например, вследствие канальных ошибок) используется также в некоторых связанных областях техники.
[0078] "Локальный" декодер (533) может действовать таким же образом, как "удаленный" декодер, например, видеодекодер (410), подробно вышеописанный со ссылкой на фиг. 5. Однако, опять же, согласно фиг. 4, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (545) и анализатором (420) может осуществляться без потерь, части энтропийного декодирования видеодекодера (410), включающие в себя буферную память (415) и анализатор (420), могут быть не полностью реализованы в локальном декодере (533).
[0079] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализа/энтропийного декодирования, также обязательно должна присутствовать, по существу в идентичной функциональной форме, в соответствующем кодере. По этой причине раскрытое изобретение сконцентрировано на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодированная. Только в некоторых областях требуется более детальное описание, которое приведено ниже.
[0080] Согласно некоторым примерам, в ходе работы исходный кодер (530) может осуществлять кодирование с предсказанием и компенсацией движения, при котором входное изображение кодируется с предсказанием на основании одного или более ранее кодированных изображений из видеопоследовательности, указанных как "опорные изображения". Таким образом, машина (532) кодирования кодирует различия между пиксельными блоками входного изображения и пиксельными блоками опорного изображения(й), которое(ые) может(ут) выбираться в качестве предсказанной(ых) ссылки(ок) на входное изображение.
[0081] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, которые могут быть указаны как опорные изображения, на основе символов, созданных исходным кодером (530). Операции машины (532) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 5), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных изображениях, и может предписывать сохранение реконструированных опорных изображений в кэш-памяти (534) опорных изображений. Таким образом, видеокодер (503) может локально сохранять копии реконструированных опорных изображений, имеющие такое же содержимое, как реконструированные опорные изображения, которые будут получены видеодекодером на стороне приемника (в отсутствие ошибок передачи).
[0082] Предсказатель (535) может осуществлять поиски предсказания для машины (532) кодирования. Таким образом, для нового изображения, подлежащего кодированию, предсказатель (535) может искать в памяти (534) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных пиксельных блоков) или те или иные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (535) может работать на основе "блоки отсчетов х пиксельные блоки" для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предсказателем (535), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (534) опорных изображений.
[0083] Контроллер (550) может управлять операциями кодирования исходного кодера (530), включая, например, установление параметров и параметров подгруппы, используемых для кодирования видеоданных.
[0084] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) переводит символы, сгенерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно технологиям, например, кодирования по Хаффману, кодирования с переменной длиной серии, арифметического кодирования и т.д.
[0085] Передатчик (540) может буферизовать кодированную(ые) видеопоследовательность(и), созданную энтропийным кодером (545), для подготовки к передаче через канал (560) связи, который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные от видеокодера (503) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).
[0086] Контроллер (550) может управлять работой видеокодера (503). В ходе кодирования контроллер (550) может назначать каждому кодированному изображению тот или иной тип кодированного изображения, который может определять методы кодирования, применимые к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы изображения:
[0087] Интра-изображение (I-изображение), которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают разные типы интра-изображений, включая, например, изображения в формате независимого обновления декодера ("IDR", Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.
[0088] Предсказанное изображение (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[0089] Двунаправленно-предсказанное изображение (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, мул ьтипред сказанные изображения могут использовать более двух опорных изображений и связанные метаданные для реконструкции единого блока.
[0090] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться предиктивно со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки I-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (пространственным предсказанием или внутренним предсказанием). Пиксельные блоки Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[0091] Видеокодер (503) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, например, ITU-T Rec. Н.265. В своей работе видеокодер (503) может осуществлять различные операции сжатия, в том числе операции предиктивного кодирования, которые используют временные и пространственные избыточности во входной видеопоследовательности. Поэтому кодированные видеоданные могут согласовываться с синтаксисом, заданным используемой технологией или стандартом видеокодирования.
[0092] Согласно варианту осуществления, передатчик (540) может передавать дополнительные данные с кодированным видео. Исходный кодер (530) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR слои улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и т.д.
[0093] Видео может захватываться как множество исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно именуемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а предсказание между изображениями использует (временную или иную) корреляцию между изображениями. Например, конкретное изображение, подлежащее кодированию/декодированию, которое именуется текущим изображением, разбивается на блоки. Когда блок в текущем изображении аналогичен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может кодироваться вектором, который именуется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множественных опорных изображений.
[0094] В некоторых вариантах осуществления, метод двойного предсказания может использоваться в предсказании между изображениями. Согласно методу двойного предсказания, используются два опорных изображения, например, первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может предсказываться комбинацией первого опорного блока и второго опорного блока.
[0095] Дополнительно, метод режима объединения может использоваться в предсказании между изображениями для повышения эффективности кодирования.
[0096] Согласно некоторым вариантам осуществления изобретения, предсказания, например, предсказания между изображениями и предсказания внутри изображения, осуществляются поблочно. Например, согласно стандарту HEVC, изображение в последовательности видеоизображений разбивается на единицы дерева кодирования (CTU, coding tree units) для сжатия, CTU в изображении имеют одинаковый размер, например 64×64 пикселя, 32×32 пикселя или 16×16 пикселей. В общем случае CTU включает в себя три блока дерева кодирования (СТВ, coding tree blocks), а именно, один СТВ яркости и два СТВ цветности. Каждый CTU может рекурсивно делиться квадрадеревом на одну или несколько единиц кодирования (CU). Например, CTU размером 64×64 пикселя может делиться на одну CU размером 64×64 пикселя или 4 CU размером 32×32 пикселя или 16 CU размером 16×16 пикселей. Например, каждая CU анализируется для определения типа предсказания для CU, например, типа внешнего предсказания или типа внутреннего предсказания. CU делится на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. В целом, каждая PU включает в себя блок (РВ) предсказания яркости и два РВ цветности. Согласно варианту осуществления, операция предсказания при кодировании (кодировании/декодировании) осуществляется в единице блока предсказания. Используя блок предсказания яркости в качестве примера блока предсказания, блок предсказания включает в себя матрицу значений (например, значений яркости) для пикселей, например, 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.
[0097] На фиг. 6 показана схема видеокодера (603) согласно другому варианту осуществления изобретения. Видеокодер (603) выполнен с возможностью приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое составляет часть кодированной видеопоследовательности. Например, видеокодер (603) используется вместо видеокодера (303) в примере, приведенном на фиг. 3.
[0098] В примере HEVC видеокодер (603) принимает матрицу значений отсчетов для блока обработки, например, блока предсказания 8x8 отсчетов и т.п.Видеокодер (603) определяет, наилучшим ли образом кодируется блок обработки в интра-режиме, интер-режиме или режиме двойного предсказания с использованием, например, оптимизации скорость-искажения. Когда блок обработки подлежит кодированию в интра-режиме, видеокодер (603) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение; и когда блок обработки подлежит кодированию в интер-режиме или режиме двойного предсказания, видеокодер (603) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях видеокодирования, режим объединения может быть подрежимом предсказания между изображениями, где вектор движения выводится из одного или более предсказателей вектора движения без привлечения кодированного компонента вектора движения вне предсказателей. В некоторых других технологиях видеокодирования может присутствовать компонент вектора движения, применимый к данному блоку. В порядке примера, видеокодер (603) включает в себя другие компоненты, например, модуль определения режима (не показан) для определения режима блоков обработки.
[0099] В примере, приведенном на фиг.6, видеокодер (603) включает в себя интер-кодер (630), интра-кодер (622), вычислитель (623) остатка, переключатель (626), кодер (624) остатка, общий контроллер (621) и энтропийный кодер (625), соединенные друг с другом как показано на фиг.6.
[0100] Интер-кодер (630) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоками в предыдущих изображениях и более поздних изображениях), генерации информации внешнего предсказания (например, описания избыточной информации согласно методу внутреннего кодирования, векторов движения, информации режима объединения), и вычисления результатов внешнего предсказания (например, блока предсказания) на основании информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорными изображениями являются декодированные опорные изображения, которые декодируются на основе информации кодированного видео.
[0101] Интра-кодер (622) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), в ряде случаев сравнения блока с блоками, ранее кодированными в том же изображении, генерирования квантованных коэффициентов после преобразования, и в ряде случаев также информации внутреннего предсказания (например, информации направления внутреннего предсказания согласно одному или более методам внутреннего кодирования). В порядке примера, интра-кодер (622) также вычисляет результаты внутреннего предсказания (например, блок предсказания) на основании информации внутреннего предсказания и опорных блоков в том же изображении.
[0102] Общий контроллер (621) выполнен с возможностью определения общих данных управления и управления другими компонентами видеокодера (603) на основе общих данных управления. Например, общий контроллер (621) определяет режим блока и выдает сигнал управления на переключатель (626) на основе режима. Например, когда режим является интра-режимом, общий контроллер (621) управляет переключателем (626) для выбора результата интра-режима для использования вычислителем (623) остатка, и управляет энтропийным кодером (625) для выбора информации внутреннего предсказания и включения информации внутреннего предсказания в битовый поток; и когда режим является интер-режимом, общий контроллер (621) управляет переключателем (626) для выбора результата внешнего предсказания для использования вычислителем (623) остатка, и управляет энтропийным кодером (625) для выбора информации внешнего предсказания и включения информации внешнего предсказания в битовый поток.
[0103] Вычислитель (623) остатка выполнен с возможностью вычисления разности (данных остатка) между принятым блоком и результатами предсказания, выбранными из интра-кодера (622) или интер-кодера (630). Кодер (624) остатка выполнен с возможностью действовать на основе данных остатка для кодирования данных остатка для генерации коэффициентов преобразования. Например, кодер (624) остатка выполнен с возможностью преобразования данных остатка из пространственной области в частотную область и генерирования коэффициентов преобразования. Затем коэффициенты преобразования подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления видеокодер (603) также включает в себя декодер (628) остатка. Декодер (628) остатка выполнен с возможностью осуществления обратного преобразования и генерирования декодированных данных остатка. Декодированные данные остатка могут надлежащим образом использоваться интра-кодером (622) и интер-кодером (630). Например, интеркодер (630) может генерировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, и интра-кодер (622) может генерировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки надлежащим образом обрабатываются для генерации декодированных изображений, и декодированные изображения могут буферизоваться в схеме памяти (не показана) и в некоторых примерах использоваться в качестве опорных изображений.
[0104] Энтропийный кодер (625) выполнен с возможностью форматирования битового потока так, чтобы он включал в себя кодированный блок. Энтропийный кодер (625) выполнен с возможностью включать различную информацию согласно подходящему стандарту, например, стандарту HEVC. Например, энтропийный кодер (625) выполнен с возможностью включать общие данные управления, выбранную информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), информацию остатка и другую подходящую информацию в битовый поток. Заметим, что, согласно раскрытому изобретению, при кодировании блока в подрежиме объединения любого из интер-режима и режима двойного предсказания, информация остатка отсутствует.
[0105] На фиг. 7 показана схема видеодекодера (710) согласно другому варианту осуществления изобретения. Видеодекодер (710) выполнен с возможностью приема кодированных изображений, составляющих часть кодированной видеопоследовательности, и декодирования кодированных изображений для генерации реконструированных изображений. Например, видеодекодер (710) используется вместо видеодекодера (310) в примере, приведенном на фиг. 3.
[0106] В примере, приведенном на фиг.7, видеодекодер (710) включает в себя энтропийный декодер (771), интер-декодер (780), декодер (773) остатка, модуль (774) реконструкции и интра-декодер (772), соединенные друг с другом как показано на фиг. 7.
[0107] Энтропийный декодер (771) может быть выполнен с возможностью реконструкции, из кодированного изображения, некоторых символов, которые представляют синтаксические элементы, образующие кодированное изображение. Такие символы могут включать в себя, например, режим кодирования блока (например, интра-режим, интер-режим, режим двойного предсказания, причем последние два в подрежиме объединения или другом подрежиме), информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, используемые для предсказания интра-декодером (772) или интер-декодером (780), соответственно, информацию остатка в форме, например, квантованных коэффициентов преобразования и т.п. Например, когда режим предсказания является режимом внутреннего или двойного предсказания, информация внешнего предсказания поступает на интер-декодер (780); а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания поступает на интра-декодер (772). Информация остатка может подвергаться обратному квантованию и поступать в декодер (773) остатка.
[0108] Интер-декодер (780) выполнен с возможностью приема информации внешнего предсказания и генерирования результатов внешнего предсказания на основании информации внешнего предсказания.
[0109] Интра-декодер (772) выполнен с возможностью приема информации внутреннего предсказания и генерирования результатов предсказания на основании информации внутреннего предсказания.
[0110] Декодер (773) остатка выполнен с возможностью осуществления обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (773) остатка также может требовать некоторой информации управления (включать параметр квантователя (QP, Quantizer Parameter)), и эта информация может обеспечиваться энтропийным декодером (771) (путь данных не показан, поскольку это может быть только информация управления малого объема).
[0111] Модуль (774) реконструкции выполнен с возможностью объединения, в пространственной области, остатка на выходе декодера (773) остатка и результатов предсказания (на выходе модулей внешнего или внутреннего предсказания, в зависимости от ситуации) для формирования реконструированного блока, который может входить в состав реконструированного изображения, которое, в свою очередь, может входить в состав реконструированного видео. Заметим, что другие подходящие операции, например, операция деблокирования и т.п., может осуществляться для повышения визуального качества.
[0112] Заметим, что видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любого подходящего метода. Согласно варианту осуществления, видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления видеокодеры (303), (503) и (503) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, которые выполняют программные инструкции.
[0113] II. Технологии внешнего предсказания
[0114] В различных вариантах осуществления, для внутренне предсказанной CU, параметры движения, включающие в себя векторы движения, индексы опорного изображения, индекс использования списка опорных изображений и, возможно, другую дополнительную информацию, может использоваться для генерация внутренне предсказанных отсчетов. Параметры движения могут сигнализироваться явно или неявно. Когда CU кодируется в режиме пропуска, CU связана с одной PU и не имеет значительных остаточных коэффициентов, дельта кодированного вектора движения или индексов опорного изображения, связанных с CU.
[0115] Когда используется режим объединения, параметры движения для текущей CU можно получать из соседних CU, включая пространственные и временные кандидаты на объединение и опционально другие кандидаты на объединение. Режим объединения можно применять к внутренне предсказанной CU и можно использовать для режима пропуска. Альтернативой режиму объединения является явная передача параметров движения. Например, векторы движения, соответствующие индексы опорного изображения для каждого списка опорных изображений, флаги использованию списка опорных изображений и другая необходимая информация может сигнализироваться явно для каждой CU.
[0116] В некоторых вариантах осуществления используются следующие инструменты кодирования с внешним предсказанием:
- расширенное предсказание с объединением
- режим объединения с использованием разности векторов движения (MMVD)
- режим усовершенствованного предсказания векторов движения (AMVP) с симметричной сигнализацией разности векторов движения (MVD, motion vector difference)
- предсказание с аффинной компенсацией движения
- временное предсказание вектора движения на основе подблоков (SbTMVP)
- разрешение адаптивного вектора движения (AMVR, Adaptive motion vector resolution)
- двойное предсказание со взвешенным усреднением (BWA, Bi-prediction with weighted averaging)
- двунаправленный оптический поток (BDOF)
- уточнение вектора движения на стороне декодера (DMVR, Decoder side motion vector refinement)
- предсказание с треугольным разбиением
- объединенное внешнее и внутреннее предсказание (СИР, Combined inter and intra prediction)
[0117] 1. Расширенное предсказание с объединением
[0118] В некоторых вариантах осуществления список кандидатов на объединение строится путем включения следующих пяти типов кандидатов по порядку:
1) пространственный предсказатель вектора движения (SMVP, Spatial motion vector predictor) из соседних в пространстве CU,
2) временной предсказатель вектора движения (TMVP) из соответственно расположенных CU,
3) предсказатель вектора движения на исторической основе (HMVP, History-based motion vector predictor) из таблицы, организованной по принципу "первым вошел, первым вышел" (FIFO, first-in-first-out),
4) попарно усредненный предсказатель вектора движения (MVP, motion vector predictor),
5) нулевые MV.
[0119] В некоторых вариантах осуществления, размер списка объединения сигнализируется в заголовке слайса, и максимально разрешенный размер списка объединения равен 6. Для каждой CU, кодированной в режиме объединения, индекс наилучшего кандидата на объединение кодируется с использованием усеченной унарной (TU) бинаризации. Первый бин индекса объединения кодируется с контекстом, и для других бинов используется обходное кодирование.
[0120] Ниже приведены примеры процессов генерации каждой категории кандидатов на объединение.
[0121] 1.1 Вывод пространственных кандидатов
[0122] В процессе вывода кандидаты на пространственное объединение, максимум четыре кандидата на объединение выбираются среди кандидатов, находящихся в позициях A1, В1, В0, А0 и В2 рядам с текущим блоком (810) на фиг.8. Вывод осуществляется в порядке A1, В1, В0, А0 и В2. Позиция В2 рассматривается, когда любая CU в позиции A1, В1, В0, А0 недоступна (например, поскольку она принадлежит другому слайсу или тайлу) или интра-кодирована. После добавления кандидата в позиции А1, добавление оставшихся кандидатов подлежит проверке избыточности, чтобы кандидаты с одинаковой информацией движения гарантированно исключались из списка. В результате, эффективность кодирования повышается. Для уменьшения вычислительной сложности, не все возможные пары кандидатов рассматриваются в упомянутой проверке избыточности. Вместо этого рассматриваются пары, связанные стрелкой на фиг.9. Кандидат добавляется в список, когда соответствующий кандидат, используемый для проверки избыточности, не имеет такой же информации движения.
[0123] 1.2 Вывод временных кандидатов
[0124] Согласно варианту осуществления, в список добавляется один временной кандидат.В частности, при выводе этого кандидата на временное объединение для текущего блока (1011) в текущем изображении (1001), масштабированный вектор (1031) движения выводится на основании соответственно расположенной CU (1012), принадлежащей соответственно расположенному опорному изображению (1002), как показано на фиг.10. Список опорных изображений, подлежащий использованию для вывода соответственно расположенной CU, явно сигнализируется в заголовке слайса. Масштабированный вектор (1031) движения для кандидата на временное объединение масштабируется из вектора (1032) движения соответственно расположенной CU (1012) с использованием расстояний Tb и Td счетчика порядка изображений (РОС, picture order count). Tb задается как разность РОС между текущим опорным изображением (1003) текущего изображения (1001) и текущим изображением (1001). Td задается как разность РОС между соответственно расположенным опорным изображением (1004) соответственно расположенного изображения (1002) и соответственно расположенным изображением (1002). Индекс опорного изображения кандидата на временное объединение устанавливается равным нулю.
[0125] Позиция для временного кандидата выбирается между кандидатами С0 и С1, показанными на фиг. 11. Если CU в позиции С0 недоступна, интра-кодирована или находится вне текущей строки CTU, используется позиция С1. В противном случае, при выводе кандидата на временное объединение используется позиция С0.
[0126] 1.3 Вывод кандидатов на объединение на основе попарного среднего
[0127] В некоторых вариантах осуществления, кандидаты на основе попарного среднего генерируются путем усреднения заранее заданных пар кандидатов в существующем списке кандидатов на объединение. Например, заранее заданные пары задаются как {(0, 1), (0, 2), (1, 2), (0, 3), (1, 3), (2, 3)}, где числа обозначают индексы объединения в списке кандидатов на объединение. Усредненные векторы движения вычисляются отдельно для каждого опорного списка. Если оба вектора движения доступны в одном списке, эти два вектора движения усредняются даже когда они указывают на разные опорные изображения; если доступен единственный вектор движения, использовать непосредственно его; если не доступен ни один вектор движения, оставить этот список недействительным.
[0128] Согласно варианту осуществления, когда список объединения не полон после добавления кандидатов на объединение на основе попарного среднего, нулевые MVP вставляются в конец, пока не будет достигнуто максимальное количество кандидатов на объединение.
[0129] 2. Режим объединения с использованием разности векторов движения (MMVD)
[0130] Помимо режима объединения, где неявно выведенная информация движения напрямую используется для генерации отсчетов предсказания текущей CU, в некоторых вариантах осуществления используется MMVD. Флаг MMVD сигнализируется сразу после отправки флага пропуска и флага объединения для указания, используется ли режим MMVD для CU.
[0131] В режиме MMVD, после выбора кандидата на объединение, кандидат на объединение дополнительно уточняется путем сигнализации информации разности векторов движения (MVD) для получения уточненной информации движения. Информация MVD включает в себя флаг кандидата на объединение, индекс расстояния для указания величины движения и индекс для указания направления движения.
[0132] Один из первых двух кандидатов в списке объединения выбирается для использования в качестве базис MV (начальный(е) MV). Флаг кандидата на объединение сигнализируется для указания, какой из них используется. Как показано на фиг. 12, базис MV определяет начальную точку (1211) или (1221) в опорном изображении (1202) или (1203) в списке опорных изображений, L0 или L1, соответственно.
[0133] Индекс расстояния указывает информацию величины движения и указывает заранее заданное смещение от начальной точки (1211) или (1221). Как показано на фиг.12, смещение прибавляется либо к горизонтальной компоненте, либо к вертикальной компоненте начального MV (базиса MV), указывающей позицию (1211) или (1221). Отношение отображения индекса расстояния и заранее заданного смещения задано в таблице 1.
[0134] Индекс направления выражает направление MVD относительно начальной точки (1211) или (1221). Индекс направления может представлять одно из четырех направлений, как показано в таблице 2.
[0135] Заметим, что знак MVD может изменяться согласно информации начального(ых) MV. Когда начальный(е) MV является MV одинарного предсказания или MV двойного предсказания, оба указывающие на одну и ту же сторону текущего изображения (т.е. оба РОС двух опорных изображений больше, чем РОС текущего изображения, или оба меньше РОС текущего изображения), знак в таблице 2 указывает знак смещения MV, прибавляемого к начальному MV. Когда начальные MV являются MV двойного предсказания, причем два MV указывают на разные стороны текущего изображения (т.е. РОС одного опорного изображения больше РОС текущего изображения, и РОС другого опорного изображения меньше РОС текущего изображения), знак в таблице 2 указывает знак смещения MV, прибавляемого к компоненте L0 MV начального MV, и знак LI MV имеет противоположное значение.
[0136] На основании базиса MV, смещение, знак MVD и окончательный(е) MV могут определяться для текущей CU.
[0137] 3. Предсказание с аффинной компенсацией движения
[0138] В некоторых примерах, модель поступательного движения применяется для предсказания с компенсацией движения (МСР, motion compensation prediction). Однако модель поступательного движения может не годиться для моделирования других типов движения, например, масштабирования, поворота, перспективы и других неправильных движений. В некоторых вариантах осуществления применяется предсказание с компенсацией движения на основе блочного аффинного преобразования. На фиг. 13А, аффинное поле движения блока описано двумя векторами движения контрольной точки (CPMV), CPMV0 и CPMV1, из двух контрольных точек (CP), СР0 и СР1, когда используется 4-параметрическая аффинная модель. На фиг. 13В, аффинное поле движения блока описанных тремя CPMV, CPMV0, CPMV1 и CPMV3, из CP, СР0, СР1 и СР2, когда используется 6-параметрическая аффинная модель.
[0139] Для 4-параметрической аффинной модели движения, вектор движения в положении (х, у) отсчета в блоке выводится как:
[0140] Для 6-параметрической аффинной модели движения, вектор движения в положении (х, у) отсчета в блоке выводится как:
[0141] В выражениях (1) и (2),  является вектором движения контрольной точки верхнего левого угла,  является вектором движения контрольной точки верхнего правого угла, и  является вектором движения контрольной точки нижнего левого угла. Кроме того, координаты (х, у) отсчитываются относительно верхнего левого угла соответствующего блока, и W и Н обозначают ширину и высоту соответствующего блока.
[0142] Для упрощения предсказания с компенсацией движения, в некоторых вариантах осуществления применяется предсказание аффинного преобразования на основе подблоков. Например, на фиг. 14 используется 4-параметрическая аффинная модель движения, и определяются два CPMV,  Для вывода вектора движения каждого подблока (1402) яркости 4×4 (отсчетов), полученного разбиением текущего блока (1410), вектор (1401) движения центрального отсчета каждого подблока (1402) вычисляется согласно вышеприведенным выражениям (1) и округляется с точностью до 1/16. Затем интерполяционные фильтры с компенсацией движения применяются для генерации предсказания каждого подблока (1402) с выведенным вектором (1401) движения. Размер подблока компонент цветности задается равным 4×4. MV подблока цветности 4×4 вычисляется как среднее MV четырех соответствующих подблоков яркости 4x4.
[0143] Аналогично внешнему предсказанию поступательного движения, в некоторых вариантах осуществления применяются два режима аффинного внешнего предсказания движения, режим аффинного объединения и режим аффинного AMVP.
[0144] 3.1 Предсказание аффинного объединения
[0145] В некоторых вариантах осуществления, режим аффинного объединения может применяться для CU, ширина и высота которых больше или равна 8. Кандидаты на аффинное объединение текущей CU генерируется на основании информации движения соседних в пространстве CU. Может существовать до пяти кандидатов на аффинное объединение, и индекс сигнализируется для указания того, который подлежит использованию для текущей CU. Например, для формирования списка кандидатов на аффинное объединение используются следующие три типа кандидатов на аффинное объединение:
(i) унаследованные кандидаты на аффинное объединение, которые экстраполируются из CPMV соседних CU;
(ii) кандидаты на построенное аффинное объединение, которые выводятся с использованием поступательных MV соседних CU; и
(iii) нулевые MV.
[0146] В некоторых вариантах осуществления, может существовать самое большее два унаследованных аффинных кандидата, полученных из моделей аффинного движения соседних блоков, одной из соседних слева CU и одной из соседних сверху CU. Например, блоки-кандидаты могут располагаться в позициях, показанных на фиг. 8. Для левого предсказателя, порядок сканирования - А0->А1, и для верхнего предсказателя, порядок сканирования - В0->В1->В2. Выбирается только первый унаследованный кандидат с каждой стороны. Проверка обрезки между двумя унаследованными кандидатами не осуществляется.
[0147] Когда соседняя аффинная CU идентифицирована, CPMV идентифицированной соседней аффинной CU используются для вывода CPMV-кандидата в списке аффинного объединения текущей CU. Как показано на фиг. 15, соседний слева вниз блок А текущей CU (1510) кодируется в аффинном режиме. Достигаются векторы движения,  верхнего левого угла, верхнего правого угла и левого нижнего угла CU (1520), который содержит блок А. Когда блок А кодируется с 4-параметрической аффинной моделью, два CPMV  текущей CU (1510) вычисляются согласно  В случае, когда блок А кодируется с 6-параметрической аффинной моделью, три CPMV (не показаны) текущей CU вычисляются согласно  и
[0148] Построенные аффинные кандидаты строятся путем объединения информации поступательного движения по соседству с каждой контрольной точкой. Информация движения для контрольных точек получается из указанных пространственных соседей и временных соседей, показанных на фиг. 16. CPMVk (k=1, 2, 3, 4) выражает k-ю контрольную точку. Для CPMV1, блоки В2->В3->А2 проверяются по порядку, и используется MV первого доступного блока. Для CPMV2, проверяются блоки В1->В0, и для CPMV3 проверяются блоки А1->А0. TMVP на блоке Т используется в качестве CPMV4, если доступен.
[0149] По достижении MV четырех контрольных точек, кандидаты на аффинное объединение строятся на основании этой информации движения. Для построения используются следующие комбинации MV контрольных точек по порядку:
[0150] Комбинация 3 CPMV строит кандидат на 6-параметрическое аффинное объединение, и комбинация 2 CPMV строит кандидат на 4-параметрическое аффинное объединение. Во избежание процесса масштабирования движения, если ссылочные индексы контрольных точек отличаются, соответствующая комбинация MV контрольных точек отвергается.
[0151] Если после объединения унаследованных кандидатов на аффинное объединение и проверки кандидатов на построенное аффинное объединение, список все еще не полон, нулевые MV вставляются в конец списка кандидатов на объединение.
[0152] 3.2 Предсказание аффинного AMVP
[0153] В некоторых вариантах осуществления, режим аффинного AM VP может применяться для CU, ширина и высота которых больше или равна 16. Флаг аффинности на уровне CU сигнализируется в битовом потоке для указания, используется ли режим аффинного AMVP и затем другой флаг сигнализируется для указания, используется ли 4-параметрический аффинный AMVP или 6- параметрический аффинный AMVP. Разность CPMV текущей CU и их предсказателей сигнализируется в битовом потоке. Размер списка кандидатов аффинного AMVP равен 2, и может генерироваться с использованием следующих четырех типов CPMV-кандидата по порядку:
(i) унаследованные кандидаты аффинного AMVP, которые экстраполируются из CPMV соседних CU;
(ii) построенные кандидаты аффинного AMVP, которые выводятся с использованием поступательных MV соседних CU;
(iii) поступательные MV из соседних CU; и
(iv) нулевые MV.
[0154] Порядок проверки унаследованных кандидатов аффинного AMVP аналогичен порядку проверки унаследованных кандидатов на аффинное объединение в примере. Отличие состоит в том, что для AMVP-кандидата, рассматривается аффинная CU, которая имеет то же опорное изображение, что и в текущем блок. При вставке унаследованного аффинного предсказателя движения в список кандидатов процесс отсечения не применяется.
[0155] Построенный AMVP-кандидат получается из указанных пространственных соседей, показанных на фиг. 16. Используется тот же порядок проверки, что и при построении кандидата на аффинное объединение. Кроме того, проверяется индекс опорного изображения соседнего блока. Используется первый блок в порядке проверки, который интер-кодирован и имеет то же опорное изображение, что и в текущих CU. Когда текущая CU кодируется с 4-параметрической аффинной моделью, и CPMV0 и CPMV1 оба доступны, доступные CPMV добавляются в качестве одного кандидата в список аффинных AMVP. Когда текущая CU кодируется с 6-параметрическим аффинным режимом, и все три CPMV (CPMV0, CPMV1, и CPMV2) доступны, доступные CPMV добавляются в качестве одного кандидата в список аффинных AMVP. В противном случае, построенные AMVP-кандидаты задаются как недоступные.
[0156] Если список аффинных AMVP-кандидатов по-прежнему меньше 2 после проверки унаследованных кандидатов аффинного AMVP и построенного AMVP-кандидата, векторы поступательного движения, соседние с контрольными точками, будут прибавляться для предсказания всех MV контрольных точек текущей CU, когда доступны. Наконец, нулевые MV используются для заполнения списка аффинных AMVP, если список аффинных AMVP все еще не полон.
[0157] 4. Временное предсказание вектора движения на основе подблоков (SbTMVP)
[0158] На фиг. 17А показана схема соседних в пространстве блоков, которые могут использоваться для определения предсказательной информации движения для текущего блока (1711) с использованием способа временного предсказания MV на основе подблоков (SbTMVP) в соответствии с одним вариантом осуществления. На фиг. 17А показан текущий блок (1711) и соседние с ним в пространстве блоки, обозначенные А0, А1, В0 и В1 (1712, 1713, 1714 и 1715, соответственно). В некоторых примерах, соседние в пространстве блоки А0, А1, В0 и В1 и текущий блок (1711) принадлежат одному и тому же изображению.
[0159] На фиг. 17В показана схема определения информации движения для подблоков текущего блока (1711) с использованием способа SbTMVP на основании выбранного соседнего в пространстве блока, например, блока А1 в этом неограничительном примере, в соответствии с вариантом осуществления. В этом примере, текущий блок (1711) находится в текущем изображении (1710), и опорный блок (1761) находится в опорном изображении (1760) и может идентифицироваться на основании сдвига (или смещения) движения между текущим блоком (1711) и опорным блоком (1761), указанного вектором (1722) движения.
[0160] В некоторых вариантах осуществления, аналогично временному предсказанию вектора движения (TMVP) в HEVC, SbTMVP использует поле движения в соответственно расположенном изображении для улучшения предсказания вектора движения и режима слияния для CU в текущем изображении. В некоторых вариантах осуществления, одно и то же опорное изображение, используемое TMVP, может использоваться для SbTMVP. В некоторых вариантах осуществления, TMVP предсказывает информацию движения на уровне CU, но SbTMVP предсказывает движение на уровне под-CU. В некоторых вариантах осуществления, TMVP использует временные векторы движения из соответственно расположенного блока в опорном изображении, соответствующая позиция которого соседствует с нижним правым углом или центром текущего блока, и SbTMVP использует временные векторы движения от опорного блока, которые можно идентифицировать путем осуществления сдвига движения на основании вектора движения из одного из соседних в пространстве блоков текущего блока.
[0161] Например, как показано на фиг. 17А, соседние блоки A1, В1, В0 и А0 могут последовательно проверяться в процессе SbTMVP. Как только идентифицируется первый соседний в пространстве блок, который имеет вектор движения, который использует опорное изображение (1760) в качестве своего опорного изображения, например, блок А1, имеющий вектор (1722) движения, который указывает на опорный блок AR1 в опорном изображении (1760), например, этот вектор (1722) движения может использоваться для осуществления сдвига движения. Если ни один такой вектор движения не доступен из соседних в пространстве блоков A1, В1, В0 и А0, сдвиг движения задается равным (0, 0).
[0162] После определения сдвига движения, опорный блок (1761) можно идентифицировать на основании позиции текущего блока (1711) и определенного сдвига движения. На фиг. 17В опорный блок (1761) может дополнительно делиться на 16 подблоков с опорной информацией движения MRa-MRp. В некоторых примерах, опорная информация движения для каждого подблока в опорном блоке (1761) может определяться на основании сетки наименьших движений, которая покрывает центральный отсчет такого подблока. Информация движения может включать в себя векторы движения и соответствующие ссылочные индексы. Текущий блок (1711) может дополнительно делиться на 16 подблоков, и информацию движения MVa-MVp для подблоков в текущем блоке (1711) можно получать из опорной информации движения MRa-MRp по аналогии с процессом TMVP, с временным масштабированием в некоторых примерах.
[0163] Размер подблока, используемый в процессе SbTMVP, может быть фиксированным (или иным образом заранее определенный) или сигнализируемым. В некоторых примерах, размер подблока, используемый в процессе SbTMVP, может составлять 8×8 отсчетов. В некоторых примерах, процесс SbTMVP применим только к блоку, ширина и высота которого больше или равна фиксированному или сигнализируемому размеру, например, 8 пикселей.
[0164] В примере, объединенный список объединения на основе подблоков, который содержит SbTVMP-кандидат и кандидаты на аффинное объединение, используется для сигнализации режима объединения на основе подблоков. Режим SbTVMP может разрешаться или запрещаться флагом набора параметров последовательности (SPS). В некоторых примерах, если режим SbTMVP разрешен, SbTMVP-кандидат добавляется в качестве первой записи списка кандидатов на объединение на основе подблоков и сопровождается кандидатами на аффинное объединение. В некоторых вариантах осуществления, максимально разрешенный размер списка объединения на основе подблоков задается равным пяти. Однако в других вариантах осуществления можно использовать другие размеры.
[0165] В некоторых вариантах осуществления, логика кодирования дополнительного SbTMVP-кандидата на объединение такой же, как для других кандидатов на объединение. Таким образом, для каждого блока в Р- или В-слайсе, дополнительная проверка скорости-искажения может осуществляться для определения, использовать ли SbTMVP-кандидат.
[0166] 5. Уточнение предсказания с помощью оптического потока (PROF, Prediction refinement with optical flow)
[0167] Параметры аффинной модели движения может использоваться для вывода вектора движения каждого пикселя в CU. Однако вследствие высокой сложности и требований к полосе доступа к памяти для осуществления аффинного предсказания на пиксельной основе, в некоторых вариантах осуществления, осуществляется способ аффинной компенсации движения на основе подблоков. В некоторых вариантах осуществления, текущий блок (например, CU) может делиться на подблоки, каждый из которых имеет размер 4×4, и каждому из которых назначен MV подблока, полученный из CPMV текущего блока. Аффинная компенсация движения на основе подблоков является компромиссом между повышением эффективности кодирования, сложностью и полосой доступа к памяти, ценой снижения точности предсказания.
[0168] В некоторых вариантах осуществления, может осуществляться способ уточнения предсказания с помощью оптического потока (PROF) для улучшения аффинной компенсации движения на основе подблоков, чтобы иметь более тонкую гранулярность компенсации движения. Согласно способу PROF, после осуществления аффинной компенсации движения на основе подблоков, предсказанные отсчеты (например, яркости или цветности) можно уточнять путем добавления набора регулировочных значений, выведенных на основании уравнения оптического потока.
[0169] На фиг. 18 показана схема примера способа PROF в соответствии с вариантом осуществления. В примере, показанном на фиг.18, текущий блок (1810) делится на четыре подблока (1812, 1814, 1816и 1818). Каждый из подблоков (1812, 1814, 1816 и 1818) имеет размер 4×4 пикселя. MV (1820) подблока для подблока (1812) в центральном положении подблока (1812) можно вывести согласно CPMV текущего блока 1810 (представляющим аффинную модель) и указывают на опорный подблок (1832). Предсказанные отсчеты начального подблока могут определяться согласно опорному подблоку (1832).
[0170] Уточняющие значения, подлежащие применению к предсказанным отсчетам начального подблока, можно вычислить, как если бы каждый предсказанный отсчет находился в позиции (например, позиции (1832а) для отсчета (1812а)), указанной MV пикселя (например, MV (1840) пикселя). Например, MV (1840) пикселя можно вычислить согласно аффинной модели, представленной посредством CPMV. Соответственно, можно определять разность (именуемую вектором регулировки) AV (1842) между MV (1840) пикселя и MV (1820) подблока. Затем, с использованием подхода оптического потока, уточняющее значение, соответствующее пикселю (1812а), может определяться на основании вектора регулировки ΔV (1842).
[0171] В примере, способ PROF может начинаться с осуществления аффинной компенсации движения на основе подблоков для генерации предсказания начального подблока (также может именоваться начальным предсказанным подблоком) (например, блок (1832)), включающий в себя отсчеты, представленные I(i,j), где i и j - координаты, соответствующие конкретному отсчету в позиции (i,j) в текущем подблоке. Затем пространственные градиенты  и  предсказания начального подблока в каждом положении отсчета можно вычислить с использованием, например, 3-отводного фильтра [-1,0, 1] согласно
Предсказание подблока можно расширить на один пиксель на каждой стороне для вычисления градиента. В некоторых вариантах осуществления, для уменьшения полосы памяти и сложности, пиксели на расширенных границах можно копировать из ближайшей целочисленной пиксельной позиции в опорном изображении (например, опорном изображении, включающем в себя блок (1832)). Это позволяет избегать дополнительной интерполяции для области заполнения.
[0172] Затем уточнение предсказания можно вычислить согласию следующему уравнению оптического потока:
где  (например, ΔV (1842)) - разность между MV пикселя (например MV (1840) пикселя) для положения (i,j) отсчета, обозначенная  и MV подблока (например, MV 1820 подблока), которому принадлежит положение (i,j) пикселя. Поскольку параметры аффинной модели и положение пикселя относительно центра подблока не изменяются от подблока к подблоку,  можно вычислить для первого подблока и повторно использовать для других подблоков в том же CU. В некоторых примерах, если х и у выражают горизонтальную и вертикальную позиции  относительно центра подблока,  можно вывести согласно следующему уравнению,
где  - х-компонента  - у-компонента
[0173] Для 4-параметрической аффинной модели,
для 6-параметрической аффинной модели,
где  - верхний левый, верхний правый и нижний левый векторы движения контрольной точки, и W и Н - ширина и высота текущего блока, включающего в себя текущий подблок.
[0174] Наконец, уточнение ΔI(i,j) предсказания можно прибавить к отсчету I(i, j) предсказания начального подблока. Согласно способу PROF, окончательный уточненный отсчет I' предсказания может генерироваться с использованием следующего уравнения:
[0175] 6. Уточнение предсказания на основе локальной компенсации освещенности (LIC)
[0176] 6.1 Локальная компенсация освещенности
[0177] Локальная компенсация освещенности (LIC) является режимом кодирования на уровне блоков, используемым в некоторых вариантах осуществления. В некоторых примерах LIC может включаться и отключаться на уровне единиц кодирования (CU).
[0178] LIC базируется на линейной модели изменений освещенности, использующей масштабный коэффициент а и смещение b. Предсказание посредством LIC на основании традиционного внешнего предсказания может генерироваться согласно
LIC
где Pred выражает предсказание посредством LIC, Pred обозначает традиционное внешнее предсказание, указанное вектором движения, и а и b -масштабный коэффициент и смещение, соответственно.
LIC
[0179] Окончательную реконструкцию режима LIC Rec можно вывести следующим образом,
где Res - остаток (после деквантования и обратного преобразования) текущего блока.
[0180] Когда режим LIC применяется для CU, метод среднеквадратической ошибки используется для вывода параметров а и b с использованием соседних отсчетов текущей CU и их соответствующих опорных отсчетов согласно
x,y
где Rec обозначает соседний реконструированный отсчет текущего блока, и  - соответствующий отсчет  в опорном изображении, указанный вектором движения текущего блока.
[0181] На фиг. 19 показан пример соседних отсчетов (1901) текущего блока (1900) и соседних отсчетов соответствующего опорного блока (1910), используемых для вывода параметров а и b LIC. Как показано, используются прореженные (прореживание 2:1) соседних отсчетов (1901) CU (1900) и соответствующих отсчетов (1911) (идентифицированных информацией движения текущей CU (1900) (или под-CU)) в опорном изображении. Параметры LIC можно выводить и применять для каждого направления предсказания по отдельности в примере.
[0182] Когда CU кодируется с использованием режима объединения, флаг LIC можно копировать из одного из соседних блоков аналогично копированию информации движения в режиме объединения. В противном случае, флаг LIC может сигнализироваться для CU для указания, применяется ли LIC.
[0183] Когда режим LIC разрешен для изображения, дополнительная проверка скорости-искажении (RD, rate-distortion) на уровне CU может осуществляться для определения, подлежит ли применению режим LIC для CU. В примере, когда LIC разрешена для CU, используются сумма с удаленным средним абсолютной разности (MR-SAD, mean-removed sum of absolute difference) и сумма с удаленным средним абсолютной адамарово-преобразованной разности (MR-SATD, mean-removed sum of absolute Hadamard-transformed difference), вместо SAD и SATD, для поиска движения в целое число пикселей и поиска движения в дробное число пикселей, соответственно.
[0184] 6.2 Однонаправленная компенсация освещенности
[0185] В некоторых вариантах осуществления используется модифицированный способ LIC, именуемый однонаправленной компенсацией освещенности. Например, в однонаправленной компенсации освещенности, вывод параметров линейной модели остается неизменным. Модифицированная LIC применяется на базисе CU. Модифицированная LIC не применяется к внешнему предсказанию на основе подблоков (например, опережающему временному предсказанию вектора движения (ATMVP) или аффинному предсказанию), треугольному разбиению, многогипотезному внутреннему/внешнему предсказанию и двунаправленному предсказанию.
[0186] На фиг. 20 показан пример использования LIC с двойным предсказанием. Сначала можно получать блоки (2001)-(2002) одинарного предсказания в направлениях L0 и L1, соответственно. Затем уточненные блоки (2003)-(2004) можно получать путем осуществления LIC с реконструированными соседними отсчетами (2005). Наконец, взвешенное усреднение может осуществляться на основании уточненных блоков (2003)-(2004) для генерации блока (2006) двойного предсказания.
[0187] В отличие от фиг. 20, в модифицированном способе LIC в некоторых примерах не применяется к двунаправленному предсказанию, поскольку реконструированные соседние отсчеты (2005) текущего блока не требуются для осуществления внешнего предсказания во внешнем конвейере и, таким образом, не доступны для каждого однонаправленного внешнего предсказания, которое в противном случае было бы необходимо для LIC. Кроме того, будучи применена к двунаправленному предсказанию, LIC вносит дополнительную стадию в осуществление процесса LIC до операции взвешивания.
[0188] На фиг. 21 показан пример использования LIC с многогипотезным внутренним/внешним предсказанием. Сначала может генерироваться внешне предсказанный блок (2101) и внутренне предсказанный блок (2102). LIC может осуществляться для получения уточненного блока (2103) на основании внутренне предсказанного блока (2101). Наконец, блок (2104) смешанного внешне-внутреннего предсказания может генерироваться путем осуществления взвешенного усреднения в отношении интра-кодированного блока (2102) и уточненного блока (2103).
[0189] В отличие от фиг. 21, в некоторых примерах, обработка LIC не применяется для многогипотезного внутреннего/внешнего предсказания, поскольку обработка LIC применяется после внешнего предсказания и до взвешенного усреднения, что будет задерживать взвешивание между внутренне- и внешне предсказанными блоками.
[0190] Флаг LIC может быть включен как часть информации движения помимо MV и ссылочных индексов в режиме объединения. Например, при построении списка кандидатов на объединение, флаги LIC могут наследоваться от соседних блоков для кандидатов на объединение. В некоторых примерах, флаги LIC не используются для обрезки векторов движения с целью упрощения. В примере, флаги LIC не хранятся в буфере векторов движения опорного изображения, поэтому флаги LIC могут устанавливаться равными FALSE для режима TMVP. В примере, флаги LIC устанавливаются равными FALSE для двунаправленных кандидатов на объединение (например, кандидата попарного среднего и кандидатов нулевого движения). Когда инструмент LIC не применяется, флаги LIC не сигнализируются в примере.
[0191] 6.3 Применение обработки LIC для аффинного предсказания
[0192] В некоторых вариантах осуществления, LIC можно распространить на аффинные кодированные CU. Например, вывод параметров линейной модели остается неизменным, и для выборки опорных отсчетов аффинных кодированных CU может использоваться несколько способов.
[0193] На фиг. 22 показан пример первого способа выборки опорных отсчетов. Текущей CU (2201) в текущем изображении (2210) может быть аффинный кодированный блок. Соответственно расположенная CU (2202) и опорная CU (2203) текущей CU (2201) показаны в опорном изображении (2220). Вектор (2231) движения (MV) верхнего левого подблока аффинной кодированной CU (2201) может использоваться для выборки опорных отсчетов полной CU (2201).
[0194] На фиг. 23 показан пример второго способа выборки опорных отсчетов. Текущей CU (2301) в текущем изображении (2310) может быть аффинный кодированный блок. Соответственно расположенная CU (2302) и опорная CU (2303) текущей CU (2301) показаны в опорном изображении (2320). Вектор (2331) движения (MV) центрального подблока аффинной кодированной CU (2301) может использоваться для выборки опорных отсчетов полной CU (2301).
[0195] На фиг. 24 показан пример третьего способа, где опорные отсчеты выбираются на основе подблоков. Текущей CU (2401) в текущем изображении (2410) является аффинный кодированный блок. Соответственно расположенная CU (2402) текущей CU (2401) показана в опорном изображении (2420). Как показано, подблок MVs в левом столбце и верхней строке текущей CU (2401), от MVa до MVg, может использоваться для определения соответствующих опорных блоков от A Ref до G Ref в опорном изображении (2420). Опорные отсчеты, соседние с этими опорными блоками, могут использоваться для вывода параметров линейной модели.
[0196] 7. Уточнение предсказания на основании двунаправленного оптического потока (BDOF)
[0197] В некоторых вариантах осуществления используется инструмент двунаправленного оптического потока (BDOF). По сравнению с другим способом (именуемым ВЮ), применяемым в JEM, BDOF является простой версией, которая требует гораздо меньше вычислений, особенно операций умножения и размера умножителя.
[0198] BDOF может использоваться для уточнения сигнала двойного предсказания CU на уровне подблоков 4×4. В примере, BDOF применяется к CU, если она удовлетворяет следующим условиям: (1) высота CU не равна 4, и CU не имеет размер 4×8; (2) CU не кодирована с использованием аффинного режима или режима объединения ATMVP; (3) CU кодирована с использованием режима "истинного" двойного предсказания, т.е. одно из двух опорных изображений отображается до текущего изображения в порядке отображения и другое отображается после текущего изображение в порядке отображения. В примере, BDOF применяется только к компоненте яркости.
[0199] Режим BDOF базируется на принципе оптического потока, который предполагает плавное движение объекта. Для каждого подблока 4×4, уточнение движения  вычисляется путем минимизации разности между отсчетами L0 и L1 предсказания. Затем уточнение движения используется для регулировки значений отсчетов двойного предсказания в подблоке 4×4. В примере процесса BDOF применяются следующие этапы.
[0200] Сначала горизонтальный и вертикальный градиенты,  k=0,1, двух сигналов предсказания вычисляются путем прямого вычисления разности между двумя соседними отсчетами, т.е.
где  - значение отсчета в позиции (i, j) сигнала предсказания в списке k, k=0,1, и shift 1 вычисляется на основании битовой глубины яркости, bitDepth, как shift1=max(2, 14 - bitDepth).
1
2
3
5
6
[0201] Затем, авто- и взаимная корреляция градиентов, S, S, S, S и S, вычисляются как
где
a
b
где Ω - окно 6×6 вокруг подблока 4×4, и значения n и n устанавливаются равными min(5, bitDepth - 7) и min(8, bitDepth - 4), соответственно.
[0202] Затем уточнение движения  выводится с использованием членов взаимной и автокорреляции с использованием следующего:
где  [⋅] - функция округления снизу, и =12.
[0203] На основании уточнения движения и градиентов, следующая регулировка вычисляется для каждого отсчета в подблоке 4×4:
[0204] Наконец, отсчеты BDOF для CU вычисляются путем регулировки отсчетов двойного предсказания следующим образом:
[0205] Эти значения выбираются таким образом, что множители в процессе BDOF не превышают 15 бит, и максимальная битовая ширина промежуточных параметров в процессе BDOF остается в пределах 32 битов в примере.
[0206] В некоторых примерах, в порядке вывода значений градиента, нужно генерировать некоторые отсчеты  предсказания в списке k (k=0,1) вне границ текущей CU. На фиг. 25 показан пример расширенной области CU соответствующей CU (2510), используемой в BDOF. Как показано, BDOF использует одну расширенную/ый строку/столбец вокруг границ CU (2510). Для управления вычислительной сложностью генерации внеграничных отсчетов предсказания, отсчеты предсказания в расширенной области (не заштрихованных позициях) генерируются путем взятия опорных отсчетов в близлежащих целочисленных позициях (с использованием операции floor() над координатами) напрямую без интерполяции, и для генерации отсчетов предсказания в CU (2510) (заштрихованных позициях) используется нормальный 8-отводный интерполяционный фильтр компенсации движения. Эти значения расширенных отсчетов используются только при вычислении градиента. Для оставшихся этапов в процессе BDOF, если требуются какие-либо значения отсчета и градиента вне границ CU, они заполняются (т.е. дублируются) от их ближайших соседей.
[0207] III. PROF для аффинного предсказания
[0208] 1. Условное применение PROF для аффинного предсказания
[0209] В некоторых вариантах осуществления, PROF для аффинного предсказания всегда может быть разрешено, что может повышать сложность для кодера или декодера. Напротив, в некоторых других вариантах осуществления, PROF для аффинного предсказания может условно разрешаться или запрещаться для повышения производительности и для снижения сложности на кодере или декодере. Например, PROF может условно применяться к аффинному кодированному блоку на основании значений аффинных параметров.
[0210] Как описано, аффинные параметры можно вычислять с использованием CPMV следующим образом. Если х и у - горизонтальное и вертикальное смещения от положения пикселя к центру подблока в текущей CU, регулировочные MV Δv(x, у) можно вывести согласно следующим уравнениям,
Для 4-параметрической аффинной модели,
Для 6-параметрической аффинной модели,
где  - верхний левый, верхний правый и нижний левый векторы движения контрольной точки текущей CU, и w и h - ширина и высота текущей CU.
[0211] В одном варианте осуществления, для аффинного кодированного блока, когда максимум абсолютных значений аффинного параметра а, b, с или d, обозначенный как  больше или равен заранее заданному пороговому значению, PROF для аффинной модели не применяется для аффинного кодированного блока. В противном случае, если maxjtarameter меньше порогового значения, PROF можно применять к аффинному кодированному блоку.
[0212] В другом варианте осуществления, для аффинного кодированного блока, когда минимум абсолютных значений аффинного параметра а, b, с или d, обозначенный как  меньше или равен заранее заданному пороговому значению, PROF для аффинной модели не применяется для аффинного кодированного блока. В противном случае, если min_parameter больше порогового значения, PROF можно применять к аффинному кодированному блоку.
[0213] В другом варианте осуществления, для аффинного кодированного блока, когда абсолютные значения аффинного параметра а, b, с или d, находятся в заранее заданном диапазоне значений, PROF для аффинной модели может применяться для аффинного кодированного блока. В противном случае, если какое-либо абсолютное значение аффинных параметров не находится в заранее заданном диапазоне, PROF не применяется к аффинному кодированному блоку. Диапазон значений может быть обозначен как [М, N], где М и N - положительные числа. В одном примере, М и N заранее заданы или сигнализируются в битовом потоке, например, в наборе параметров последовательности (SPS), наборе параметров изображения (PPS), заголовке группы тайлов, заголовке таила, заголовке слайса и т.п.
[0214] В другом варианте осуществления, для аффинного кодированного блока, использование (разрешение или запрет) PROF может определяться флагом, например, обозначенным profflag. Флаг может сигнализироваться на уровне блоков. Соответственно, PROF может разрешаться, когда значение флага равно TRUE.
[0215] В другом варианте осуществления, синтаксический элемент может использоваться для определения, разрешено ли PROF для аффинного предсказания. Синтаксический элемент в примере может быть синтаксическим элементом высокого уровня. Например, синтаксический элемент может сигнализироваться на уровне последовательностей, уровне слайсов, уровне тайлов, уровне групп тайлов, уровне изображений и т.п.
[0216] 2. Вычисление градиента для PROF
[0217] В некоторых вариантах осуществления, в процессе PROF, вычисление градиента может осуществляться на основе подблоков. Например, внешнее предсказание (включающее в себя операции интерполяции в ходе внешнего предсказания) может осуществляться для каждого аффинного подблока (например, для каждого подблока 4×4 для аффинного предсказания). Затем градиент вычисляется с помощью 3-отводного фильтра [1 0 -1] на основании предсказанного выхода аффинного подблока. Затем уточнение также применяется на подблоке. Для вычисления градиента для каждого аффинного подблока, аффинный подблок может заполняться с увеличением размера, например, более 1 пикселя на каждой стороне.
[0218] 2.1 Вычисление градиента для всего блока
[0219] В одном варианте осуществления, вычисление градиента в PROF может осуществляться для всего блока кодирования по завершении внешнего предсказания (интерполяции) для всех аффинных подблоков. Это позволяет избежать расширения каждого подблока для вычисления градиента. Вместо этого, весь блок кодирования можно расширить (заполнить) на 1 пиксель, например, на каждой стороне для вычисления градиента, что менее сложно, чем расширение каждого подблока. Уточнение может осуществляться для каждого подблока на основании градиента соответствующего подблока полученный в результате вычисления на основе всего блока.
[0220] Для заполнения всего блока в различных вариантах осуществления можно использовать следующие способы: (1) пиксели на расширенных границах генерируются путем интерполяции с использованием вектора движения соответствующего подблока. (2) пиксели на расширенных границах копируются из ближайшей целочисленной пиксельной позиции в опорном изображении. (3) пиксели на расширенных границах копируются из ближайших отсчетов выхода внешнего предсказания текущего блока.
[0221] 2.2 Генерация градиентного фильтра из интерполяционного фильтра
[0222] В некоторых вариантах осуществления, интерполяционный фильтр для аффинного предсказания и градиентный фильтр для вычисления градиента PROF можно объединять для генерации объединенного градиентного фильтра. Объединенный градиентный фильтр может использоваться напрямую поверх отсчетов в опорном изображении текущего блока кодирования для генерации соответствующих градиентов PROF. Таким образом, процесс вычисления градиента может осуществляться параллельно с соответствующим процессом интерполяции для ускорения обработки PROF.
[0223] В одном варианте осуществления, 10-отводный градиентный фильтр может генерироваться посредством свертки 3-отводного градиентного фильтра PROF (например, с отводами [1 0 -1]) и 8-отводного интерполяционного фильтра, используемого для внешнего предсказания. Соответственно, вычисление градиента может осуществляться напрямую с использованием этого сгенерированного 10-отводного градиентного фильтра для опорных отсчетов.
[0224] В другом варианте осуществления, 10-отводный градиентный фильтр может генерироваться посредством свертки 3-отводного градиентного фильтра PROF и 8-отводного интерполяционного фильтра, используемого для внешнего предсказания, и затем усекаться до 8-отводного фильтра путем удаления по одному коэффициенту с каждой стороны. Соответственно, вычисление градиента может осуществляться напрямую с использованием этого сгенерированного 8-отводного градиентного фильтра для опорных отсчетов.
[0225] В другом варианте осуществления, 8-отводный градиентный фильтр может генерироваться посредством свертки 3-отводного градиентного фильтра PROF и 6-отводного интерполяционного фильтра, используемого для внешнего предсказания. Соответственно, вычисление градиента может осуществляться напрямую с использованием этого сгенерированного 8-отводного градиентного фильтра для опорных отсчетов.
[0226] В другом варианте осуществления, N-отводный градиентный фильтр может генерироваться посредством свертки М-отводного градиентного фильтра PROF и L-отводного интерполяционного фильтра для внешнего предсказания, и затем усекаться до N-отводного фильтра, где N меньше или равно M+L. Соответственно, вычисление градиента может осуществляться напрямую с использованием этого сгенерированного N-отводного градиентного фильтра для опорных отсчетов.
[0227] IV. Взаимодействие между PROF и LIC
[0228] 1. Условное применение PROF на основе флага LIC для аффинного предсказания
[0229] Когда и PROF, и LIC применяются для аффинной кодированной CU, качество уточнения аффинной кодированной CU может дополнительно не повышаться по сравнению с применением одного из PROF и LIC, или даже снижаться. Соответственно, в некоторых вариантах осуществления, когда PROF для аффинного предсказания разрешено, можно определять, может ли применяться PROF, в зависимости от того, разрешена или запрещена LIC. PROF для аффинного предсказания может разрешаться по умолчанию или синтаксисом высокого уровня, например, сигнализироваться на уровне последовательностей (например, SPS), уровне изображений (например, PPS), уровне слайсов, уровне тайлов, уровне групп тайлов, уровне CTU и т.п.
[0230] В одном варианте осуществления, когда сигнализируется запрет LIC на данном высоком уровне, например, уровне последовательностей (например, SPS), уровне изображений (например, PPS), уровне слайсов, уровне тайлов/групп тайлов и т.п., PROF может разрешаться для аффинных кодированных блоков.
[0231] В другом варианте осуществления, PROF может разрешаться для аффинных кодированных блоков, независимо от того, применяется ли LIC. В одном примере, регулировка отсчетов в LIC применяется до PROF. В другом примере, регулировка отсчетов в LIC применяется после PROF.
[0232] В другом варианте осуществления, когда инструмент LIC разрешен по умолчанию или его разрешение сигнализируется на высоком уровне, например, уровне последовательностей (например, SPS), уровне изображений (например, PPS), уровне слайсов, уровне тайлов/групп тайлов и т.п., и некоторые блоки имеют сигнализируемые флаги LIC, указывающие, применяется ли LIC для соответствующих блоков. В таком сценарии, в примере, если разрешение LIC сигнализируется на уровне блоков для блока с аффинным внешним предсказанием, PROF предполагается запрещенным для этого блока. В противном случае, если LIC запрещена для аффинного кодированного блока, PROF предполагается разрешенным для блока.
[0233] 2. Наследование флага LIC в аффинном объединении
[0234] Когда текущий блок кодируется в режиме аффинного объединения, значение флага LIC, соответствующее текущему блоку, может определяться по-разному.
[0235] В одном варианте осуществления, унаследованное аффинное объединение используется для текущего блока. Соответственно, флаг LIC текущего блока может наследоваться от флага LIC блока, используемого в качестве источника наследования аффинной модели.
k
[0236] В другом варианте осуществления, построенное аффинное объединение используется для текущего блока. Флаг LIC может наследоваться от первого доступного исходного кандидата соседних блоков, используемых для построения аффинных векторов движения контрольной точки текущего блока CPMV (k=1, 2, 3, 4). В примере, когда текущий блок использует построенную аффинную модель с векторами движения 3 контрольных точек, как описано в примере фиг.16, и комбинация CPMV представляет собой {CPMV1, CPMV2, CPMV3}. Соседний блок, используемый для построения CPMV1, может использоваться как источник наследования флага LIC. В другом примере, когда текущий блок использует построенную аффинную модель с векторами движения 2 контрольных точек, как описано на фиг.16, и комбинация CPMV представляет собой {CPMV1, CPMV3}. Соседний блок, используемый для построения CPMV1, может использоваться как источник наследования флага LIC.
[0237] В другом варианте осуществления, построенное аффинное объединение используется для текущего блока. Если по меньшей мере 2 исходных кандидата, используемые для построенных аффинные CPMV, имеют одно и то же значение флага LIC, это значение флага LIC может применяться к текущему блоку. В противном случае, если для построенного аффинного объединения используются только 2 контрольные точки, и их флаги LIC отличаются, то LIC может устанавливаться запрещенной для текущего блока.
[0238] В другом варианте осуществления, для режима аффинного объединения, можно сделать вывод, что флаг LIC текущего блока заблокирован (например, имеет значение 0).
[0239] В другом варианте осуществления, флаг LIC текущего блока может наследоваться от флага LIC соседнего блока, когда используется унаследованное аффинное объединение. В противном случае, когда выбранный кандидат на объединение не является кандидатом на унаследованное аффинное объединение, можно сделать вывод, что флаг LIC текущего блока заблокирован.
[0240] V. Уточнение PROF Alike для блоков с промежуточными векторам движения высокой точности
[0241] В режиме TMVP или TMVP на основе подблоков (SbTMVP) режим, операция масштабирования может осуществляться на MV временного предсказания для генерации промежуточного MV. Промежуточный MV может иметь более высокую точность, чем точность (например, прореживание 1/16), поддерживаемая интерполяционным фильтром, используемым для генерации блока предсказания. Промежуточный MV можно усекать или округлять для генерации окончательного предсказателя MV, имеющего поддерживаемую точность. Соответственно, окончательный предсказатель MV может терять точность вследствие операции округления по сравнению с промежуточным MV.
[0242] В некоторых вариантах осуществления, промежуточный MV высокой точности используется в качестве окончательного предсказателя MV для TMVP или SbTMVP по порядку для повышения эффективности кодирования, однако ценой увеличения количества фаз операций интерполяции и, возможно, дополнительного требования к памяти для хранения MV высокой точности.
[0243] Для решения проблемы, в некоторых вариантах осуществления, уточнение PROF Alike может использоваться для блоков, имеющих промежуточные MV (обозначенные MVblock) с высокой точностью по сравнению с точностью, поддерживаемой существующим интерполяционным фильтром. Примеры режимов кодирования, для которых может применяться уточнение PROF Alike, могут включать в себя TMVP, SbTMVP, пространственное предсказание MV, MMVD, AMVP, и т.п.В этих режимах кодирования, операция масштабирования может осуществляться для генерации предсказателя MV, или кандидат MV с более высокой точностью используется в качестве предсказателя MV. В этих режимах кодирования промежуточные MV высокой точности можно округлять до поддерживаемой точности интерполяционного фильтра и затем использовать при компенсации движения для генерации блока предсказания. Разность между промежуточным MV высокой точности и М V поддерживаемой точности для интерполяции можно использовать для уточнения блока предсказания, полученного в результате компенсации движения.
[0244] В примере, процесс уточнения PROF Alike может включать в себя следующие этапы:
round
этап 1: формирование блока предсказания Pred с MV, который выражает MV, округленный до наивысшей точности, поддерживаемой существующим интерполяционным фильтром.
этап 2: вычисление смещения уточнения предсказания PROF Alike ΔI(i,j) для каждого положения отсчета для текущего блока. В одном примере ΔI(i,j) выводится по следующей формуле:
x
y
block
round
где  и  - градиенты предсказания Pred в положении (i, j) в направлениях х и у, соответственно, и Δv и Δv - разности MV между MV и MV.
Этап 3: прибавление ΔI(i,j) к внешнему предсказанию Pred и, в некоторых примерах, усечение полученных пикселей до целевого диапазона при необходимости.
[0245] Согласно варианту осуществления, когда текущий блок имеет один и тот же MV для всего блока (например, подблоки имеют один и тот же MV), вышеупомянутый процесс уточнения PROF Alike применяется ко всему блоку. Когда текущий блок имеет разные векторы движения на уровне подблоков, например, блоков, кодированных с SbTMVP, вышеупомянутый процесс уточнения PROF Alike применяется для каждого отдельного подблока.
block
block
[0246] Согласно варианту осуществления, точность MV может быть заранее заданной или сигнализироваться в битовом потоке, например, в наборе параметров последовательности (например, SPS), наборе параметров изображения (например, PPS), заголовке слайса, заголовке группы тайлов и т.п.Альтернативно, когда используется BDOF, может использоваться такая же точность, какая используется для BDOF. Например, прореживание 1/32, прореживание 1/24 или прореживание 1/64 может быть заранее заданным для MV.
[0247] В некоторых вариантах осуществления, градиенты предсказания Pred можно вычислять с помощью 3-отводного фильтра [-1, 0, 1] следующим образом:
где I(i, j) указывает предсказание Pred блока в положении (i, j).
[0248] Для вычисления градиентов, в одном варианте осуществления, для уменьшения полосы памяти и сложности, пиксели на расширенных границах можно копировать из ближайшей целочисленной пиксельной позиции в опорном изображении. Это позволяет избегать дополнительной интерполяции для области заполнения. В другом варианте осуществления, расширенные отсчеты предсказания могут генерироваться посредством дополнительной интерполяции из соответствующих опорных отсчетов. В одном варианте осуществления, точность градиента базируется на битовой глубине исходного видео. В другом варианте осуществления, фильтр Собель может использоваться для вычисления градиента для направлений х и у. В другом варианте осуществления, фильтр Шарра может использоваться для вычисления градиента для направлений х и у. В другом варианте осуществления, фильтр Превитта может использоваться для вычисления градиента для направлений х и у. В другом варианте осуществления, фильтр Робертса может использоваться для вычисления градиента для направлений х и у. На фиг. 26 показаны примеры ядер фильтров Собеля, Шарра, Превитта и Робертса.
[0249] Согласно варианту осуществления, при сохранении MV для текущего изображения, MV с более высокой точностью (более высокой, чем наивысшая точность, поддерживаемая интерполяционным фильтром) могут храниться и могут использоваться при пространственном предсказании MV. Согласно варианту осуществления, при сохранении MV текущего изображения в буфере кадров (подлежащий использованию в качестве TMVP для других изображений), MV с более высокой точностью можно округлять до наивысшей точности, поддерживаемая интерполяционным фильтром до сжатия MV.
[0250] В некоторых вариантах осуществления, процесс уточнения PROF Alike может не использоваться совместно с некоторыми режимами кодирования, например, BDOF, DMVR, объединением треугольников, интра-интер-режимом и т.п.
[0251] VI. Примеры процессов уточнения PROF или PROF Alike
[0252] 1. Пример процесса PROF
[0253] На фиг. 27 показана блок-схема операций процесса (2700) согласно варианту осуществления изобретения. Процесс (2700) может использоваться при реконструкции блока, кодированного в режиме аффинного предсказания (например, режиме аффинного объединения, аффинного AMVP и т.п.), для генерации блока предсказания для реконструируемого блока. В различных вариантах осуществления, процесс (2700) выполняется схемой обработки, например, схемой обработки в оконечных устройствах (210), (220), (230) и (240), схемой обработки, которая осуществляет функции видеодекодера (310), схемой обработки, которая осуществляет функции видеодекодера (410), и т.п. В некоторых вариантах осуществления, процесс (2700) осуществляется в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки осуществляет процесс (2700). Процесс начинается на этапе (S2701) и переходит к этапу (S2710).
[0254] На этапе S2710, синтаксический элемент указывает, разрешено ли PROF для аффинного предсказания. В примере, синтаксический элемент сигнализируется на уровне последовательностей, уровне слайсов, уровне тайлов, уровне групп тайлов, уровне изображений и т.п.В другом примере, PROF для аффинного предсказания может разрешаться по умолчанию без сигнализации синтаксического элемента.
[0255] На этапе S2720 производится определение, применять ли PROF к аффинному кодированному блоку. В примерах, применять ли PROF к аффинному кодированному блоку, определяется на основании значений аффинных параметров аффинной модели аффинного кодированного блока. В примере, применять ли PROF к аффинному кодированному блоку, определяется на основании принятого синтаксического элемента, указывающего, разрешено ли PROF для аффинного предсказания, и сигнализации, указывающей, разрешена ли LIC.
[0256] На этапе S2730 процесс PROF осуществляется, когда определено применять PROF к аффинному кодированному блоку. В примере, процесс PROF может включать в себя генерацию отсчета I(i,j) предсказания в положении (i,j) отсчета в аффинном кодированном блоке, генерацию пространственных градиентов  и  в положении (i,j) отсчета в аффинном кодированном блоке, генерацию уточнения ΔI(i,j) предсказания на основании пространственных градиентов  и  и прибавление уточнения ΔI(i,j) предсказания к отсчету предсказания I(i,j) для генерации уточненного отсчета предсказания.
[0257] В примере, пространственные градиенты  и  в положении отсчета (i,j) генерируются на основании первого(ых) отсчет(ов) предсказания первого подблока, включающего в себя отсчет предсказания I(i,j) и второго(ых) отсчета(ов) предсказания второго подблока, соседнего с первым подблоком. Первый подблок и второй подблок могут быть подблоками, полученными разбиением аффинного кодированного блока.
[0258] В примере, пространственные градиенты  и  в положении (i,j) отсчета генерируют с использованием сгенерированного градиентного фильтра для опорных отсчетов в опорном изображении аффинного кодированного блока. Например, сгенерированный градиентный фильтр может генерироваться посредством свертки первого градиентного фильтра и интерполяционного фильтра. Например, предполагая, что сгенерированный градиентный фильтр не используется, интерполяционный фильтр может применяться для опорных отсчетов в опорном изображении аффинного кодированного блока для генерации отсчетов предсказания аффинного кодированного блока. Затем первый градиентный фильтр может применяться к сгенерированным отсчетам предсказания аффинного кодированного блока для генерации пространственных градиентов  и  Использование сгенерированного градиентного фильтра позволяет параллельно обрабатывать интерполяцию (или предсказание) аффинного кодированного блока и генерировать пространственные градиенты  и
[0259] В примере, аффинный кодированный блок кодируется в аффинном режиме объединения, и значение флага LIC аффинного кодированного блока может наследоваться от соседнего блока аффинного кодированного блока, который используется как источник для наследования аффинной модели или построения аффинной модели аффинного кодированного блока. Процесс 2700 может переходить к S2799, и завершаться на этапе S2799.
[0260] 2. Пример процесс уточнения PROF Alike
[0261] На фиг. 28 показана блок-схема операций процесса (2800) согласно варианту осуществления изобретения. Процесс (2800) может использоваться в реконструкции блока, имеющего промежуточный MV с более высокой точностью, чем точность, поддерживаемая интерполяционным фильтром, используемым при компенсации движения для генерации предсказания блока. В различных вариантах осуществления, процесс (2800) выполняются схемой обработки, например, схемой обработки в оконечных устройствах (210), (220), (230) и (240), схемой обработки, которая осуществляет функции видеодекодера (310), схемой обработки, которая осуществляет функции видеодекодера (410), и т.п. В некоторых вариантах осуществления, процесс (2800) осуществляется в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки осуществляет процесс (2800). Процесс начинается на этапе (S2801) и переходит к этапу (S2810).
[0262] На этапе S2810, может определяться промежуточный вектор MVblock движения текущего блока. Промежуточный вектор MVblock движения может иметь высокую точность по сравнению с низкой точностью, поддерживаемой интерполяционным фильтром текущего блока. Текущий блок может быть блоком или подблоком, кодированным с TMVP, SbTMVP, MMVD, аффинным AMVP, режимом пространственного предсказания вектора движения и т.п.Соответственно, промежуточный вектор MVblock движения может генерироваться в операции масштабирования вектора движения. Альтернативно, текущий блок может кодироваться с использованием предсказателя вектора движения с высокой точностью.
[0263] В примере, синтаксический элемент, указывающий высокую точность, может приниматься в наборе параметров последовательности (SPS), наборе параметров изображения (PPS), заголовке слайса, заголовке группы тайлов и т.п.Промежуточный вектор MVblock движения, первоначально сгенерированный, может иметь более высокую точность, чем сигнализируемая высокая точность, и округляться до сигнализируемой высокой точности.
[0264] На этапе S2820, промежуточный вектор MVblock движения округляется для генерации округленного вектора MVround движения текущего блока, имеющего низкую точность, поддерживаемую интерполяционным фильтром текущего блока.
[0265] На этапе S2830, блок предсказания текущего блока может генерироваться на основании округленного вектора MVround движения и интерполяционного фильтра.
[0266] На этапе S2840, смещение уточнения предсказания может определяться согласно
где  и  - градиенты отсчета предсказания блока предсказания в положении в направлениях х и у, соответственно, и  и  - разности векторов движения между промежуточным вектором MVblock движения и округленным вектором MVround движения в направлениях х и у, соответственно.
[0267] На этапе S2850, смещение ΔI(i,j) уточнения предсказания прибавляется к отсчету предсказания блока предсказания для генерации уточненного отсчета предсказания. В примере, промежуточный вектор MVblock движения, имеющий высокую точность, хранится в памяти. Другой блок в текущем изображении, включающем в себя текущий блок, может кодироваться с использованием промежуточного вектора MVblock движения для пространственного предсказания вектора движения. Процесс 2800 может переходить к S2899, и заканчивается на этапе S2899.
[0268] VII. Компьютерная система
[0269] Вышеописанные методы могут быть реализованы в виде компьютерного программного обеспечения, использующего компьютерно-считываемые инструкции и физически хранящегося на одном или более компьютерно-считываемых носителях. Например, на фиг.29 показана компьютерная система (2900), пригодная для реализации некоторых вариантов осуществления раскрытого изобретения.
[0270] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую, или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing units), графическими процессорами (GPU, Graphics Processing Units) и т.п.
[0271] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0272] Компоненты компьютерной системы (2900), показанные на фиг. 29, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым одним или комбинацией компонентов, показанных в иллюстративном варианте осуществления компьютерной системы (2900).
[0273] Компьютерная система (2900) может включать в себя некоторые устройства ввода интерфейса с человеком. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двухмерного видео, трехмерного видео, включающего в себя стереоскопическое видео).
[0274] Устройства ввода интерфейса с человеком могут включать в себя один или более из (по одному из изображенных): клавиатуры (2901), мыши (2902), сенсорной панели (2903), сенсорного экрана (2910), информационной перчатки (не показана), джойстика (2905), микрофона (2906), сканера (2907), камеры (2908).
[0275] Компьютерная система (2900) также может включать в себя некоторые устройства вывода интерфейса с человеком. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать в себя устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (2910), информационной перчатки (не показана) или джойстика (2905), но также могут быть устройствами тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: громкоговорители (2909), наушники (не показаны)), устройства визуального вывода (например, экраны (2910), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из которых способны к двухмерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографического вывода; очков виртуальной реальности (не показаны), голографических дисплеев и дымовых баков (не показаны)) и принтеров (не показаны).
[0276] Компьютерная система (2900) также может включать в себя доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие в себя CD/DVD ROM/RW (1220) с носителями (2921) CD/DVD и т.п., карты (2922) флэш-памяти, сменный жесткий диск или твердотельный диск (2923), традиционные магнитные носители, например, ленту и флоппи-диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.
[0277] Специалисты в данной области техники также должны понимать, что термин "компьютерно-считываемые носители", используемый в связи с раскрытым здесь изобретением, не охватывает среды передачи, несущие волны или другие кратковременные сигналы.
[0278] Компьютерная система (2900) также может включать в себя интерфейс к одной или более сетям связи. Сети могут быть, например, беспроводными, проводными, оптическими. Сети могут быть, дополнительно, локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают в себя локальные сети, например, Ethernet, беспроводные LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные включают в себя CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (2949) (например, USB-порты компьютерной системы (2900)); другие обычно встраиваются в ядро компьютерной системы (2900) путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (2900) может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.
[0279] Вышеупомянутые устройства человеческого интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (2940) компьютерной системы (2900).
[0280] Ядро (2940) может включать в себя один или более центральных процессоров (CPU) (2941), графические процессоры (GPU) (2942), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Array) (2943), аппаратные ускорители (2944) для некоторых задач, графический адаптер (2950) и т.д. Эти устройства, совместно с постоянной памятью (ROM) (2945), оперативной памятью (2946), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками (2947), недоступными пользователю, SSD и т.п., могут соединяться посредством системной шины (2948). В некоторых компьютерных системах системная шина (2948) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных CPU, GPU и т.п.Периферийные устройства могут подключаться либо напрямую к системной шине (2948) ядра, либо через периферийную шину (2949). Архитектуры периферийной шины включают в себя PCI, USB и т.п.
[0281] CPU (2941), GPU (2942), FPGA (2943) и ускорители (2944) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM (2945) или RAM (2946). Переходные данные также могут храниться в RAM (2946), тогда как постоянные данные могут храниться, например, во внутреннем хранилище (2947) данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с один или более CPU (2941), GPU (2942), хранилищем (2947) данных большой емкости, ROM (2945), RAM (2946) и т.п.
[0282] На компьютерно-считываемых носителях может храниться компьютерный код для осуществления различных компьютерно-реализуемых операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.
[0283] В порядке примера, но не ограничения, компьютерная система, имеющая архитектуру (2900), и, в частности, ядро (2940) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных компьютерно-считываемых носителей. Такие компьютерно-считываемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым хранилищем ядра (2940), носящим долговременный характер, например, внутренним хранилищем (2947) данных большой емкости или ROM (2945). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (2940). Компьютерно-считываемый носитель может включать в себя одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (2940) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные процессы или конкретные части описанных здесь конкретных процессов, включая задание структур данных, хранящихся в RAM (2946), и модификацию таких структур данных согласно процессам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (2944)), который может действовать вместо или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей описанных здесь конкретных процессов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на компьютерно-считываемые носители может охватывать схему (например, интегральную схему (1С, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе из них, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию оборудования и программного обеспечения.
Приложение А: аббревиатуры
AMVP: усовершенствованная MVP
ASIC: специализированная интегральная схема
BDOF: двунаправленный оптический поток
BMS: набор эталонов
CANBus: шина контроллерной сети
CD: компакт-диск
CPU: центральный процессор
CRT: кинескоп
СТВ: блок дерева кодирования
CTU: единица дерева кодирования
CU: единица кодирования
DVD: цифровой видеодиск
FPGA: вентильная матрица, программируемая пользователем
GOP: группа изображений
GPU: графический процессор
GSM: глобальная система мобильной связи
HEVC: высокопроизводительное видеокодирование
HMVP: MVP на исторической основе
HRD: гипотетический опорный декодер
1С: интегральная схема
JEM: модель совместного исследования
LAN: локальная сеть
LCD: жидкокристаллический дисплей
LIC: локальная компенсация освещенности
LTE: проект долгосрочного развития систем связи
MMVD: объединение с использованием MVD
MV: вектор движения
MVD: разность векторов движения
MVP: предсказатель вектора движения
OLED: органический светодиод
РВ: блок предсказания
PCI: межсоединение периферийных компонентов
PLD: программируемое логическое устройство
PROF: уточнение предсказания с помощью оптического потока
PU: единица предсказания
RAM: оперативная память
ROM: постоянная память
SbTMVP: TMVP на основе подблоков
SEI: информация дополнительного улучшения
SNR: отношение сигнал-шум
SSD: твердотельный привод
TMVP: временной MVP
TU: единица преобразования,
USB: универсальная последовательная шина
VTM: универсальная испытательная модель
VUI: информация пригодности видео
VVC: универсальное видеокодирование
[0284] Хотя здесь описано несколько иллюстративных вариантов осуществления, возможны изменения, перестановки и различные эквиваленты для замены в рамках изобретения.