[0001] Настоящее изобретение испрашивает приоритет обычной заявки США №16/531,827 "UNIFIED BLOCK VECTOR PREDICTION FOR INTRA PICTURE BLOCK COMPENSATION", поданной 5 августа 2019 года, которая испрашивает приоритет предварительной заявки США №62/816,051 "UNIFIED BLOCK VECTOR PREDICTION FOR INTRA PICTURE BLOCK COMPENSATION", поданной 8 марта 2019 года.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] В настоящей заявке описаны варианты осуществления, в целом относящиеся к видеокодированию.
ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ
[0003] Описание предпосылок создания изобретения приведено здесь с целью представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники для настоящего изобретения.
[0004] Кодирование и декодирование видеосигнала может осуществляться с использованием предсказания между изображениями с компенсацией движения. Цифровое видео без сжатия может включать в себя последовательность изображений, каждое из которых имеет пространственный размер, например, 1920×1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. Видео без сжатия предъявляет значительные требования к битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920×1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с. Час такого видео требует объема памяти более 600 ГБ.
[0005] Одной из целей кодирования и декодирования видеосигнала может являться снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе или объему памяти, в ряде случаев на два порядка величины или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так чтобы реконструированный сигнал можно было использовать для намеченного применения. Сжатие с потерями широко применяется для видео. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями, чем пользователи телевещательных приложений. При достижимой степени сжатия более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.
[0006] Кодер и декодер видеосигнала могут использовать методы из нескольких широких категорий, включающих в себя, например, компенсацию движения, преобразование, квантование и энтропийное кодирование
[0007] Технологии видеокодека могут включать методы, известные как внутреннее кодирование. При внутреннем (интра-) кодировании, значения отсчетов представляются без ссылки на отсчеты или другие данные из ранее реконструированных опорных изображений. В некоторых видеокодеках изображение пространственно разделяется на блоки отсчетов. Когда все блоки отсчетов кодируются в интрарежиме, изображение называется интраизображением. Интраизображения и их производные, например, изображения, полученные в режиме независимого обновления декодера, могут использоваться для сброса состояния декодера, что позволяет использовать их как первое изображение в битовом потоке кодированного видео и видеосеансе, или как неподвижное изображение. Отсчеты интраблока могут подвергаться преобразованию, и коэффициенты преобразования могут квантоваться до энтропийного кодирования. Внутреннее предсказание может быть методом минимизации значений отсчетов в области предварительного преобразования. В ряде случаев, чем меньше значение DC (постоянной составляющей) после преобразования, и чем меньше коэффициенты АС (переменных составляющих), тем меньше битов требуется при данном размере шага квантования для представления блока после энтропийного кодирования.
[0008] Традиционное внутреннее кодирование, известное, например, из технологий кодирования поколения MPEG-2, не использует внутреннего предсказания. Однако некоторые более современные технологии сжатия видео включают в себя методы, которые пытаются сделать это, например, из данных окружающих отсчетов и/или метаданных, полученных в ходе кодирования/декодирования пространственно соседних и предшествующих, в порядке декодирования, блоков данных. Такие методы далее именуются методами "внутреннего предсказания". Заметим, что по меньшей мере в некоторых случаях внутреннее предсказание осуществляется только с использованием опорных данных из текущего изображения, подлежащего реконструкции, но не из опорных изображений.
[0009] Может существовать много разных форм внутреннего предсказания. Когда в данной технологии видеокодирования может использоваться более одного из таких методов, используемый метод может кодироваться в режиме внутреннего предсказания. В некоторых случаях режимы могут иметь подрежимы и/или параметры, которые могут кодироваться по отдельности или включаться в кодовое слово режима. Использование того или иного кодового слова для данной комбинации режимов/подрежимов/параметров может оказывать влияние на выигрыш в эффективности кодирования посредством внутреннего предсказания и, следовательно, на технологию энтропийного кодирования, используемую для перевода кодовых слов в битовый поток.
[0010] Определенный режим внутреннего предсказания впервые был задан в Н.264, уточнен в Н.265, и дополнительно уточнен в более современных технологиях кодирования, например, модели совместного исследования (JEM, joint exploration model), универсального видеокодирования (VVC, versatile video coding) и наборе эталонов (BMS, benchmark set). Блок предсказателя может формироваться с использованием значений соседних отсчетов, принадлежащих уже доступным отсчетам. Значения соседних отсчетов копируются в блок предсказателя согласно направлению. Ссылка на используемое направление может кодироваться в битовом потоке или может сама предсказываться.
[0011] В нижнем правом углу фиг. 1А изображено подмножество из девяти направлений предсказателя множества из 33 возможных направлений предсказателя согласно Н.265 (соответствующих 33 угловым режимам из 35 интрарежимов). Точка (101), где сходятся стрелки, представляет предсказываемый отсчет. Стрелки представляют направление, из которого предсказывается отсчет. Например, стрелка (102) указывает, что отсчет (101) предсказывается из отсчета или отсчетов, расположенного(ых) вверху справа, под углом 45 градусов к горизонтали. Аналогично, стрелка (103) указывает, что отсчет (101) предсказывается из отсчета или отсчетов расположенного(ых) внизу слева от отсчета (101), под углом 22,5 градусов к горизонтали.
[0012] В верхнем левом углу фиг. 1А изображен квадратный блок (104) 4×4 отсчетов (указанный жирной пунктирной линией). Квадратный блок (104) включает в себя 16 отсчетов, каждый из которых обозначен буквой "S", позицией по оси Y (например, индексом строки) и позицией по оси X (например, индексом столбца). Например, отсчет S21 является вторым отсчетом по оси Y (сверху) и первым (слева) отсчетом по оси X. Аналогично, отсчет S44 является четвертым отсчетом в блоке (104) по обеим осям Y и X. Поскольку блок имеет размер 4×4 отсчета, S44 располагается внизу справа. Дополнительно показаны опорные отсчеты, которые следуют аналогичной схеме нумерации. Опорный отсчет обозначается буквой R, своей Y-позицией (например, индексом строки) и Х-позицией (индексом столбца) относительно блока (104). В обоих Н.264 и Н.265 предсказанные отсчеты соседствуют с блоком, подлежащим реконструкции; поэтому нет необходимости использовать отрицательные значения.
[0013] Предсказание внутри изображения может работать путем копирования опорных значений отсчетов из соседних отсчетов, указанных сигнализируемым направлением предсказания. Например, предположим, что битовый поток кодированного видео включает в себя сигнализацию, которая, для этого блока, указывает направление предсказания, обозначенное стрелкой (102) - то есть отсчеты предсказываются из предсказанного(ых) отсчета или отсчетов, расположенного(ых) вверху справа, под углом 45 градусов к горизонтали. В этом случае отсчеты S41, S32, S23 и S14 предсказываются из одного и того же опорного отсчета R05. Затем отсчет S44 предсказывается из опорного отсчета R08.
[0014] В некоторых случаях значения множества опорных отсчетов можно комбинировать, например, посредством интерполяции для вычисления опорного отсчета; в особенности, когда направления не кратны 45 градусам.
[0015] Количество возможных направлений увеличивается по мере развития технологий видеокодирования. В Н.264 (2003 год) можно было представлять девять разных направлений. В Н.265 это количество увеличилось до 33 (2013 год), и JEM/VVC/BMS во время составления данного описания может поддерживать до 65 направлений. Были проведены эксперименты для выявления наиболее вероятных направлений, и некоторые методы энтропийного кодирования используются для представления этих вероятных направлений малым количеством битов, ценой утраты некоторых менее вероятных направлений. Дополнительно, сами направления иногда можно предсказывать из соседних направлений, используемых в соседних, уже декодированных, блоках.
[0016] На фиг. 1 В показана схема (105), на которой изображено 65 направлений внутреннего предсказания в соответствии с JEM, чтобы проиллюстрировать увеличение числа направлений предсказания с течением времени.
[0017] Отображение битов направлений внутреннего предсказания в кодированном битовом потоке видео, которые представляют направление, может отличаться от одной технологии видеокодирования к другой технологии видеокодирования; и может варьироваться, например, от простых прямых отображений направления предсказания на режим внутреннего предсказания, на кодовые слова, до сложных адаптивных схем, включающих наиболее вероятные режимы, и подобных методов. Однако во всех случаях могут существовать определенные направления, которые статистически менее вероятны в видеоконтенте, чем некоторые другие направления. Поскольку целью сжатия видео является уменьшение избыточности, эти менее вероятные направления в хорошо работающей технологии кодирования видео будут представлены большим количеством битов, чем более вероятные направления.
[0018] Компенсация движения может представлять собой метод сжатия с потерями и может относиться к методам, в которых блок данных отсчетов из ранее восстановленного изображения или его части (опорного изображения) после пространственного сдвига в направлении, указанном вектором движения (далее MV), используется для предсказания реконструированного изображения или его части. В некоторых случаях опорное изображение может совпадать с реконструируемым изображением. Векторы движения могут иметь две координаты X и Y или три координаты, третья из которых является указанием используемого опорного изображения (последнее, косвенно, может быть временным измерением).
[0019] В некоторых методах сжатия видео MV, применимый к определенной области данных отсчетов, может быть предсказан на основании других MV, например, тех, которые относятся к другой области данных отсчетов, пространственно прилегающей к реконструируемой области, и предшествующей этому MV в порядке декодирования. Это может существенно уменьшить объем данных, необходимых для кодирования MV, тем самым устраняя избыточность и увеличивая сжатие. Предсказание М V может работать эффективно, например, потому, что при кодировании входного видеосигнала, полученного от камеры (известного как естественное видео), существует статистическая вероятность того, что области, большие, чем область, к которой применим один MV, перемещаются в аналогичном направлении и, следовательно, в некоторых случаях могут быть предсказаны с использованием аналогичного вектора движения, полученного из MV соседней области. Это приводит к тому, что MV, найденный для данной области, аналогичен или совпадает с MV, предсказанным из окружающих MV, и это, в свою очередь, позволяет (после энтропийного кодирования) уменьшить количество битов по сравнению с количеством битов при непосредственном кодировании MV. В некоторых случаях предсказание MV может быть примером сжатия сигнала (а именно, MV), полученного из исходного сигнала (а именно, потока отсчетов), без потерь. В других случаях само предсказание MV может осуществляться с потерями, например, из-за ошибок округления при вычислении предсказателя из нескольких окружающих MV.
[0020] Различные механизмы предсказания MV описаны в Н. 265/HEVC (ITU-T Rec. Н.265, "High Efficiency Video Coding", декабрь 2016 г.). Из многих механизмов предсказания MV, которые предлагаются в Н.265, здесь описан метод, далее именуемый "пространственным слиянием".
[0021] Текущий блок (101) содержит отсчеты, найденные кодером в процессе поиска движения для возможности предсказания из смещенного в пространстве предыдущего блока того же размера. Вместо непосредственного кодирования, MV может быть получен из метаданных, связанных с одним или несколькими опорными изображениями, например, из самого последнего (в порядке декодирования) опорного изображения, с использованием MV, связанного с одним из пяти окружающих отсчетов, обозначенных А0, А1, и В0, B1, В2 (с 102 по 106, соответственно). В Н.265 для предсказания MV могут использоваться предсказатели из того же опорного изображения, которое использует соседний блок.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0022] Аспекты изобретения предусматривают способы и устройства для кодирования/декодирования видео. В некоторых примерах устройство для видеодекодирования включает в себя схему обработки.
[0023] Схема обработки сконфигурирована для декодирования информации предсказания для текущего блока в текущем кодированном изображении, которое является частью кодированной видеопоследовательности. Информация предсказания указывает режим предсказания на основании копии блока внутри изображения (IBC), используемый для текущего блока, индекс для выбора кандидата предсказателя вектора блока из списка кандидатов предсказателя вектора блока для текущего блока, и то, существует ли ненулевой остаток для текущего блока. Схема обработки строит список кандидатов предсказателя вектора блока для текущего блока в ответ на указание, что ненулевой остаток для текущего блока не существует. Список кандидатов предсказателя векторов блока содержит первое число кандидатов предсказателя векторов блока и строится на основе последовательности кандидатов. В противном случае, схема обработки строит список кандидатов предсказателя вектора блока для текущего блока в ответ на указание, что ненулевой остаток для текущего блока существует. Список кандидатов предсказателя вектора блока содержит второе количество кандидатов предсказателя вектора блока и строится на основе той же последовательности кандидатов. Далее схема обработки выбирает кандидата предсказателя вектора блока из созданного списка кандидатов предсказателя вектора блока на основе индекса, указанного в информации предсказания. Наконец, схема обработки реконструирует текущий блок в соответствии с выбранным кандидатом предсказателя вектора блока.
[0024] В соответствии с аспектом изобретения схема обработки дополнительно определяет наличие первого вектора блока первого пространственно соседнего блока из множества пространственно соседних блоков текущего блока. Схема обработки вставляет первый вектор блока в список кандидатов предсказателя вектора блока в ответ на определение доступности первого вектора блока первого пространственно соседнего блока из множества пространственно соседних блоков текущего блока. Схема обработки определяет, доступен ли второй вектор блока второго пространственно соседнего блока из множества пространственно соседних блоков текущего блока и совпадает ли второй вектор блока второго пространственно соседнего блока с первым вектором блока первого пространственно соседнего блока. Схема обработки вставляет второй вектор блока в список кандидатов предсказателя вектора блока в ответ на определение того, что второй вектор блока второго пространственно соседнего блока из множества пространственно соседних блоков текущего блока доступен и что второй вектор блока второго пространственно соседнего блока не совпадает с первым вектором блока первого пространственно соседнего блока.
[0025] В одном из вариантов осуществления первый пространственно соседний блок текущего блока примыкает к нижнему левому углу текущего блока, а нижняя сторона первого пространственно соседнего блока лежит на одной линии с нижней стороной текущего блока, при этом второй пространственно соседний блок текущего блока примыкает к верхнему правому углу текущего блока, а правая сторона второго пространственно соседнего блока лежит на одной линии с правой стороной текущего блока.
[0026] В другом варианте осуществления первый пространственно соседний блок текущего блока примыкает к нижнему левому углу текущего блока, а верхняя сторона первого пространственно соседнего блока лежит на одной линии с нижней стороной текущего блока, при этом второй пространственно соседний блок текущего блока примыкает к верхнему правому углу текущего блока, а левая сторона второго пространственно соседнего блока лежит на одной линии с правой стороной текущего блока.
[0027] В другом варианте осуществления первый пространственно соседний блок текущего блока примыкает к левой стороне текущего блока, а второй пространственно соседний блок текущего блока примыкает к верхней стороне текущего блока.
[0028] В одном из вариантов осуществления, когда общее число векторов блоков множества пространственно соседних блоков, включенных в список кандидатов предсказателя векторов блока, меньше максимально допустимого числа, которое основано на том, существует ли ненулевой остаток для текущего блока, схема обработки выбирает третий вектор блока ранее кодированного блока из множества векторов блоков ранее кодированных блоков. Схема обработки определяет, отличается ли выбранный третий вектор блока от множества пространственно соседних блоков, включенных в список кандидатов предсказателя вектора блока. Схема обработки вставляет выбранный третий вектор блока в список кандидатов предсказателя вектора блока в ответ на определение того, что выбранный вектор третьего блока отличается от множества пространственно соседних блоков, включенных в список кандидатов предсказателя вектора блока.
[0029] В одном из вариантов осуществления, когда общее число векторов блоков множества пространственно соседних блоков и ранее кодированных блоков, включенных в список кандидатов предсказателя векторов блока, меньше максимально допустимого числа и больше единицы, схема обработки выбирает множество кандидатов предсказателя векторов блоков из списка кандидатов предсказателя векторов блока. Схема обработки усредняет выбранное множество кандидатов предсказателя векторов блока для формирования по меньшей мере одного усредненного вектора блока. Схема обработки вставляет по меньшей мере один усредненный вектор блока в список кандидатов предсказателя вектора блока.
[0030] В одном из вариантов осуществления, когда общее количество векторов блока множества пространственно соседних блоков, векторов блока ранее кодированных блоков и по меньшей мере одного усредненного вектора блока, включенных в список кандидатов предсказатели векторов блока, меньше максимально допустимого количества, схема обработки вставляет вектор блока по умолчанию в список кандидатов предсказателя векторов блока.
[0031] В одном из вариантов осуществления вектор блока по умолчанию равен (0, 0).
[0032] В одном из вариантов осуществления выбранный кандидат предсказателя вектора блока не округляется, если для текущего блока существует ненулевой остаток.
[0033] В одном из вариантов осуществления, когда один из кандидатов предсказателя вектора блока, включенных в список кандидатов предсказателя вектора блока, является недействительным, схема обработки выполняет процесс обрезки или отсечения для одного из кандидатов предсказателя вектора блока.
[0034] В одном из вариантов осуществления один из кандидатов предсказателя вектора блока определяется как недействительный, когда опорный блок, предсказанный одним из кандидатов предсказателя вектора блока, выходит за пределы допустимого диапазона поиска для режима предсказания на основании копии блока внутри изображения (IBC).
[0035] Аспекты изобретения также предусматривают компьютерно-считываемый носитель, где хранятся инструкции, которые, при выполнении компьютером для видеодекодирования, предписывают компьютеру осуществлять описанный способ видеодекодирования.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0036] Дополнительные особенности, характер и различные преимущества раскрытого изобретения будут понятны из нижеследующего подробного описания и прилагаемых чертежей, на которых:
[0037] Фиг. 1А представляет собой схематическую иллюстрацию примера подмножества режимов внутреннего предсказания.
[0038] Фиг. 1В представляет собой схему направлений внутреннего предсказания
[0039] Фиг. 2 представляет собой схематическую иллюстрацию упрощенной блок-схемы системы связи в соответствии с вариантом осуществления.
[0040] Фиг. 3 представляет собой схематическую иллюстрацию упрощенной блок-схемы системы связи в соответствии с вариантом осуществления.
[0041] Фиг. 4 представляет собой схематическую иллюстрацию упрощенной блок-схемы декодера в соответствии с вариантом осуществления.
[0042] Фиг. 5 представляет собой схематическую иллюстрацию упрощенной блок-схемы кодера в соответствии с вариантом осуществления.
[0043] На фиг. 6 показана блок-схема кодера в соответствии с другим вариантом осуществления.
[0044] На фиг. 7 показана блок-схема декодера в соответствии с другим вариантом осуществления.
[0045] На фиг. 8 показан пример режима предсказания на основании копии блока внутри изображения (IBC) в соответствии с вариантом осуществления.
[0046] На фиг. 9A-9D показан пример процесса обновления диапазона поиска для режима предсказания IBC в соответствии с одним из вариантов осуществления изобретения.
[0047] На фиг. 10 показан пример действительного вектора блока, который следует определенным ограничениям, в соответствии с одним из вариантов осуществления изобретения.
[0048] На фиг. 11 показан пример векторов блока на основе пространственного соседства, согласно одному из вариантов осуществления изобретения.
[0049] На фиг. 12 показана блок-схема операций примера процесса согласно варианту осуществления изобретения.
[0050] На фиг. 13 представлена схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0051] На фиг. 2 показана упрощенная блок-схема системы связи (200) согласно варианту осуществления настоящего изобретения. Система связи (200) включает в себя множество оконечных устройств, которые могут осуществлять связь друг с другом, например, через сеть (250). Например, система связи (200) включает в себя первую пару оконечных устройств (210) и (220), соединенных между собой через сеть (250). В примере, приведенном на фиг. 2, первая пара оконечных устройств (210) и (220) осуществляет однонаправленную передачу данных. Например, оконечное устройство (210) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством (210)) для передачи на другое оконечное устройство (220) через сеть (250). Кодированные видеоданные могут передаваться в форме одного или более битовых потоков кодированного видео. Оконечное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и отображения видеоизображений согласно восстановленным видеоданным. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.
[0052] В другом примере система связи (200) включает в себя вторую пару оконечных устройств (230) и (240), осуществляющих двунаправленную передачу кодированных видеоданных, которые могут возникать, например, в ходе видеоконференцсвязи. Для двунаправленной передачи данных, в порядке примера, каждое оконечное устройство из оконечных устройств (230) и (240) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством) для передачи в другое оконечное устройство из оконечных устройств (230) и (240) через сеть (250). Каждое оконечное устройство из оконечных устройств (230) и (240) также может принимать также может принимать кодированные видеоданные, передаваемые другим оконечным устройством из оконечных устройств (230) и (230), и может декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения на доступном устройстве отображения согласно восстановленным видеоданным.
[0053] В примере, приведенном на фиг. 2, оконечные устройства (210), (220), (230) и (240) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. Варианты осуществления настоящего изобретения находят применение для портативных компьютеров, планшетных компьютеров, медиаплееров и/или специального оборудования для видеоконференцсвязи. Сеть (250) представляет любое количество сетей, которые переносят кодированные видеоданные между оконечными устройствами (210), (220), (230) и (240), включая, например, проводные и/или беспроводные сети связи. Сеть связи (250) позволяет обмениваться данными в режиме канальной коммутации и/или пакетной коммутации. Репрезентативные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или интернет. В целях настоящего рассмотрения, архитектура и топология сети (250) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.
[0054] На фиг. 3 показано, в порядке примера применения раскрытого изобретения, размещение видеокодера и видеодекодера в окружении потоковой передачи. Раскрытое изобретение может быть в равной степени применимо к другим применениям обработки видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, в том числе CD, DVD, карте памяти и т.п.
[0055] Система потоковой передачи может включать в себя подсистему (313) захвата, которая может включать в себя источник (301) видеосигнала, например, цифровую камеру, создающую, например, поток (302) видеоизображений, не подвергнутых сжатию. Например, поток (302) видеоизображений включает в себя отсчеты, взятые цифровой камерой. Поток (302) видеоизображений, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (304) (или битовыми потоками кодированного видео), может обрабатываться электронным устройством (320), которое включает в себя видеокодер (303), подключенный к источнику (301) видеосигнала. Видеокодер (303) может включать в себя оборудование, программное обеспечение или их комбинацию для обеспечения или реализации аспектов раскрытого изобретения, как более подробно описано ниже. Кодированные видеоданные (304) (или битовый поток (304) кодированного видео), изображенные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком (302) видеоизображений, могут храниться на потоковом сервере (305) для использования в будущем. Одна или более клиентских подсистем потоковой передачи, например, клиентские подсистемы (306) и (308) на фиг. 3, могут осуществлять доступ к потоковому серверу (305) для извлечения копий (307) и (309) кодированных видеоданных (304). Клиентская подсистема (306) может включать в себя видеодекодер (310), например, в электронном устройстве (330). Видеодекодер (310) декодирует входящую копию (307) кодированных видеоданных и создает исходящий поток (311) видеоизображений, который может визуализироваться на дисплее (312) (например, отображающем экране) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи, кодированные видеоданные (304), (307) и (309) (например, битовые потоки видео) могут кодироваться согласно тем или иным стандартам кодирования/сжатия видео. Примеры этих стандартов включают в себя ITU-T Recommendation Н.265. Например, разрабатывается стандарт видеокодирования под официальным названием "универсальное видеокодирование" (VVC, Versatile Video Coding). Раскрытое изобретение может использоваться в контексте VVC.
[0056] Заметим, что электронные устройства (320) и (330) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (320) может включать в себя видеодекодер (не показан), и электронное устройство (330) также может включать в себя видеокодер (не показан).
[0057] На фиг. 4 показана блок-схема видеодекодера (410) согласно варианту осуществления настоящего изобретения. Видеодекодер (410) может входить в состав электронного устройства (430). Электронное устройство (430) может включать в себя приемник (431) (например, приемные схемы). Видеодекодер (410) может использоваться вместо видеодекодера (310) в примере, приведенном на фиг. 3.
[0058] Приемник (431) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (410); в том же или другом варианте осуществления, по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (401), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (431) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут ретранслироваться на соответствующие использующие и объекты (не показаны). Приемник (431) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети буферная память (415) может быть подключена между приемником (431) и энтропийным декодером / анализатором (420) (далее "анализатором (420)"). В некоторых вариантах применения буферная память (415) входит в состав видеодекодера (410). В других она может не входить в состав видеодекодера (410) (не показан). В прочих вариантах может существовать буферная память (не показана) вне видеодекодера (410), например, для борьбы с джиттером сети, помимо другой буферной памяти (415) в составе видеодекодера (410), например, для управления хронированием доигрывания. Когда приемник (431) принимает данные от устройства хранения/ретрансляции с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (415) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшей попытки, например, Интернете, буферная память (415) может требоваться, может быть сравнительно большой и может иметь преимущественно адаптивный размер, и по меньшей мере частично может быть реализована в операционной системе или аналогичных элементах (не показаны) вне видеодекодера (410).
[0059] Видеодекодер (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) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[0060] Анализатор (420) может осуществлять операцию энтропийного декодирования / анализа видеопоследовательности, принятой из буферной памяти (415), для создания символов (421).
[0061] Для реконструкции символов (521) могут использоваться несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например: интер- и интраизображения, интер- и интраблока) и других факторов. Какие модули используются, и как, может определяться информацией управления подгруппами, выделенной из кодированной видеопоследовательности анализатором (420). Поток такой информации управления подгруппами между анализатором (420) и множественными модулями для простоты в дальнейшем не показан.
[0062] Помимо ранее упомянутых функциональных блоков видеодекодер (410) может принципиально подразделяться на несколько функциональных модулей, как описано ниже. В практической реализации, работающей в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания раскрытого изобретения уместно принципиальное подразделение на нижеперечисленные функциональные модули.
[0063] Первым модулем является модуль (451) масштабирования / обратного преобразования. Модуль (451) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую в себя используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (421) от анализатора (420). Модуль (451) масштабирования / обратного преобразования может выводить блоки, содержащие значения отсчетов, которые можно вводить в агрегатор (455).
[0064] В ряде случаев выходные отсчеты блока (451) масштабирования / обратного преобразования могут относиться к внутренне-кодированному блоку; то есть блоку, который не использует предсказанную информацию из ранее реконструированных изображений, но может использовать предсказанную информацию из ранее реконструированных частей текущего изображения. Такая предсказанная информация может обеспечиваться модулем (452) предсказания внутри изображения. В ряде случаев модуль (452) предсказания внутри изображения генерирует блок такого же размера и формы, как блок, подлежащий реконструкции, с использованием информации ранее реконструированного окружения, извлеченной из буфера (458) текущего изображения. Буфер (458) текущего изображения буферизует, например, частично реконструированное текущее изображение и/или полностью реконструированное текущее изображение. Агрегатор (455) в ряде случаев добавляет, для каждого отсчета, информацию предсказания, сгенерированную модулем (452) внутреннего предсказания, в информацию выходных отсчетов, обеспеченную модулем (451) масштабирования / обратного преобразования.
[0065] В других случаях выходные отсчеты модуля (451) масштабирования / обратного преобразования могут относиться к внутренне кодированному блоку, возможно, с компенсацией движения. В таком случае модуль (453) предсказания с компенсацией движения может осуществлять доступ к памяти (457) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (421), относящимися к блоку, эти отсчеты могут добавляться агрегатором (455) к выходному сигналу модуля (451) масштабирования / обратного преобразования (в этом случае именуемому остаточными отсчетами или остаточным сигналом) для генерации информации выходных отсчетов. Адреса в памяти (457) опорных изображений, откуда модуль (453) предсказания с компенсацией движения извлекает предсказанные отсчеты, могут регулироваться векторами движения, доступными модулю (453) предсказания с компенсацией движения, в форме символов (421), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (457) опорных изображений, когда используются точные векторы движения под-отсчетов, механизмы предсказания векторов движения и т.д.
[0066] К выходным отсчетам агрегатора (455) можно применять различные методы контурной фильтрации в модуле (456) контурного фильтра. Технологии сжатия видео могут включать в себя технологии деблокирующего фильтра под управлением параметров, включенных в кодированную видеопоследовательность (также именуемую битовым потоком кодированного видео) и становиться доступными модулю (456) контурного фильтра в качестве символов (421) от анализатора (420), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.
[0067] Модуль (456) контурного фильтра может выдавать поток отсчетов, который может поступать на устройство (412) визуализации, а также сохраняться в памяти (457) опорных изображений для использования в будущем предсказании между изображениями.
[0068] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью реконструировано, и кодированное изображение идентифицировано как опорное изображение (например, анализатором (420)), буфер (458) текущего изображения может становиться частью памяти (457) опорных изображений, и свежий буфер текущего изображения может повторно выделяться до начала реконструкции следующего кодированного изображения.
[0069] Видеодекодер (410) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видео, например, по стандарту ITU-T Rec. Н.265. Кодированная видеопоследовательность может согласовываться с синтаксисом, заданным используемой/ым технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность может придерживаться как синтаксиса технологии или стандарта сжатия видео, так и профилей, задокументированных в технологии или стандарте сжатия видео. В частности, профиль может выбирать некоторые инструменты как инструменты, доступные для использования только под этим профилем, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видео. В ряде случаев уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемого в кодированной видеопоследовательности.
[0070] Согласно варианту осуществления, приемник (431) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (410) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, слои улучшения во времени, пространстве или отношения сигнал/шум (SNR, signal noise ratio), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.
[0071] На фиг. 5 показана блок-схема видеокодера (503) согласно варианту осуществления настоящего изобретения. Видеокодер (503) входит в состав электронного устройства (520). Электронное устройство (520) включает в себя передатчик (540) (например, передающую схему). Видеокодер (503) может использоваться вместо видеокодера (303) в примере, приведенном на фиг. 3.
[0072] Видеокодер (503) может принимать отсчеты видео от источника (501) видеосигнала (который не входит в состав электронного устройства (520) в примере, показанном на фиг. 5), который может захватывать видеоизображение(я), подлежащее(ие) кодированию видеокодером (503). В другом примере источник (501) видеосигнала входит в состав электронного устройства (520).
[0073] Источник (501) видеосигнала может обеспечивать исходную видеопоследовательность, подлежащую кодированию видеокодером (503) в форме потока отсчетов цифрового видео любой подходящей битовой глубины (например: 8 бит, 10 бит, 12 бит, ...), любого цветового пространства (например, ВТ.601 Y CrCB, RGB, …), и любой подходящей структуры дискретизации (например, Y CrCB 4:2:0, Y CrCB 4:4:4). В системе службы массовой информации источником (501) видеосигнала может быть запоминающее устройство, где хранится ранее подготовленное видео. В системе видеоконференцсвязи источником (501) видеосигнала может быть камера, которая захватывает информацию локального изображения как видеопоследовательность. Видеоданные могут обеспечиваться как множество отдельных изображений, которые создают ощущение движения при наблюдении в последовательности. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемых структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники нетрудно понять соотношение между пикселями и отсчетами. Нижеследующее описание посвящено отсчетам.
[0074] Согласно варианту осуществления, видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с учетом любых других временных ограничений, налагаемых применением. Установление надлежащей скорости кодирования является одной из функций контроллера (550). В некоторых вариантах осуществления контроллер (550) управляет другими функциональными модулями, как описано ниже, и функционально подключен к другим функциональным модулям. Подключение для простоты не показано. Параметры, установленные контроллером (550), могут включать в себя параметры, связанные регулировкой частоты (пропуск изображения, квантователь, значение лямбда, применяемое при оптимизации скорости-искажения, …), размер изображения, схему групп изображений (GOP, group of pictures), максимальную зону поиска вектора движения и т.д. Контроллер (550) может быть выполнен с возможностью иметь другие подходящие функции, относящиеся к видеокодеру (503), оптимизированному для той или иной конструкции системы.
[0075] В некоторых вариантах осуществления видеокодер (503) выполнен с возможностью работать в петле кодирования. В качестве очень упрощенного описания, в порядке примера, петля кодирования может включать в себя исходный кодер (530) (например, отвечающий за создание символов, например, потока символов, на основе входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локальный) декодер (533), встроенный в видеокодер (503). Декодер (533) реконструирует символы для создания данных отсчетов, аналогично тому, как это делал бы (удаленный) декодер (поскольку любое сжатие между символами и битовым потоком кодированного видео происходит без потерь в технологиях сжатия видео, рассматриваемых в раскрытом изобретении). Реконструированный поток отсчетов (данные отсчетов) поступает в память (534) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, не зависящим от положения декодера (локального или удаленного), содержимое памяти (534) опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, предсказанная часть кодера "видит" в качестве отсчетов опорного изображения точно такие же значения отсчетов, как "видел" бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронизма опорного изображения (и, в итоге, дрейф, если синхронизм не удается поддерживать, например, вследствие канальных ошибок) используется также в некоторых связанных областях техники.
[0076] "Локальный" декодер (533) может действовать таким же образом, как "удаленный" декодер, например, видеодекодер (410), подробно вышеописанный со ссылкой на фиг. 4. Однако, опять же, согласно фиг. 4, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (545) и анализатором (420) может осуществляться без потерь, части энтропийного декодирования видеодекодера (410), включающие в себя буферную память (415) и анализатор (420), могут быть не полностью реализованы в локальном декодере (533).
[0077] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализа/энтропийного декодирования, также обязательно должна присутствовать, по существу в идентичной функциональной форме, в соответствующем кодере. По этой причине раскрытое изобретение сконцентрировано на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодированная. Только в некоторых областях требуется более детальное описание, которое приведено ниже.
[0078] Согласно некоторым примерам, в ходе работы исходный кодер (530) может осуществлять кодирование с предсказанием и компенсацией движения, при котором входное изображение кодируется с предсказанием на основании одного или более ранее кодированных изображений из видеопоследовательности, указанных как "опорные изображения". Таким образом, машина (532) кодирования кодирует различия между пиксельными блоками входного изображения и пиксельными блоками опорного изображения(й), которое(ые) может(ут) выбираться в качестве предсказанной(ых) ссылки(ок) на входное изображение.
[0079] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, которые могут быть указаны как опорные изображения, на основе символов, созданных исходным кодером (530). Операции машины (532) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 5), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных изображениях, и может предписывать сохранение реконструированных опорных изображений в памяти (534) опорных изображений. Таким образом, видеокодер (503) может локально сохранять копии реконструированных опорных изображений, имеющие такое же содержимое, как реконструированные опорные изображения, которые будут получены видеодекодером на стороне приемника (в отсутствие ошибок передачи).
[0080] Предсказатель (535) может осуществлять поиски предсказания для машины (532) кодирования. Таким образом, для нового изображения, подлежащего кодированию, предсказатель (535) может искать в памяти (534) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных пиксельных блоков) или те или иные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (535) может работать на основе "блоки отсчетов по пиксельным блокам" для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предсказателем (535), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (534) опорных изображений.
[0081] Контроллер (550) может управлять операциями кодирования исходного кодера (530), включая, например, установление параметров и параметров подгруппы, используемых для кодирования видеоданных.
[0082] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) переводит символы, генерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно технологиям, например, кодирования по Хаффману, кодирования с переменной длиной серии, арифметического кодирования и т.д.
[0083] Передатчик (540) может буферизовать кодированную(ые) видеопоследовательность(и), созданную энтропийным кодером (545), для подготовки к передаче через канал (560) связи, который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные от видеокодера (503) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).
[0084] Контроллер (550) может управлять работой видеокодера (503). В ходе кодирования контроллер (550) может назначать каждому кодированному изображению тот или иной тип кодированного изображения, который может определять методы кодирования, применимые к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы изображения:
[0085] Интраизображение (1-изображение), которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают разные типы интраизображений, включая, например, изображения в формате независимого обновления декодера ("IDR", Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.
[0086] Предсказанное изображение (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[0087] Двунаправленно-предсказанное изображение (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, мультипредсказанные изображения могут использовать более двух опорных изображений и связанные метаданные для реконструкции единого блока.
[0088] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться предиктивно со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки I-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (пространственным или внутренним предсказанием). Пиксельные блоки Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[0089] Видеокодер (503) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, например, ITU-T Rec. Н.265. В своей работе видеокодер (503) может осуществлять различные операции сжатия, в том числе операции предиктивного кодирования, которые используют временные и пространственные избыточности во входной видеопоследовательности. Поэтому кодированные видеоданные могут согласовываться с синтаксисом, заданным используемой технологией или стандартом видеокодирования.
[0090] Согласно варианту осуществления, передатчик (540) может передавать дополнительные данные с кодированным видео. Исходный кодер (530) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR слои улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и т.д.
[0091] Видео может захватываться как множество исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно именуемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а предсказание между изображениями использует (временную или иную) корреляцию между изображениями. Например, конкретное изображение, подлежащее кодированию/декодированию, которое именуется текущим изображением, разбивается на блоки. Когда блок в текущем изображении аналогичен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может кодироваться вектором, который именуется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множественных опорных изображений.
[0092] В некоторых вариантах осуществления метод двойного предсказания может использоваться в предсказании между изображениями. Согласно методу двойного предсказания, используются два опорных изображения, например, первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может предсказываться комбинацией первого опорного блока и второго опорного блока.
[0093] Дополнительно, метод режима слияния может использоваться в предсказании между изображениями для повышения эффективности кодирования.
[0094] Согласно некоторым вариантам осуществления изобретения, предсказания, например, предсказания между изображениями и предсказания внутри изображения, осуществляются поблочно. Например, согласно стандарту 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 пикселей и т.п.
[0095] На фиг. 6 показана схема видеокодера (603) согласно другому варианту осуществления изобретения. Видеокодер (603) выполнен с возможностью приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое составляет часть кодированной видеопоследовательности. Например, видеокодер (603) используется вместо видеокодера (303) в примере, приведенном на фиг. 3.
[0096] В примере НЕ VC видеокодер (603) принимает матрицу значений отсчетов для блока обработки, например, блока предсказания 8×8 отсчетов и т.п. Видеокодер (603) определяет, наилучшим ли образом кодируется блок обработки в интрарежиме, интеррежиме или режиме двойного предсказания с использованием, например, оптимизации скорость-искажения. Когда блок обработки подлежит кодированию в интрарежиме, видеокодер (603) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение; и когда блок обработки подлежит кодированию в интеррежиме или режиме двойного предсказания, видеокодер (603) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях видеокодирования режим слияния может быть подрежимом предсказания между изображениями, где вектор движения выводится из одного или более предсказателей вектора движения без привлечения кодированного компонента вектора движения вне предсказателей. В некоторых других технологиях видеокодирования может присутствовать компонент вектора движения, применимый к данному блоку. В порядке примера, видеокодер (603) включает в себя другие компоненты, например, модуль определения режима (не показан) для определения режима блоков обработки.
[0097] В примере, приведенном на фиг. 6, видеокодер (603) включает в себя интеркодер (630), интракодер (622), вычислитель (623) остатка, переключатель (626), кодер (624) остатка, общий контроллер (621) и энтропийный кодер (625), соединенные друг с другом как показано на фиг. 6.
[0098] Интеркодер (630) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоками в предыдущих изображениях и более поздних изображениях), генерации информации внешнего предсказания (например, описания избыточной информации согласно методу внутреннего кодирования, векторов движения, информации режима слияния), и вычисления результатов внешнего предсказания (например, блока предсказания) на основании информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорными изображениями являются декодированные опорные изображения, которые декодируются на основе информации кодированного видео.
[0099] Интракодер (622) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), в ряде случаев сравнения блока с блоками, ранее кодированными в том же изображении, генерирования квантованных коэффициентов после преобразования, и в ряде случаев также информации внутреннего предсказания (например, информации направления внутреннего предсказания согласно одному или более методам внутреннего кодирования). В порядке примера, интракодер (622) также вычисляет результаты внутреннего предсказания (например, блок предсказания) на основании информации внутреннего предсказания и опорных блоков в том же изображении.
[0100] Общий контроллер (621) выполнен с возможностью определения общих данных управления и управления другими компонентами видеокодера (603) на основе общих данных управления. Например, общий контроллер (621) определяет режим блока и выдает сигнал управления на переключатель (626) на основе режима. Например, когда режим является интрарежимом, общий контроллер (621) управляет переключателем (626) для выбора результата интрарежима для использования вычислителем (623) остатка, и управляет энтропийным кодером (625) для выбора информации внутреннего предсказания и включения информации внутреннего предсказания в битовый поток; и когда режим является интеррежимом, общий контроллер (621) управляет переключателем (626) для выбора результата внешнего предсказания для использования вычислителем (623) остатка, и управляет энтропийным кодером (625) для выбора информации внешнего предсказания и включения информации внешнего предсказания в битовый поток.
[0101] Вычислитель (623) остатка выполнен с возможностью вычисления разности (данных остатка) между принятым блоком и результатами предсказания, выбранными из интракодера (622) или интеркодера (630). Кодер (624) остатка выполнен с возможностью действовать на основе данных остатка для кодирования данных остатка для генерации коэффициентов преобразования. В примере кодер (624) остатка сконфигурирован для преобразования данных остатков из пространственной области в частотную область и генерации коэффициентов преобразования. Затем коэффициенты преобразования подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления видеокодер (603) также включает в себя декодер (628) остатка. Декодер (628) остатка выполнен с возможностью осуществления обратного преобразования и генерирования декодированных данных остатка. Декодированные данные остатка могут надлежащим образом использоваться интракодером (622) и интеркодером (630). Например, интеркодер (630) может генерировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, и интракодер (622) может генерировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки надлежащим образом обрабатываются для генерации декодированных изображений, и декодированные изображения могут буферизоваться в схеме памяти (не показана) и в некоторых примерах использоваться в качестве опорных изображений.
[0102] Энтропийный кодер (625) выполнен с возможностью форматирования битового потока так, чтобы он включал в себя кодированный блок. Энтропийный кодер (625) выполнен с возможностью включать различную информацию согласно подходящему стандарту, например, стандарту HEVC. Например, энтропийный кодер (625) выполнен с возможностью включать общие данные управления, выбранную информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), информацию остатка и другую подходящую информацию в битовый поток. Заметим, что, согласно раскрытому изобретению, при кодировании блока в подрежиме слияния любого из интеррежима и режима двойного предсказания, информация остатка отсутствует.
[0103] На фиг. 7 показана схема видеодекодера (710) согласно другому варианту осуществления изобретения. Видеодекодер (710) выполнен с возможностью приема кодированных изображений, составляющих часть кодированной видеопоследовательности, и декодирования кодированных изображений для генерации реконструированных изображений. Например, видеодекодер (710) используется вместо видеодекодера (310) в примере, приведенном на фиг. 3.
[0104] В примере, приведенном на фиг. 7, видеодекодер (710) включает в себя энтропийный декодер (771), интердекодер (780), декодер (773) остатка, модуль (774) реконструкции и интрадекодер (772), соединенные друг с другом как показано на фиг. 7.
[0105] Энтропийный декодер (771) может быть выполнен с возможностью реконструкции, из кодированного изображения, некоторых символов, которые представляют синтаксические элементы, образующие кодированное изображение. Такие символы могут включать в себя, например, режим кодирования блока (например, интрарежим, интеррежим, режим двойного предсказания, причем последние два в подрежиме слияния или другом подрежиме), информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, используемые для предсказания интрадекодером (772) или интердекодером (780), соответственно, информацию остатка в форме, например, квантованных коэффициентов преобразования и т.п. Например, когда режим предсказания является режимом внутреннего или двойного предсказания, информация внешнего предсказания поступает на интердекодер (780); а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания поступает на интрадекодер (772). Информация остатка может подвергаться обратному квантованию и поступать на декодер (773) остатка.
[0106] Интердекодер (780) выполнен с возможностью приема информации внешнего предсказания и генерирования результатов внешнего предсказания на основании информации внешнего предсказания.
[0107] Интрадекодер (772) выполнен с возможностью приема информации внутреннего предсказания и генерирования результатов предсказания на основании информации внутреннего предсказания.
[0108] Декодер (773) остатка выполнен с возможностью осуществления обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (773) остатка также может требовать некоторой информации управления (включать параметр квантователя (QP, Quantizer Parameter)), и эта информация может обеспечиваться энтропийным декодером (771) (путь данных не показан, поскольку это может быть только информация управления малого объема).
[0109] Модуль (774) реконструкции выполнен с возможностью слияния, в пространственной области, остатка на выходе декодера (773) остатка и результатов предсказания (на выходе модулей внешнего или внутреннего предсказания, в зависимости от ситуации) для формирования реконструированного блока, который может входить в состав реконструированного изображения, которое, в свою очередь, может входить в состав реконструированного видео. Заметим, что другие подходящие операции, например, операция деблокирования и т.п., может осуществляться для повышения визуального качества.
[ОНО] Следует отметить, что видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любого подходящего метода. Согласно варианту осуществления, видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления видеокодеры (303), (503) и (503) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, которые выполняют программные инструкции.
[0111] В общем случае компенсация на основе блоков, основанная на другом изображении, может называться компенсацией движения или компенсацией блоков с внешним предсказанием. Однако компенсация блоков может быть выполнена и на основе ранее реконструированной области в том же изображении. Такая компенсация блоков может называться компенсацией блоков внутри изображения, опорой на текущее изображение (CPR, current picture referencing) или копией блока внутри изображения (IBC, intra block copy).
[0112] Аспекты изобретения предусматривают способы компенсации на основе блоков в рамках одного и того же изображения (например, в режиме предсказания IBC).
[0113] В соответствии с аспектами раскрытия, в режиме предсказания IBC вектор смещения, который указывает на смещение между текущим блоком и опорным блоком в пределах одного изображения, называется вектором блока (BV, block vector). Отметим, что опорный блок уже реконструирован до текущего блока. Кроме того, для параллельной обработки опорная область, которая находится на границе тайла/слайса или на границе ступенчатого волнового фронта, может быть исключена из использования в качестве доступного опорного блока. Из-за этих ограничений вектор блока может отличаться от вектора движения, который может иметь любое значение (положительное или отрицательное, в направлении х или у) при компенсации движения в режиме внешнего предсказания.
[0114] Кодирование вектора блока в режиме предсказания IBC может быть явным или неявным. В явном режиме передается разность между вектором блока и предсказателем вектора блока. Способ кодирования вектора блока в явном режиме режима предсказания IBC может быть аналогичен способу кодирования вектора движения в режиме расширенного предсказания вектора движения (AMVP) режима внешнего предсказания. В неявном режиме вектор блока восстанавливается из предсказателя вектора блока без использования разности векторов блока, аналогично предсказанию вектора движения в режиме слияния в режиме внешнего предсказания. Кроме того, разрешение вектора блока может быть ограничено целыми позициями в одном варианте осуществления, при этом в другом варианте осуществления может быть разрешено указывать на дробные позиции.
[0115] Использование режима предсказания IBC на уровне блока может передаваться, например, с помощью флага уровня блока (называемого флагом IBC) или опорного индекса. При использовании флага IBC текущий блок не может кодироваться в неявном режиме. При использовании опорного индекса текущее декодированное изображение может обрабатываться как опорное изображение, которое помещается в последнюю позицию списка опорных изображений. Этим опорным изображением также можно управлять вместе с другими временными опорными изображениями в буфере декодированных изображений (DPB).
[0116] На фиг. 8 показан пример режима предсказания на основании копии блока внутри изображения (IBC) в соответствии с вариантом осуществления. В примере на фиг. 8 текущее изображение (800) реконструируется и включает реконструированную область (801) (серая область) и область, подлежащую декодированию (802) (белая область). Блоки в реконструированной области (801) уже декодированы, а блоки в реконструируемой области (802) либо декодируются, либо подлежат декодированию. Текущий блок (804) находится в реконструируемой области (802) и декодируется. Текущий блок (804) может быть декодирован, исходя из опорного блока (805), который находится в реконструированной области (801). Декодирование текущего блока (804) основано на векторе блока (803), который представляет собой смещение между текущим блоком (804) и опорным блоком (805).
[0117] В соответствии с аспектами изобретения, опорное изображение (например, опорный блок (805)), используемое для получения вектора блока (например, вектора блока (803)) для текущего блока (например, текущего блока (804)), находится в пределах диапазона поиска режима предсказания IBC.
[0118] В соответствии с некоторыми вариантами осуществления диапазон поиска режима предсказания IBC ограничен пределами текущей CTU, в которой находится текущий блок. В одном из примеров память для хранения опорных отсчетов для диапазона поиска в режиме предсказания IBC имеет размер 1 CTU (например, 128×128 отсчетов). Если размер 1 CTU (128×128 отсчетов) включает четыре области, каждая из которых имеет 64×64 отсчета, память может хранить такие четыре области, в которых одна область может быть текущими реконструированными 64×64 отсчетами, а остальные три области, каждая из которых имеет 64×64 отсчета, могут быть опорными отсчетами.
[0119] В соответствии с некоторыми вариантами осуществления диапазон поиска в режиме предсказания IBC может быть расширен до некоторых частей левой CTU текущей CTU при неизменном объеме памяти для хранения диапазона поиска (например, размер 1 CTU), так что диапазон поиска может не ограничиваться пределами текущей CTU. Следует отметить, что диапазон поиска может зависеть от положения текущего блока в текущей CTU. То есть диапазон поиска может быть обновлен в соответствии с положением текущего блока в текущей CTU.
[0120] На фиг. 9A-9D показан пример процесса обновления диапазона поиска для режима предсказания IBC в соответствии с одним из вариантов осуществления изобретения. Как описано выше, эффективный диапазон поиска расширяется до некоторых частей левой CTU (910) текущей CTU (900).
[0121] Во время этого процесса обновления сохраненные опорные отсчеты из левой CTU обновляются восстановленными отсчетами из текущей CTU. На фиг. 9А-9D области серого цвета указывают на уже реконструированные области, области белого цвета указывают на подлежащие реконструкции области, а области с вертикальными полосами и текстом "Curr" указывают на текущие области кодирования/декодирования, в которых находятся текущие блоки. Кроме того, на каждой фигуре четыре левых области (911)-(914) принадлежат левой CTU (910), а четыре правых области (901)-(904) принадлежат текущей CTU (900).
[0122] Отметим, что все четыре области (911)-(914) левой CTU (910) уже реконструированы. Таким образом, память первоначально сохраняет все эти четыре области опорных отсчетов из левой CTU (910), а затем обновляет область опорных отсчетов из левой CTU (910) с тем же относительным расположением восстановленных в данное время отсчетов из текущей CTU (900).
[0123] Например, на фиг. 9 А текущая область (901) в текущей CTU (900) находится в стадии реконструкции, а связанная область в левой CTU (910) текущей области (901) является уже реконструированной областью (911). Связанная область (911) находится в области левой CTU (910) с тем же относительным расположением, что и текущий блок (901) в текущей CTU (900). Таким образом, область памяти, хранящая опорные отсчеты со-расположенной области (911), обновляется для хранения реконструированных отсчетов текущей области (901), а в со-расположенной области (911) на фиг. 9А стоит знак "X", указывающий на то, что опорные отсчеты со-расположенной области (911) больше не хранятся в памяти.
[0124] Аналогично, на рис. 9 В текущая область (902) в текущей CTU (900) находится в стадии реконструкции, а совместно расположенная область в левой CTU (910) текущей области (902) является областью (912). Co-расположенная область (912) находится в области левой CTU (910) с тем же относительным расположением, что и текущая область (902) в текущей CTU (900). Таким образом, область памяти, хранящая опорные отсчеты со-расположенной области (912), обновляется для хранения реконструированных отсчетов текущей области (902), а в со-расположенной области (912) на фиг. 9 В стоит знак "X", указывающий на то, что опорные отсчеты со-расположенной области (912) больше не хранятся в памяти.
[0125] Аналогично, на фиг. 9С текущая область (903) в текущей CTU (900) находится в стадии реконструкции, а совместно расположенная область в левой CTU (910) текущей области (903) является областью (913). Co-расположенная область (913) находится в области левой CTU (910) с тем же относительным расположением, что и текущая область (903) в текущей CTU (900). Таким образом, область памяти, хранящая опорные отсчеты со-расположенной области (913), обновляется для хранения реконструированных отсчетов текущей области (903), а в со-расположенной области (913) на фиг. 9С стоит знак "X", указывающий на то, что опорные отсчеты со-расположенной области (913) больше не хранятся в памяти.
[0126] На фиг. 9D текущая область (904) в текущей CTU (900) находится в стадии реконструкции, а со-расположенная область в левой CTU (910) текущей области (904) является областью (914). Co-расположенная область (914) находится в области левой CTU (910) с тем же относительным положением, что и текущая область (904) в текущей CTU (900). Таким образом, область памяти, хранящая опорные отсчеты со-расположенной области (914), обновляется для хранения реконструированных отсчетов текущей области (904), а в со-расположенной области (914) на фиг. 9С стоит знак "X", указывающий на то, что опорные отсчеты со-расположенной области (914) больше не хранятся в памяти.
[0127] В соответствии с аспектами изобретения, действительный вектор блока, полученный в пределах диапазона поиска режима предсказания IBC, может следовать некоторым ограничениям, чтобы соответствовать условиям соответствия битового потока.
[0128] На фиг. 10 показан пример действительного вектора блока (1020), который следует определенным ограничениям, в соответствии с одним из вариантов осуществления изобретения. В примере на фиг. 10 текущий СТВ (1000) представляет собой СТВ яркости, включающий четыре области яркости (1006)-(1009). При вызове процесса определения доступности опорного блока положение (xCurr, yCurr) левого верхнего отсчета текущего блока (1003) в текущем СТВ (1000) устанавливается равным (xCb, yCb), и действительный вектор блока яркости (1020) может следовать определенным ограничениям. Допустимый вектор блока яркости (1020) направлен от текущего блока (1003) к опорному блоку (1015) в левом СТВ (1010) текущего СТВ (1000).
[0129] Согласно некоторым вариантам осуществления, первое ограничение состоит в том, что опорный блок для текущего блока уже реконструирован. В примере для прямоугольного опорного блока опорный блок определяется как уже реконструированный, когда и левый верхний отсчет, и правый нижний отсчет опорного блока уже реконструированы. В частности, для вектора блока яркости mvL с разрешением 1/16 pel при вводе позиции (xCb+(mvL[0]>>4), yCb+(mvL[1]>>4)) левого верхнего отсчета опорного блока выводится значение TRUE, указывающее, что левый верхний отсчет опорного блока уже реконструирован. Следует отметить, что mvL[0] и mvL[1] являются компонентами х и у двумерного вектора блока яркости mvL. Аналогично, при вводе позиции (xCb+(mvL[0]>>4)+cbWidth-1, yCb+(mvL[1]>>4)+cbHeight-1) нижнего правого отсчета опорного блока выводится значение TRUE, указывающее, что нижний правый отсчет опорного блока уже реконструирован. Следует отметить, что параметры cbWidth и cbHeight представляют ширину и высоту опорного блока. Соответственно, при вводе обеих позиций (xCb+(mvL[0]>>4), yCb+(mvL[1]>>4)) and (xCb+(mvL[0]>>4)+cbWidth-1, yCb+(mvL[1]>>4)+cbHeight-1) выводится значение TRUE, указывающее, что как верхний левый отсчет, так и нижний правый отсчет опорного блока, а также сам опорный блок уже реконструированы и, таким образом, вектор блока действителен, как показано на фиг. 10. Однако, если опорный блок еще не восстановлен, вектор mvL блока яркости может быть недействительным.
[0130] Согласно некоторым вариантам осуществления, второе ограничение заключается в том, что опорный блок не перекрывается с текущим блоком. В соответствии с ограничением, что опорный блок уже создан, опорный блок может находиться либо слева от текущего блока, либо вверху текущего блока, чтобы избежать перекрытия с текущим блоком. В примере для вектора блока яркости mvL с разрешением 1/16 pel, по меньшей мере, одно из двух значений (mvL[0]>>4)+cbWidth и (mvL[1]>>4)+cbHeight меньше или равно 0. В частности, значение (mvL[0]>>4)+cbWidth меньше или равно 0, что указывает на то, что опорный блок находится слева от текущего блока и не перекрывается с текущим блоком. Аналогично, значение (mvL[1]>>4)+cbHeight меньше или равно 0, что указывает на то, что опорный блок находится сверху от текущего блока и не перекрывается с текущим блоком. Соответственно, если оба значения (mvL[0]>>4)+cbWidth и (mvL[1]>>4)+cbHeight больше 0, опорный блок перекрывается с текущим блоком, так что вектор блока яркости mvL текущего блока может быть недействительным.
[0131] Согласно некоторым вариантам осуществления, третье ограничение состоит в том, что СТВ, в котором находится опорный блок, является либо левым соседним СТВ текущего СТВ, либо самим текущим СТВ. В примере для вектора блока яркости mvL с разрешением 1/16 pel уравнения (1)-(4) удовлетворяют этому ограничению:
[0132] Следует отметить, что параметр CtbLog2SizeY представляет ширину СТВ в форме log2. Например, если ширина СТВ составляет 128 отсчетов, параметр CtbLog2SizeY равен 7. В частности, уравнения (1) и (2) указывают, что СТВ, в котором находится опорный блок, находится в той же строке СТВ, что и текущий СТВ, а уравнения (3) и (4) указывают, что СТВ, в котором находится опорный блок, находится либо в левом столбце СТВ текущего СТВ, либо в том же столбце СТВ, что и текущий СТВ. Соответственно, уравнения (1)-(4) выполняются, указывая, что опорный блок находится либо в левом соседнем СТВ, таком как левый СТВ (1010) на фиг. 10, текущем СТВ (1000) или сам является текущим СТВ (1000). Однако, если опорный блок не находится ни в одном из левого соседнего СТВ текущего СТВ или в самом текущем СТВ, вектор блока яркости mvL недействителен.
[0133] Согласно некоторым вариантам осуществления, четвертым ограничением является то, что, когда опорный блок находится в левом соседнем СТВ текущего СТВ, со-расположенная область опорного блока в текущем СТВ не была реконструирована. Co-расположенная область опорного блока в текущем СТВ - это область в текущем СТВ с тем же относительным положением, что и опорный блок в левом соседнем СТВ. Возвращаясь к фиг. 10, опорный блок (1015) находится в области (1012) левого соседнего СТВ (1010), следовательно, со-расположенная область опорного блока (1015) в текущем СТВ (1000), т.е. область (1017), не была реконструирована. В примере для вектора блока яркости mvL с разрешением 1/16 pel, когда выполняется уравнение (5), и положение со-расположенной области в текущем СТВ (((xCb+(mvL[0]>>4)+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1), ((yCb+(mvL[1]>>4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1)) является входными данными, a FALSE - выходом. Следует отметить, что параметр CtbSizeY представляет ширину СТВ. В частности, уравнение (5) указывает, что опорный блок находится в левом соседнем СТВ текущего СТВ.
[0134] Возвращаясь к фиг. 10, когда один из блоков кодирования (1002)-(1003) является текущим блоком, опорный блок не может находиться в области (1011), и поэтому диапазон поиска для одного из блоков кодирования (1002)-(1003) исключает область (1011), которая обозначена "X", аналогично фиг. 9А. Причины следующие: если опорный блок находится в области (1011), то со-расположенной областью для опорного блока является область (1006), однако по меньшей мере некоторые отсчеты в блоке кодирования (1001) были реконструированы, таким образом, четвертое ограничение нарушено. С другой стороны, для блока кодирования, который должен быть реконструирован первым в текущей области, например, блока кодирования (1001) в области (1006) текущего СТВ (1000), четвертое ограничение не препятствует опорному блоку находиться в области (1011), поскольку со-расположенная область (1006) для опорного блока еще не была реконструирована, так что опорные отсчеты области (1011) не перезаписаны или удалены.
[0135] В соответствии с аспектами изобретения, режим предсказания IBC рассматривается как отдельный режим или третий режим в дополнение к режиму внутреннего предсказания и режиму внешнего предсказания. Следовательно, режим предсказания IBC отличается от режима внутреннего предсказания и от режима внешнего предсказания. Таким образом, предсказание вектора блока в неявном режиме (подобно режиму слияния в режиме внешнего предсказания) и явном режиме (подобно режиму AMVP в режиме внешнего предсказания) отделяется от обычного режима внешнего предсказания.
[0136] Для неявного режима предсказания IBC определен отдельный список кандидатов предсказателя. Отдельный список кандидатов предсказателя неявного режима предсказания IBC отличается от списка кандидатов слияния в режиме слияния режима внешнего предсказания тем, что все записи в списке кандидатов предсказателя являются векторами блока. Процесс получения кандидатов из отдельного списка кандидатов предсказателя может основываться на процессе получения кандидатов из списка кандидатов слияния. В качестве примера, в режиме слияния режима внешнего предсказания в стандартах HEVC или VVC пять пространственно соседних мест могут быть доступны для режима предсказания IBC с целью получения собственного списка кандидатов предсказателя для неявного режима. Кроме того, для явного режима предсказания IBC может быть определен другой отдельный список кандидатов предсказателя, где все записи в списке также являются векторами блока. Процесс получения отдельного кандидата предсказателя для списка явных режимов может основываться на процессе получения списка кандидатов предсказателя в режиме AMVP режима внешнего предсказания.
[0137] Соответственно, режим предсказания IBC, в качестве отличного от режима внешнего предсказания, может иметь упрощенный и унифицированный процесс определения вектора блока как для неявного режима, так и для явного режима.
[0138] В соответствии с аспектами изобретения список кандидатов предсказателя векторов блока режима предсказания IBC включает в себя множество кандидатов предсказателя векторов блока, и каждый из множества кандидатов предсказателя векторов блока может быть получен из одного из следующих векторов блока: вектор блока пространственно соседних векторов блока, вектор блока векторов блока на базе предыстории, усредненный вектор блока и вектор блока векторов блока, заданный по умолчанию.
[0139] На фиг. 11 показан пример векторов блока на основе пространственного соседства, согласно одному из вариантов осуществления изобретения. Текущий блок (1100) имеет 5 пространственно соседних блоков (1101)-(1105) в нижнем левом, верхнем правом и верхнем левом положениях.
[0140] В одном из вариантов осуществления порядок формирования списка кандидатов предсказателя векторов блока режима предсказания IBC из 5 пространственно соседних блоков таков: А0 (1101) -> В0 (1102) -> В1 (1103) -> А1 (1104) -> В2 (1105).
[0141] В одном из вариантов осуществления в списке кандидатов предсказателя векторов блока могут содержаться только А0 и В0 из пространственно соседних векторов блока. Когда и А0, и В0 доступны, но равны друг другу, только один из них может быть включен в список кандидатов предсказателя вектора блока.
[0142] В одном из вариантов осуществления в списке кандидатов предсказателя векторов блока могут содержаться только А1 и В1 из пространственно соседних векторов блока. Когда и А1, и В1 доступны, но равны друг другу, только один из них может быть включен в список кандидатов предсказателя вектора блока.
[0143] В одном из вариантов осуществления в списке кандидатов предсказателя векторов блока могут содержаться, только Ах и By из пространственно соседних векторов блока, при этом Ах и By представляют одного из левых соседей и одного из верхних соседей, соответственно.
[0144] В соответствии с некоторыми вариантами осуществления, кандидаты предсказателя вектора блока на базе предыстории (HBVP) включаются в список кандидатов предсказателя вектора блока. В примере кандидат HBVP может быть включен в список кандидатов предсказателя векторов блока после пространственно соседних векторов блока. Кандидат HBVP выводится на основе ранее кодированного блока и хранится в таблице HBVP. Таблица HBVP с несколькими кандидатами HBVP поддерживается во время процесса кодирования/декодирования. Таблицу HBVP можно сбросить (очистить) при обнаружении новой строки CTU. Всякий раз при наличии CU, не относящейся к подблоку IBC, соответствующий вектор блока добавляется к последней записи таблицы HBVP как новый кандидат HBVP.
[0145] В соответствии с некоторыми вариантами осуществления размер S таблицы HBVP установлен равным 6, что указывает на то, что в таблицу может быть добавлено до 6 кандидатов HBVP. При вставке нового кандидата HBVP в таблицу HBVP используется ограниченное правило "первый вошел - первый вышел" (FIFO), где сначала применяется проверка избыточности в таблице HBVP, чтобы найти идентичный или похожий кандидат HBVP в таблице HBVP. В примере, когда идентичный или похожий кандидат HBVP найден в таблице HBVP, идентичный или похожий HMVP удаляется из таблицы HBVP, так что все кандидаты HBVP впоследствии могут быть перемещены вперед.
[0146] Следует отметить, что размер таблицы HBVP может варьироваться в некоторых вариантах осуществления. То есть в некоторых вариантах осуществления размер S может быть меньше или больше 6. Когда размер больше 6, в некоторых вариантах осуществления при включении нового кандидата HBVP в таблицу HBVP обрезка не используется.
[0147] Согласно некоторым вариантам осуществления, при построении списка кандидатов предсказателя вектора блока последние несколько кандидатов HBVP в таблице HBVP проверяются по порядку и включаются в список кандидатов после пространственно соседних кандидатов. Проверка избыточности применяется к кандидатам HBVP для пространственно соседних кандидатов. Чтобы уменьшить количество операций проверки избыточности, количество кандидатов HBPV, используемых для построения списка кандидатов предсказателя вектора блока, задается как (N <= 4) ? М: (8-N), где N указывает количество существующих кандидатов в списке кандидатов, а М указывает количество доступных кандидатов HBVP в таблице HBVP. Как только общее количество доступных кандидатов предсказателя векторов блока достигает максимально допустимого числа минус 1, процесс построения списка кандидатов предсказателя векторов блока из HBVP завершается.
[0148] Согласно некоторым вариантам осуществления, усредненный вектор блока может быть включен в список кандидатов предсказателя вектора блока. Усредненный вектор блока может быть получен путем выбора множества кандидатов предсказателя из списка кандидатов и последующего усреднения выбранных кандидатов предсказателя.
[0149] В одном примере первый кандидат и второй кандидат усредняются, чтобы сформировать нового кандидата в списке.
[0150] В другом примере первые три кандидата усредняются по парам, чтобы сформировать набор из трех новых кандидатов. Порядок трех новых кандидатов, полученных из первых трех существующих кандидатов, может быть следующим: (1-й, 2-й), (1-й, 3-й) и (2-й, 3-й), где 1-й, 2-й и 3-й соответствуют первым трем существующим кандидатам в списке.
[0151] В другом примере первые четыре кандидата усредняются по парам, чтобы сформировать набор из шести новых кандидатов. Последовательность из шести новых кандидатов, полученных из первых четырех существующих кандидатов, может быть следующей: (1-й, 2-й), (1-й, 3-й), (2-й, 3-й), (1-й, 4-й), (2-й, 4-й), (3-й, 4-й), где 1-й, 2-й, 3-й и 4-й соответствуют первым четырем существующим кандидатам в списке соответственно.
[0152] В соответствии с некоторыми вариантами осуществления векторы блока по умолчанию могут быть включены в список кандидатов предсказателя векторов блока. Векторы блока по умолчанию могут быть предопределены заранее.
[0153] В одном из вариантов осуществления могут использоваться векторы блока на основе констант. Некоторые примеры векторов блока по умолчанию включают, помимо прочего, (0, 0), (-8, 0), (0, -8), (-4, 0), (0, -4), (-8, -8) и (-4, -4). Эти векторы блока, полностью или частично, могут быть расположены в указанном выше порядке с целью включения в список кандидатов предсказателя векторов блока, или могут быть расположены в других последовательностях.
[0154] В одном из вариантов осуществления могут использоваться векторы блока, связанные с размером блока. Некоторые примеры векторов блока по умолчанию включают, помимо прочего, (-2w, 0), (0, -2h), (-w, 0), (0, -h), (-2w, -2h) и (-w, -h), где w и h обозначают ширину и высоту текущего блока соответственно. Эти векторы блока, полностью или частично, могут быть расположены в указанном выше порядке с целью включения в список кандидатов предсказателя векторов блока, или могут быть расположены в других последовательностях.
[0155] В одном из вариантов осуществления могут использоваться векторы блока, связанные с максимальным размером блока. Некоторые примеры векторов блока по умолчанию включают, помимо прочего (-2w_max, 0), (0, -2h_max), (-w_max, 0), (0, -h_max), (-2w_max, -2h_max) и (-w_max, -h_max), где w_max и h_max означают максимально допустимую ширину и максимально допустимую высоту текущего блока соответственно. Эти векторы блока, полностью или частично, могут быть расположены в указанном выше порядке с целью включения в список кандидатов предсказателя векторов блока, или могут быть расположены в других последовательностях.
[0156] В одном из вариантов осуществления могут использоваться векторы блока, связанные с минимальным размером блока. Некоторые примеры векторов блока по умолчанию включают, помимо прочего, (-2w_min, 0), (0, -2h_min), (-w_min, 0), (0, -h_min), (-2w_min, -2h_min) и (-w_min, -h_min), где w_min и h_min обозначают минимально допустимую ширину и минимально допустимую высоту текущего блока соответственно. Эти векторы блока, полностью или частично, могут быть расположены в указанном выше порядке с целью включения в список кандидатов предсказателя векторов блока, или могут быть расположены в других последовательностях.
[0157] В одном из вариантов осуществления порядок кандидатов в списке кандидатов предсказателя векторов блока - это пространственные соседние векторы блока -> векторы блока на базе предыстории -> усредненные векторы блока -> векторы блока по умолчанию.
[0158] В одном варианте осуществления порядок кандидатов в списке кандидатов предсказателя векторов блока это пространственные соседние векторы блока -> векторы блока на базе предыстории -> векторы блока по умолчанию.
[0159] В соответствии с аспектами изобретения, унифицированный список кандидатов предсказателя вектора блока может использоваться как в неявном, так и в явном режиме предсказания IBC. Однако список кандидатов может быть применен только к одному неявному либо явному режиму предсказания IBC. В одном из вариантов осуществления, когда кандидат, полученный из этого унифицированного списка, выбирается для применения в явном режиме, округление выбранного кандидата предсказателя вектора блока в направлении разрешения выбранного вектора блока может быть отключено. То есть выбранный кандидат предсказателя вектора блока имеет исходное разрешение, даже если разрешение разности векторов блока имеет другое значение.
[0160] В соответствии с аспектами изобретения список кандидатов предсказателя вектора блока может подвергаться процессу обрезки или отсечения. То есть, если предсказатель вектора блока в списке рассматривается как недопустимый предсказатель для текущего блока, например, опорный блок текущего блока в режиме предсказания IBC будет находиться вне допустимого диапазона поиска при непосредственном использовании недопустимого предсказателя в качестве конечного вектора блока, то выполняется дополнительная операция.
[0161] В одном из вариантов осуществления в процессе обрезки все недействительные кандидаты в списке кандидатов удаляются из списка таким образом, чтобы последующие действительные кандидаты могли быть перемещены вверх по списку.
[0162] В одном из вариантов осуществления в процессе обрезки один или несколько недействительных кандидатов в списке кандидатов удаляются из списка. Примеры недопустимых кандидатов включают, помимо прочего, кандидатов, которые не следуют ограничению, согласно которому опорный блок не перекрывается с текущим блоком, и кандидаты, которые не следуют ограничению, согласно которому СТВ, в котором находится опорный блок текущего блока, является либо левым соседним СТВ текущего СТВ, либо непосредственно текущим СТВ.
[0163] В одном из вариантов осуществления в процессе отсечения недопустимые кандидаты отсекаются таким образом, что каждый из отсеченных кандидатов указывает на позиции внутри допустимого диапазона поиска режима предсказания IBC. Такой процесс отсечения может быть выполнен путем изменения горизонтального, вертикального или обоих компонентов предсказателя вектора блока таким образом, чтобы после модификации предсказатель вектора блока указывал на границу допустимого диапазона поиска режима предсказания IBC.
[0164] На фиг. 12 показана блок-схема операций примера процесса (1200) согласно варианту осуществления изобретения. Процесс (1200) может использоваться при реконструкции текущего блока, кодированного в режиме предсказания IBC, с целью генерации опорного блока для блока, подлежащего реконструкции. В различных вариантах осуществления процесс (1200) выполняется схемой обработки, например, схемой обработки в оконечных устройствах (210), (220), (230) и (240), схемой обработки, которая осуществляет функции видеокодера (303), схемой обработки, которая осуществляет функции видеодекодера (310), схемой обработки, которая осуществляет функции видеодекодера (410), схемой обработки, которая осуществляет функции модуля внутреннего предсказания (452), схемой обработки, которая осуществляет функции видеокодера (503), схемой обработки, которая осуществляет функции предсказателя (535), схемой обработки, которая осуществляет функции внутреннего кодера (622), схемой обработки, которая осуществляет функции внутреннего декодера (772) и т.п. В некоторых вариантах осуществления процесс (1200) реализован в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки осуществляет процесс (1200).
[0165] Процесс (1200) обычно может начинаться с этапа (S1210), на котором процесс (1200) декодирует информацию предсказания для текущего блока в текущем кодированном изображении, которое является частью кодированной видеопоследовательности. Информация предсказания указывает, что для текущего блока используется режим предсказания на основании копии блока внутри изображения (IBC). Информация предсказания также может содержать индекс для выбора кандидата предсказателя вектора блока из списка кандидатов предсказателя вектора блока для текущего блока, и информацию о том, существует ли ненулевой остаток для текущего блока. После декодирования информации предсказания процесс (1200) переходит к этапу (S1220).
[0166] На этапе (S1220) процесс (1200) определяет, существует ли ненулевой остаток для текущего блока на основе информации предсказания. Если процесс (1200) определяет, что ненулевой остаток не существует для текущего блока, то процесс (1200) переходит к этапу (S1230). В противном случае процесс (1200) переходит к этапу (S1240).
[0167] На этапе (S1230), процесс (1200) строит список кандидатов предсказателя вектора блока для текущего блока в ответ на указание, что ненулевой остаток для текущего блока не существует. Список кандидатов предсказателя векторов блока содержит первое число кандидатов предсказателя векторов блока и строится на основе последовательности кандидатов.
[0168] На этапе (S1240) схема (1200) строит список кандидатов предсказателя вектора блока для текущего блока в ответ на указание, что ненулевой остаток для текущего блока существует. Список кандидатов предсказателя вектора блока содержит второе количество кандидатов предсказателя вектора блока и строится на основе той же последовательности кандидатов, которая обрабатывается на этапе (S1230).
[0169] В одном из вариантов осуществления процесс (1200) определяет, доступен ли вектор первого блока первого пространственно соседнего блока из множества пространственно соседних блоков текущего блока. В результате определения того, что первый вектор блока первого пространственно соседнего блока из множества пространственно соседних блоков текущего блока доступен, процесс (1200) добавляет первый вектор блока в список кандидатов предсказателя вектора блока. В противном случае процесс (1200) определяет, доступен ли второй вектор блока второго пространственно соседнего блока из множества пространственно соседних блоков текущего блока и (в некоторых вариантах осуществления) совпадает ли или аналогичен ли второй вектор блока второго пространственно соседнего блока первому вектору блока первого пространственно соседнего блока. В результате определения того, что второй вектор блока второго пространственно соседнего блока из множества пространственно соседних блоков текущего блока доступен, и (в некоторых вариантах реализации) что второй вектор блока второго пространственно соседнего блока не совпадает с первым вектором первого пространственно соседнего блока, схема обработки добавляет второй вектор блока в список кандидатов предсказателя вектора блока.
[0170] В одном из вариантов осуществления первый пространственно соседний блок текущего блока примыкает к нижнему левому углу текущего блока, а нижняя сторона первого пространственно соседнего блока лежит на одной линии с нижней стороной текущего блока, при этом второй пространственно соседний блок текущего блока примыкает к верхнему правому углу текущего блока, а правая сторона второго пространственно соседнего блока лежит на одной линии с правой стороной текущего блока.
[0171] В одном из вариантов осуществления первый пространственно соседний блок текущего блока примыкает к нижнему левому углу текущего блока, а верхняя сторона первого пространственно соседнего блока лежит на одной линии с нижней стороной текущего блока, при этом второй пространственно соседний блок текущего блока примыкает к верхнему правому углу текущего блока, а левая сторона второго пространственно соседнего блока лежит на одной линии с правой стороной текущего блока.
[0172] В одном из вариантов осуществления первый пространственно соседний блок текущего блока примыкает к левой стороне текущего блока, а второй пространственно соседний блок текущего блока примыкает к верхней стороне текущего блока.
[0173] В одном из вариантов осуществления, когда общее число векторов блоков множества пространственно соседних блоков, включенных в список кандидатов предсказателя векторов блока, меньше максимально допустимого числа, которое основано, например, на том, существует ли ненулевой остаток для текущего блока, процесс (1200) выбирает третий вектор блока ранее кодированного блока из множества векторов ранее кодированных блоков. Процесс (1200) может определять, отличается ли выбранный третий вектор блока от множества пространственно соседних блоков, включенных в список кандидатов предсказателя вектора блока. В результате определения того, что выбранный третий вектор блока отличается от множества пространственно соседних блоков, включенных в список кандидатов предсказателя вектора блока, процесс (1200) добавляет выбранный третий вектор блока в список кандидатов предсказателя вектора блока.
[0174] В одном из вариантов осуществления, когда общее число векторов блока множества пространственно соседних блоков и ранее кодированных блоков, включенных в список кандидатов предсказателя векторов блока, меньше максимально допустимого числа и больше единицы, процесс (1200) выбирает множество кандидатов предсказателя векторов блока из списка кандидатов предсказателя векторов блока. Процесс (1200) усредняет выбранное множество кандидатов предсказателя векторов блока для формирования по меньшей мере одного усредненного вектора блока. Процесс (1200) вставляет по меньшей мере один усредненный вектор блока в список кандидатов предсказателя вектора блока.
[0175] В одном из вариантов осуществления, когда общее количество векторов блока множества пространственно соседних блоков, векторов блока ранее кодированных блоков и по меньшей мере одного усредненного вектора блока, включенных в список кандидатов предсказателя векторов блока, меньше максимально допустимого количества, процесс (1200) вставляет вектор блока по умолчанию в список кандидатов предсказателя вектора блока.
[0176] После построения списка кандидатов предсказателя вектора блока для текущего блока процесс (1200) переходит к этапу (S1250).
[0177] На этапе (S1250) процесс (1200) выбирает кандидата предсказателя вектора блока из созданного списка кандидатов предсказателя вектора блока, например, на основе индекса, указанного в информации предсказания. Индекс может передаваться явно или неявно.
[0178] После выбора кандидата предсказателя вектора блока процесс (1200) переходит к этапу (S1260).
[0179] На этапе (S1260) процесс (1200) реконструирует текущий блок в соответствии с выбранным кандидатом предсказателя вектора блока.
[0180] После реконструкции текущего блока процесс (1200) завершается.
[0181] Вышеописанные методы могут быть реализованы в виде компьютерного программного обеспечения, использующего компьютерно-считываемые инструкции и физически хранящегося на одном или более компьютерно-считываемых носителях. Например, на фиг. 13 показана компьютерная система (1300), пригодная для реализации некоторых вариантов осуществления раскрытого изобретения.
[0182] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую, или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing units), графическими процессорами (GPU, Graphics Processing Units) и т.п.
[0183] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0184] Компоненты компьютерной системы (1300), показанные на фиг. 13, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым одним или комбинацией компонентов, показанных в иллюстративном варианте осуществления компьютерной системы (1300).
[0185] Компьютерная система (1300) может включать в себя некоторые устройства ввода интерфейса с человеком. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двухмерного видео, трехмерного видео, включающего в себя стереоскопическое видео).
[0186] Устройства ввода человеческого интерфейса могут включать в себя одно или несколько (только одно из каждого изображенного): клавиатуру (1301), мышь (1302), трекпад (1303), сенсорный экран (1310), перчатку для передачи данных (не показана), джойстик (1305), микрофон (1306), сканер (1307), камеру (1308).
[0187] Компьютерная система (1300) также может включать в себя некоторые устройства вывода интерфейса с человеком. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать в себя устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (1310), информационной перчатки (не показана) или джойстика (1305), но также могут быть устройствами тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: громкоговорители (1309), наушники (не показаны)), устройства визуального вывода (например, экраны (1310), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из которых способны к двухмерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографического вывода; очков виртуальной реальности (не показаны), голографических дисплеев и дымовых баков (не показаны)) и принтеров (не показаны).
[0188] Компьютерная система (1300) также может включать в себя доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие в себя CD/DVD ROM/RW (1320) с носителями (1321) CD/DVD и т.п., карты (1322) флэш-памяти, сменный жесткий диск или твердотельный диск (1323), традиционные магнитные носители, например, ленту и флоппи-диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.
[0189] Специалисты в данной области техники также должны понимать, что термин "компьютерно-считываемые носители", используемый в связи с раскрытым здесь изобретением, не охватывает среды передачи, несущие волны или другие кратковременные сигналы.
[0190] Компьютерная система (1300) также может включать в себя интерфейс к одной или более сетям связи. Сети могут, например, быть беспроводными, проводными, оптическими. Сети могут быть, дополнительно, локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают в себя локальные сети, например, Ethernet, беспроводные LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные включают в себя CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (1349) (например, USB-порты компьютерной системы (1300)); другие обычно встраиваются в ядро компьютерной системы (1300) путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1300) может взаимодействовать с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.
[0191] Вышеупомянутые устройства человеческого интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (1340) компьютерной системы (1300).
[0192] Ядро (1340) может включать один или несколько центральных процессоров (CPU) (1341), графические процессоры (GPU) (1342), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Arrays) (1343), аппаратные ускорители (1344) для некоторых задач и т.д. Эти устройства, совместно с постоянной памятью (ROM) (1345), оперативной памятью (1346), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками, недоступными пользователю, SSD и т.п. (1347), могут соединяться посредством системной шины (1348). В некоторых компьютерных системах системная шина (1348) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (1348) ядра, либо через периферийную шину (1349). Архитектуры периферийной шины включают в себя PCI, USB и т.п.
[0193] CPU (1341), GPU (1342), FPGA (1343) и ускорители (1344) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM (1345) или RAM (1346). Переходные данные также могут храниться в оперативной памяти (1346), тогда как постоянные данные могут храниться, например, во внутреннем накопителе (1347). Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с один или более CPU (1341), GPU (1342), хранилищем (1347) данных большой емкости, ROM (1345), RAM (1346) и т.п.
[0194] На компьютерно-считываемых носителях может храниться компьютерный код для осуществления различных компьютерно-реализуемых операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.
[0195] В порядке примера, но не ограничения, компьютерная система, имеющая архитектуру (1300), и, в частности, ядро (1340) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных компьютерно-считываемых носителей. Такие компьютерно-считываемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым хранилищем ядра (1340), носящим долговременный характер, например, внутренним хранилищем (1347) данных большой емкости или ROM (1345). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (1340). Компьютерно-считываемый носитель может включать в себя одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (1340) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные процессы или конкретные части описанных здесь конкретных процессов, включая задание структур данных, хранящихся в RAM (1346), и модификацию таких структур данных согласно процессам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (1344)), который может действовать вместо или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей описанных здесь конкретных процессов. Ссылка на программное обеспечение может охватывать логику, и наоборот, где это уместно. Ссылка на компьютерно-считываемые носители может охватывать схему (например, интегральную схему (IC, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе из них, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию оборудования и программного обеспечения.
[0196] Хотя здесь описано несколько иллюстративных вариантов осуществления, возможны изменения, перестановки и различные эквиваленты для замены, которые находятся в объеме изобретения.
Приложение А: Сокращения
AMVP: расширенное предсказание вектора движения
ASIC: специализированная интегральная схема
BMS: набор эталонов
BV: вектор блока
CANBus: шина контроллерной сети
CD: компакт-диск
CPR: опора на текущее изображению
CPU: центральный процессор
CRT: электронно-лучевая трубка
СТВ: блок дерева кодирования
CTU: единица дерева кодирования
CU: единица кодирования
DPB: буфер изображения декодера
DVD: цифровой видеодиск
FPGA: вентильные матрицы, программируемые пользователем
GOP: группа изображений
GPU: графический процессор
GSM: глобальная система мобильной связи
HEVC: высокоэффективное видеокодирование
HRD: гипотетический эталонный декодер
IBC: копия блока внутри изображения
IC: интегральная схема
JEM: модель совместного исследования
LAN: локальная сеть
LCD: жидкокристаллический дисплей
LTE: проект долгосрочного развития систем связи
MV: вектор движения
OLED: органический светодиод
РВ: блок предсказания
PCI: межсоединение периферийных компонентов
PLD: программируемое логическое устройство
PU: единица предсказания
RAM: оперативная память
ROM: постоянная память
SCC: кодирование содержимого экрана
SEI: информация дополнительного улучшения
SNR: отношение сигнал/шум
SSD: твердотельный накопитель
TU: единица преобразования
USB: универсальная последовательная шина
VUI: информация о пригодности видео
VVC: универсальное видеокодирование.
Изобретение относится к области видеокодирования/видеодекодирования. Техническим результатом является повышение эффективности декодирования. Предложено устройство для декодирования видео, включающее схему обработки, которая декодирует информацию предсказания для текущего блока в текущем кодированном изображении. Информация предсказания указывает режим предсказания на основании интраблочного копирования (IBC), используемый для текущего блока, индекс для выбора кандидата предсказателя вектора блока из списка кандидатов предсказателя вектора блока для текущего блока и то, существует ли ненулевой остаток для текущего блока. Схема обработки создает список кандидатов предсказателя вектора блока для текущего блока с той же последовательностью кандидатов, независимо от того, существует ли нулевой остаток для текущего блока. Схема обработки выбирает кандидата предсказателя вектора блока из построенного списка кандидатов предсказателя вектора блока на основе индекса, указанного в информации предсказания, и реконструирует текущий блок в соответствии с выбранным кандидатом предсказателя вектора блока. 3 н. и 12 з.п. ф-лы, 17 ил.
1. Способ декодирования видео в декодере, содержащий:
декодирование информации предсказания для текущего блока в текущем кодированном изображении, которое является частью кодированной видеопоследовательности, при этом информация предсказания указывает режим предсказания на основании интраблочного копирования (IBC), используемый для текущего блока, и индекс для выбора кандидата предсказателя вектора блока из списка кандидатов предсказателя вектора блока для текущего блока;
определение, в явном или неявном режиме выполнено кодирование текущего блока в режиме предсказания IBC, на основании того, указывает ли информация предсказания на существование различия между вектором блока и соответствующим предсказателем вектора блока, при этом кодирование текущего блока определяют как выполненное в неявном режиме, когда информация предсказания указывает, что различия не существует, и как выполненное в явном режиме, когда различие существует;
построение списка кандидатов предсказателя вектора блока для текущего блока на основании последовательности кандидатов, при этом список кандидатов предсказателя вектора блока содержит первое количество кандидатов предсказателя вектора блока в неявном режиме и содержит второе количество кандидатов предсказателя вектора блока в явном режиме;
выбор кандидата предсказателя вектора блока из построенного списка кандидатов предсказателя вектора блока на основе индекса, указанного в информации предсказания; и
реконструкцию текущего блока в соответствии с выбранным кандидатом предсказателя вектора блока.
2. Способ по п. 1, дополнительно включающий:
определение доступности первого вектора блока первого пространственно соседнего блока из множества пространственно соседних блоков текущего блока;
вставку первого вектора блока в список кандидатов предсказателя вектора блока в ответ на определение доступности первого вектора блока первого пространственно соседнего блока из множества пространственно соседних блоков текущего блока;
определение доступности второго вектора блока второго пространственно соседнего блока из множества пространственно соседних блоков текущего блока и того, является ли второй вектор блока второго пространственно соседнего блока таким же, как первый вектор блока первого пространственно соседнего блока; и
вставку второго вектора блока в список кандидатов предсказателя вектора блока, если определено, что второй вектор блока второго пространственно соседнего блока из множества пространственно соседних блоков текущего блока доступен, и второй вектор блока второго пространственно соседнего блока не такой же, как первый вектор блока первого пространственно соседнего блока.
3. Способ по п. 2, в котором первый пространственно соседний блок текущего блока примыкает к нижнему левому углу текущего блока, а нижняя сторона первого пространственно соседнего блока лежит на одной линии с нижней стороной текущего блока, при этом второй пространственно соседний блок текущего блока примыкает к верхнему правому углу текущего блока, а правая сторона второго пространственно соседнего блока лежит на одной линии с правой стороной текущего блока.
4. Способ по п. 2, в котором первый пространственно соседний блок текущего блока примыкает к нижнему левому углу текущего блока, а верхняя сторона первого пространственно соседнего блока лежит на одной линии с нижней стороной текущего блока, при этом второй пространственно соседний блок текущего блока примыкает к верхнему правому углу текущего блока, а левая сторона второго пространственно соседнего блока лежит на одной линии с правой стороной текущего блока.
5. Способ по п. 2, в котором первый пространственно соседний блок текущего блока примыкает к левой стороне текущего блока, а второй пространственно соседний блок текущего блока примыкает к верхней стороне текущего блока.
6. Способ по п. 2, дополнительно включающий:
когда общее число векторов блока множества пространственно соседних блоков, включенных в список кандидатов предсказателя векторов блока, меньше максимально допустимого числа, основанного на том, существует ли различие между вектором блока и соответствующим предсказателем вектора блока;
выбор третьего вектора блока ранее кодированного блока из множества векторов блока ранее кодированных блоков;
определение, отличается ли выбранный третий вектор блока от множества пространственно соседних блоков, включенных в список кандидатов предсказателя вектора блока; и
вставку выбранного третьего вектора блока в список кандидатов предсказателя вектора блока в ответ на определение того, что выбранный третий вектор блока отличается от множества пространственно соседних блоков, включенных в список кандидатов предсказателя вектора блока.
7. Способ по п. 6, дополнительно включающий:
когда общее число векторов блока множества пространственно соседних блоков и ранее кодированных блоков, включенных в список кандидатов предсказателя векторов блока, меньше максимально допустимого числа и превышает единицу;
выбор множества кандидатов предсказателя векторов блока из списка кандидатов предсказателя векторов блока;
усреднение выбранного множества кандидатов предсказателя вектора блока, чтобы сформировать по меньшей мере один усредненный вектор блока; и
вставку по меньшей мере одного усредненного вектора блока в список кандидатов предсказателя вектора блока.
8. Способ по п. 7, дополнительно включающий:
когда общее число векторов блока множества пространственно соседних блоков, векторов блока ранее кодированных блоков и по меньшей мере одного усредненного вектора блока, включенного в список кандидатов предсказателя векторов блока, меньше максимально допустимого числа,
вставку вектора блока, заданного по умолчанию, в список кандидатов предсказателя вектора блока.
9. Способ по п. 8, в котором вектор блока, заданный по умолчанию, имеет координаты (0, 0).
10. Способ по п. 1, в котором выбранного кандидата предсказателя вектора блока не округляют, если для текущего блока существует различие между вектором блока и соответствующим предсказателем вектора блока.
11. Способ по п. 1, дополнительно включающий:
когда один из кандидатов предсказателя вектора блока, включенных в список кандидатов предсказателя вектора блока, недействителен,
выполнение процесса обрезки или отсечения для этого одного из кандидатов предсказателя вектора блока.
12. Способ по п. 11, в котором один из кандидатов предсказателя вектора блока определяют как недействительный, если опорный блок, предсказанный этим одним из кандидатов предсказателя вектора блока, выходит за пределы допустимого диапазона поиска для режима предсказания на основании интраблочного копирования (IBC).
13. Способ по п. 1, в котором информация предсказания указывает, существует ли различие между вектором блока и соответствующим предсказателем вектора блока, на основе флага, который указывает, что текущий блок не кодирован в неявном режиме.
14. Устройство для декодирования видео, содержащее схему обработки, выполненную с возможностью осуществления способа по любому из пп. 1-13.
15. Компьютерносчитываемый носитель, на котором хранится программа, выполняемая по меньшей мере одним процессором для осуществления способа по любому из пп. 1-13.
US 2016100189 A1, 2016.04.07 | |||
XIANG LI et al., Further work on top of Tencent’s CfP response, Joint Video Experts Team (JVET) of ITU-T SG16 WP3 and ISO/IEC JTC 1/SC 29/WG11, JVET-J0047-v1, 10th Meeting: San Diego, 10-20 Apr | |||
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
US 2017302966 A1, 2017.10.19 | |||
US 2017155914 A1, 2017.06.01 | |||
WO 2016051362 A1, 2016.04.07 | |||
US 2018103260 A1, |
Авторы
Даты
2022-08-02—Публикация
2020-03-06—Подача