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

ВКЛЮЧЕНИЕ ПОСРЕДСТВОМ ССЫЛКИ
[0001] Настоящее изобретение испрашивает приоритет патентной заявки США №16/911,256, "Method and Apparatus for Video Coding", поданной 24 июня 2020 г., которая испрашивает приоритет предварительной заявки США №62/867,658, "History Based Block Vector Prediction for Intra Picture Block Compensation", поданной 27 июня 2019 г. Содержание предыдущих заявок, таким образом, включено посредством ссылки в полном объеме.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] В настоящей заявке описаны варианты осуществления, в целом относящиеся к видеокодированию.
УРОВЕНЬ ТЕХНИКИ
[0003] Описание уровня техники приведено здесь с целью представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники, лежащим в основе настоящего изобретения.
[0004] Кодирование и декодирование видеосигнала может осуществляться с использованием предсказания между изображениями с компенсацией движения. Цифровое видео без сжатия может включать в себя последовательность изображений, каждое из которых имеет пространственный размер, например, 1920×1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. Видео без сжатия предъявляет значительные требования к битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920×1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с.Час такого видео требует объема памяти более 600 ГБ.
[0005] Одной целью кодирования и декодирования видеосигнала может быть снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе или объему памяти, в ряде случаев на два порядка величины или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так чтобы реконструированный сигнал можно было использовать для намеченного применения. Сжатие с потерями широко применяется для видео. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями, чем пользователи телевещательных приложений. Достижимая степень сжатия может отражать, что более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.
[0006] Компенсация движения может представлять собой метод сжатия с потерями и может относятся к методам, где блок данных отсчетов из ранее реконструированного изображения или его части (опорного изображения), подвергнутый пространственному сдвигу в направлении, указанном вектором движения (далее MV, motion vector), используется для предсказания вновь реконструированного изображения или части изображения. В ряде случаев опорное изображение может быть идентично реконструируемому в данный момент изображению. MV могут иметь два измерения X и Y или три измерения, причем третье указывает используемое опорное изображение (последнее, косвенно, может быть временным измерением).
[0007] В некоторых методах сжатия видео, MV, применимый к определенной области данных отсчетов, можно предсказывать из других MV, например, связанных с другой областью данных отсчетов, пространственно соседствующих с реконструируемой областью, и предшествующих этому MV в порядке декодирования. Это позволяет существенно сократить объем данных, необходимый для кодирования MV, тем самым устраняя избыточность и повышая степень сжатия. Предсказание MV может работать эффективно, например, благодаря тому, что при кодировании входного видеосигнала, полученного от камеры (известного как естественное видео) существует статистическая вероятность того, что области, более обширные, чем область, к которой применим один-единственный MV, движутся в аналогичном направлении, и поэтому в ряде случаев могут предсказываться с использованием аналогичного вектора движения, полученного из MV соседней области. В результате MV, найденный для данной области, оказывается аналогичным или идентичным MV, предсказанному из окружающих MV, и который, в свою очередь, может быть представлен, после энтропийного кодирования, меньшим количеством битов, чем использовалось бы при кодировании MV напрямую. В ряде случаев, предсказание MV может служить примером сжатия без потерь сигнала (а именно, MV), полученного из исходного сигнала (а именно: потока отсчетов). В других случаях предсказание MV само может быть с потерями, например, ввиду ошибок округления при вычислении предсказателя из нескольких окружающих MV.
[0008] Различные механизмы предсказания MV описаны в H.265/HEVC (ITU-T Rec. Н.265, "High Efficiency Video Coding", декабрь 2016 г.). Из множества механизмов предсказания MV, предлагаемых в Н.265, здесь описан метод далее именуемый "пространственным объединением" (spatial merge).
[0009] Согласно фиг. 1, текущий блок (101) содержит отсчеты, найденные кодером в процессе поиска движения, для предсказания из предыдущего блока того же размера, который был пространственно сдвинут. Вместо того, чтобы кодировать этот MV напрямую, MV можно получить из метаданных, связанных с одним или более опорными изображениями, например, из самого последнего (в порядке декодирования) опорного изображения, с использованием MV, связанного с любым из пяти окружающих отсчетов, обозначенных А0, А1, и В0, B1, В2 (102-106, соответственно). В Н.265 предсказание MV может использовать предсказатели из того же опорного изображения, которое использует соседний блок.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0010] Аспекты изобретения предусматривают способы и устройства для кодирования/декодирования видеосигнала. В некоторых примерах устройство для видеодекодирования включает в себя схему обработки. Схема обработки может быть выполнена с возможностью приема данных текущего блока, кодированного в режиме интра-блочного копирования (IBC, intra block сору) в битовом потоке. Вектор блока для текущего блока может определяться на основании таблицы предсказания вектора блока на исторической основе (HBVP, history-based block vector prediction), которая включает в себя одну или более записей, каждая из которых соответствует ранее декодированному блоку. Каждая запись может включать в себя вектор блока соответствующего ранее декодированного блока и местоположение соответствующего ранее декодированного блока. Текущий блок может реконструироваться на основании определенного вектора блока для текущего блока. Согласно варианту осуществления, вектор блока, положение, ширина и высота текущего блока хранятся в таблице HBVP.
[0011] Дополнительно, каждая запись может включать в себя координату х и координату у угла соответствующего ранее декодированного блока. В дополнительном варианте осуществления, каждая запись может включать в себя одну из позиций угла соответствующего ранее декодированного блока и ширину и высоту соответствующего ранее декодированного блока.
[0012] Согласно варианту осуществления, схема может быть выполнена с возможностью построения списка кандидатов для предсказания вектора блока (BVP, block vector prediction) на основании таблицы HBVP. Список кандидатов для BVP может включать в себя один или более из первого кандидата и второго кандидата. Первый кандидат может включать в себя первый вектор блока из векторов блока в таблице HBVP. Соответствующий ранее декодированный блок первого вектора блока расположен слева от текущего блока. Второй кандидат может включать в себя второй вектор блока из векторов блока в таблице HBVP. Соответствующий ранее декодированный блок второго вектора блока имеет положение сверху от текущего блока.
[0013] Схема выполнена с возможностью классификации записей в таблице HBVP в разные группы, каждая из которых хранится в классификационной таблице HBVP. В примере, одна из записей таблицы HBVP сохраняется в одной из классификационных таблиц HBVP, когда размер соответствующего ранее декодированного блока одной из записей таблицы HBVP удовлетворяет условию размера блока. Условие размера блока может состоять в том, что количество отсчетов яркости соответствующего ранее декодированного блока одной из записей таблицы HBVP больше или равно порогу.
[0014] В дополнительном примере, записи в таблице HBVP классифицируются в классификационные таблицы HBVP на основании координаты х, координаты у или комбинации координат х и у каждого из соответствующих ранее декодированных блоков, хранящихся в таблице HBVP.
[0015] Согласно варианту осуществления, принимается индекс, указывающий одну из классификационных таблиц HBVP. Одна запись выбирается из указанных классификационных таблиц HBVP, которые соответствуют самому последнему декодированному блоку из ранее декодированных блоков одной или более записей в указанных классификационных таблицах HBVP. Вектор блока выбранной одной записи используется как предсказатель вектора блока для вектора блока для текущего блока.
[0016] Согласно варианту осуществления, строится список кандидатов для BVP. Список кандидатов для BVP включает в себя один или более кандидатов BVP, каждый из которых включает в себя вектор блока, выбранный из классификационных таблиц HBVP. кандидат BVP можно выбирать из списка кандидатов для BVP в качестве предсказателя вектора блока для вектора блока для текущего блока на основании индекса, принятого от битового потока. В различных вариантах осуществления, текущий блок может кодироваться в одном из режима пропуска, режима объединения и режима усовершенствованного предсказания вектора движения (AMVP, advanced motion vector prediction).
[0017] Аспекты изобретения также предусматривают компьютерно-считываемый носитель, где хранятся инструкции, которые, при выполнении компьютером для видеодекодирования, предписывают компьютеру осуществлять описанный способ видеодекодирования.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0018] Дополнительные особенности, характер и различные преимущества раскрытого изобретения будут понятны из нижеследующего подробного описания и прилагаемых чертежей, на которых:
[0019] фиг. 1 - схема текущего блока и окружающих его кандидатов на пространственное объединение в одном примере;
[0020] фиг. 2 - упрощенная блок-схема системы (200) связи в соответствии с вариантом осуществления;
[0021] фиг. 3 - упрощенная блок-схема системы (300) связи в соответствии с вариантом осуществления;
[0022] фиг. 4 - упрощенная блок-схема декодера в соответствии с вариантом осуществления;
[0023] фиг. 5 - упрощенная блок-схема кодера в соответствии с вариантом осуществления;
[0024] фиг. 6 - блок-схема кодера в соответствии с другим вариантом осуществления;
[0025] фиг. 7 - блок-схема декодера в соответствии с другим вариантом осуществления;
[0026] фиг. 8 - пример компенсации внутри блока изображения;
[0027] фиг. 9A-9D - пример компенсации внутри блока изображения с памятью размером в одну CTU для хранения реконструированных отсчетов;
[0028] фиг. 10 - пример кандидатов на пространственное объединение текущего блока (1010);
[0029] фиг. 11 - блок-схема операций процесса (1100) согласно некоторым вариантам осуществления изобретения;
[0030] фиг. 12 - схема компьютерной системы в соответствии с вариантом осуществления.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0031] I. Кодер и декодер для видео кодирования
[0032] На фиг. 2 показана упрощенная блок-схема системы (200) связи согласно варианту осуществления настоящего изобретения. Система (200) связи включает в себя множество оконечных устройств, которые могут осуществлять связь друг с другом, например, через сеть (250). Например, система (200) связи включает в себя первую пару оконечных устройств (210) и (220), соединенных между собой через сеть (250). В примере, приведенном на фиг. 2, первая пара оконечных устройств (210) и (220) осуществляет однонаправленную передачу данных. Например, оконечное устройство (210) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством (210)), для передачи в другое оконечное устройство (220) через сеть (250). Кодированные видеоданные могут передаваться в форме одного или более битовых потоков кодированного видео. Оконечное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и отображения видеоизображений согласно восстановленным видеоданным. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.
[0033] В другом примере, система (200) связи включает в себя вторую пару оконечных устройств (230) и (240) которые осуществляют двунаправленную передачу кодированных видеоданных, которые могут возникать, например, в ходе видеоконференцсвязи. Для двунаправленной передачи данных, в порядке примера, каждое оконечное устройство из оконечных устройств (230) и (240) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством) для передачи в другое оконечное устройство из оконечных устройств (230) и (240) через сеть (250). Каждое оконечное устройство из оконечных устройств (230) и (240) также может принимать кодированные видеоданные, передаваемые другим оконечным устройством из оконечных устройств (230) и (240), и может декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения на доступном устройстве отображения согласно восстановленным видеоданным.
[0034] В примере, приведенном на фиг. 2, оконечные устройства (210), (220), (230) и (240) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. Варианты осуществления настоящего изобретения находят применение для портативных компьютеров, планшетных компьютеров, медиаплееров и/или специального оборудования для видеоконференцсвязи. Сеть (250) представляет любое количество сетей, которые переносят кодированные видеоданные между оконечными устройствами (210), (220), (230) и (240), включая, например, проводные и/или беспроводные сети связи. Сеть (250) связи позволяет обмениваться данными в режиме канальной коммутации и/или пакетной коммутации. Иллюстративные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или интернет. В целях настоящего рассмотрения, архитектура и топология сети (250) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.
[0035] На фиг. 3 показано, в порядке примера применения раскрытого изобретения, размещение видеокодера и видеодекодера в окружении потоковой передачи. Раскрытое изобретение может быть в равной степени применимо к другим применениям обработки видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, в том числе CD, DVD, карте памяти и т.п., и т.д.
[0036] Система потоковой передачи может включать в себя подсистему (313) захвата, которая может включать в себя источник (301) видеосигнала, например, цифровую камеру, создающую, например, поток (302) видеоизображений, не подвергнутых сжатию. Например, поток (302) видеоизображений включает в себя отсчеты, взятые цифровой камерой. Поток (302) видеоизображений, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (304) (или битовыми потоками кодированного видео), может обрабатываться электронным устройством (320), которое включает в себя видеокодер (303), подключенный к источнику (301) видеосигнала. Видеокодер (303) может включать в себя оборудование, программное обеспечение или их комбинацию для обеспечения или реализации аспектов раскрытого изобретения, как более подробно описано ниже. Кодированные видеоданные (304) (или битовый поток (304) кодированного видео), изображенные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком (302) видеоизображений, могут храниться на потоковом сервере (305) для использования в будущем. Одна или более клиентских подсистем потоковой передачи, например, клиентские подсистемы (306) и (308) на фиг. 3, могут осуществлять доступ к потоковому серверу (305) для извлечения копий (307) и (309) кодированных видеоданных (304). Клиентская подсистема (306) может включать в себя видеодекодер (310), например, в электронном устройстве (330). Видеодекодер (310) декодирует входящую копию (307) кодированных видеоданных и создает исходящий поток (311) видеоизображений, который может визуализироваться на дисплее (312) (например, отображающем экране) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи, кодированные видеоданные (304), (307) и (309) (например, битовые потоки видео) могут кодироваться согласно тем или иным стандартам кодирования/сжатия видео. Примеры этих стандартов включают в себя ITU-Т Recommendation Н.265. Например, разрабатывается стандарт видеокодирования под официальным названием "универсальное видеокодирование" (VVC, Versatile Video Coding). Раскрытое изобретение может использоваться в контексте VVC.
[0037] Заметим, что электронные устройства (320) и (330) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (320) может включать в себя видеодекодер (не показан), и электронное устройство (330) также может включать в себя видеокодер (не показан).
[0038] На фиг. 4 показана блок-схема видеодекодера (410) согласно варианту осуществления настоящего изобретения. Видеодекодер (410) может входить в состав электронного устройства (430). Электронное устройство (430) может включать в себя приемник (431) (например, приемные схемы). Видеодекодер (410) может использоваться вместо видеодекодера (310) в примере, приведенном на фиг. 3.
[0039] Приемник (431) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (410); в том же или другом варианте осуществления, по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (401), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (431) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут ретранслироваться на соответствующие использующие и объекты (не показаны). Приемник (431) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиггером сети, буферная память (415) может быть подключена между приемником (431) и энтропийным декодером / анализатором (420) (далее "анализатором (420)"). В некоторых вариантах применения буферная память (415) входит в состав видеодекодера (410). В других она может не входить в состав видеодекодера (410) (не показан). В прочих вариантах может существовать буферная память (не показана) вне видеодекодера (410), например, для борьбы с джиттером сети, помимо другой буферной памяти (415) в составе видеодекодера (410), например, для управления хронированием доигрывания. Когда приемник (431) принимает данные от устройства хранения/ретрансляции с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (415) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшей попытки, например, Интернете, буферная память (415) может требоваться, может быть сравнительно большой и может иметь преимущественно адаптивный размер, и по меньшей мере частично может быть реализована в операционной системе или аналогичных элементах (не показаны) вне видеодекодера (410).
[0040] Видеодекодер (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) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[0041] Анализатор (420) может осуществлять операцию энтропийного декодирования / анализа видеопоследовательности, принятой из буферной памяти (415), для создания символов (421).
[0042] Для реконструкции символов (421) могут использоваться несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например: интер- и интра-изображения, интер- и интра-блока) и других факторов. Какие модули используются, и как, может определяться информацией управления подгруппами, выделенной из кодированной видеопоследовательности анализатором (420). Поток такой информации управления подгруппами между анализатором (420) и множественными модулями для простоты в дальнейшем не показан.
[0043] Помимо ранее упомянутых функциональных блоков, видеодекодер (410) может принципиально подразделяться на несколько функциональных модулей, как описано ниже. В практической реализации, работающей в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания раскрытого изобретения уместно принципиальное подразделение на нижеперечисленные функциональные модули.
[0044] Первым модулем является модуль (451) масштабирования / обратного преобразования. Модуль (451) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую в себя используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (421) от анализатора (420). Модуль (451) масштабирования / обратного преобразования может выводить блоки, содержащие значения отсчетов, которые можно вводить в агрегатор (455).
[0045] В ряде случаев, выходные отсчеты блока (451) масштабирования / обратного преобразования могут относиться к внутренне-кодированному блоку; то есть блоку, который не использует предсказанную информацию из ранее реконструированных изображений, но может использовать предсказанную информацию из ранее реконструированных частей текущего изображения. Такая предсказанная информация может обеспечиваться модулем (452) предсказания внутри изображения. В ряде случаев модуль (452) предсказания внутри изображения генерирует блок такого же размера и формы, как блок, подлежащий реконструкции, с использованием информации ранее реконструированного окружения, извлеченной из буфера (458) текущего изображения. Буфер (458) текущего изображения буферизует, например, частично реконструированное текущее изображение и/или полностью реконструированное текущее изображение. Агрегатор (455) в ряде случаев добавляет, для каждого отсчета, информацию предсказания, сгенерированную модулем (452) внутреннего предсказания, в информацию выходных отсчетов, обеспеченную модулем (451) масштабирования / обратного преобразования.
[0046] В других случаях выходные отсчеты модуля (451) масштабирования / обратного преобразования могут относиться к внутренне кодированному блоку, возможно, с компенсацией движения. В таком случае, модуль (453) предсказания с компенсацией движения может осуществлять доступ к памяти (457) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (421), относящимися к блоку, эти отсчеты могут добавляться агрегатором (455) к выходному сигналу модуля (451) масштабирования / обратного преобразования (в этом случае именуемому остаточными отсчетами или остаточным сигналом) для генерации информации выходных отсчетов. Адреса в памяти (457) опорных изображений, откуда модуль (453) предсказания с компенсацией движения извлекает предсказанные отсчеты, могут регулироваться векторами движения, доступными модулю (453) предсказания с компенсацией движения, в форме символов (421), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (457) опорных изображений, когда используются точные векторы движения под-отсчетов, механизмы предсказания векторов движения и т.д.
[0047] К выходным отсчетам агрегатора (455) можно применять различные методы контурной фильтрации в модуле (456) контурного фильтра. Технологии сжатия видео могут включать в себя технологии деблокирующего фильтра под управлением параметров, включенных в кодированную видеопоследовательность (также именуемую битовым потоком кодированного видео) и становиться доступными модулю (456) контурного фильтра в качестве символов (421) от анализатора (520), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.
[0048] Модуль (456) контурного фильтра может выдавать поток отсчетов, который может поступать на устройство (412) визуализации, а также сохраняться в памяти (457) опорных изображений для использования в будущем предсказании между изображениями.
[0049] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью реконструировано, и кодированное изображение идентифицировано как опорное изображение (например, анализатором (420)), буфер (458) текущего изображения может становиться частью памяти (457) опорных изображений, и свежий буфер текущего изображения может повторно выделяться до начала реконструкции следующего кодированного изображения.
[0050] Видеодекодер (410) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видео, например, по стандарту ITU-T Rec. Н.265. Кодированная видеопоследовательность может согласовываться с синтаксисом, заданным используемой/ым технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность может придерживаться как синтаксиса технологии или стандарта сжатия видео, так и профилей, задокументированных в технологии или стандарте сжатия видео. В частности, профиль может выбирать некоторые инструменты как инструменты, доступные для использования только под этим профилем, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видео. В ряде случаев, уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемого в кодированной видеопоследовательности.
[0051] Согласно варианту осуществления, приемник (431) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (410) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, слои улучшения во времени, пространстве или отношения сигнал/шум (SNR, signal noise ratio), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.
[0052] На фиг. 5 показана блок-схема видеокодера (503) согласно варианту осуществления настоящего изобретения. Видеокодер (503) входит в состав электронного устройства (520). Электронное устройство (520) включает в себя передатчик (540) (например, передающую схему). Видеокодер (503) может использоваться вместо видеокодера (303) в примере, приведенном на фиг. 3.
[0053] Видеокодер (503) может принимать отсчеты видео от источника (501) видеосигнала (который не входит в состав электронного устройства (520) в примере, показанном на фиг. 5), который может захватывать видеоизображение(я), подлежащее(ие) кодированию видеокодером (503). В другом примере источник (501) видеосигнала входит в состав электронного устройства (520).
[0054] Источник (501) видеосигнала может обеспечивать исходную видеопоследовательность, подлежащую кодированию видеокодером (503) в форме потока отсчетов цифрового видео любой подходящей битовой глубины (например: 8 бит, 10 бит, 12 бит, …), любого цветового пространства (например, ВТ.601 Y CrCB, RGB, …), и любой подходящей структуры дискретизации (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе службы массовой информации источником (501) видеосигнала может быть запоминающее устройство, где хранится ранее подготовленное видео. В система видеоконференцсвязи источником (501) видеосигнала может быть камера, которая захватывает информацию локального изображения как видеопоследовательность. Видеоданные могут обеспечиваться как множество отдельных изображений, которые создают ощущение движения при наблюдении в последовательности. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемых структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники нетрудно понять соотношение между пикселями и отсчетами. Нижеследующее описание посвящено отсчетам.
[0055] Согласно варианту осуществления, видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с учетом любых других временных ограничений, налагаемых применением. Установление надлежащей скорости кодирования является одной из функций контроллера (550). В некоторых вариантах осуществления контроллер (550) управляет другими функциональными модулями, как описано ниже, и функционально подключен к другим функциональным модулям. Подключение для простоты не показано. Параметры, установленные контроллером (550), могут включать в себя параметры, связанные регулировкой частоты (пропуск изображения, квантователь, значение лямбда, применяемое при оптимизация скорости-искажения, …), размер изображения, схему групп изображений (GOP, group of pictures), максимальную зону поиска вектора движения и т.д. Контроллер (550) может быть выполнен с возможностью иметь другие подходящие функции, относящиеся к видеокодеру (503), оптимизированному для той или иной конструкции системы.
[0056] В некоторых вариантах осуществления видеокодер (503) выполнен с возможностью работать в петле кодирования. В качестве очень упрощенного описания, в порядке примера, петля кодирования может включать в себя исходный кодер (530) (например, отвечающий за создание символов, например, потока символов, на основе входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локальный) декодер (533), встроенный в видеокодер (503). Декодер (533) реконструирует символы для создания данных отсчетов, аналогично тому, как это делал бы (удаленный) декодер (поскольку любое сжатие между символами и битовым потоком кодированного видео происходит без потерь в технологиях сжатия видео, рассматриваемых в раскрытом изобретении). Реконструированный поток отсчетов (данные отсчетов) поступают в память (534) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, не зависящим от положения декодера (локального или удаленного), содержимое памяти (534) опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, предсказанная часть кодера "видит" в качестве отсчетов опорного изображения точно такие же значения отсчетов, как "видел" бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронизма опорного изображения (и, в итоге, дрейф, если синхронизм не удается поддерживать, например, вследствие канальных ошибок) используется также в некоторых связанных областях техники.
[0057] "Локальный" декодер (533) может действовать таким же образом, как "удаленный" декодер, например, видеодекодер (410), подробно вышеописанный со ссылкой на фиг. 5. Однако, опять же, согласно фиг. 4, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (545) и анализатором (420) может осуществляться без потерь, части энтропийного декодирования видеодекодера (410), включающие в себя буферную память (415) и анализатор (420), могут быть не полностью реализованы в локальном декодере (533).
[0058] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализа/энтропийного декодирования, также обязательно должна присутствовать, по в существу идентичной функциональной форме в соответствующем кодере. По этой причине раскрытое изобретение сконцентрировано на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодированная. Только в некоторых областях требуется более детальное описание, которое приведено ниже.
[0059] Согласно некоторым примерам, в ходе работы исходный кодер (530) может осуществлять кодирование с предсказанием и компенсацией движения, при котором входное изображение кодируется с предсказанием на основании одного или более ранее кодированных изображений из видеопоследовательности, указанных как "опорные изображения". Таким образом, машина (532) кодирования кодирует различия между пиксельными блоками входного изображения и пиксельными блоками опорного изображения(й), которое(ые) может(ут) выбираться в качестве предсказанной(ых) ссылки(ок) на входное изображение.
[0060] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, которые могут быть указаны как опорные изображения, на основе символов, созданных исходным кодером (530). Операции машины (532) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 5), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных изображениях, и может предписывать сохранение реконструированных опорных изображений в кэш-памяти (534) опорных изображений. Таким образом, видеокодер (503) может локально сохранять копии реконструированных опорных изображений, имеющие такое же содержимое, как реконструированные опорные изображения, которые будут получены видеодекодером на стороне приемника (в отсутствие ошибок передачи).
[0061] Предсказатель (535) может осуществлять поиски предсказания для машины (532) кодирования. Таким образом, для нового изображения, подлежащего кодированию, предсказатель (535) может искать в памяти (534) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных пиксельных блоков) или те или иные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (535) может работать на основе "блоки отсчетов × пиксельные блоки" для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предсказателем (535), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (534) опорных изображений.
[0062] Контроллер (550) может управлять операциями кодирования исходного кодера (530), включая, например, установление параметров и параметров подгруппы, используемых для кодирования видеоданных.
[0063] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) переводит символы, сгенерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно технологиям, например, кодирования по Хаффману, кодирования с переменной длиной серии, арифметического кодирования и т.д.
[0064] Передатчик (540) может буферизовать кодированную(ые) видеопоследовательность(и), созданную энтропийным кодером (545), для подготовки к передаче через канал (560) связи, который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные от видеокодера (503) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).
[0065] Контроллер (550) может управлять работой видеокодера (503). В ходе кодирования контроллер (550) может назначать каждому кодированному изображению тот или иной тип кодированного изображения, который может определять методы кодирования, применимые к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы изображения:
[0066] Интра-изображение (I-изображение), которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают разные типы интра-изображений, включая, например, изображения в формате независимого обновления декодера ("IDR", Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.
[0067] Предсказанное изображение (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[0068] Двунаправленно-предсказанное изображение (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, мультипредсказанные изображения могут использовать более двух опорных изображений и связанные метаданные для реконструкции единого блока.
[0069] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться предиктивно со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки I-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (пространственным предсказанием или внутренним предсказанием). Пиксельные блоки I-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[0070] Видеокодер (503) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, например, ITU-T Rec. Н.265. В своей работе видеокодер (503) может осуществлять различные операции сжатия, в том числе операции предиктивного кодирования, которые используют временные и пространственные избыточности во входной видеопоследовательности. Поэтому кодированные видеоданные могут согласовываться с синтаксисом, заданным используемой технологией или стандартом видеокодирования.
[0071] Согласно варианту осуществления, передатчик (540) может передавать дополнительные данные с кодированным видео. Исходный кодер (530) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR слои улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и т.д.
[0072] Видео может захватываться как множество исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно именуемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а предсказание между изображениями использует (временную или иную) корреляцию между изображениями. Например, конкретное изображение, подлежащее кодированию/декодированию, которое именуется текущим изображением, разбивается на блоки. Когда блок в текущем изображении аналогичен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может кодироваться вектором, который именуется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множественных опорных изображений.
[0073] В некоторых вариантах осуществления, метод двойного предсказания может использоваться в предсказании между изображениями. Согласно методу двойного предсказания, используются два опорных изображения, например, первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может предсказываться комбинацией первого опорного блока и второго опорного блока.
[0074] Дополнительно, метод режима объединения может использоваться в предсказании между изображениями для повышения эффективности кодирования.
[0075] Согласно некоторым вариантам осуществления изобретения, предсказания, например, предсказания между изображениями и предсказания внутри изображения, осуществляются поблочно. Например, согласно стандарту HEVC, изображение в последовательности видеоизображений разбивается на единицы дерева кодирования (CTU, coding tree units) для сжатия, CTU в изображении имеют одинаковый размер, например 64×64 пикселя, 32×32 пикселя или 16×16 пикселей. В общем случае CTU включает в себя три блока дерева кодирования (СТВ, coding tree blocks), а именно, один СТВ яркости и два СТВ цветности. Каждый CTU может рекурсивно делиться квадрадеревом на одну или несколько единиц кодирования (CU). Например, CTU размером 64×64 пикселя может делиться на одну CU размером 64×64 пикселя или 4 CU размером 32×32 пикселя или 16 CU размером 16×16 пикселей. Например, каждая CU анализируется для определения типа предсказания для CU, например, типа внешнего предсказания или типа внутреннего предсказания. CU делится на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. В целом, каждая PU включает в себя блок (РВ) предсказания яркости и два РВ цветности. Согласно варианту осуществления, операция предсказания при кодировании (кодировании/декодировании) осуществляется в единице блока предсказания. Используя блок предсказания яркости в качестве примера блока предсказания, блок предсказания включает в себя матрицу значений (например, значений яркости) для пикселей, например, 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.
[0076] На фиг. 6 показана схема видеокодера (603) согласно другому варианту осуществления изобретения. Видеокодер (603) выполнен с возможностью приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое составляет часть кодированной видеопоследовательности. Например, видеокодер (603) используется вместо видеокодера (303) в примере, приведенном на фиг. 3.
[0077] В примере HEVC видеокодер (603) принимает матрицу значений отсчетов для блока обработки, например, блока предсказания 8×8 отсчетов и т.п. Видеокодер (603) определяет, наилучшим ли образом кодируется блок обработки в интра-режиме, интер-режиме или режиме двойного предсказания с использованием, например, оптимизации скорость-искажения. Когда блок обработки подлежит кодированию в интра-режиме, видеокодер (603) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение; и когда блок обработки подлежит кодированию в интер-режиме или режиме двойного предсказания, видеокодер (603) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях видеокодирования, режим объединения может быть подрежимом предсказания между изображениями, где вектор движения выводится из одного или более предсказателей вектора движения без привлечения кодированного компонента вектора движения вне предсказателей. В некоторых других технологиях видеокодирования может присутствовать компонент вектора движения, применимый к данному блоку. В порядке примера, видеокодер (603) включает в себя другие компоненты, например, модуль определения режима (не показан) для определения режима блоков обработки.
[0078] В примере, приведенном на фиг. 6, видеокодер (603) включает в себя интер-кодер (630), интра-кодер (622), вычислитель (623) остатка, переключатель (626), кодер (624) остатка, общий контроллер (621) и энтропийный кодер (625), соединенные друг с другом как показано на фиг. 6.
[0079] Интер-кодер (630) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоками в предыдущих изображениях и более поздних изображениях), генерации информации внешнего предсказания (например, описания избыточной информации согласно методу внутреннего кодирования, векторов движения, информации режима объединения), и вычисления результатов внешнего предсказания (например, блока предсказания) на основании информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорными изображениями являются декодированные опорные изображения, которые декодируются на основе информации кодированного видео.
[0080] Интра-кодер (622) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), в ряде случаев сравнения блока с блоками, ранее кодированными в том же изображении, генерирования квантованных коэффициентов после преобразования, и в ряде случаев также информации внутреннего предсказания (например, информации направления внутреннего предсказания согласно одному или более методам внутреннего кодирования). В порядке примера, интра-кодер (622) также вычисляет результаты внутреннего предсказания (например, блок предсказания) на основании информации внутреннего предсказания и опорных блоков в том же изображении.
[0081] Общий контроллер (621) выполнен с возможностью определения общих данных управления и управления другими компонентами видеокодера (603) на основе общих данных управления. Например, общий контроллер (621) определяет режим блока и выдает сигнал управления на переключатель (626) на основе режима. Например, когда режим является интра-режимом, общий контроллер (621) управляет переключателем (626) для выбора результата интра-режима для использования вычислителем (623) остатка, и управляет энтропийным кодером (625) для выбора информации внутреннего предсказания и включения информации внутреннего предсказания в битовый поток; и когда режим является интер-режимом, общий контроллер (621) управляет переключателем (626) для выбора результата внешнего предсказания для использования вычислителем (623) остатка, и управляет энтропийным кодером (625) для выбора информации внешнего предсказания и включения информации внешнего предсказания в битовый поток.
[0082] Вычислитель (623) остатка выполнен с возможностью вычисления разности (данных остатка) между принятым блоком и результатами предсказания, выбранными из интра-кодера (622) или интер-кодера (630). Кодер (624) остатка выполнен с возможностью действовать на основе данных остатка для кодирования данных остатка для генерации коэффициентов преобразования. Например, кодер (624) остатка выполнен с возможностью преобразования данных остатка из пространственной области в частотную область и генерирования коэффициентов преобразования. Затем коэффициенты преобразования подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления видеокодер (603) также включает в себя декодер (628) остатка. Декодер (628) остатка выполнен с возможностью осуществления обратного преобразования и генерирования декодированных данных остатка. Декодированные данные остатка могут надлежащим образом использоваться интра-кодером (622) и интер-кодером (630). Например, интеркодер (630) может генерировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, и интра-кодер (622) может генерировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки надлежащим образом обрабатываются для генерации декодированных изображений, и декодированные изображения могут буферизоваться в схеме памяти (не показана) и в некоторых примерах использоваться в качестве опорных изображений.
[0083] Энтропийный кодер (625) выполнен с возможностью форматирования битового потока так, чтобы он включал в себя кодированный блок. Энтропийный кодер (625) выполнен с возможностью включать различную информацию согласно подходящему стандарту, например, стандарту HEVC. Например, энтропийный кодер (625) выполнен с возможностью включать общие данные управления, выбранную информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), информацию остатка и другую подходящую информацию в битовый поток. Заметим, что, согласно раскрытому изобретению, при кодировании блока в подрежиме объединения любого из интер-режима и режима двойного предсказания, информация остатка отсутствует.
[0084] На фиг. 7 показана схема видеодекодера (710) согласно другому варианту осуществления изобретения. Видеодекодер (710) выполнен с возможностью приема кодированных изображений, составляющих часть кодированной
видеопоследовательности, и декодирования кодированных изображений для генерации реконструированных изображений. Например, видеодекодер (710) используется вместо видеодекодера (310) в примере, приведенном на фиг. 3.
[0085] В примере, приведенном на фиг. 7, видеодекодер (710) включает в себя энтропийный декодер (771), интер-декодер (780), декодер (773) остатка, модуль (774) реконструкции и интра-декодер (772), соединенные друг с другом как показано на фиг. 7.
[0086] Энтропийный декодер (771) может быть выполнен с возможностью реконструкции, из кодированного изображения, некоторых символов, которые представляют синтаксические элементы, образующие кодированное изображение. Такие символы могут включать в себя, например, режим кодирования блока (например, интра-режим, интер-режим, режим двойного предсказания, причем последние два в подрежиме объединения или другом подрежиме), информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, используемые для предсказания интра-декодером (772) или интер-декодером (780), соответственно, информацию остатка в форме, например, квантованных коэффициентов преобразования и т.п. Например, когда режим предсказания является режимом внутреннего или двойного предсказания, информация внешнего предсказания поступает на интер-декодер (780); а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания поступает на интра-декодер (772). Информация остатка может подвергаться обратному квантованию и поступать в декодер (773) остатка.
[0087] Интер-декодер (780) выполнен с возможностью приема информации внешнего предсказания и генерирования результатов внешнего предсказания на основании информации внешнего предсказания.
[0088] Интра-декодер (772) выполнен с возможностью приема информации внутреннего предсказания и генерирования результатов предсказания на основании информации внутреннего предсказания.
[0089] Декодер (773) остатка выполнен с возможностью осуществления обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (773) остатка также может требовать некоторой информации управления (включать параметр квантователя (QP, Quantizer Parameter)), и эта информация может обеспечиваться энтропийным декодером (771) (путь данных не показан, поскольку это может быть только информация управления малого объема).
[0090] Модуль (774) реконструкции выполнен с возможностью объединения, в пространственной области, остатка на выходе декодера (773) остатка и результатов предсказания (на выходе модулей внешнего или внутреннего предсказания, в зависимости от ситуации) для формирования реконструированного блока, который может входить в состав реконструированного изображения, которое, в свою очередь, может входить в состав реконструированного видео. Заметим, что другие подходящие операции, например, операция деблокирования и т.п., может осуществляться для повышения визуального качества.
[0091] Заметим, что видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любого подходящего метода. Согласно варианту осуществления, видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления видеокодеры (303), (503) и (503) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, которые выполняют программные инструкции.
[0092] II. Интра-блочное копирование
[0093] В гибридном блочном видеокодировании хорошо известна компенсация движения из другого изображения (компенсация движения между изображениями). Аналогично, компенсация движения также может осуществляться из ранее реконструированной области в том же изображении. Это именуется блочной компенсацией внутри изображения, с опорой на текущее изображение (CPR, current picture referencing), или интра-блочным копированием (IBC). В IBC, вектор перемещения, который указывает смещение между текущим блоком и опорным блоком именуется вектором блока (BV, block vector). В отличие от вектора движения при компенсации движения из другого изображения, который может принимать любое значение (положительное или отрицательное, в направлении х или у), вектор блока имеет ряд ограничений, и это позволяет гарантировать, что указанный опорный блок доступен и уже реконструирован. Также, для параллельной обработки исключена некоторая опорная область, которая является границей тайла или граница в форме волнового фронта ступенчатой формы также исключена для IBC.
[0094] Кодирование вектора блока может быть либо явным, либо неявным. В явном режиме (также именуемом режим усовершенствованного предсказания векторов движения (AMVP) во внешнем кодировании) сигнализируется разностный BV между вектором блока и его предсказателем; в неявном режиме вектор блока восстанавливается только из его предсказателя, аналогичным образом, как вектор движения, полученный в режиме объединения. Разрешение вектора блока, в некоторых реализациях, ограничивается целочисленными позициями; в других системах, ему может быть разрешено указывать дробные позиции.
[0095] Согласно варианту осуществления, использование IBC на уровне блоков может сигнализироваться с использованием флага уровня блоков, именуемого флагом IBC. В примере, флаг IBC сигнализируется, когда текущий блок не кодирован в режиме объединения. В другом примере, использование IBC может сигнализироваться согласно подходу опорного индекса, и текущее декодированное изображение обрабатывается как опорное изображение. Например, при кодировании содержимого экрана HEVC (SCC, Screen Content Coding), такое опорное изображение помещается в последнюю позицию списка опорных изображений. Это особое опорное изображение также управляется совместно с другими временными опорными изображениями в буфере изображений декодера (DPB, decoded picture buffer).
[0096] Существуют также некоторые вариации для IBC, например, обработка IBC в качестве третьего режима, который отличается от режима внутреннего или внешнего предсказания. Таким образом, режим объединения для предсказания вектора блока и режим AMVP для IBC отделены от обычного интер-режима. Например, для режима IBC задается отдельный список кандидатов на объединение, где все записи являются векторами блока. Аналогично, список предсказаний вектора блока в режиме AMVP IBC состоит из векторов блока. К обоим спискам применяются общие правила: правила могут следовать той же логике, что и список кандидатов на внешнее объединение или список предсказателей AMVP в отношении процесса вывода кандидатов. Например, 5 соседствующих в пространстве положений (показанные на фиг. 10) HEVC или режим внешнего объединения VVC достигаются для вывода списка кандидатов на объединение для IBC.
[0097] На фиг. 8 показан пример компенсации внутри блока изображения. Изображение (810), подвергающееся обработке (именуемое текущим изображением), разбивается на CTU (811-825). CTU (811-822) декодируются. Текущая CTU (823) подвергается обработке. Для декодирования IBC-кодированного текущего блока (801) в текущей CTU (823), сначала может определяться вектор (803) блока. На основании вектора (803) блока, можно определить положение опорного блока (802) (также именуемого блоком предсказания или блоком предсказателя) в CTU (817). Соответственно, текущий блок (801) может реконструироваться путем объединения опорного блока (802) с остатком текущего блока (801). Как показано, опорный блок (802) и текущий блок (801) располагаются в одном и том же текущем изображении (810).
[0098] На фиг. 9A-9D показан пример компенсации внутри блока изображения с памятью размером в одну CTU для хранения реконструированных отсчетов. В первом примере зона поиска режима IBC может ограничиваться текущей CTU. Таким образом, требование к эффективной памяти для хранения опорных отсчетов для режима IBC составляет размер одного CTU отсчетов. В порядке примера, текущую CTU 128×128 можно разбить на четыре области 64×64. С учетом существующей памяти опорных отсчетов для хранения реконструированных отсчетов в текущей области 64×64, требуется 3 дополнительных блока памятки опорных отсчетов размером 64×64. На основании этого факта, во втором примере, эффективную зону поиска режима IBC можно расширить на некоторую часть левой CTU, тогда как требование к полной памяти для хранения опорных пикселей остается неизменным (1 размер CTU, суммарно 4 блока 64×64 памяти опорных отсчетов).
[0099] На фиг. 9A-9D показано, как память размером в одну CTU повторно используется для поиска левой CTU. На каждой из фиг. 9A-9D показаны левая CTU и правая CTU, имеющие размер 128×128 отсчетов. Каждая CTU разбивается на четыре области 64×64. На фиг. 9А, реконструированные области (901-903) в левой CTU и текущая область 904, подвергающаяся обработке, могут сохраняться в памяти размером в одну CTU. На фиг. 9В, две реконструированные области (911-912) в левой CTU, одна реконструированная область (913) в текущей CTU и текущая область (914) могут сохраняться в памяти размером в одну CTU. На фиг. 9С, реконструированная область (921) в левой CTU, две реконструированные области (922-923) в текущей CTU, и текущая область 924 могут сохраняться в памяти размером в одну CTU. На фиг. 9D, три реконструированные области (931-933) в текущей CTU, и текущая область 934 могут сохраняться в памяти размером в одну CTU.
[0100] В некоторых вариантах осуществления необходимо, чтобы векторы блока, сигнализируемые в битовом потоке, подчинялись набору условий согласования битового потока. В порядке примера, пригодный вектор блока яркости, обозначенный mvL и с разрешением 1/16 пикселя должен удовлетворять следующим условиям согласования битового потока:
[0101] А1: Когда процесс вывода для доступности блока вызывается с текущим положением яркости (xCurr, yCurr), установленным равным (xCb, yCb) и соседним положением яркости (xCb+(mvL[0]>>4), yCb+(mvL[1]>>4)) в качестве вводов, выход должен быть равен TRUE (в смысле уже построен и, таким образом, доступен). Процесс вывода для доступности блока также именуется процессом проверки доступности соседних блоков. Условие А1 проверяет, что отсчет верхнего левого угла опорного блока в положении (xCb+(mvL[0]>>4), yCb+(mvL[1]>>4)) доступен (уже реконструирован).
[0102] А2: Когда процесс вывода для доступности блока вызывается с текущим положением яркости (xCurr, yCurr), установленным равным (xCb, yCb) и соседним положением яркости (xCb+(mvL[0]>>4)+cbWidth-1, yCb+(mvL[1]>>4)+cbHeight-1) в качестве вводов, выход должен быть равен TRUE. Условие А2 проверяет, что отсчет нижнего правого угла опорного блока в положении (xCb+(mvL[0]>>4)+cbWidth-1, yCb+(mvL[1]>>4)+cbHeight-1) доступен.
[0103] В1: Должны выполняться одно или оба следующих условия: значение (mvL[0]>>4)+cbWidth меньше или равно 0; и значение (mvL[1]>>4)+cbHeight меньше или равно 0. Условие В1 проверяет, что опорный блок не перекрывается с текущим блоком.
[0104] С1: Должны выполняться следующие условия:
(yCb+(mvL[1]>>4))>>CtbLog2SizeY=yCb>>CtbLog2SizeY;
(yCb+(mvL[1]>>4)+cbHeight-1)>>CtbLog2SizeY=yCb>>CtbLog2SizeY;)
(xCb+(mvL[0]>>4))>>CtbLog2SizeY>=(xCb>>CtbLog2SizeY)-1; и
(xCb+(mvL[0]>>4)+cbWidth-1)>>CtbLog2SizeY<=(xCb>>CtbLog2SizeY).
Условие C1 проверяет, находится ли опорный блок в текущей CTU или левой CTU относительно текущей CTU.
[0105] С2: Когда (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 (еще не построен). Условие С2 проверяет, соответствует ли опорная область (например, область (921) на фиг. 9С) в левой CTU области в текущей CTU, которая еще не построена.
[0106] III. Кандидаты на пространственное объединение текущего блока
[0107] На фиг. 10 показано пять кандидатов на пространственное объединение текущего блока (1010). Кандидаты на пространственное объединение могут использоваться для построения списка предсказателей для предсказания вектора блока для текущего блока (1010). Например, текущий блок (1010) строится в режиме пропуска, режиме объединения или режиме AMVP. Можно построить список кандидатов. Кандидаты в списке кандидатов могут выбираться из пространственных позиций А1, А0, В2, В0 и В1 кандидатов. В одном примере, доступность пространственных позиций кандидатов проверяется в следующем порядке, А0, В0, B1, А1 и В2. Когда доступна, информацию движения в позиции кандидата можно добавлять в список кандидатов в качестве кандидата. Индекс списка кандидатов может приниматься в битовом потоке. Кандидат, соответствующий индексу, может использоваться как предсказание (или предсказатель) вектора движения для определения вектора движения текущего блока 1010.
[0108] IV. Предсказание вектора движения на исторической основе (HMVP)
[0109] В ряде случаев, схема предсказания вектора движения на исторической основе (HMVP, History Based Motion Vector Prediction) используется для кодирования блока. Например, кандидаты на объединение HMVP добавляются в список объединения после кандидатов на пространственное предсказание вектора движения (SMVP, spatial motion vector prediction) и временное предсказание вектора движения (TMVP, temporal motion vector prediction). Согласно этому способу, информация движения ранее кодированного блока хранится в таблице (именуемой таблицей HMVP) и используется в качестве предсказателя вектора движения (MVP, motion vector predictor) для текущей CU. Таблица HMVP с множественными кандидатами HMVP поддерживается в ходе процесса кодирования или декодирования. Таблица HMVP сбрасывается (опустошается), когда в некоторых примерах встречается новая строка CTU. Всякий раз, когда существует CU, полученная без интер-кодирования подблоков, соответствующая информация движения добавляется в последнюю запись таблицы HMVP в качестве нового кандидата HMVP в некоторых примерах.
[0110] Согласно варианту осуществления, размер S таблицы HMVP задается равным 6, и это указывает, что в таблицу HMVP может добавляться до 6 кандидатов HMVP. При вставке нового кандидата движения в таблицу HMVP используется правило ограничения "первым вошел, первым вышел" (FIFO, first-in-first-out). Сначала применяется проверка избыточности, чтобы определить, существует ли в таблице HMVP идентичный HMVP. При наличии, идентичный HMVP удаляется из таблицы, и затем все кандидаты HMVP перемещаются вперед.
[0111] Кандидаты HMVP могут использоваться в процессе построения списка кандидатов на объединение. В примере, последние несколько кандидатов HMVP в таблице HMVP проверяются по порядку и вставляются в список кандидатов после кандидатов TMVP. Проверка избыточности применяется к кандидатам HMVP по сравнению с кандидатами на пространственное или временное объединение.
[0112] Согласно варианту осуществления, для уменьшения количества операций проверки избыточности, вводятся следующие упрощения: (1) количество кандидатов HMVP, используемых для генерации списка объединения, устанавливается равным (N<=4) ? М: (8 - N), где N указывает количество существующих кандидатов в списке объединения, и М указывает количество доступных кандидатов HMVP в таблице HMVP. (2) Когда суммарное количество доступных кандидатов на объединение достигает максимально разрешенного числа минус 1, процесс построения списка кандидатов на объединение из HMVP заканчивается в примере.
[0113] V. Интра-блочное копирование (IBC) на основе таблицы HBVP
[0114] В различных вариантах осуществления, режим IBC действует как режим, отдельный от интер-режима (компенсации движения из изображения, отличного от текущего изображения). Отдельный буфер истории, именуемый буфером предсказания вектора блока на исторической основе (HBVP), используется для хранения ранее обработанных (закодированных на стороне кодера/декодированных на стороне декодера) векторов блока IBC. При обработке текущего блока, кодированного в режиме IBC, на стороне кодера либо на стороне декодера, вектор блока для текущего блока может определяться на основании буфера HBVP. Буфер HBVP также может именоваться таблицей HBVP или списком HBVP. В этом подробном описании, буфер HBVP, таблица HBVP и список HBVP используются взаимозаменяемо.
[0115] Описанные здесь варианты осуществления могут использоваться по отдельности или объединенными в любом порядке. Дополнительно, каждый из способов (или вариантов осуществления), кодер и декодер могут быть реализованы схемой обработки (например, одним или более процессорами или одной или более интегральными схемами). В одном примере, один или более процессоров выполняют программу, которая хранится на компьютерно-считываемом носителе. В подробном описании термин "блок" можно интерпретировать как блок предсказания, блок кодирования или единица кодирования (CU).
[0116] Вариант осуществления А
[0117] При добавлении вектора блока уже обработанного блока в таблицу HBVP, информация позиции (или положения) уже обработанного блока может записываться в таблицу HBVP. Другими словами, для каждой записи в таблице HBVP, помимо информации вектора блока, также хранится положение кодированного блока (ранее закодированного или декодированного блока) с которым связан вектор блока.
[0118] В примере, проверка избыточности не осуществляется при добавлении нового вектора блока и соответствующей информации положения в таблицу HBVP, поскольку позиции всех кодированных блоков отличаются. В другом примере, проверка избыточности осуществляется при добавлении нового вектора блока и соответствующей информации положения в таблицу HBVP. Например, новый вектор блока сравнивается с векторами блока, ранее сохраненными в таблице HBVP. Если найден аналогичный или идентичный старый вектор блока, старую запись, включающую в себя старый вектор блока, можно удалить, и запись, включающую в себя новый вектор блока и соответствующую информацию положения, можно добавлять в таблицу HBVP как самый последний кандидат.
[0119] Положение кодированного блока может быть представлено одним из четырех углов кодированного блока в различных примерах. Например, координаты х и у угла кодового блока может использоваться для указания положения. В примере, положение кодированного блока представлено позицией нижнего правого угла кодированного блока. В другом примере, положение кодированного блока может быть представлено позицией нижнего левого угла кодированного блока.
[0120] В примере, положение кодированного блока может быть представлено позицией одного из четырех углов кодированного блока плюс информация размера (например, ширина и высота) кодированного блока.
[0121] В примере, таблица HBVP сбрасывается (например, опустошается) в начале каждой строки CTU. В такой конфигурации, информация положения каждой из записей в таблице HBVP может записываться с использованием относительного смещения у от соответствующего верхнего края CTU для координаты у каждого соответствующего кодированного блока. В другом варианте осуществления, таблица HBVP сбрасывается в начале каждой CTU. Соответственно, информация положения каждой из записей в HBVP может записываться с использованием относительных смещений х и у от соответствующего начала отсчета CTU для координат х и у каждого соответствующего кодированного блока. В дополнительном примере, при занесении координат х и у записи в таблице HBVP, смещения от соответствующего начала отсчета CTU соответствующего кодированного блока записываются независимо от операций сброса таблицы HBVP.
[0122] Вариант осуществления В
[0123] В некоторых примерах список кандидатов для предсказания вектора блока (BVP) строится на основании таблицы HBVP. При выборе записей из HBVP в качестве кандидатов BVP в списке кандидатов для BVP, рассматриваются положения (или позиции) записей (связанные с позициями кодированных блоков, соответствующих соответствующим записям).
[0124] В примере позиция текущего блока сравнивается с позицией записи. Информация положения записи регулируется, если позиция записи является нижней правой позицией текущего блока. На основании отрегулированной информацией положения может определяться соотношение положений между кодированным блоком и текущим блоком.
[0125] Например, при вычислении позиции текущего блока относительно одной записи в таблице HBVP, если обе координаты х и у текущего блока меньше координат х и у записи, соответственно (в том смысле, что ранее кодированный блок является нижней правой позицией относительно текущего блока, что невозможно), смещение (-ширина CTU, 0) прибавляется к координатам записи при осуществлении вычисления. В результате, такая запись перемещается слева от текущего блока (в том смысле, что соответствующий вектор блока теперь смещен влево от текущей CTU на ширину CTU).
[0126] В примере, запись, находящаяся слева от текущего блока, может выбираться из таблицы HBVP и использоваться как предсказатель вектора блока (например, добавляться в список кандидатов для BVP). Например, запись в таблице HBVP, включающая в себя координату х, соответствующую верхнему левому углу кодированного блока. Если координата х меньше, чем у верхнего левого угла текущего блока, можно определить, что запись (или соответствующий кодированный блок) находится слева от текущего блока.
[0127] Аналогично, из таблицы HBVP можно выбрать вектор блока, который находится над текущим блоком. Например, запись в таблице HBVP, включающая в себя координату у, соответствующую верхнему левому углу кодированного блока. Если координата у меньше, чем у верхнего левого угла текущего блока, можно определить, что запись (или соответствующий кодированный блок) находится сверху от текущего блока.
[0128] Соответственно, в некоторых примерах, список кандидатов для BVP можно построить на основании записей, выбранных из таблицы HBVP, которые располагаются слева или сверху от текущего блока.
[0129] В некоторых примерах, максимальное количество 2*N предсказателей применяются для предсказания вектора блока для текущего блока (например, который добавляется в список кандидатов для BVP). В одном примере, если N=1, то один из 2*N предсказателей входит в состав расположенных слева записей (то есть записей, находящихся слева от текущего блока) в таблице HBVP, и другой из 2*N предсказателей входит в состав расположенных сверху записей (то есть записей, находящихся сверху от текущего блока) в таблице HBVP. В другом примере, если N=2, то порядок предсказателей в списке кандидатов для BVP может быть 1-й влево → 1-й вверх → 2-й влево → 2-й вверх, предполагая, что в таблице HBVP достаточно записей. В отсутствие достаточного количества записей, соответствующий элемент в списке предсказателей (списке кандидатов для BVP) может быть пустым и заполняться следующим элементом.
[0130] В некоторых примерах, начиная с самой последней кодированной записи в таблице HBVP, первая запись, которая располагается слева от текущего блока, выбирается в качестве левого предсказателя. Следующая запись, которая располагается слева от текущего блока, выбирается в качестве второго слева предсказателя. Таким образом, можно последовательно выбирать левые предсказатели.
[0131] В некоторых примерах, начиная с самой последней кодированной записи в таблице HBVP, первую запись, которая находится над текущим блоком, можно выбирать в качестве первого вверх предсказателя. Следующую запись, которая находится над текущим блоком, можно выбирать в качестве второго вверх предсказателя. Таким образом, можно последовательно выбирать верхние предсказатели.
[0132] В примере, двухкандидатный список предсказателей (список кандидатов для BVP) строится путем сканирования первых N записей HBVP в таблице HBVP. Первые N записей могут быть самыми последними кодированными N записями или могут быть самыми первыми кодированными N записями в разных примерах. Например, N может быть меньше размера S таблицы HBVP. Первая запись слева от текущего блока может рассматриваться в качестве первого кандидата в списке предсказателей. Первая запись сверху от текущего блока может рассматриваться в качестве 2-го кандидата в списке предсказателей. При наличии только верхних или только левых кандидатов в таблице HBVP, в качестве предсказателей можно выбрать первые две доступные записи.
[0133] Вариант осуществления С
[0134] В некоторых вариантах осуществления список кандидатов для BVP (список предсказателей) может строиться следующим образом. Вектор блока в таблице HBVP выводится как предсказатель, если вектор блока имеет соответствующее положение вблизи текущего блока. Например, записи в таблице HBVP могут сканироваться по порядку, например, от самой новой к самой старой. Если запись находится вблизи текущего блока (запись включает в себя положение вблизи текущего блока), вектор блока этой записи помещается в список предсказателей. Этот процесс может продолжаться, пока не будет достигнуто максимальное количество кандидатов в списке предсказателей. Например, на фиг. 10, 5 соседствующих в пространстве позиций считаются находящимися вблизи текущего блока (1010). Можно рассматривать записи в таблице HBV, положения которых соответствует пяти позициям на фиг. 10, и выбирать их в качестве кандидатов в списке предсказателей в определенном порядке (например, А0, В0, B1, А1 и В2).
[0135] В примере, если вектор блока в буфере HBVP не находится вблизи текущего блока, его можно помещать в более поздние позиции в списке предсказателей после соседствующих в пространстве записей. В другом примере, если вектор блока в буфере HBVP не находится вблизи текущего блока, его можно не использовать в списке предсказателей.
[0136] Вариант осуществления D
[0137] В некоторых примерах, при помещении вектора блока в список предсказателей, можно осуществлять проверку избыточности, чтобы убедиться, что новый предсказатель отличается от других предсказателей, присутствующих в списке предсказателей.
[0138] Вариант осуществления Е
[0139] В различных примерах, список предсказателей может строиться на основании таблицы HBVP и использоваться в режиме объединения, режиме пропуска или режиме AMVP (векторного предсказания с разностным кодированием) для кодирования вектора блока (предсказания вектора блока) текущего блока.
[0140] Вариант осуществления F
[0141] Согласно варианту осуществления, в процессе декодирования могут поддерживаться множественные таблицы HBVP. Каждая таблица HBVP может быть связана с отдельным критерием для взятия нового кодированного вектора блока (вектора блока ранее декодированного блока). Таким образом, векторы блока кодированных блоков можно категоризовать по разным группам и сохранять в соответствующих таблицах HBVP. При кодировании текущего IBC-кодированного блока, один или более векторов блока можно выбирать из этих отдельных таблиц HBVP и использовать в качестве предсказателей для кодирования вектора блока для текущего блока. Аналогично, каждая из записей в этих таблицах HBVP может включать в себя вектор блока кодированного блока, положение (координаты х и у) кодового блока, размер (ширину и высоту) кодированного блока и другую сопутствующую информацию.
[0142] В первом примере, критерий взятия нового вектора блока для одной из таблиц HBVP кодированного блока состоит в том, что кодированный блок удовлетворяет условию размера блока. Размер блока для кодированного блока может измеряться измеренный по-разному. Например, размер блока может быть количеством отсчетов яркости в кодированном блоке, вычисленным умножением ширины на высоту кодированного блока. В примере, условие размера блока состоит в том, что размер блока больше или равен порогу T_sizel и меньше другого порога T_size2. В примере, условие размера блока состоит в том, что размер блока больше или равен порогу.
[0143] Во втором примере, критерий взятия нового вектора блока для одной из таблиц HBVP кодированного блока состоит в том, что координата х верхнего левого угла кодированного блока хс удовлетворяет следующему условию: xc%ctuSizeY больше или равна порогу Т_х0 и меньше другого порога Т_х1. Символ % обозначает операцию по модулю, и ctuSizeY выражает размер CTU.
[0144] В третьем варианте осуществления, критерий взятия нового вектора блока для одной из таблиц HBVP кодированного блока состоит в том, что координата у верхнего левого угла кодированного блока ус удовлетворяет следующему условию: yc%ctuSizeY больше или равна порогу Т_у0 и меньше другого порога Т_y1.
[0145] В четвертом примере, критерий взятия нового вектора блока для одной из таблиц HBVP кодового блока состоит в том, что координата х нижнего правого угла кодированного блока хс удовлетворяет следующему условию: xc%ctuSizeY больше или равна порогу Т_х0 и меньше другого порога Т_х1.
[0146] В пятом примере, критерий взятия нового вектора блока для одной из таблиц HBVP кодированного блока состоит в том, что координата у нижнего правого угла кодированного блока ус удовлетворяет следующему условию: yc%ctuSizeY больше или равна порогу Т_у0 и меньше другого порога Т_у1.
[0147] В вышеприведенных примерах, при помещении нового вектора блока в таблицу HBVP может применяться процесс отсечения. Например, в случае обнаружения в таблице HBVP записи с тем же значением вектора блока, что и у нового вектора блока, запись можно удалить. Новую запись, включающую в себя новый вектор блока, можно поместить в позицию для хранения записи, включающей в себя вектор блока самого последнего кодированного блока.
[0148] Вариант осуществления G
[0149] Согласно варианту осуществления, одна или более таблицы HBVP поддерживаются для предсказания вектора блока IBC-кодированных блоков. Каждая таблица HBVP связана с конкретным критерием для взятия нового вектора блока. Предположим, что создается и поддерживается всего N таблиц HBVP. N является положительным целым числом, большим или равным 1.
[0150] В первом примере, для каждой таблицы HBVP, где не хранится ни одной записи, для заполнения таблицы HBVP используется набор предсказателей вектора блока по умолчанию. Например, предсказателем вектора блока по умолчанию может быть нулевой вектор блока (координаты х и у равны нулю).
[0151] Во втором примере, индекс, указывающий на одну из N таблиц HBVP, может приниматься из битового потока в декодере. В ответ, запись в таблице HBVP, указанной индексом, можно выбирать для предсказания вектора блока для текущего блока. Например, самую последнюю запись (добавленную последней) в таблице HBVP, указанной индексом, можно выбирать как предсказатель вектора блока текущего IBC-кодированного блока. В порядке другого примера, самая старая запись (кодированная самой первой) в таблице HBVP, указанной индексом, выбирается как предсказатель вектора блока текущего IBC-кодированного блока.
[0152] Вариант осуществления Н
[0153] Согласно варианту осуществления, в процессе декодирования в декодере поддерживается единственная таблица HBVP, HBVP0. В ходе декодирования текущего IBC-кодированного блока, для определения предсказателя вектора блока для текущего блока, записи в HBVP0 категоризуются по группам. Каждая группа сохраняется в отдельной таблице HBVP, которая именуется классификационной таблицей HBVP. Каждой классификационной таблице HBVP может назначаться конкретный критерий для взятия записи из HBVP0. Таким образом, операции категоризации могут опираться на эти критерии.
[0154] Например, HBVP0 может иметь размер М. Количество N классификационных таблиц HBVP может быть меньше или равно М. Классификационные таблицы HBVP могут обозначаться от HBVP1 до HBVPN.
[0155] Например, критерии для категоризации вновь кодированных векторов блока, согласно варианту осуществления F могут использоваться для категоризации записей HBVP0 в таблицы от HBVP1 по HBVPN. Критерии, отличные от критериев, отвечающих варианту осуществления F, можно использовать в других примерах. Процесс отсечения может применяться при помещении новой записи в таблицу HBVPx (х = 0, 1, …, N). Например, при наличии в HBVPx старой записи с тем же значением вектора блока, что и у новой записи, старую запись можно удалить и новую поместить в позицию для хранения информации самого последнего кодированного блока.
[0156] В примере, после генерации таблиц HBVP1 - HBVPN, запись может выбираться из одной из таблиц HBVP1 - HBVPN согласно индексу, принятому от битового потока. Вектор блока в выбранной записи может использоваться как предсказатель вектора блока для текущего блока.
[0157] В первой случае индекс может указывать одну из таблиц HBVP1 - HBVPN. В ответ на прием индекса, самая поздняя запись (самая последняя запись) может выбираться из таблицы HBVP, указанной индексом.
[0158] Во втором случае, сначала список предсказателей может строиться путем выбора записей из таблиц HBVP1 - HBVPN согласно некоторым правилам (например, как описано в варианте осуществления С). Индекс может указывать кандидата в списке предсказателей. В ответ на прием индекса, кандидат в списке предсказателей может использоваться как предсказатель вектора блока для текущего блока.
[0159] VI. Примеры процесса декодирования в режиме IBC на основе таблицы HBVP
[0160] На фиг. 11 показана блок-схема операций процесса (1100) согласно некоторым вариантам осуществления изобретения. Процесс (1100) может использоваться в реконструкции IBC-кодированного блока, для генерации блока предсказания для реконструируемого блока. В различных вариантах осуществления, процесс (1100) выполняется схемой обработки, например, схемой обработки в оконечных устройствах (210), (220), (230) и (240), схемой обработки, которая осуществляет функции видеодекодера (310), схемой обработки, которая осуществляет функции видеодекодера (410), и т.п.В некоторых вариантах осуществления процесс (1100) реализован в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки осуществляет процесс (1100). Процесс начинается на этапе (S1101) и переходит к (S1110).
[0161] На этапе (S1110) таблица HBVP может поддерживаться в процессе декодирования изображения в декодере. Например, таблица HBVP может включать в себя одну или более записей, каждая из которых соответствует ранее декодированному IBC-кодированному блоку. Каждая запись может включать в себя вектор блока соответствующего ранее декодированного блока и местоположение соответствующего ранее декодированного блока. Местоположением может быть координата х и координата у одного из четырех углов ранее кодированного блока. В примере, каждая запись может дополнительно включать в себя информацию размера (например, ширину и высоту) соответствующего ранее декодированного блока.
[0162] На этапе (S1120), данные текущего блока, кодированного в режиме IBC, могут приниматься в битовом потоке. Например, данные могут включать в себя набор синтаксических элементов блочного уровня, соответствующих текущему блоку. Один из синтаксических элементов может указывать текущий блок кодируется в режиме IBC.
[0163] На этапе (S1130), вектор блока для текущего блока может определяться на основании таблицы HBVP. Для определения вектора блока для текущего блока, сначала может определяться предсказатель вектора блока для вектора блока для текущего блока.
[0164] В примере, список кандидатов для BVP можно построить на основании таблицы HBVP. Затем кандидат выбирается из списка кандидатов для BVP, например, на основании индекса кандидата в списке кандидатов для BVP, принятом в битовом потоке. Выбранный кандидат может включать в себя вектор блока, используемый в качестве предсказателя вектора блока. Список кандидатов для BVP может включать в себя один или более из первого кандидата и второго кандидата. Первый кандидат может включать в себя первый вектор блока из векторов блока в таблице HBVP. Соответствующий ранее декодированный блок первого вектора блока расположен слева от текущего блока. Второй кандидат может включать в себя второй вектор блока из векторов блока в таблице HBVP. Соответствующий ранее декодированный блок второго вектора блока может располагаться сверху от текущего блока.
[0165] В некоторых примерах, для определения предсказателя вектора блока, записи в таблице HBVP сначала классифицируются в разные группы, каждая из которых хранится в классификационной таблице HBVP. Каждая классификационная таблица HBVP может быть связана с критерием для взятия новой записи. Например, одна из записей таблицы HBVP сохраняется в одной из классификационных таблиц HBVP, когда размер соответствующего ранее декодированного блока одной из записей таблицы HBVP удовлетворяет условию размера блока. Например, условие размера блока может состоять в том, что количество отсчетов яркости соответствующего ранее декодированного блока одной из записей таблицы HBVP больше или равно порогу.
[0166] В порядке другого примера, записи в таблице HBVP можно классифицировать в классификационные таблицы HBVP на основании координаты х, координаты у или комбинации координат х и у каждого из соответствующих ранее декодированных блоков, хранящихся в таблице HBVP. Соответственно, записи кодированных блоков, находящиеся в разных позициях относительно текущего блока, могут сохраняться в разных классификационных таблицах.
[0167] На основании классификационных таблиц HBVP можно определять предсказатель вектора блока. В примере, индекс, указывающий одну из классификационных таблиц HBVP, может приниматься в битовом потоке. Соответственно, одна запись может выбираться из указанных классификационных таблиц HBVP. Выбранная запись может соответствовать самому последнему декодированному блоку из декодированных блоков записей в указанных классификационных таблицах HBVP. Вектор блока выбранной записи может использоваться в качестве предсказателя вектора блока для вектора блока для текущего блока.
[0168] В другом примере, список кандидатов для BVP можно построить на основании классификационных таблиц HBVP. Список кандидатов для BVP может включать в себя один или более кандидатов BVP, каждый из которых включает в себя вектор блока, выбранный из классификационных таблиц HBVP. Затем кандидата BVP можно выбирать из списка кандидатов для BVP в качестве предсказателя вектора блока для вектора блока для текущего блока на основании индекса, принятого от битового потока.
[0169] Определив предсказатель вектора блока, можно соответственно определить вектор блока для текущего блока. Например, текущий блок может кодироваться в режиме IBC в одном из режима пропуска, режима объединения и режима AMVP. Для режима пропуска и режима объединения, предсказатель вектора блока может использоваться как вектор блока для текущего блока. Для режима AMVP, разность векторов может приниматься в битовом потоке и добавляться к предсказателю вектора блока для формирования вектора блока для текущего блока.
[0170] На этапе (S1140), текущий блок может реконструироваться на основании определенного вектора блока для текущего блока. Например, опорный блок может определяться в уже декодированной области изображения на основании вектора блока и объединяться с остатком текущего блока для формирования реконструированного блока.
[0171] На этапе (S1150), таблица HBVP может обновляться вектором блока для текущего блока. Например, вектор блока для текущего блока, положение, ширина и высота текущего блока могут сохраняться в таблице HBVP. При обновлении таблицы HBVP может осуществляться проверка избыточности. Затем процесс (1100) может переходить к (S1199), и завершаться на этапе (S1199).
[0172] VII. Компьютерная система
[0173] Вышеописанные методы могут быть реализованы в виде компьютерного программного обеспечения, использующего компьютерно-считываемые инструкции и физически хранящегося на одном или более компьютерно-считываемых носителях. Например, на фиг. 12 показана компьютерная система (1200), пригодная для реализации некоторых вариантов осуществления раскрытого изобретения.
[0174] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую, или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing unit), графическими процессорами (GPU, Graphics Processing Unit) и т.п.
[0175] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0176] Компоненты компьютерной системы (1200), показанные на фиг. 12, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым одним или комбинацией компонентов, показанных в иллюстративном варианте осуществления компьютерной системы (1200).
[0177] Компьютерная система (1200) может включать в себя некоторые устройства ввода интерфейса с человеком. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двухмерного видео, трехмерного видео, включающего в себя стереоскопическое видео).
[0178] Устройства ввода интерфейса с человеком могут включать в себя один или более из (по одному из изображенных): клавиатуры (1201), мыши (1202), сенсорной панели (1203), сенсорного экрана (1210), информационной перчатки (не показана), джойстика (1205), микрофона (1206), сканера (1207), камеры (1208).
[0179] Компьютерная система (1200) также может включать в себя некоторые устройства вывода интерфейса с человеком. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать в себя устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (1210), информационной перчатки (не показана) или джойстика (1205), но также могут быть устройствами тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: громкоговорители (1209), наушники (не показаны)), устройства визуального вывода (например, экраны (1210), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из которых способны к двухмерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографического вывода; очков виртуальной реальности (не показаны), голографических дисплеев и дымовых баков (не показаны)) и принтеров (не показаны).
[0180] Компьютерная система (1200) также может включать в себя доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие в себя CD/DVD ROM/RW (1220) с носителями (1221) CD/DVD и т.п., карты (1222) флэш-памяти, сменный жесткий диск или твердотельный диск (1223), традиционные магнитные носители, например, ленту и флоппи-диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.
[0181] Специалисты в данной области техники также должны понимать, что термин "компьютерно-считываемые носители", используемый в связи с раскрытым здесь изобретением, не охватывает среды передачи, несущие волны или другие кратковременные сигналы.
[0182] Компьютерная система (1200) также может включать в себя интерфейс (1254) к одной или более сетям (1255) связи. Сети могут быть, например, беспроводными, проводными, оптическими. Сети могут быть, дополнительно, локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают в себя локальные сети, например, Ethernet, беспроводные LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные включают в себя CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (1249) (например, USB-порты компьютерной системы (1200)); другие обычно встраиваются в ядро компьютерной системы (1200) путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1200) может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.
[0183] Вышеупомянутые устройства человеческого интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (1240) компьютерной системы (1200).
[0184] Ядро (1240) может включать в себя один или более центральных процессоров (CPU) (1241), графические процессоры (GPU) (1242), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Array) (1243), аппаратные ускорители (1244) для некоторых задач, графический адаптер (1250) и т.д. Эти устройства, совместно с постоянной памятью (ROM) (1245), оперативной памятью (1246), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками (1247), недоступными пользователю, SSD и т.п., могут соединяться посредством системной шины (1248). В некоторых компьютерных системах системная шина (1248) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (1248) ядра, либо через периферийную шину (1249). Согласно фиг. 12, экран (1210) подключен к графическому адаптеру (1250). Архитектуры периферийной шины включают в себя PCI, USB и т.п.
[0185] CPU (1241), GPU (1242), FPGA (1243) и ускорители (1244) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM (1245) или RAM (1246). Переходные данные также могут храниться в RAM (1246), тогда как постоянные данные могут храниться, например, во внутреннем хранилище (1247) данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с один или более CPU (1241), GPU (1242), хранилищем (1247) данных большой емкости, ROM (1245), RAM (1246) и т.п.
[0186] На компьютерно-считываемых носителях может храниться компьютерный код для осуществления различных компьютерно-реализуемых операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.
[0187] В порядке примера, но не ограничения, компьютерная система, имеющая архитектуру (1200), и, в частности, ядро (1240) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных компьютерно-считываемых носителей. Такие компьютерно-считываемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым хранилищем ядра (1240), носящим долговременный характер, например, внутренним хранилищем (1247) данных большой емкости или ROM (1245). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (1240). Компьютерно-считываемый носитель может включать в себя одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (1240) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные процессы или конкретные части описанных здесь конкретных процессов, включая задание структур данных, хранящихся в RAM (1246), и модификацию таких структур данных согласно процессам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (1244)), который может действовать вместо или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей описанных здесь конкретных процессов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на компьютерно-считываемые носители может охватывать схему (например, интегральную схему (IC, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе из них, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию оборудования и программного обеспечения.
Приложение А: аббревиатуры
AMVP: усовершенствованное предсказание векторов движения
ASIC: специализированная интегральная схема
MS: набор эталонов
BV: вектор блока
CANBus: шина контроллерной сети
CD: компакт-диск
CPR: опора на текущее изображение
CPU: центральный процессор
CRT: кинескоп
СТВ: блок дерева кодирования
CTU: единица дерева кодирования
CU: единица кодирования
DPB: буфер изображений декодера
DVD: цифровой видеодиск
FIFO: первым вошел, первым вышел
FPGA: вентильная матрица, программируемая пользователем
GOP: группа изображений
GPU: графический процессор
GSM: глобальная система мобильной связи
HBVP: предсказание вектора блока на исторической основе
HEVC SCC: кодирование содержимого экрана HEVC
HEVC: высокопроизводительное видеокодирование
HMVP: предсказание векторов движения на исторической основе
HRD: гипотетический опорный декодер
IBC: интра-блочное копирование
IC: интегральная схема
JEM: модель совместного исследования
LAN: локальная сеть
LCD: жидкокристаллический дисплей
LTE: проект долгосрочного развития систем связи
MV: вектор движения
MVP: предсказатель вектора движения
OLED: органический светодиод
РВ: блок предсказания
PCI: межсоединение периферийных компонентов
PLD: программируемое логическое устройство
PU: единица предсказания
RAM: оперативная память
ROM: постоянная память
SEI: информация дополнительного улучшения
SNR: отношение сигнал-шум
SSD: твердотельный привод
TMVP: временное предсказание вектора движения
TU: единица преобразования
USB: универсальная последовательная шина
VTM: испытательная модель VVC
VUI: информация пригодности видео
VVC: универсальное видеокодирование.
[0188] Хотя здесь описано несколько иллюстративных вариантов осуществления, возможны изменения, перестановки и различные эквиваленты для замены, которые укладываются в объем изобретения. Таким образом, специалисты в данной области техники могут предложить многочисленные системы и способы, которые, хотя в явном виде здесь не показаны и не описаны, воплощают принципы изобретения и, таким образом, соответствуют его сущности и объему.