Способ и устройство для передачи информации о размере списка кандидатов предсказателя
METHOD AND APPARATUS FOR TRANSMITTING INFORMATION ON THE SIZE OF A PREDICTOR CANDIDATE LIST

ВКЛЮЧЕНИЕ ПОСРЕДСТВОМ ССЫЛКИ
[0001] Настоящее изобретение испрашивает приоритет патентной заявки США №16/844,339, "METHOD AND APPARATUS FOR SIGNALING PREDICTOR CANDIDATE LIST SIZE", поданной 9 апреля 2020, которая испрашивает приоритет предварительной заявки США №62/846,375, "PREDICTOR CANDIDATE LIST SIZE SIGNALING FOR INTRA PICTURE BLOCK COMPENSATION", поданной 10 мая 2019 и предварительной заявки США №62/845,712, "MERGE LIST SIZE SIGNALING FOR INTRA PICTURE BLOCK COMPENSATION", поданной 9 мая 2019. Содержание предыдущих заявок, таким образом, включено посредством ссылки в полном объеме.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] В настоящей заявке описаны варианты осуществления, в целом относящиеся к видеокодированию.
УРОВЕНЬ ТЕХНИКИ
[0003] Описание предпосылок создания изобретения приведено здесь с целью представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники для настоящего изобретения.
[0004] Кодирование и декодирование видеосигнала может осуществляться с использованием предсказания между изображениями с компенсацией движения. Цифровое видео без сжатия может включать в себя последовательность изображений, каждое из которых имеет пространственный размер, например, 1920х1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. Видео без сжатия предъявляет значительные требования к битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920x1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с. Час такого видео требует объема памяти более 600 ГБ.
[0005] Одной из целей кодирования и декодирования видеосигнала может являться снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе или объему памяти, в ряде случаев на два порядка величины или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так чтобы реконструированный сигнал можно было использовать для намеченного применения. Сжатие с потерями широко применяется для видео. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями, чем пользователи телевещательных приложений. При достижимой степени сжатия более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.
[0006] Компенсация движения может представлять собой метод сжатия с потерями и может относиться к методам, в которых блок данных отсчетов из ранее восстановленного изображения или его части (опорного изображения) после пространственного сдвига в направлении, указанном вектором движения (далее MV), используется для предсказания реконструированного изображения или его части. В некоторых случаях опорное изображение может совпадать с реконструируемым изображением. Векторы движения могут иметь две координаты X и Y или три координаты, третья из которых является указанием используемого опорного изображения (последнее, косвенно, может быть временным измерением).
[0007] В некоторых методах сжатия видео MV, применимый к определенной области данных отсчетов, может быть предсказан на основании других MV, например, тех, которые относятся к другой области данных отсчетов, пространственно прилегающей к реконструируемой области, и предшествующей этому MV в порядке декодирования. Это может существенно уменьшить объем данных, необходимых для кодирования MV, тем самым устраняя избыточность и увеличивая сжатие. Предсказание MV может работать эффективно, например, потому, что при кодировании входного видеосигнала, полученного от камеры (известного как естественное видео), существует статистическая вероятность того, что области, большие, чем область, к которой применим один MV, перемещаются в аналогичном направлении и, следовательно, в некоторых случаях могут быть предсказаны с использованием аналогичного вектора движения, полученного из MV соседней области. Это приводит к тому, что MV, найденный для данной области, аналогичен или совпадает с MV, предсказанным из окружающих MV, и это, в свою очередь, позволяет (после энтропийного кодирования) уменьшить количество битов по сравнению с количеством битов при непосредственном кодировании MV. В некоторых случаях предсказание MV может быть примером сжатия сигнала (а именно, MV), полученного из исходного сигнала (а именно, потока отсчетов), без потерь. В других случаях само предсказание MV может осуществляться с потерями, например, из-за ошибок округления при вычислении предсказателя из нескольких окружающих MV.
[0008] Различные механизмы предсказания MV описаны в Н. 265/HEVC (ITU-T Rec. Н.265, "High Efficiency Video Coding", декабрь 2016 г.). Из многих механизмов предсказания MV, которые предлагаются в Н.265, здесь описан метод, далее именуемый "пространственным слиянием" (spatial merge).
[0009] В соответствии с фиг. 1, текущий блок (101) содержит отсчеты, найденные кодером в процессе поиска движения для возможности предсказания из смещенного в пространстве предыдущего блока того же размера. Вместо непосредственного кодирования MV может быть получен из метаданных, связанных с одним или несколькими опорными изображениями, например, из самого последнего (в порядке декодирования) опорного изображения, с использованием MV, связанного с одним из пяти окружающих отсчетов, обозначенных А0, А1, и В0, B1, В2 (с 102 по 106, соответственно). В Н.265 для предсказания MV могут использоваться предсказатели из того же опорного изображения, которое использует соседний блок. Порядок формирования списка кандидатов может быть А0 → В0 → В1 → А1 → В2.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0010] Согласно примеру осуществления, способ видеодекодирования включает в себя прием кодированного битового видеопотока, включающего текущее изображение. Способ дополнительно включает в себя определение того, кодирован ли текущий блок, включенный в текущее изображение, в режиме внутренней копии блока (IBC). Способ дополнительно включает в себя определение числа кандидатов предсказателя IBC, связанных с текущим блоком, в ответ на кодирование текущего блока в режиме IBC. Способ дополнительно включает в себя построение списка кандидатов предсказателя IBC, размер которого соответствует числу кандидатов предсказателя IBC. Способ дополнительно включает в себя выбор предсказателя вектора блока из списка кандидатов предсказателя IBC. Способ дополнительно включает в себя декодирование вектора блока, связанного с текущим блоком, с использованием предсказателя вектора блока. Способ дополнительно включает в себя декодирование текущего блока в соответствии с вектором блока.
[0011] Согласно примеру осуществления, видеодекодер для выполнения видеодекодирования включает в себя схему обработки, выполненную с возможностью приема кодированного битового видеопотока, включающего текущее изображение. Схема обработки дополнительно выполнена с возможностью определения того, кодируется ли текущий блок, включенный в текущее изображение, в режиме внутренней копии блока (IBC) в ответ на кодирование текущего блока в режиме IBC. Схема обработки дополнительно выполнена с возможностью определения числа кандидатов предсказателя IBC, связанных с текущим блоком. Схема обработки дополнительно выполнена с возможностью построения списка кандидатов предсказателя IBC, размер которого соответствует числу кандидатов предсказателя IBC. Схема обработки дополнительно выполнена с возможностью выбора предсказателя вектора блока из списка кандидатов предсказателя IBC. Схема обработки дополнительно выполнена с возможностью декодирования вектора блока, связанного с текущим блоком, с использованием предсказателя вектора блока. Схема обработки дополнительно выполнена с возможностью декодирования текущего блока в соответствии с вектором блока.
[0012] Согласно примеру осуществления, предложен также компьютерно-считываемый носитель, на котором хранятся инструкции, которые, при выполнении процессором в видеодекодере, заставляют процессор выполнять способ, который включает в себя прием кодированного битового видеопотока, включающего текущее изображение. Способ дополнительно включает в себя определение того, кодирован ли текущий блок, включенный в текущее изображение, в режиме внутренней копии блока (IBC). Способ дополнительно включает в себя определение числа кандидатов предсказателя IBC, связанных с текущим блоком, в ответ на кодирование текущего блока в режиме IBC. Способ дополнительно включает в себя построение списка кандидатов предсказателя IBC, размер которого соответствует числу кандидатов предсказателя IBC. Способ дополнительно включает в себя выбор предсказателя вектора блока из списка кандидатов предсказателя IBC. Способ дополнительно включает в себя декодирование вектора блока, связанного с текущим блоком, с использованием предсказателя вектора блока. Способ дополнительно включает в себя декодирование текущего блока в соответствии с вектором блока.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0013] Дополнительные особенности, характер и различные преимущества раскрытого изобретения будут понятны из нижеследующего подробного описания и прилагаемых чертежей, на которых:
[0014] На фиг. 1 представлена схематическая иллюстрация текущего блока и окружающих его кандидатов на пространственное слияние в одном из примеров.
[0015] На фиг. 2 представлена схематическая иллюстрация упрощенной блок-схемы системы связи (200) в соответствии с вариантом осуществления.
[0016] На фиг. 3 представлена схематическая иллюстрация упрощенной блок-схемы системы связи (300) в соответствии с вариантом осуществления.
[0017] На фиг. 4 представлена схематическая иллюстрация упрощенной блок-схемы декодера в соответствии с вариантом осуществления.
[0018] На фиг. 5 представлена схематическая иллюстрация упрощенной блок-схемы кодера в соответствии с вариантом осуществления.
[0019] На фиг. 6 представлена блок-схема кодера в соответствии с другим вариантом осуществления.
[0020] На фиг. 7 представлена блок-схема декодера в соответствии с другим вариантом осуществления.
[0021] На фиг. 8 представлена схематическая иллюстрация компенсации блока внутри изображения в соответствии с одним из вариантов осуществления.
[0022] На фиг. 9A-9D представлена схематическая иллюстрация компенсации блока внутри изображения с диапазоном поиска, равным размеру одной единицы кодирования (CTU), в соответствии с одним из вариантов осуществления.
[0023] На фиг. 10A-10D представлена схематическая иллюстрация обновления буфера в соответствии с вариантами осуществления.
[0024] На фиг. 11А представлена схема процесса декодирования для буфера предсказания MV на основе истории (HMVP).
[0025] На фиг. 11В представлена схематическая иллюстрация обновления буфера HMVP.
[0026] На фиг. 12 представлена иллюстрация примера процесса декодирования в соответствии с вариантом осуществления.
[0027] На фиг. 13 представлена схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0028] На фиг. 2 представлена упрощенная блок-схема системы связи (200) согласно варианту осуществления настоящего изобретения. Система связи (200) включает в себя множество оконечных устройств, которые могут осуществлять связь друг с другом, например, через сеть (250). Например, система связи (200) включает в себя первую пару оконечных устройств (210) и (220), соединенных между собой через сеть (250). В примере, приведенном на фиг. 2, первая пара оконечных устройств (210) и (220) осуществляет однонаправленную передачу данных. Например, оконечное устройство (210) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством (210)) для передачи на другое оконечное устройство (220) через сеть (250). Кодированные видеоданные могут передаваться в форме одного или более битовых потоков кодированного видео. Оконечное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и отображения видеоизображений согласно восстановленным видеоданным. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.
[0029] В другом примере система связи (200) включает в себя вторую пару оконечных устройств (230) и (240), осуществляющих двунаправленную передачу кодированных видеоданных, которые могут возникать, например, в ходе видеоконференцсвязи. Для двунаправленной передачи данных, в порядке примера, каждое оконечное устройство из оконечных устройств (230) и (240) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством) для передачи в другое оконечное устройство из оконечных устройств (230) и (240) через сеть (250). Каждое оконечное устройство из оконечных устройств (230) и (240) также может принимать также может принимать кодированные видеоданные, передаваемые другим оконечным устройством из оконечных устройств (230) и (230), и может декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения на доступном устройстве отображения согласно восстановленным видеоданным.
[0030] В примере, приведенном на фиг. 2, оконечные устройства (210), (220), (230) и (240) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. Варианты осуществления настоящего изобретения находят применение для портативных компьютеров, планшетных компьютеров, медиаплееров и/или специального оборудования для видеоконференцсвязи. Сеть (250) представляет любое количество сетей, которые переносят кодированные видеоданные между оконечными устройствами (210), (220), (230) и (240), включая, например, проводные и/или беспроводные сети связи. Сеть связи (250) позволяет обмениваться данными в режиме канальной коммутации и/или пакетной коммутации. Репрезентативные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или интернет. В целях настоящего рассмотрения, архитектура и топология сети (250) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.
[0031] На ФИГ. 3 показано, в порядке примера применения раскрытого изобретения, размещение видеокодера и видеодекодера в окружении потоковой передачи. Раскрытое изобретение может быть в равной степени применимо к другим применениям обработки видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, в том числе CD, DVD, карте памяти и т.п.
[0032] Система потоковой передачи может включать в себя подсистему (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-T Recommendation Н.265. Например, разрабатывается стандарт видеокодирования под официальным названием "универсальное видеокодирование" (VVC, Versatile Video Coding). Раскрытое изобретение может использоваться в контексте VVC.
[0033] Заметим, что электронные устройства (320) и (330) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (320) может включать в себя видеодекодер (не показан), и электронное устройство (330) также может включать в себя видеокодер (не показан).
[0034] На фиг. 4 показана блок-схема видеодекодера (410) согласно варианту осуществления настоящего изобретения. Видеодекодер (410) может входить в состав электронного устройства (430). Электронное устройство (430) может включать в себя приемник (431) (например, приемные схемы). Видеодекодер (410) может использоваться вместо видеодекодера (310) в примере, приведенном на фиг. 3.
[0035] Приемник (431) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (410); в том же или другом варианте осуществления, по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (401), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (431) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут ретранслироваться на соответствующие использующие и объекты (не показаны). Приемник (431) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети буферная память (415) может быть подключена между приемником (431) и энтропийным декодером / анализатором (420) (далее "анализатором (420)"). В некоторых вариантах применения буферная память (415) входит в состав видеодекодера (410). В других она может не входить в состав видеодекодера (410) (не показан). В прочих вариантах может существовать буферная память (не показана) вне видеодекодера (410), например, для борьбы с джиттером сети, помимо другой буферной памяти (415) в составе видеодекодера (410), например, для управления хронированием доигрывания. Когда приемник (431) принимает данные от устройства хранения/ретрансляции с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (415) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшей попытки, например, Интернете, буферная память (415) может требоваться, может быть сравнительно большой и может иметь преимущественно адаптивный размер, и по меньшей мере частично может быть реализована в операционной системе или аналогичных элементах (не показаны) вне видеодекодера (410).
[0036] Видеодекодер (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) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[0037] Анализатор (420) может осуществлять операцию энтропийного декодирования / анализа видеопоследовательности, принятой из буферной памяти (415), для создания символов (421).
[0038] Для реконструкции символов (521) могут использоваться несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например, изображения с внешним и внутренним кодированием, блок с внешним и внутренним кодированием) и других факторов. Какие модули используются, и как, может определяться информацией управления подгруппами, выделенной из кодированной видеопоследовательности анализатором (420). Поток такой информации управления подгруппами между анализатором (420) и множественными модулями для простоты в дальнейшем не показан.
[0039] Помимо ранее упомянутых функциональных блоков видеодекодер (410) может принципиально подразделяться на несколько функциональных модулей, как описано ниже. В практической реализации, работающей в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания раскрытого изобретения уместно принципиальное подразделение на нижеперечисленные функциональные модули.
[0040] Первым модулем является модуль (451) масштабирования / обратного преобразования. Модуль (451) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую в себя используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (421) от анализатора (420). Модуль (451) масштабирования / обратного преобразования может выводить блоки, содержащие значения отсчетов, которые можно вводить в агрегатор (455).
[0041] В ряде случаев выходные отсчеты блока (451) масштабирования / обратного преобразования могут относиться к внутренне-кодированному блоку; то есть блоку, который не использует предсказанную информацию из ранее реконструированных изображений, но может использовать предсказанную информацию из ранее реконструированных частей текущего изображения. Такая предсказанная информация может обеспечиваться модулем (452) предсказания внутри изображения. В ряде случаев модуль (452) предсказания внутри изображения генерирует блок такого же размера и формы, как блок, подлежащий реконструкции, с использованием информации ранее реконструированного окружения, извлеченной из буфера (458) текущего изображения. Буфер (458) текущего изображения буферизует, например, частично реконструированное текущее изображение и/или полностью реконструированное текущее изображение. Агрегатор (455) в ряде случаев добавляет, для каждого отсчета, информацию предсказания, сгенерированную модулем (552) внутреннего предсказания, в информацию выходных отсчетов, обеспеченную модулем (551) масштабирования / обратного преобразования.
[0042] В других случаях выходные отсчеты модуля (451) масштабирования / обратного преобразования могут относиться к внутренне кодированному блоку, возможно, с компенсацией движения. В таком случае модуль (453) предсказания с компенсацией движения может осуществлять доступ к памяти (457) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (421), относящимися к блоку, эти отсчеты могут добавляться агрегатором (455) к выходному сигналу модуля (451) масштабирования / обратного преобразования (в этом случае именуемому остаточными отсчетами или остаточным сигналом) для генерации информации выходных отсчетов. Адреса в памяти (457) опорных изображений, откуда модуль (453) предсказания с компенсацией движения извлекает предсказанные отсчеты, могут регулироваться векторами движения, доступными модулю (453) предсказания с компенсацией движения, в форме символов (421), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (457) опорных изображений, когда используются точные векторы движения под-отсчетов, механизмы предсказания векторов движения и т.д.
[0043] К выходным отсчетам агрегатора (455) можно применять различные методы контурной фильтрации в модуле (456) контурного фильтра. Технологии сжатия видео могут включать в себя технологии деблокирующего фильтра под управлением параметров, включенных в кодированную видеопоследовательность (также именуемую битовым потоком кодированного видео) и становиться доступными модулю (456) контурного фильтра в качестве символов (421) от анализатора (420), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.
[0044] Модуль (456) контурного фильтра может выдавать поток отсчетов, который может поступать на устройство (412) визуализации, а также сохраняться в памяти (457) опорных изображений для использования в будущем предсказании между изображениями.
[0045] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью реконструировано, и кодированное изображение идентифицировано как опорное изображение (например, анализатором (420)), буфер (458) текущего изображения может становиться частью памяти (457) опорных изображений, и свежий буфер текущего изображения может повторно выделяться до начала реконструкции следующего кодированного изображения.
[0046] Видеодекодер (410) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видео, например, по стандарту ITU-T Rec. Н.265. Кодированная видеопоследовательность может согласовываться с синтаксисом, заданным используемой/ым технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность может придерживаться как синтаксиса технологии или стандарта сжатия видео, так и профилей, задокументированных в технологии или стандарте сжатия видео. В частности, профиль может выбирать некоторые инструменты как инструменты, доступные для использования только под этим профилем, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видео. В ряде случаев уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, передаваемого в кодированной видеопоследовательности.
[0047] Согласно варианту осуществления, приемник (431) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (410) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, слои улучшения во времени, пространстве или отношения сигнал/шум (SNR, signal noise ratio), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.
[0048] На фиг. 5 показана блок-схема видеокодера (503) согласно варианту осуществления настоящего изобретения. Видеокодер (503) входит в состав электронного устройства (520). Электронное устройство (520) включает в себя передатчик (540) (например, передающую схему). Видеокодер (503) может использоваться вместо видеокодера (303) в примере, приведенном на фиг. 3.
[0049] Видеокодер (503) может принимать отсчеты видео от источника (501) видеосигнала (который не входит в состав электронного устройства (520) в примере, показанном на фиг. 5), который может захватывать видеоизображение(я), подлежащее(ие) кодированию видеокодером (503). В другом примере источник (501) видеосигнала входит в состав электронного устройства (520).
[0050] Источник (501) видеосигнала может обеспечивать исходную видеопоследовательность, подлежащую кодированию видеокодером (503) в форме потока отсчетов цифрового видео любой подходящей битовой глубины (например, 8 бит, 10 бит, 12 бит, …), любого цветового пространства (например, ВТ.601 Y CrCB, RGB, …), и любой подходящей структуры дискретизации (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе службы массовой информации источником (501) видеосигнала может быть запоминающее устройство, где хранится ранее подготовленное видео. В системе видеоконференцсвязи источником (501) видеосигнала может быть камера, которая захватывает информацию локального изображения как видеопоследовательность. Видеоданные могут обеспечиваться как множество отдельных изображений, которые создают ощущение движения при наблюдении в последовательности. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемых структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники нетрудно понять соотношение между пикселями и отсчетами. Нижеследующее описание касается отсчетов.
[0051] Согласно варианту осуществления, видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с учетом любых других временных ограничений, налагаемых применением. Установление надлежащей скорости кодирования является одной из функций контроллера (550). В некоторых вариантах осуществления контроллер (550) управляет другими функциональными модулями, как описано ниже, и функционально подключен к другим функциональным модулям. Подключение для простоты не показано. Параметры, установленные контроллером (550), могут включать в себя параметры, связанные регулировкой частоты (пропуск изображения, квантователь, значение лямбда, применяемое при оптимизации скорости-искажения, …), размер изображения, схему групп изображений (GOP, group of pictures), максимальную зону поиска вектора движения и т.д. Контроллер (550) может быть выполнен с возможностью иметь другие подходящие функции, относящиеся к видеокодеру (503), оптимизированному для той или иной конструкции системы.
[0052] В некоторых вариантах осуществления видеокодер (503) выполнен с возможностью работать в петле кодирования. В качестве очень упрощенного описания, в порядке примера, петля кодирования может включать в себя исходный кодер (530) (например, отвечающий за создание символов, например, потока символов, на основе входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локальный) декодер (533), встроенный в видеокодер (503). Декодер (533) реконструирует символы для создания данных отсчетов, аналогично тому, как это делал бы (удаленный) декодер (поскольку любое сжатие между символами и битовым потоком кодированного видео происходит без потерь в технологиях сжатия видео, рассматриваемых в раскрытом изобретении). Реконструированный поток отсчетов (данные отсчетов) поступает в память (534) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, не зависящим от положения декодера (локального или удаленного), содержимое памяти (534) опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, предсказанная часть кодера "видит" в качестве отсчетов опорного изображения точно такие же значения отсчетов, как "видел" бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронизма опорного изображения (и, в итоге, дрейф, если синхронизм не удается поддерживать, например, вследствие канальных ошибок) используется также в некоторых связанных областях техники.
[0053] "Локальный" декодер (533) может действовать таким же образом, как "удаленный" декодер, например, видеодекодер (410), подробно вышеописанный со ссылкой на фиг. 4. Однако, опять же, согласно фиг. 4, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (545) и анализатором (420) может осуществляться без потерь, части энтропийного декодирования видеодекодера (410), включающие в себя буферную память (415) и анализатор (420), могут быть не полностью реализованы в локальном декодере (533).
[0054] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализа/энтропийного декодирования, также обязательно должна присутствовать, по существу, в идентичной функциональной форме в соответствующем кодере. По этой причине раскрытое изобретение сконцентрировано на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодированная. Только в некоторых областях требуется более детальное описание, которое приведено ниже.
[0055] Согласно некоторым примерам, в ходе работы исходный кодер (530) может осуществлять кодирование с предсказанием и компенсацией движения, при котором входное изображение кодируется с предсказанием на основании одного или более ранее кодированных изображений из видеопоследовательности, указанных как "опорные изображения". Таким образом, машина (532) кодирования кодирует различия между пиксельными блоками входного изображения и пиксельными блоками опорного изображения(й), которое(ые) может(ут) выбираться в качестве предсказанной(ых) ссылки(ок) на входное изображение.
[0056] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, которые могут быть указаны как опорные изображения, на основе символов, созданных исходным кодером (530). Операции машины (532) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 5), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных изображениях, и может предписывать сохранение реконструированных опорных изображений в кэш-памяти (534) опорных изображений. Таким образом, видеокодер (503) может локально сохранять копии реконструированных опорных изображений, имеющие такое же содержимое, как реконструированные опорные изображения, которые будут получены видеодекодером на стороне приемника (в отсутствие ошибок передачи).
[0057] Предсказатель (535) может осуществлять поиски предсказания для машины (532) кодирования. Таким образом, для нового изображения, подлежащего кодированию, предсказатель (535) может искать в памяти (534) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных пиксельных блоков) или те или иные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (535) может работать на основе "блоки отсчетов х пиксельные блоки" для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предиктором (535), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (534) опорных изображений.
[0058] Контроллер (550) может управлять операциями кодирования исходного кодера (530), включая, например, установление параметров и параметров подгруппы, используемых для кодирования видеоданных.
[0059] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) переводит символы, сгенерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно технологиям, например, кодирования по Хаффману, кодирования с переменной длиной серии, арифметического кодирования и т.д.
[0060] Передатчик (540) может буферизовать кодированную(ые) видеопоследовательность(и), созданную энтропийным кодером (545), для подготовки к передаче через канал (560) связи, который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные от видеокодера (503) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).
[0061] Контроллер (550) может управлять работой видеокодера (503). В ходе кодирования контроллер (550) может назначать каждому кодированному изображению тот или иной тип кодированного изображения, который может определять методы кодирования, применимые к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы изображения:
[0062] Интра-изображение (I-изображение), которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают разные типы интра-изображений, включая, например, изображения в формате независимого обновления декодера ("IDR", Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.
[0063] Предсказанное изображение (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[0064] Двунаправленно-предсказанное изображение (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, мультипредсказанные изображения могут использовать более двух опорных изображений и связанные метаданные для реконструкции единого блока.
[0065] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4x4, 8x8, 4x8 или 16x16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться предиктивно со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки I-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (пространственным или внутренним предсказанием). Пиксельные блоки Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[0066] Видеокодер (503) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, например, ITU-T Rec. Н.265. В своей работе видеокодер (503) может осуществлять различные операции сжатия, в том числе операции предиктивного кодирования, которые используют временные и пространственные избыточности во входной видеопоследовательности. Поэтому кодированные видеоданные могут согласовываться с синтаксисом, заданным используемой технологией или стандартом видеокодирования.
[0067] Согласно варианту осуществления, передатчик (540) может передавать дополнительные данные с кодированным видео. Исходный кодер (530) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR слои улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и т.д.
[0068] Видео может захватываться как множество исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно именуемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а предсказание между изображениями использует (временную или иную) корреляцию между изображениями. Например, конкретное изображение, подлежащее кодированию/декодированию, которое именуется текущим изображением, разбивается на блоки. Когда блок в текущем изображении аналогичен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может кодироваться вектором, который именуется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множественных опорных изображений.
[0069] В некоторых вариантах осуществления в предсказании между изображениями может использоваться метод двойного предсказания. Согласно методу двойного предсказания, используются два опорных изображения, например, первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может предсказываться комбинацией первого опорного блока и второго опорного блока.
[0070] Дополнительно, метод режима слияния может использоваться в предсказании между изображениями для повышения эффективности кодирования.
[0071] Согласно некоторым вариантам осуществления изобретения, предсказания, например, предсказания между изображениями и предсказания внутри изображения, осуществляются поблочно. Например, согласно стандарту HEVC, изображение в последовательности видеоизображений разбивается на единицы дерева кодирования (CTU, coding tree units) для сжатия, при этом CTU в изображении имеют одинаковый размер, например, 64x64 пикселя, 32x32 пикселя или 16x16 пикселей. В общем случае CTU включает в себя три блока дерева кодирования (СТВ, coding tree blocks), а именно, один СТВ яркости и два СТВ цветности. Каждая CTU может рекурсивно делиться квадрадеревом на одну или несколько единиц кодирования (CU). Например, CTU размером 64x64 пикселя может делиться на одну CU размером 64x64 пикселя или 4 CU размером 32x32 пикселя или 16 CU размером 16x16 пикселей. Например, каждая CU анализируется для определения типа предсказания для CU, например, типа внешнего предсказания или типа внутреннего предсказания. CU делится на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. В целом, каждая PU включает в себя блок предсказания (РВ) яркости и два РВ цветности. Согласно варианту осуществления, операция предсказания при кодировании (кодировании/декодировании) осуществляется в единице блока предсказания. Используя блок предсказания яркости в качестве примера блока предсказания, блок предсказания включает в себя матрицу значений (например, значений яркости) для пикселей, например, 8x8 пикселей, 16x16 пикселей, 8x16 пикселей, 16x8 пикселей и т.п.
[0072] На фиг. 6 показана схема видеокодера (603) согласно другому варианту осуществления изобретения. Видеокодер (603) выполнен с возможностью приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое составляет часть кодированной видеопоследовательности. Например, видеокодер (603) используется вместо видеокодера (303) в примере, приведенном на фиг. 3.
[0073] В примере HEVC видеокодер (603) принимает матрицу значений отсчетов для блока обработки, например, блока предсказания 8x8 отсчетов и т.п. Видеокодер (603) определяет, наилучшим ли образом кодируется блок обработки в интра-режиме, интер-режиме или режиме двойного предсказания с использованием, например, оптимизации зависимости искажений от скорости передачи. Когда блок обработки подлежит кодированию в интра-режиме, видеокодер (603) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение; и когда блок обработки подлежит кодированию в интеррежиме или режиме двойного предсказания, видеокодер (603) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях видеокодирования режим слияния может быть подрежимом предсказания между изображениями, где вектор движения выводится из одного или более предсказателей вектора движения без привлечения кодированного компонента вектора движения вне предсказателей. В некоторых других технологиях видеокодирования может присутствовать компонент вектора движения, применимый к данному блоку. В порядке примера, видеокодер (603) включает в себя другие компоненты, например, модуль определения режима (не показан) для определения режима блоков обработки.
[0074] В примере, приведенном на фиг. 6, видеокодер (603) включает в себя интер-кодер (630), интра-кодер (622), вычислитель (623) остатка, переключатель (626), кодер (624) остатка, общий контроллер (621) и энтропийный кодер (625), соединенные друг с другом как показано на фиг. 6.
[0075] Интер-кодер (630) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоками в предыдущих изображениях и более поздних изображениях), генерации информации внешнего предсказания (например, описания избыточной информации согласно методу внутреннего кодирования, векторов движения, информации режима слияния), и вычисления результатов внешнего предсказания (например, блока предсказания) на основании информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорными изображениями являются декодированные опорные изображения, которые декодируются на основе информации кодированного видео.
[0076] Интра-кодер (622) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), в ряде случаев сравнения блока с блоками, ранее кодированными в том же изображении, генерирования квантованных коэффициентов после преобразования, и в ряде случаев также информации внутреннего предсказания (например, информации направления внутреннего предсказания согласно одному или более методам внутреннего кодирования). В порядке примера, интра-кодер (622) также вычисляет результаты внутреннего предсказания (например, блок предсказания) на основании информации внутреннего предсказания и опорных блоков в том же изображении.
[0077] Общий контроллер (621) выполнен с возможностью определения общих данных управления и управления другими компонентами видеокодера (603) на основе общих данных управления. Например, общий контроллер (621) определяет режим блока и выдает сигнал управления на переключатель (626) на основе режима. Например, когда режим является интра-режимом, общий контроллер (621) управляет переключателем (626) для выбора результата интра-режима для использования вычислителем (623) остатка, и управляет энтропийным кодером (625) для выбора информации внутреннего предсказания и включения информации внутреннего предсказания в битовый поток; и когда режим является интер-режимом, общий контроллер (621) управляет переключателем (626) для выбора результата внешнего предсказания для использования вычислителем (623) остатка, и управляет энтропийным кодером (625) для выбора информации внешнего предсказания и включения информации внешнего предсказания в битовый поток.
[0078] Вычислитель (623) остатка выполнен с возможностью вычисления разности (данных остатка) между принятым блоком и результатами предсказания, выбранными из интра-кодера (622) или интер-кодера (630). Кодер (624) остатка выполнен с возможностью действовать на основе данных остатка для кодирования данных остатка для генерации коэффициентов преобразования. Например, кодер (624) остатка выполнен с возможностью преобразования данных остатка из пространственной области в частотную область и генерирования коэффициентов преобразования. Затем коэффициенты преобразования подвергаются обработке квантованием для получения квантованных коэффициентов преобразования. В различных вариантах осуществления видеокодер (603) также включает в себя декодер (628) остатка. Декодер (628) остатка выполнен с возможностью осуществления обратного преобразования и генерирования декодированных данных остатка. Декодированные данные остатка могут надлежащим образом использоваться интра-кодером (622) и интер-кодером (630). Например, интер-кодер (630) может генерировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, и интра-кодер (622) может генерировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки надлежащим образом обрабатываются для генерации декодированных изображений, и декодированные изображения могут буферизоваться в схеме памяти (не показана) и в некоторых примерах использоваться в качестве опорных изображений.
[0079] Энтропийный кодер (625) выполнен с возможностью форматирования битового потока так, чтобы он включал в себя кодированный блок. Энтропийный кодер (625) выполнен с возможностью включать различную информацию согласно подходящему стандарту, например, стандарту HEVC. Например, энтропийный кодер (625) выполнен с возможностью включать общие данные управления, выбранную информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), информацию остатка и другую подходящую информацию в битовый поток. Заметим, что, согласно раскрытому изобретению, при кодировании блока в подрежиме слияния любого из интер-режима и режима двойного предсказания, информация остатка отсутствует.
[0080] На фиг. 7 показана схема видеодекодера (710) согласно другому варианту осуществления изобретения. Видеодекодер (710) выполнен с возможностью приема кодированных изображений, составляющих часть кодированной видеопоследовательности, и декодирования кодированных изображений для генерации реконструированных изображений. Например, видеодекодер (710) используется вместо видеодекодера (310) в примере, приведенном на фиг. 3.
[0081] В примере, приведенном на фиг. 7, видеодекодер (710) включает в себя энтропийный декодер (771), интер-декодер (780), декодер (773) остатка, модуль (774) реконструкции и интра-декодер (772), соединенные друг с другом как показано на фиг. 7.
[0082] Энтропийный декодер (771) может быть выполнен с возможностью реконструкции, из кодированного изображения, некоторых символов, которые представляют синтаксические элементы, образующие кодированное изображение. Такие символы могут включать в себя, например, режим кодирования блока (например, интра-режим, интер-режим, режим двойного предсказания, причем последние два в подрежиме слияния или другом подрежиме), информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, используемые для предсказания интра-декодером (772) или интер-декодером (780), соответственно, информацию остатка в форме, например, квантованных коэффициентов преобразования и т.п. Например, когда режим предсказания является режимом внутреннего или двойного предсказания, информация внешнего предсказания поступает на интер-декодер (780); а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания поступает на интра-декодер (772). Информация остатка может подвергаться обратному квантованию и поступать на декодер (773) остатка.
[0083] Интер-декодер (780) выполнен с возможностью приема информации внешнего предсказания и генерирования результатов внешнего предсказания на основании информации внешнего предсказания.
[0084] Интра-декодер (772) выполнен с возможностью приема информации внутреннего предсказания и генерирования результатов предсказания на основании информации внутреннего предсказания.
[0085] Декодер (773) остатка выполнен с возможностью осуществления обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (773) остатка также может требовать некоторой информации управления (включать параметр квантователя (QP, Quantizer Parameter)), и эта информация может обеспечиваться энтропийным декодером (771) (путь данных не показан, поскольку это может быть только информация управления малого объема).
[0086] Модуль (774) реконструкции выполнен с возможностью слияния, в пространственной области, остатка на выходе декодера (773) остатка и результатов предсказания (на выходе модулей внешнего или внутреннего предсказания, в зависимости от ситуации) для формирования реконструированного блока, который может входить в состав реконструированного изображения, которое, в свою очередь, может входить в состав реконструированного видео. Заметим, что другие подходящие операции, например, операция деблокирования и т.п., может осуществляться для повышения визуального качества.
[0087] Следует отметить, что видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любого подходящего метода. Согласно варианту осуществления, видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления видеокодеры (303), (503) и (503) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, которые выполняют программные инструкции.
[0088] Компенсация на основе блоков с другого изображения может называться компенсацией движения. Компенсация блоков также может быть выполнена из ранее реконструированной области в пределах одного и того же изображения, что может называться компенсацией блоков внутри изображения, внутренней копией блока (IBC, intra block сору) или ссылкой на текущее изображение (CPR, current picture referencing). Например, вектор смещения, который определяет смещение между текущим блоком и опорным блоком, называется вектором блока. В соответствии с некоторыми вариантами осуществления вектор блока указывает на опорный блок, который уже реконструирован и доступен для ссылки. Кроме того, для рассмотрения параллельной обработки опорная область, которая находится за пределами границы тайла/слайса или границы волнового фронта в форме лестницы, также может быть исключена из ссылки вектором блока. Из-за этих ограничений вектор блока может отличаться от вектора движения при компенсации движения, где вектор движения может иметь любое значение (положительное или отрицательное, в направлении х или у).
[0089] Кодирование вектора блока может быть явным или неявным. В явном режиме, который иногда называют режимом расширенного предсказания вектора движения (AMVP, Advanced Motion Vector Prediction) при взаимном кодировании передается разница между вектором блока и его предсказателем. В неявном режиме вектор блока восстанавливается из предсказателя вектора блока аналогично вектору движения в режиме слияния. Разрешение вектора блока в некоторых вариантах осуществления ограничено целочисленными позициями. В других вариантах осуществления разрешение вектора блока может указывать на дробные позиции.
[0090] Использование внутренней копии блока на уровне блока может сигнализироваться с использованием флага уровня блока, называемого флагом IBC. В одном из вариантов осуществления флаг IBC передается, когда текущий блок не кодируется в режиме слияния. Флаг IBC также может передаваться с помощью подхода с опорным индексом, который выполняется путем обработки текущего декодированного изображения в качестве опорного изображения. В кодировании содержимого экрана HEVC (SCC) такое опорное изображение помещается в последнюю позицию списка. Этим специальным опорным изображением также можно управлять вместе с другими временными опорными изображениями в DPB. IBC может также включать в себя такие варианты, как перевернутый IBC (например, опорный блок переворачивается горизонтально или вертикально перед использованием для предсказания текущего блока) или на основе строк (IBC) (например, каждая единица компенсации внутри блока кодирования mxN представляет собой строку Mx1 или 1xN).
[0091] На фиг. 8 представлен вариант компенсации блока внутри изображения (например, режим внутренней копии блока). На фиг. 8 текущее изображение 800 включает в себя набор областей блоков, которые уже были кодированы/декодированы (т.е. квадратов серого цвета), и набор областей блоков, которые еще предстоит кодировать/декодировать (т.е. квадратов белого цвета). Блок 802 одной из областей блока, которые еще предстоит кодировать/декодировать, может быть связан с вектором блока 804, который указывает на другой блок 806, который ранее был кодирован/декодирован. Соответственно, любая информация о движении, связанная с блоком 806, может использоваться для кодирования/декодирования блока 802.
[0092] В некоторых вариантах осуществления диапазон поиска режима CPR ограничен пределами текущей CTU. Эффективный требуемый объем памяти для хранения опорных отсчетов для режима CPR равен количеству отсчетов одной CTU. Принимая во внимание существующую память опорных отсчетов для хранения реконструированных отсчетов в текущей области 64x64, требуется еще 3 области памяти опорных отсчетов размером 64x64. Варианты осуществления настоящего изобретения расширяют эффективный диапазон поиска режима CPR до некоторой части левой CTU, в то время как общая потребность в памяти для хранения опорных пикселей остается неизменной (размер одной CTU, всего 4 64x64 опорных отсчета памяти).
[0093] На фиг. 9А верхняя левая область CTU 900 является текущей декодируемой областью. Когда верхняя левая область CTU 900 декодируется, запись [1] памяти опорных отсчетов перезаписывается отсчетами из этой области, как показано на фиг. 10А (например, перезаписанная ячейка (ячейки) памяти имеет диагональную штриховку). На фиг. 9В верхняя правая область CTU 900 является следующей текущей декодируемой областью. Когда верхняя правая область CTU 900 декодируется, запись [2] памяти опорных отсчетов перезаписывается отсчетами из этой области, как показано на фиг. 10В. На фиг. 9С нижняя левая область CTU 900 является следующей текущей декодируемой областью. Когда нижняя левая область CTU 900 декодируется, запись [3] памяти опорных отсчетов перезаписывается отсчетами из этой области, как показано на фиг. 10С. На фиг. 9D нижняя правая область CTU 900 является следующей текущей декодируемой областью. Когда нижняя правая область CTU 900 декодируется, запись [3] памяти опорных отсчетов перезаписывается отсчетами из этой области, как показано на фиг. 10D.
[0094] В некоторых вариантах осуществления условия соответствия битового потока предполагают, что допустимый вектор блоков (MVL, с разрешением 1/16 пикселя) должен соответствовать условиям, указанным ниже. В некоторых вариантах осуществления вектор движения яркости mvL подчиняется следующим ограничениям A1, А2, B1, С1 и С2.
[0095] В качестве первого ограничения (А1), при вызове процесса определения доступности блока (например, процесс проверки доступности соседних блоков) с текущим местоположением яркости (xCurr, yCurr), заданным равным (xCb, yCb) и соседним местоположением яркости (xCb + (mvL[0] >> 4) + cbWidth - 1, yCb + (mvL[1] >> 4) + cbHeight 1) в качестве входных данных, выход должен иметь значение TRUE.
[0096] В качестве второго ограничения (А2), при вызове процесса определения доступности блока (например, процесса проверки доступности соседних блоков) с текущим местоположением яркости (xCurr, yCurr), заданным равным (xCb, yCb) и соседним местоположением яркости (xCb + (mvL[0] >> 4) + cbWidth - 1, yCb + (mvL[1] >> 4) + cbHeight - 1) в качестве входных данных, выход должен иметь значение TRUE.
[0097] В третьем ограничении (В1) выполняется одно или оба из следующих условий:
(i) Значение (mvL[0] >> 4) + cbWidth меньше или равно 0.
(ii) Значение (mvL[1] >> 4) + cbHeight меньше или равно 0.
[0098] В четвертом ограничении (C1) выполняются следующие условия:
(i) (yCb + (mvL[1] >> 4)) >> CtbLog2SizeY = yCb >> CtbLog2SizeY
(ii) (yCb + (mvL[1] >> 4) + cbHeight - 1) >> CtbLog2SizeY = yCb >> CtbLog2SizeY
(iii) (xCb + (mvL[0] >> 4)) >> CtbLog2SizeY >= (xCb >> CtbLog2SizeY) - 1
(iv) (xCb + (mvL[0] >> 4) + cbWidth - 1) >> CtbLog2SizeY <= (xCb >> CtbLog2SizeY)
[0099] В пятом ограничении (C2), когда значение (xCb + (mvL[0] >> 4)) >> CtbLog2SizeY равно (xCb >> CtbLog2SizeY) - 1, процесс определения доступности блока (например, процесс проверки доступности соседних блоков) вызывается с текущим местоположением яркости (xCurr, yCurr), заданным равным (xCb, yCb), и соседним местоположением яркости (((xCb + (mvL[0] >> 4) + CtbSizeY) >> (CtbLog2SizeY - 1)) << (CtbLog2SizeY - 1), ((yCb + (mvL[1] >> 4)) >> (CtbLog2SizeY - 1)) << (CtbLog2SizeY - 1)) в качестве входных данных, а выход должен иметь значение FALSE.
[0100] В приведенных выше уравнениях xCb и yCb являются координатами х и у текущего блока, соответственно. Переменные cbHeight и Cbwidth - это высота и ширина текущего блока соответственно. Переменная CtbLog2sizeY относится к размеру CTU в области log2. Например, CtbLog2sizeY = 7 означает, что размер CTU составляет 128 х 128. Переменные mvL0[0] и mvL0[1] относятся к компонентам х и у вектора блока mvL0 соответственно. Если выход имеет значение FALSE, отсчеты для опорного блока определяются как доступные (например, соседний блок доступен для внутреннего копирования блока). Если выход имеет значение TRUE, отсчеты для опорного блока определяются как недоступные.
[0101] Согласно некоторым вариантам осуществления, метод MVP на основе истории (HMVP) включает в себя кандидата HMVP, который определяется как информация о движении ранее кодированного блока. Таблица с несколькими кандидатами HMVP заполняется в процессе кодирования/декодирования. Таблица очищается при обнаружении нового фрагмента. Всякий раз, когда имеется кодированный неаффинный блок, соответствующая информация о движении добавляется в последнюю запись таблицы в качестве нового кандидата HMVP. Поток кодирования метода HMVP показан на фиг. 11А.
[0102] Размер таблицы S установлен равным 6, что указывает на то, что в таблицу может быть добавлено до 6 кандидатов HMVP. При вставке нового кандидата на движение в таблицу используется ограниченное правило FIFO (в порядке очереди), такое что сначала применяется проверка избыточности, чтобы определить, есть ли в таблице идентичный HMVP. В случае обнаружения идентичный HMVP удаляется из таблицы, и все кандидаты на HMVP впоследствии перемещаются вперед, т.е. с индексами, уменьшенными на 1. На фиг. 11В показан пример вставки нового кандидата на движение в таблицу HMVP.
[0103] Кандидаты HMVP могут быть использованы в процессе построения списка кандидатов слияния. Последние несколько кандидатов HMVP в таблице проверяются по порядку и вставляются в список кандидатов после кандидата TMVP. Обрезка может быть применена к кандидатам HMVP применительно к кандидату на пространственное или временное слияние, исключая кандидата на движение подблока (т.е. ATMVP).
[0104] В некоторых вариантах осуществления, чтобы уменьшить количество операций обрезки, количество кандидатов HMPV, подлежащих проверке (обозначается L), устанавливается как L = (N <= 4) ? М: (8 - N), где N указывает количество доступных кандидатов на слияние без подблоков, а М указывает количество доступных кандидатов HMVP в таблице. Кроме того, как только общее число доступных кандидатов на слияние достигнет обозначенного максимально допустимого числа кандидатов на слияние минус 1, процесс построения списка кандидатов на слияние из списка HMVP завершается. Кроме того, количество пар для комбинированного вывода кандидатов на слияние с двойным предсказанием сокращено с 12 до 6.
[0105] Кандидаты HMVP также могут быть использованы в процессе составления списка кандидатов AMVP. Векторы движения последних К кандидатов HMVP в таблице вставляются после кандидата TMVP. Для построения списка кандидатов AMVP используются только кандидаты HMVP с тем же опорным изображением, что и целевое опорное изображение AMVP. Обрезка применяется к кандидатам HMVP. В некоторых применениях значение К равно 4, в то время как размер списка AMVP остается неизменным, т.е. равным 2.
[0106] В соответствии с некоторыми вариантами осуществления, когда внутреннее копирование блока используется как отдельный режим, отдельный буфер истории, называемый HBVP, может использоваться для хранения ранее кодированных векторов блока внутренней копии блока. В качестве отдельного режима желательно иметь упрощенный процесс получения вектора блока для режима внутренней копии блока. Список кандидатов для предсказания IBC BV в режиме AMVP может совместно использоваться в режиме слияния IBC (список кандидатов на слияние) с 2 пространственными кандидатами + 5 кандидатами HBVP.
[0107] Размер списка кандидатов на слияние в режиме IBC может быть назначен как MaxNumMergeCand. Значение MaxNumMergeCand может определяться значением MaxNumMergeCand для списка кандидатов на слияние между режимами, которое в некоторых примерах указано как six_minus_max_num_merge_cand. Переменная six_minus_max_num_merge_cand может указывать максимальное число кандидатов на предсказание вектора движения слияния (MVP), поддерживаемых в слайсе, вычитаемое из 6.
[0108] В некоторых примерах максимальное число кандидатов на слияние MVP, полученное MaxNumMergeCand, может быть получено как:
[0109] Значение MaxNumMergeCand может находиться в диапазоне от 1 до 6 включительно. Предсказание BV в режиме без слияния может использовать тот же самый список, сгенерированный для режима слияния IBC. Однако в некоторых примерах для случая, не связанного с режимом слияния, размер списка кандидатов всегда равен 2. Соответственно, необходимо разработать надлежащие методы для обработки размера списка кандидатов на слияние IBC, а также размера списка предсказателей в режиме без слияния IBC (режим AMVP), когда значение MaxNumMergeCand принимает разные значения, а максимальное число списков кандидатов на слияние IBC устанавливается по-другому по сравнению с размером списка кандидатов на слияние.
[0110] Варианты осуществления настоящего изобретения могут использоваться отдельно или комбинироваться в любом порядке. Кроме того, каждый из способов, кодер и декодер в соответствии с вариантами осуществления настоящего изобретения могут быть реализованы с помощью схем обработки (например, одного или нескольких процессоров или одной или нескольких интегральных схем). В одном из примеров один или несколько процессоров выполняют программу, которая хранится на компьютерно-считываемом носителе. В соответствии с некоторыми вариантами осуществления термин "блок" может интерпретироваться как блок предсказания, блок кодирования или единица кодирования (т.е. CU). Когда обсуждается режим слияния, режим пропуска может рассматриваться как специальный режим слияния. Все раскрытые варианты осуществления для режима слияния также могут быть применены к режиму пропуска.
[0111] В некоторых вариантах осуществления, когда MaxNumMergeCand для режима взаимного слияния сигнализируется как 1, соответствующий размер списка кандидатов на слияние для IBC равен 1, что может вызвать нежелательное поведение, особенно когда режим AMVP IBC также использует тот же список кандидатов для предсказания BV. В этой ситуации ожидается, что список кандидатов будет содержать не менее двух записей (для режима AMVP предусмотрено два предсказателя). Варианты осуществления настоящего изобретения устраняют эти проблемы.
[0112] Согласно некоторым вариантам осуществления, в первом способе размер списка слияния для режима IBC составляет по меньшей мере М, где М - целое число. В некоторых вариантах осуществления размер списка слияния для IBC, MaxNumIBCMergeCand, задается равным следующему:
[0113] В одном из вариантов осуществления М задается равным 1, чтобы гарантировать по меньшей мере 1 кандидата для режима слияния IBC. В другом варианте осуществления М задается равным 2, чтобы гарантировать по меньшей мере 2 кандидатов для режима слияния IBC. Кроме того, режим AMVP IBC, совместно использующий тот же список кандидатов, что и режим слияния IBC, может гарантировать, что в списке кандидатов для предсказания BV в режиме AMVP будет две записи. В другом варианте осуществления, когда режим AMVP IBC использует тот же список кандидатов, что и режим слияния IBC, М задается равным 1, если текущая CU кодируется в режиме слияния IBC, и М задается равным 2, когда текущая CU кодируется в режиме AMVP IBC.
[0114] В соответствии с некоторыми вариантами осуществления, во втором способе индекс режима слияния IBC (т.е. merge_idx) передается только тогда, когда размер списка кандидатов на слияние для IBC превышает 1. В этом втором способе сначала определяется размер списка кандидатов на слияние для IBC (т.е. MaxNumIBCMergeCand), из чего следует, что переменная MaxNumIBCMergeCand для IBC может отличаться от MaxNumMergeCand для режима внутреннего предсказания.
[0115] В некоторых вариантах осуществления, если рассматривается только размер кандидата на слияние для IBC, применяется следующее:
Когда значение general_merge_flag равно true:
[0116] В некоторых вариантах осуществления, если значение MaxNumIBCMergeCand равно MaxNumMergeCand-1, применяется следующее:
Когда значение merge_flag равно true:
[0117] В некоторых вариантах осуществления, если в режиме AMVP IBC используется тот же список кандидатов, что и в режиме слияния IBC, ожидается, что список кандидатов для предсказания BV в режиме AMVP будет содержать не менее двух записей. Для поддержки этого условия можно выполнить следующее назначение для размера списка кандидатов на слияние для IBC:
MaxNumIBCMergeCand = max(MaxNumMergeCand, 2).
[0118] Поскольку MaxNumIBCMergeCand >=2 гарантируется в этом варианте осуществления, передача merge_idx не должна зависеть от размера списка кандидатов на слияние, MaxNumMergeCand. Один из примеров таблицы синтаксиса выглядит следующим образом:
[0119] Согласно некоторым вариантам осуществления, в третьем способе сигнализируется отдельный размер списка кандидатов на слияние для IBC, и диапазон этого размера, MaxNumIBCMergeCand, составляет по меньшей мере М, где М целое число. В этом третьем способе размер списка кандидатов на слияние для IBC, MaxNumIBCMergeCand, может сигнализироваться из отдельного элемента синтаксиса.
В одном из вариантов осуществления диапазон значений MaxNumIBCMergeCand составляет от 2 до MaxNumMergeCand.
[0120] Ниже приведен один из вариантов способа сигнализации третьего способа. В некоторых примерах MaxNumIBCMergeCand <= MaxNumMergeCand. На уровне изображения или слайса,
[0121] Переменная max_num_merge_cand_minus_max_num_ibc_cand указывает, в одном из примеров, максимальное число кандидатов в режиме слияния IBC, поддерживаемых в слайсе, вычитаемое из MaxNumMergeCand. Максимальное число кандидатов в режим слияния IBC, MaxNumIBCMergeCand, может быть получено следующим образом:
[0122] Когда присутствует значение max_num_merge_cand_minus_max_num_ibc_cand, значение MaxNumIBCMergeCand в некоторых примерах находится в диапазоне от 2 до MaxNumMergeCand включительно. Если значение max_num_merge_cand_minus_max_num_ibc_cand отсутствует, в некоторых примерах значение MaxNumIBCMergeCand равно 0. Если значение MaxNumIBCMergeCand равно 0, в некоторых примерах режим слияния IBC не разрешен для текущего слайса.
[0123] В некоторых вариантах осуществления на уровне CU, если выполняются все следующие условия, MergeIBCFlagf[х0][у0] задается равным 1:
(i) значение sps_ibc_enabled_flag равно 1.
(ii) значение general_merge_flagf[х0][у0] равно 1.
(iii) CuPredMode[х0][у0] равно MODE_IBC.
(iv) MaxNumIBCMergeCand больше или равно 2.
[0124] Переменная merge_ibc_idx является индексом для списка кандидатов на слияние IBC, который в некоторых примерах варьируется от 0 до MaxNumIBCMergeCand 1. Если MaxNumIBCMergeCand больше, чем MaxNumMergeCand, приведенный выше вариант в отношении уровня CU не соответствует действительности.
[0125] В некоторых вариантах осуществления сначала передается skip_flag или general_merge_flag. Чтобы убедиться, что их можно использовать должным образом, следует наложить ограничение таким образом, чтобы эти флаги не передавались или были только ложными в том случае, если выбран режим IBC, и размер списка кандидатов на слияние меньше желаемого минимального числа М, например М=2. В одном варианте осуществления, когда MaxNumIBCMergeCand меньше 2, режим слияния IBC или режим пропуска не используется. Если флаг режима пропуска передается перед флагом IBC уровня блока, то на передачу флага IBC может быть наложено ограничение, такое что, когда значение skip_flag равно true, флаг IBC не передается и считается ложным. В другом примере, если флаг режима пропуска передается перед флагом IBC уровня блока, флаг IBC передается, но все равно считается ложным.
[0126] В некоторых вариантах осуществления, если флаг IBC уровня блока передается перед general_merge_flag, то на передачу general_merge_flag накладывается ограничение, такое что, когда флаг IBC имеет значение true, general_merge_flag не передается и считается ложным, или general_merge_flag передается, но считается ложным. Пример таблицы синтаксиса выглядит следующим образом:
[0127] Когда CuPredMode[х0][у0] = = MODE_IBC и MaxNumIBCMergeCand < 2, general_merge_flag[х0][у0] в некоторых примерах полагается равным 0.
[0128] Согласно некоторым вариантам осуществления, в четвертом способе размер списка слияния для режима IBC составляет по меньшей мере М и по большей мере N, где М и N - целые числа, причем М<N. В этом четвертом способе размер списка слияния для IBC, MaxNumIBCMergeCand, может быть установлен следующим образом:
[0129] В одном из вариантов осуществления М задается равным 2, поэтому существует по меньшей мере 2 кандидата для режима слияния IBC. В другом варианте осуществления N задается равным 5, поэтому существует не более 5 кандидатов для режима слияния IBC.
[0130] Согласно некоторым вариантам осуществления, в пятом способе максимальное число кандидатов предсказателя IBC MaxNumIBCCand указывается в битовых потоках, например, в заголовке слайса. Это число может использоваться как для слияния IBC, так и для AMVP IBC. Индекс слияния IBC и индекс предсказателя AMVP IBC могут передаваться с использованием одного и того же флага синтаксиса (индекс кандидата) с усеченным унарным кодом и (MaxNumIBCCand - 1), являющимся максимальным значением усеченного унарного кода.
[0131] Согласно некоторым вариантам осуществления, в шестом варианте осуществления, независимо от того, равны ли MaxNumIBCMergeCand и MaxNumMergeCand, когда MaxNumIBCMergeCand равно 1, mvp idx (mvp_10_flag) для режима AMVP IBC не передается. Таким образом, в соответствии с шестым способом, если размер предсказателя BV равен 1 (определяется MaxNumIBCMergeCand = 1), то для режима AMVP IBC будет существовать только 1 кандидат предсказателя. Когда возникает такая ситуация, индекс этого предсказателя не требуется передавать.
[0132] Приведенный ниже синтаксис является примером варианта осуществления в соответствии со способом 6.
[0133] Фиг. 12 иллюстрирует вариант осуществления процесса декодирования видеосигнала, выполняемого видеодекодером, таким как видеодекодер (710). Процесс может начинаться на этапе (S1200), на котором принимается кодированный битовый видеопоток, включающий текущее изображение. Процесс переходит к этапу (S1202), чтобы определить, кодирован ли текущий блок в текущем изображении в режиме IBC. Если текущий блок кодирован в режиме IBC, процесс переходит от этапа (S1202) к этапу (S1204), чтобы определить число кандидатов предсказателя IBC для текущего блока. Например, число кандидатов предсказателя IBC может быть определено в соответствии с одним из способов (с первого по шестой), описанных выше. Процесс переходит к этапу (S1206), на котором создается список кандидатов предсказателя IBC, размер которого соответствует числу кандидатов предсказателя IBC. Процесс переходит к этапу (S1208), на котором предсказатель вектора блока выбирается из списка кандидатов предсказателя IBC. Процесс переходит к этапу (S1210), на котором вектор блока, связанный с текущим блоком, декодируется с использованием предсказателя вектора блока. Процесс переходит к этапу (S1212), на котором текущий блок декодируется в соответствии с вектором блока, который был декодирован на предыдущем шаге. Например, может быть выбран предсказатель вектора блока из списка кандидатов предсказателя IBC, вектор блока может быть декодирован с использованием выбранного предсказателя вектора блока, и декодирование IBC выполняется для текущего блока с использованием вектора блока. В связи с этим вектор блока, связанный с выбранным кандидатом, используется для указания на другой блок в текущем изображении, который используется для декодирования текущего блока.
[0134] Возвращаясь к этапу (S1202), если текущий блок не кодирован в режиме IBC, процесс переходит к этапу (S1214), на котором текущий блок декодируется в соответствии с режимом кодирования текущего блока. Например, текущий блок может быть декодирован на основе режима внутреннего предсказание или режима внешнего предсказания. Процесс, показанный на фиг. 12, может завершиться после завершения этапов (S1212) и (S1214).
[0135] Вышеописанные способы могут быть реализованы в виде компьютерного программного обеспечения, использующего компьютерно-считываемые инструкции и физически хранящегося на одном или более компьютерно-считываемых носителях. Например, на фиг. 13 показана компьютерная система (1300), пригодная для реализации некоторых вариантов осуществления раскрытого изобретения.
[0136] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую, или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing units), графическими процессорами (GPU, Graphics Processing Units) и т.п.
[0137] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0138] Компоненты компьютерной системы (1300), показанные на фиг. 13, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым одним или комбинацией компонентов, показанных в иллюстративном варианте осуществления компьютерной системы (1300).
[0139] Компьютерная система (1300) может включать в себя некоторые устройства ввода интерфейса с человеком. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двухмерного видео, трехмерного видео, включающего в себя стереоскопическое видео).
[0140] Устройства ввода человеческого интерфейса могут включать в себя одно или несколько (только одно из каждого изображенного): клавиатуру (1301), мышь (1302), трекпад (1303), сенсорный экран (1310), перчатку для передачи данных (не показана), джойстик (1305), микрофон (1306), сканер (1307), камеру (1308).
[0141] Компьютерная система (1300) также может включать в себя некоторые устройства вывода интерфейса с человеком. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать в себя устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (1310), информационной перчатки (не показана) или джойстика (1305), но также могут быть устройствами тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: громкоговорители (1309), наушники (не показаны)), устройства визуального вывода (например, экраны (1310), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из которых способны к двухмерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографического вывода; очков виртуальной реальности (не показаны), голографических дисплеев и дымовых баков (не показаны)) и принтеров (не показаны).
[0142] Компьютерная система (1300) также может включать в себя доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие в себя CD/DVD ROM/RW (1320) с носителями (1321) CD/DVD и т.п., карты (1322) флэш-памяти, сменный жесткий диск или твердотельный диск (1323), традиционные магнитные носители, например, ленту и флоппи-диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.
[0143] Специалисты в данной области техники также должны понимать, что термин "компьютерно-считываемые носители", используемый в связи с раскрытым здесь изобретением, не охватывает среды передачи, несущие волны или другие кратковременные сигналы.
[0144] Компьютерная система (1300) также может включать в себя интерфейс к одной или более сетям связи. Сети могут, например, быть беспроводными, проводными, оптическими. Сети могут быть, дополнительно, локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают в себя локальные сети, например, Ethernet, беспроводные LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные включают в себя CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (1349) (например, USB-порты компьютерной системы (1300)); другие обычно встраиваются в ядро компьютерной системы (1300) путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1300) может взаимодействовать с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.
[0145] Вышеупомянутые устройства человеческого интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (1340) компьютерной системы (1300).
[0146] Ядро (1340) может включать один или несколько центральных процессоров (CPU) (1341), графические процессоры (GPU) (1342), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Arrays) (1343), аппаратные ускорители (1344) для некоторых задач и т.д. Эти устройства, совместно с постоянной памятью (ROM) (1345), оперативной памятью (1346), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками, недоступными пользователю, SSD и т.п. (1347), могут соединяться посредством системной шины (1348). В некоторых компьютерных системах системная шина (1348) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (1348) ядра, либо через периферийную шину (1349). Архитектуры периферийной шины включают в себя PCI, USB и т.п.
[0147] CPU (1341), GPU (1342), FPGA (1343) и ускорители (1344) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM (1345) или RAM (1346). Переходные данные также могут храниться в оперативной памяти (1346), тогда как постоянные данные могут храниться, например, во внутреннем накопителе (1347). Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с один или более CPU (1341), GPU (1342), хранилищем (1347) данных большой емкости, ROM (1345), RAM (1346) и т.п.
[0148] На компьютерно-считываемых носителях может храниться компьютерный код для осуществления различных компьютерно-реализуемых операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.
[0149] В порядке примера, но не ограничения, компьютерная система, имеющая архитектуру (1300), и, в частности, ядро (1340) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных компьютерно-считываемых носителей. Такие компьютерно-считываемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым хранилищем ядра (1340), носящим долговременный характер, например, внутренним хранилищем (1347) данных большой емкости или ROM (1345). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (1340). Компьютерно-считываемый носитель может включать в себя одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (1340) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные процессы или конкретные части описанных здесь конкретных процессов, включая задание структур данных, хранящихся в RAM (1346), и модификацию таких структур данных согласно процессам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (1344)), который может действовать вместо или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей описанных здесь конкретных процессов. Ссылка на программное обеспечение может охватывать логику, и наоборот, где это уместно. Ссылка на компьютерно-считываемые носители может охватывать схему (например, интегральную схему (IC, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе из них, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию оборудования и программного обеспечения.
Приложение А: Сокращения
JEM: модель совместного исследования
VVC: универсальное видеокодирование
BMS: набор эталонов
MV: вектор движения
HEVC: высокоэффективное видеокодирование
SEI: информация дополнительного улучшения
VUI: информация о пригодности видео
GOP: группа изображений
TU: единица преобразования,
PU: единица предсказания
CTU: единица дерева кодирования
СТВ: блок дерева кодирования
РВ: блок предсказания
HRD: гипотетический эталонный декодер
SNR: отношение сигнал/шум
CPU: центральный процессор
GPU: графический процессор
CRT: электронно-лучевая трубка
LCD: жидкокристаллический дисплей
OLED: органический светодиод
CD: компакт-диск
DVD: цифровой видеодиск
ROM: постоянная память
RAM: оперативная память
ASIC: специализированная интегральная схема
PLD: программируемое логическое устройство
LAN: локальная сеть
GSM: глобальная система мобильной связи
LTE: проект долгосрочного развития систем связи
CANBus: шина контроллерной сети
USB: универсальная последовательная шина
PCI: межсоединение периферийных компонентов
FPGA: вентильные матрицы, программируемые пользователем
SSD: твердотельный накопитель
IC: интегральная схема
CU: единица кодирования
[0150] Хотя здесь описано несколько иллюстративных вариантов осуществления, возможны изменения, перестановки и различные эквиваленты для замены, которые находятся в объеме изобретения. Таким образом, специалисты в данной области техники могут предложить многочисленные системы и способы, которые, хотя в явном виде здесь не показаны и не описаны, воплощают принципы изобретения и, таким образом, соответствуют его сущности и объему.
[0151] (1) Способ видеодекодирования включает в себя прием кодированного битового видеопотока, включающего текущее изображение; определение того, кодирован ли текущий блок, включенный в текущее изображение, в режиме внутренней копии блока (IBC); в ответ на текущий блок, кодируемый в режиме IBC, определение числа кандидатов предсказателя IBC, связанных с текущим блоком; построение списка кандидатов предсказателя IBC, размер которого соответствует числу кандидатов предсказателя IBC; выбор предсказателя вектора блока из списка кандидатов предсказателя IBC; декодирование вектора блока, связанного с текущим блоком, с использованием предсказателя вектора блока; и декодирование текущего блока в соответствии с вектором блока.
[0152] (2) Способ по п. (1), в котором число кандидатов предсказателя IBC больше или равно М и меньше или равно N, где М равно 2.
[0153] (3) Способ по п. (2), в котором N равно 5.
[0154] (4) Способ по п. (2), в котором число кандидатов предсказателя IBC равно: max (М, min (MaxNumMergeCand, N)), где MaxNumMergeCand равно числу кандидатов в списке режима слияния.
[0155] (5) Способ по любому из п. (1)-(4), в котором информация о числе кандидатов предсказателя IBC передается в битовом потоке.
[0156] (6) Способ по п. (5), в котором информация о числе кандидатов предсказателя IBC передается с использованием усеченного унарного кода, при этом число кандидатов предсказателя IBC минус один является максимальным значением.
[0157] (7) Способ по любому из п. (1)-(6), в котором, когда число кандидатов предсказателя IBC равно 1, индекс, связанный с выбором предсказателя вектора блока IBC, не передается.
[0158] (8) Видеодекодер для выполнения видеодекодирования, включающий схему обработки, выполненную с возможностью: приема битового потока кодированного видео, включающего текущее изображение, определения того, кодирован ли текущий блок, включенный в текущее изображение, в режиме внутренней копии блока (IBC), в ответ на текущий блок, кодируемый в режиме IBC, определения числа кандидатов предсказателя IBC, связанных с текущим блоком, построения списка кандидатов предсказателя IBC, имеющего размер, соответствующий числу кандидатов предсказателя IBC, выбора предсказателя вектора блока из списка кандидатов предсказателя IBC, декодирования вектора блока, связанного с текущим блоком, с использованием предсказателя вектора блока и декодирования текущего блока в соответствии с вектором блока.
[0159] (9) Видеодекодер по п. (8), в котором число кандидатов предсказателя IBC больше или равно М и меньше или равно N, где М равно 2.
[0160] (10) Видеодекодер по п. (9), в котором N равно 5.
[0161] (11) Видеодекодер по п. (9), в котором число кандидатов предсказателя IBC равно: max (М, min (MaxNumMergeCand, N)), где MaxNumMergeCand равно числу кандидатов в списке режима слияния.
[0162] (12) Видеодекодер по любому из п. (8)-(11), в котором информация о числе кандидатов предсказателя IBC передается в битовом потоке.
[0163] (13) Видеодекодер по п. (12), в котором информация о числе кандидатов предсказателя IBC передается с использованием усеченного унарного кода, при этом число кандидатов предсказателя IBC минус один является максимальным значением.
[0164] (14) Видеодекодер по любому из п. (8)-(13), в котором, когда число кандидатов предсказателя IBC равно 1, индекс, связанный с выбором предсказателя вектора блока IBC, не передается.
[0165] (15) Компьютерно-считываемый носитель, на котором хранятся инструкции, которые, при выполнении процессором в видеодекодере, заставляют процессор выполнять способ, включающий в себя: прием кодированного битового видеопотока, включающего текущее изображение; определение, кодирован ли текущий блок, включенный в текущее изображение, в режиме внутренней копии блока (IBC); в ответ на текущий блок, кодируемый в режиме IBC, определение числа кандидатов на предсказание IBC, связанных с текущим блоком; построение списка кандидатов предсказателя IBC, имеющего размер, соответствующий числу кандидатов предсказателя IBC; выбор предсказателя вектора блока из списка кандидатов предсказателя IBC; декодирование вектора блока, связанного с текущим блоком, с использованием предсказателя вектора блока; и декодирование текущего блока в соответствии с вектором блока.
[0166] (16) Компьютерно-считываемый носитель по п. (15), в котором число кандидатов предсказателя IBC больше или равно М и меньше или равно N, где М равно 2.
[0167] (17) Компьютерно-считываемый носитель по п. (16), в котором N равно 5.
[0168] (18) Компьютерно-считываемый носитель по п. (16), в котором число кандидатов предсказателя IBC равно: max (М, min (MaxNumMergeCand, N)), где MaxNumMergeCand равно числу кандидатов в списке режима слияния.
[0169] (19) Компьютерно-считываемый носитель по п. (15), в котором информация о числе кандидатов предсказателя IBC передается в битовом потоке.
[0170] (20) Компьютерно-считываемый носитель по п. (19), в котором информация о числе кандидатов предсказателя IBC передается с использованием усеченного унарного кода, при этом число кандидатов предсказателя IBC минус один является максимальным значением.