RU2683165C1 - Внутреннее предсказание блочного копирования с асимметричными разделами и схемами поиска на стороне кодера, диапазоны поиска и подходы к разделению - Google Patents

Внутреннее предсказание блочного копирования с асимметричными разделами и схемами поиска на стороне кодера, диапазоны поиска и подходы к разделению Download PDF

Info

Publication number
RU2683165C1
RU2683165C1 RU2016128834A RU2016128834A RU2683165C1 RU 2683165 C1 RU2683165 C1 RU 2683165C1 RU 2016128834 A RU2016128834 A RU 2016128834A RU 2016128834 A RU2016128834 A RU 2016128834A RU 2683165 C1 RU2683165 C1 RU 2683165C1
Authority
RU
Russia
Prior art keywords
block
current
2nx2n
screen capture
sections
Prior art date
Application number
RU2016128834A
Other languages
English (en)
Inventor
Лихуа ЧЖУ
Юнцзюнь У
Гари Дж. САЛЛИВАН
Original Assignee
МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи filed Critical МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Application granted granted Critical
Publication of RU2683165C1 publication Critical patent/RU2683165C1/ru

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/162User input
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Изобретение относится к области кодирования/декодирования контента захвата экрана. Техническим результатом является повышение эффективности кодирования/декодирования контента захвата экрана с точки зрения показателя скорость искажения. Раскрыт способ кодирования контента захвата экрана в вычислительном устройстве, которое реализует видеокодер, выполненный с возможностью кодирования контента захвата экрана, состоящий в том, что: принимают кадр контента захвата экрана; разделяют кадр контента захвата экрана на множество блоков 2Nx2N, причем упомянутое множество блоков 2Nx2N включает в себя текущий блок 2Nx2N кадра контента захвата экрана; кодируют текущий блок 2Nx2N кадра контента захвата экрана для получения закодированных данных, причем текущий блок 2Nx2N находится в некотором определенном фрагменте кадра контента захвата экрана и находится в некотором определенном элементе мозаичного изображения кадра контента захвата экрана, текущий блок 2Nx2N имеет размеры 64x64, 32x32 или 16x16, в том числе: ограничивают значения векторов для внутреннего предсказания блочного копирования («BC») так, чтобы они имели точность целочисленных выборок и указывали опорные области, которые находятся в упомянутом определенном фрагменте, в упомянутом определенном элементе мозаичного изображения, и не перекрываются с текущим блоком 2Nx2N в кадре контента захвата экрана; асимметрично разделяют текущий блок 2Nx2N на первый и второй разделы для внутреннего предсказания BC посредством разбиения текущего блока 2Nx2N по горизонтали или по вертикали на первый и второй разделы, причем первый и второй разделы имеют размеры: (a) 64x16 и 64x48 соответственно, или 16x64 и 48x64 соответственно, если текущий блок 2Nx2N имеет размеры 64x64; (b) 32x8 и 32x24 соответственно, или 8x32 и 24x32 соответственно, если текущий блок 2Nx2N имеет размеры 32x32; и (c) 16x4 и 16x12 соответственно, или 4x16 и 12x16 соответственно, если текущий блок 2Nx2N имеет размеры 16x16; выполняют внутреннее предсказание BC для упомянутого первого раздела; выполняют внутреннее предсказание BC для упомянутого второго раздела и выводят закодированные данные как часть битового потока. 4 н. и 15 з.п. ф-лы, 30 ил.

Description

УРОВЕНЬ ТЕХНИКИ
[001] Инженеры используют сжатие (также называемое кодированием источника или декодированием источника), чтобы уменьшить скорость передачи битов цифрового видео. Сжатие уменьшает стоимость хранения и передачи видеоинформации посредством преобразования информации в форму более низкой скорости передачи битов. Распаковка (также называемое декодированием) восстанавливает версию исходной информации из сжатой формы. «Кодек» представляет собой систему кодера/декодера.
[002] За последние два десятилетия были приняты различные стандарты видеокодека, включая стандарты ITU-T H.261, H.262 (MPEG-2 или ISO/IEC 13818-2), H.263 и H.264 (MPEG-4 AVC или ISO/IEC 14496-10), стандарты MPEG-1 (ISO/IEC 11172-2) и MPEG-4 Visual (ISO/IEC 14496-2), и стандарт SMPTE 421M (VC-1). Совсем недавно был одобрен стандарт H.265/HEVC (ITU-T H.265 или ISO/IEC 23008-2). Расширения к стандарту H.265/HEVC (например, для масштабируемого кодирования/декодирования видео, для кодирования/декодирования видео с более высокой точностью с точки зрения битовой глубины или частоты дискретизации сигнала цветности выборки, для контента захвата экрана или для мультивидового кодирования/декодирования) в настоящее время находятся в стадии разработки. Стандарт видеокодека, как правило, определяет опции для синтаксиса кодированного битового видеопотока, детализируя параметры в битовом потоке, когда конкретные функции используются в кодировании и декодировании. Во многих случаях стандарт видеокодека также содержит подробную информацию об операциях декодирования, которые должен выполнить декодер, чтобы достичь соответствующих результатов в декодировании. Помимо стандартов кодека, различные собственные форматы кодека определяют другие опции для синтаксиса кодированного битового видеопотока и соответствующие операции декодирования.
[003] Внутреннее блочное копирование («BC») представляет собой режим предсказания на стадии разработки расширений HEVC. Для режима внутреннего предсказания BC, выборочные значения текущего блока изображения предсказываются с использованием ранее восстановленных выборочных значений в том же самом изображении. Вектор блока («BV») указывает смещение от текущего блока в область изображения, которая включает в себя ранее восстановленные выборочные значения, используемые для предсказания. BV передается в битовом потоке. Внутреннее предсказание BC представляет собой форму предсказания внутри изображения – внутреннее предсказание BC для блока изображения не использует каких-либо выборочных значений, отличных от выборочных значений в том же изображении.
[004] Как в настоящее время определено в стандарте HEVC и реализовано в некоторых справочных программах для стандарта HEVC, режим внутреннего предсказания BC имеет ряд проблем. В частности, опции для размеров блоков для внутреннего предсказания BC слишком ограничены во многих сценариях, и решения на стороне кодера о размерах блока и о том, как использовать внутриблочное предсказание, не выполняются эффективно во многих сценариях.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[005] Таким образом, подробное описание представляет инновации во внутреннем предсказании блочного копирования («BC»), а также инновации в схемах поиска на стороне кодера, диапазонах поиска и подходах к разделению. Например, некоторые из инноваций относятся к использованию асимметричных разделов (иногда называемых «AMP») для внутреннего предсказания BC. Другие инновации относятся к схемам поиска или подходам, которые кодер использует во время оценки вектора блока («BV») (для внутреннего предсказания BC) или оценки движения. Дополнительные другие инновации относятся к использованию диапазонов поиска BV, которые имеют горизонтальное или вертикальное отклонение во время оценки BV.
[006] В соответствии с первым аспектом инноваций, описанных в материалах настоящей заявки, кодер изображения или видео кодирует изображение или видео для получения кодированных данных, и выводит кодированные данные как часть битового потока. Как часть кодирования, кодер выполняет внутреннее предсказание BC для текущего блока, который асимметрично разделен для внутреннего предсказания BC. Например, текущий блок представляет собой блок 2N×2N, и текущий блок разделен на (1) блок 2N×N/2 и блок 2N×3N/2 или (2) блок 2N×3N/2 и блок 2N×N/2. Или, в качестве другого примера, текущий блок представляет собой блок 2N×2N, и текущий блок разделен на (1) блок N/2×2N и блок 3N/2×2N или (2) блок 3N/2×2N и блок N/2×2N. В более общем смысле, для асимметричного разделения текущий блок может быть расщеплен на два раздела, которые имеют различные размеры. Как часть кодирования, кодер может также выполнять внутреннее предсказание BC для другого блока, который симметрично разделен для внутреннего предсказания BC. Например, другой блок представляет собой блок 2N×2N, который разделен на (1) два блока 2N×N, (2) два блока N×2N, или (3) четыре блока N×N, каждый из которых может быть дополнительно разделен на два блока N×N/2, два блока N/2×N или четыре блока N/2×N/2. В более общем смысле, для симметричного разделения другой блок может быть расщеплен на два раздела, которые имеют идентичные размеры.
[007] В соответствии со вторым аспектом инноваций, описанных в материалах настоящей заявки, декодер изображения или видео принимает кодированные данные как часть битового потока и декодирует кодированные данные, чтобы восстановить изображение или видео. Как часть декодирования, декодер выполняет внутреннее предсказание BC для текущего блока, который асимметрично разделен для внутреннего предсказания BC. Например, текущий блок представляет собой блок 2N×2N, и текущий блок разделен на (1) блок 2N×N/2 и блок 2N×3N/2 или (2) блок 2N×3N/2 и блок 2N×N/2. Или, в качестве другого примера, текущий блок представляет собой блок 2N×2N, и текущий блок разделен на (1) блок N/2×2N и блок 3N/2×2N или (2) блок 3N/2×2N и блок N/2×2N. В более общем смысле, для асимметричного разделения текущий блок может быть расщеплен на два раздела, которые имеют различные размеры. Как часть декодирования, кодер может также выполнять внутреннее предсказание BC для другого блока, который симметрично разделен для внутреннего предсказания BC. Например, другой блок представляет собой блок 2N×2N, который разделен на (1) два блока 2N×N, (2) два блока N×2N, или (3) четыре блока N×N, каждый из которых может быть дополнительно разделен на два блока N×N/2, два блока N/2×N или четыре блока N/2×N/2. В более общем смысле, для симметричного разделения другой блок может быть расщеплен на два раздела, которые имеют идентичные размеры.
[008] В соответствии с третьим аспектом инноваций, описанных в материалах настоящей заявки, кодер изображения или видео кодирует изображение или видео для получения кодированных данных, и выводит кодированные данные как часть битового потока. Как часть кодирования, декодер вычисляет предсказание для текущего блока (например, блок предсказания единицы предсказания) текущего изображения. Предсказание может быть для оценки движения или оценки BV для внутреннего предсказания BC. В любом случае, вычисление предсказания использует подход снизу вверх для идентификации разделов текущего блока. В целом, разделы для текущего блока включают в себя два или более разделов, которые имеют различные размеры. Например, текущий блок представляет собой блок 2N×2N, и подход снизу вверх состоит в том, что: (a) проверяют режимы для каждого блока N×N из блока 2N×2N; (b) выбирают лучшие режимы для соответствующих блоков N×N; (c) кэшируют значения вектора для соответствующих блоков N×N; (d) проверяют режимы с 2N-размером для блока 2N×2N, в том числе используют кэшированные значения вектора; (e) выбирают лучший режим с 2N-размером для блока 2N×2N; и (f) выбирают между лучшим режимом с 2N-размером для блока 2N×2N и выбранными лучшими режимами для соответствующих блоков N×N блока 2N×2N. Или, в качестве другого примера, текущий блок представляет собой блок 2N×2N, и подход снизу вверх состоит в том, что: (a) проверяют подмножество режимов для каждого блока N×N из блока 2N×2N; (b) кэшируют значения вектора для соответствующих блоков N×N; (c) проверяют подмножество режимов с 2N-размером для блока 2N×2N, в том числе используют кэшированные значения вектора; (d) выбирают лучший режим с 2N-размером для блока 2N×2N; и (e) выбирают между лучшим режимом с 2N-размером для блока 2N×2N и лучшими режимами для соответствующих блоков N×N.
[009] В соответствии с четвертым аспектом инноваций, описанных в материалах настоящей заявки, кодер изображения или видео кодирует изображение или видео для получения кодированных данных, и выводит кодированные данные как часть битового потока. Как часть кодирования, кодер вычисляет предсказание для текущего блока текущего изображения. Предсказание может быть для оценки движения или оценки BV для внутреннего предсказания BC. В любом случае, вычисление предсказания состоит в том, что (a) идентифицируют текущее лучшее местоположение для предсказания с помощью итеративной оценки в малой окрестности (например, местоположениях, которые расположены в непосредственной близости горизонтально или вертикально к текущему лучшему местоположению) вокруг текущего лучшего местоположения; и (b) подтверждают текущее лучшее местоположение с помощью итеративной оценки в последовательно более крупных окрестностях (например, местоположениях в кольцах снаружи от малой окрестности) вокруг текущего лучшего местоположения. Например, если текущее лучшее местоположение хуже, чем местоположение в одной из более крупных окрестностей, кодер заменяет текущее лучшее местоположение и повторяет идентификацию и подтверждение. Стадия подтверждения может остановиться, если достигнуто пороговое значение итераций оценки в последовательно более крупных окрестностях.
[010] В соответствии с пятым аспектом инноваций, описанных в материалах настоящей заявки, кодер изображения или видео определяет BV для текущего блока изображения, выполняет внутреннее предсказание BC для текущего блока с использованием BV и кодирует BV. BV указывает на смещение в область внутри изображения. При определении BV, кодер проверяет ограничение, что область находится внутри диапазона поиска BV, имеющего горизонтальное отклонение или вертикальное отклонение. Кодер может выбрать диапазон поиска BV из нескольких доступных диапазонов поиска BV, например, в зависимости от, по меньшей мере частично, значений BV одного или более предыдущих блоков, которые могут быть отслежены в гистограммной структуре данных.
[011] В соответствии с шестым аспектом инноваций, описанных в материалах настоящей заявки, кодер изображения или видеокодирует данные для изображения с использованием внутреннего предсказания BC и выводит кодированные данные как часть битового потока. Как часть кодирования, кодер выполняет операции оценки BV с использованием диапазона поиска BV с горизонтальным или вертикальным отклонением. Кодер может выбрать диапазон поиска BV из нескольких доступных диапазонов поиска BV, например, в зависимости от, по меньшей мере частично, значений BV одного или более предыдущих блоков, которые могут быть отслежены в гистограммной структуре данных.
[012] Инновации могут быть реализованы как часть способа, как часть вычислительного устройства, выполненного с возможностью выполнения способа, или как часть материального машинного читаемого носителя, хранящего машинно-исполняемые инструкции, приводящие к тому, что вычислительное устройство выполняет способ. Различные инновации могут быть использованы в комбинации или раздельно.
[013] Вышеизложенные и другие цели, отличительные признаки и преимущества изобретения станут очевиднее из последующего подробного описания, которое выполнено со ссылкой на прилагаемые фигуры.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[014] Фигура 1 представляет собой схему примерной вычислительной системы, в которой некоторые из описанных вариантов осуществления могут быть реализованы.
[015] Фигуры 2a и 2b представляют собой схемы примерных сетевых сред, в которых некоторые из описанных вариантов осуществления могут быть реализованы.
[016] Фигура 3 представляет собой схему примерной системы кодирования, в сочетании с которой некоторые из описанных вариантов осуществления могут быть реализованы.
[017] Фигура 4 представляет собой схему примерной системы декодирования, в сочетании с которой некоторые из описанных вариантов осуществления могут быть реализованы.
[018] Фигуры 5a и 5b представляет собой схемы, иллюстрирующие примерный видеокодер, в сочетании с которым некоторые из описанных вариантов осуществления могут быть реализованы.
[019] Фигура 6 представляет собой схему, иллюстрирующую примерный видеодекодер, в сочетании с которым некоторые из описанных вариантов осуществления могут быть реализованы.
[020] Фигуры 7 и 8 представляют собой схемы, иллюстрирующие внутреннее предсказание BC для блока изображения и блоки-кандидаты для блока в согласовании блоков.
[021] Фигура 9 представляет собой схему, иллюстрирующую примерные размеры блока для внутреннего предсказания BC, включая некоторые асимметричные разделы и некоторые симметричные разделы.
[022] Фигуры 10 и 11 представляют собой обобщенные методы для кодирования и декодирования, соответственно, которые включают в себя внутреннее предсказание BC с асимметричными разделами.
[023] Фигура 12 представляет собой схему, иллюстрирующую оценку движения для блока изображения.
[024] Фигура 13 представляет собой блок-схему и прилагаемую схему, иллюстрирующую подход сверху вниз к разделению предсказанного с помощью внутреннего предсказания BC блока.
[025] Фигура 14 представляет собой блок-схему, иллюстрирующую обобщенный метод для использования подхода снизу вверх к разделению.
[026] Фигура 15 представляет собой блок-схему и прилагаемую схему, иллюстрирующую подход снизу вверх к разделению предсказанного с помощью внутреннего предсказания BC блока.
[027] Фигура 16 представляет собой блок-схему и прилагаемую схему, иллюстрирующую еще более быстрые подходы снизу вверх к разделению предсказанного с помощью внутреннего предсказания BC блока.
[028] Фигура 17 представляет собой блок-схему, иллюстрирующую обобщенный метод для поиска значения BV или значения MV для блока с использованием итеративной оценки местоположения в малой окрестности(ях) и итеративного подтверждения местоположения в более крупной окрестности(ях).
[029] Фигуры 18a и 18b представляют собой схемы, иллюстрирующие итеративную оценку местоположения в малой окрестности при поиске значения BV или значения MV для блока.
[030] Фигура 19 представляет собой схему, иллюстрирующую итеративное подтверждение местоположения в одной или нескольких более крупных окрестностях при поиске значения BV или значения MV для блока.
[031] Фигура 20 представляет собой блок-схему, иллюстрирующую примерный метод для поиска значения BV или значения MV для блока с использованием итеративной оценки местоположения в малой окрестности(ях) и итеративного подтверждения местоположения в более крупной окрестности(ях).
[032] Фигуры 21a-21e представляют собой схемы, иллюстрирующие примерные ограничения на диапазон поиска для значений BV.
[033] Фигура 22 представляет собой блок-схему, иллюстрирующую обобщенный метод для кодирования с режимом внутреннего предсказания BC, при условии соблюдения одного или более ограничений на выбор значений BV.
[034] Фигура 23 представляет собой схему, иллюстрирующую примерный порядок z-сканирования для блоков изображения.
ПОДРОБНОЕ ОПИСАНИЕ
[035] Подробное описание представляет инновации во внутреннем предсказании блочного копирования («BC»), а также инновации в схемах поиска на стороне кодера, диапазонах поиска и подходах к разделению. Например, некоторые из инноваций относятся к использованию асимметричных разделов (иногда называемых «AMP») для внутреннего предсказания BC во время кодирования и/или декодирования. Другие инновации относятся к схемам поиска или подходам, которые кодер использует во время оценки вектора блока («BV») (для внутреннего предсказания BC) или оценки движения. Дополнительные другие инновации относятся к использованию диапазонов поиска BV, которые имеют горизонтальное или вертикальное отклонение во время оценки BV.
[036] Хотя операции, описанные в материалах настоящей заявки, находятся на местах, описанных как выполняемые видеокодером или видеодекодером, во многих случаях операции могут быть выполнены другим типом инструмента обработки медиа (например, кодером изображения или декодером изображения).
[037] Некоторые из инноваций, описанных в материалах настоящей заявки, проиллюстрированы со ссылкой на синтаксические элементы и операции, характерные для стандарта H.265/HEVC. Например, дана ссылка на проект версии JCTVC-P1005 стандарта H.265/HEVC – «Текстовая Спецификация Расширений Диапазона Высокоэффективного Кодирования Видео (HEVC): Проект 6», JCTVC-P1005_v1, Февраль 2014. Инновации, описанные в материалах настоящей заявки, также могут быть реализованы для других стандартов или форматов.
[038] Многие из инноваций, описанных в материалах настоящей заявки, могут улучшить производительность соотношения скорость-искажение при кодировании определенного «искусственно созданного» видеоконтента, такого как контент захвата экрана. В целом, видео захвата экрана (также называемое видео контента экрана) представляет собой видео, которое содержит визуализированный текст, компьютерную графику, сгенерированный анимацией контент или другие подобные типы контента, захваченного при визуализации на компьютерный дисплей, в отличие от захваченного только камерой видеоконтента. Контент захвата экрана, как правило, включает в себя повторяющиеся структуры (например, графику, текстовые символы). Контент захвата экрана обычно закодирован в формате (например, YUV 4:4:4 или RGB 4:4:4) с высоким разрешением выборки насыщенности цвета, хотя от также может быть закодирован в формате с более низким разрешением выборки насыщенности цвета (например, YUV 4:2:0). Общие сценарии для кодирования/декодирования контента захвата экрана включают в себя конференц-связь удаленного рабочего стола и кодирование/декодирование графических наложений на естественное видео или другое видео «смешанного контента». Несколько из инноваций, описанных в материалах настоящей заявки, приспособлены для кодирования видео содержимого экрана или другого искусственно-созданного видео. Эти инновации могут также быть использованы для естественного видео, но могут не быть столь же эффективными. Другие инновации, описанные в материалах настоящей заявки, эффективны в кодировании естественного видео или искусственно-созданного видео.
[039] В более общем смысле, возможны различные альтернативы примерам, описанным в материалах настоящей заявки. Например, некоторые из способов, описанных в материалах настоящей заявки, могут быть изменены путем изменения порядка описанных действий способа, путем разделения, повторения или пропуска определенных действий способа, и т. д. Различные аспекты раскрытой технологии могут быть использованы в комбинации или отдельно. Различные варианты осуществления используют одну или более из описанных инноваций. Некоторые из инноваций, описанных в материалах настоящей заявки, решают одну или более из проблем, отмеченных на заднем плане. Как правило, данный метод/инструмент не решает все такие проблемы.
I. ПРИМЕРНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ
[040] Фигура 1 иллюстрирует обобщенный пример подходящей вычислительной системы (100), в которой несколько из описанных инноваций могут быть реализованы. Вычислительная система (100) не предназначена для предложения какого-либо ограничения объема использования или функциональности, поскольку инновации могут быть реализованы в различных вычислительных системах общего назначения или специального назначения.
[041] Как показано на Фигуре 1, вычислительная система (100) включает в себя один или более обрабатывающих блоков (110, 115) и память (120, 125). Обрабатывающие блоки (110, 115) выполняют машинно-исполняемые инструкции. Обрабатывающий блок может быть центральным процессором («CPU») общего назначения, процессором в специализированной интегральной схеме («ASIC») или любым другим типом процессора. В многопроцессорной системе несколько обрабатывающих блоков выполняют машинно-исполняемые инструкции, чтобы повысить вычислительную мощность. Например, Фигура 1 показывает центральный процессор (110), а также графический процессор или сопроцессор (115). Материальная память (120, 125) может представлять собой энергозависимую память (например, регистры, кэш, ОЗУ (оперативное запоминающее устройство)), энергонезависимую память (например, ПЗУ (постоянное запоминающее устройство), ЭСППЗУ (электрически стираемое программируемое постоянное запоминающее устройство), флэш-память, и т.д.) или какую-либо комбинацию из двух, к которой имеет доступ обрабатывающий блок(и). Память (120, 125) хранит программное обеспечение (180), реализующее одну или более инновации для внутреннего предсказания BC с асимметричными разделами и/иди одну или более инновации для схем поиска на стороне кодера, диапазоны поиска, имеющие горизонтальное или вертикальное отклонение и/или подходы к разделению, в форме машинно-исполняемых инструкций, подходящих для выполнения обрабатывающим блоком(ами).
[042] Вычислительная система может иметь дополнительные отличительные признаки. Например, вычислительная система (100) включает в себя запоминающее устройство (140), одно или более устройств (150) ввода, одно или более устройств (160) вывода, и одно или более соединений (170) связи. Механизм взаимного соединения (не показан), такой как шина, контроллер или сеть, осуществляет взаимное соединение компонентов вычислительной системы (100). Как правило, программное обеспечение операционной системы (не показано) предоставляет рабочую среду для другого программного обеспечения, исполняемого в вычислительной системе (100), и координирует деятельность компонентов вычислительной системы (100).
[043] Материальное запоминающее устройство (140) может быть съемным или несъемным и включает в себя магнитные диски, магнитные ленты или кассеты, CD-ROM (ПЗУ на компакт диске), DVD (универсальный цифровой диск) или любой другой носитель, который может быть использован для хранения информации и к которому может быть осуществлен доступ в вычислительной системе (100). Запоминающее устройство (140) хранит инструкции для программного обеспечения (180), реализующего одну или более инноваций для внутреннего предсказания BC с асимметричными разделами и/или одну или более инноваций для схем поиска на стороне кодера, поисковых диапазонов и/или подходов к разделению.
[044] Устройство(а) (150) ввода может представлять собой устройство сенсорного ввода, такое как клавиатура, мышь, перо или шаровой манипулятор, устройство голосового ввода, устройство сканирования или другое устройство, которое обеспечивает ввод в вычислительную систему (100). Для видео, устройство(а) (150) ввода может представлять собой камеру, видеокарту, карту ТВ тюнера, модуль захвата экрана или подобное устройство, которое принимает входной видеосигнал в аналоговой или цифровой форме, или CD-ROM или CD-RW, который считывает входной видеосигнал в вычислительную систему (100). Устройство(а) (160) вывода может представлять собой дисплей, принтер, динамик, устройство для записи CD или другое устройство, которое обеспечивает вывод из вычислительной системы (100).
[045] Соединение(я) (170) связи дают возможность обмена данными через среду передачи данных с другой вычислительной сущностью. Среда передачи данных транспортирует информацию, такую как машинно-исполняемые инструкции, входной или выходной аудио- или видеосигнал или другие данные, в модулированном информационном сигнале. Модулированный информационный сигнал представляет собой сигнал, который обладает одной или более характеристиками, устанавливаемыми или изменяемыми таким образом, чтобы закодировать информацию в сигнале. В качестве примера, а не ограничения, среда передачи данных может использовать электрическую, оптическую, радиочастотную (RF) или другую несущую.
[046] Инновации могут быть описаны в общем контексте машинно-читаемых носителей. Машинно-читаемые носители представляют собой любые доступные материальные носители, к которым может быть осуществлен доступ в вычислительной среде. В качестве примера, а не ограничения, в вычислительной системе (100) машинно-читаемые носители включают в себя память (120, 125), запоминающее устройство (140), и комбинации любых из вышеприведенных.
[047] Инновации могут быть описаны в общем контексте машинно-исполняемых инструкций, таких как те, которые включены в программные модули, исполняемые в вычислительной системе на целевом реальном или виртуальном процессоре. Как правило, программные модули включают в себя процедуры, программы, библиотеки, объекты, классы, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Функциональные возможности программных модулей могут быть скомбинированы или разделены между программными модулями, как требуется в различных вариантах осуществления. Машинно-исполняемые инструкции для программных модулей могут быть исполнены в локальной или распределенной вычислительной системе.
[048] Термины «система» и «устройство» используются взаимозаменяемо в материалах настоящей заявки. Если из контекста явно не следует иное, никакой из терминов не подразумевает какого-либо ограничения на тип вычислительной системы или вычислительного устройства. В целом, вычислительная система или вычислительное устройство могут быть локальными или распределенными, и могут включать в себя любую комбинацию аппаратных средств специального назначения и/или аппаратных средств общего назначения с программным обеспечением, реализующим функциональность, описанную в материалах настоящей заявки.
[049] Раскрытые способы также могут быть реализованы с использованием специализированных вычислительных аппаратных средств, выполненных с возможностью выполнения любого из раскрытых способов. Например, раскрытые способы могут быть реализованы посредством интегральной схемы (например, ASIC (такой как цифровой сигнальный процессор («DSP») ASIC, графический процессор («GPU»), или программируемое логическое устройство («PLD»), такое как программируемая вентильная матрица («FPGA»)), специально спроектированной или выполненной с возможностью реализации любого из раскрытых способов.
[050] В целях представления подробное описание использует термины, такие как «определять», «использовать», чтобы описывать машинные операции в вычислительной системе. Эти термины являются высокоуровневыми абстракциями для операций, выполняемых компьютером, и не должны быть перепутаны с действиями, выполняемыми человеком. Фактические машинные операции, соответствующие этим терминам, различаются в зависимости от реализации. Как используется в материалах настоящей заявки для описания варианта кодирования, термин «лучший» (как в «лучшем местоположении», «лучшем режиме» для разделения или «лучшей комбинации») указывает предпочтительный вариант кодирования по сравнению с другими вариантами кодирования, по отношению к предполагаемой эффективности кодирования или фактической эффективности кодирования, в терминах стоимости искажения, стоимости битовой скорости или некоторой комбинации стоимости искажения и стоимости битовой скорости. Любая доступная метрика искажения может использоваться для стоимости искажения. Любая доступная метрика битовой скорости может использоваться для стоимости битовой скорости. Другие факторы (такие как алгоритмическая сложность кодирования, алгоритмическая сложность декодирования, использование ресурсов и/или задержка) могут также оказывать влияние на решение о том, какой вариант кодирования является «лучшим».
II. ПРИМЕРНЫЕ СЕТЕВЫЕ СРЕДЫ
[051] Фигуры 2a и 2b показывают примерные сетевые среды (201, 202), которые включают в себя видеокодеры (220) и видеодекодеры (270). Кодеры (220) и декодеры (270) соединены через сеть (250) с использованием соответствующего протокола связи. Сеть (250) может включать в себя Интернет или другую компьютерную сеть.
[052] В сетевой среде (201), показанной на Фигуре 2a, каждый инструмент (210) связи в реальном времени («RTC») включает в себя как кодер (220), так и декодер (270) для двунаправленной связи. Данный кодер (220) может производить выходной сигнал, совместимый с разновидностью или расширением стандарта H.265/HEVC, стандартом SMPTE 421M, стандартом ISO/IEC 14496-10 (также известным как H.264 или AVC), другим стандартом или собственным форматом, с соответствующим декодером (270), принимающим закодированные данные от кодера (220). Двунаправленная связь может быть частью видеоконференции, видеозвонка или другого сценария связи с двумя участниками или несколькими участниками. Хотя сетевая среда (201) на Фигуре 2a включает в себя два инструмента (210) связи реального времени, сетевая среда (201) может вместо этого включать в себя три или более инструментов (210) связи реального времени, который принимают участие в связи с несколькими участниками.
[053] Инструмент (210) связи реального времени управляет кодированием посредством кодера (220). Фигура 3 показывает примерную систему (300) кодирования, которая может быть включена в инструмент (210) связи реального времени. Альтернативно, инструмент (210) связи реального времени использует другую систему кодирования. Инструмент (210) связи реального времени также управляет декодированием посредством декодера (270). Фигура 4 показывает примерную систему (400) декодирования, которая может быть включена в инструмент (210) связи реального времени. Альтернативно, инструмент (210) связи реального времени использует другую систему декодирования.
[054] В сетевой среде (202), показанной на Фигуре 2b, инструмент (212) кодирования включает в себя кодер (220), который кодирует видео для доставки нескольким инструментам (214) воспроизведения, которые включают в себя декодеры (270). Однонаправленная связь может быть предоставлена для системы видеонаблюдения, системы наблюдения через веб-камеру, модуля захвата экрана, презентации конференц-связи удаленного рабочего стола или другого сценария, в котором видео закодировано и отправлено из одного местоположения в одно или более другие местоположения. Хотя сетевая среда (202) на Фигуре 2b включает в себя два инструмента (214) воспроизведения, сетевая среда (202) может включать в себя больше или меньше инструментов (214) воспроизведения. Как правило, инструмент (214) воспроизведения обменивается данными с инструментом (212) кодирования, чтобы определить поток видео, который должен принять инструмент (214) воспроизведения. Инструмент (214) воспроизведения принимает поток, буферизует принятые закодированные данные в течение соответствующего периода и начинает декодирование и воспроизведение.
[055] Фигура 3 показывает примерную систему (300) кодирования, которая может быть включена в инструмент (212) кодирования. Альтернативно, инструмент (212) кодирования времени использует другую систему кодирования. Инструмент (212) кодирования может также включать в себя логику управления на стороне сервера для управления соединениями с одним или более инструментами (214) воспроизведения. Фигура 4 показывает примерную систему (400) декодирования, которая может быть включена в инструмент (214) воспроизведения. Альтернативно, инструмент (214) воспроизведения использует другую систему декодирования. Инструмент (214) кодирования может также включать в себя логику управления на стороне клиента для управления соединениями с инструментом (212) кодирования.
III. ПРИМЕРНЫЕ СИСТЕМЫ КОДИРОВАНИЯ
[056] Фигура 3 представляет собой структурную схему примерной системы кодирования (300), в сочетании с которой некоторые из описанных вариантов осуществления могут быть реализованы. Система (300) кодирования может быть инструментом кодирования общего назначения, выполненным с возможностью работы в любом из нескольких режимов кодирования, таких как режим кодирования с малой задержкой для связи в реальном времени, режим транскодирования и режим кодирования с более высокой задержкой для создания медиа для воспроизведения из файла или потока, или она может быть инструментом кодирования специального назначения, приспособленного для одного такого режима кодирования. Система (300) кодирования может быть приспособлена для кодирования определенного типа контента (например, контента захвата экрана). Система (300) кодирования может быть реализована как модуль операционной системы, как часть библиотеки приложения или как отдельное приложение. В целом, система (300) кодирования принимает последовательность исходных видеокадров (311) из источника (310) видеосигнала и создает кодированные данные в качестве выходных данных в канал (390). Закодированные выходные данные в канал могут включать в себя контент, закодированный с использованием внутреннего режима предсказания BC.
[057] Источник (310) видеосигнала может быть камерой, картой тюнера, носителями данных, модулем захвата экрана или другим цифровым источником видеосигнала. Источник (310) видеосигнала формирует последовательность видеокадров с частотой кадров, например, 30 кадров в секунду. Используемый в материалах настоящей заявки термин «кадр», как правило, относится к источнику, закодированным или восстановленным данным изображения. Для видео с прогрессивной разверткой кадр представляет собой видеокадр с прогрессивной разверткой. Для получения видео с чересстрочной разверткой, в примерных вариантах осуществления чересстрочный видеокадр может быть расперемежен перед кодированием. Альтернативно, два дополняющих видеополя с чересстрочной разверткой кодируются вместе как один видеокадр или кодируются как два отдельно закодированных поля. Помимо указания на видеокадр с прогрессивной разверткой или видеокадр с чересстрочной разверткой, термин «кадр» или «изображение» может указывать на одно непарное видеополе, дополняющую пару видеополей, плоскость видеообъекта, которая представляет видеообъект в заданное время, или область интереса в более крупном изображении. Плоскость видеообъекта или область могут быть частью более крупного изображения, которое включает в себя несколько объектов или областей сцены.
[058] Прибывающий исходный кадр (311) хранится во временной области (320) памяти исходных кадров, которая включает в себя несколько областей (321, 322, …, 32n) памяти кадрового буфера. Кадровый буфер (321, 322, и т.д.) хранит один исходный кадр в области (320) памяти исходных кадров. После того как один или более из исходных кадров (311) был сохранен в кадровых буферах (321, 322, и т.д.), селектор (330) кадра выбирает отдельный исходный кадр из области (320) памяти исходных кадров. Порядок, в котором кадры выбираются селектором (330) кадра для ввода в кодер (340), может отличаться от порядка, в котором кадры формируются источником (310) видео, например, кодирование некоторых кадров может быть отложено в порядке, чтобы позволить некоторым более поздним кадрам быть закодированными первыми и чтобы таким образом облегчить временно обратное предсказание. Перед кодером (340), система (300) кодирования может включать в себя препроцессор (не показан), который выполняет предварительную обработку (например, фильтрацию) выбранного кадра (331) перед кодированием. Предварительная обработка может включать в себя преобразование цветового пространства в первичные (например, яркость) и вторичные (например, различия в насыщенности цвета в сторону красного и синего) компоненты и обработку передискретизации (например, чтобы уменьшить пространственное разрешение компонентов насыщенности цвета) для кодирования. Как правило, перед кодированием видео преобразуется в цветовое пространство, такое как YUV, в котором выборочные значения компонента яркости (Y) представляют значения яркости или интенсивности, а выборочные значения компонентов насыщенности цвета (U, V) представляют значения цветового различия. Точные определения значений цветового различия (и операций преобразования в/из цветового пространства YUV в другое цветовое пространство, такое как RGB) зависят от реализации. Как правило, в материалах настоящей заявки термин YUV указывает на любое цветовое пространство с компонентом яркости (или светимости) и одним или более компонентами насыщенности цвета (или цветности), включая Y’UV, YIQ, Y’IQ и YDbDr, а также такие вариации как YCbCr и YCoCg. Выборочные значения насыщенности цвета могут быть субдискретизированы в более низкую частоту дискретизации насыщенности цвета (например, для формата YUV 4:2:0), или выборочные значения насыщенности цвета могут иметь такое же разрешение, что и выборочные значения яркости (например, для формата YUV 4:4:4). Или, видео может быть закодировано в другой формат (например, формат RGB 4:4:4, формат GBR 4:4:4 или формат BGR 4:4:4).
[059] Кодер (340) кодирует выбранный кадр (331), чтобы сформировать закодированный кадр (341), и также формирует сигналы (342) управления памятью («MMCO») или информацию о наборе эталонных изображений («RPS»). RPS представляет собой набор кадров, которые могут использоваться в качестве опорных в компенсации движения для текущего кадра или любого последующего кадра. Если текущий кадр не является первым кадром, который был закодирован, при выполнении процесса его кодирования кодер (340) может использовать один или более ранее закодированные/декодированные кадры (369), которые были сохранены во временной области (360) памяти декодированных кадров. Такие сохраненные декодированные кадры (369) используются в качестве опорных кадров для межкадрового предсказания содержимого текущего исходного кадра (331). Информация (342) MMCO/RPS указывает на декодер, чьи восстановленные кадры могут быть использованы в качестве опорных кадров, и, следовательно, должны быть сохранены в области памяти кадров.
[060] Как правило, кодер (340) включает в себя несколько модулей кодирования, которые выполняют задачи кодирования, такие как разделение на элементы мозаичного изображения, оценка внутреннего предсказания и предсказание, оценка и компенсация движения, частотные преобразования, квантование и энтропийное кодирование. Точные операции, выполняемые кодером (340), могут изменяться в зависимости от формата сжатия. Формат выходных закодированных данных может быть вариацией или расширением формата H.265/HEVC, формата Windows Media Video, формата VC-1, формата MPEG-x (например, MPEG-1, MPEG-2, или MPEG-4), формата H.26x (например, H.261, H.262, H.263, H.264), или другого формата.
[061] Кодер (340) может разделять кадр на несколько элементов мозаичного изображения одного и того же размера или различных размеров. Например, кодер (340) разделяет кадр вдоль строк элементов мозаичного изображения и столбцов элементов мозаичного изображения, которые, вместе с границами кадра, определяют горизонтальные и вертикальные границы элементов мозаичного изображения в кадре, где каждый элемент мозаичного изображения представляет собой прямоугольную область. Элементы мозаичного изображения часто используются для обеспечения возможности параллельной обработки. Кадр также может быть организован в виде одного или более фрагментов, где фрагмент может быть целым кадром или областью кадра. Фрагмент может быть декодирован независимо от других фрагментов в кадре, что повышает устойчивость к ошибкам. Содержимое фрагмента или элемента мозаичного изображения дополнительно разделяется на блоки или другие наборы выборочных значений в целях кодирования и декодирования.
[062] Для синтаксиса в соответствии со стандартом H.265/HEVC, кодер разделяет содержимое кадра (или фрагмента или элемента мозаичного изображения) на единицы дерева кодирования. Единица дерева кодирования («CTU») включает в себя выборочные значения яркости, организованные как блок дерева кодирования яркости («CTB»), и соответствующие выборочные значения насыщенности цвета, организованные как два CTB насыщенности цвета. Размер CTU (и его CTB) выбирается кодером. CTB яркости может содержать, например, 64×64, 32×32 или 16×16 выборочных значений яркости. CTU включает в себя одну или более единиц кодирования. Единица кодирования («CU») имеет блок кодирования яркости («CB») и два соответствующих CB насыщенности цвета. Например, CTU с 64×64 CTB яркости и двумя 64×64 CTB насыщенности цвета (формат YUV 4:4:4) может быть разделен на четыре CU, при этом каждый CU включает в себя 32×32 CB яркости и два 32×32 CB насыщенности цвета, и каждый CU, вероятно, разделяется дополнительно на более мелкие CU. Или, в качестве другого пример, CTU с 64×64 CTB яркости и двумя 32×32 CTB насыщенности цвета (формат YUV 4:2:0) может быть разделен на четыре CU, при этом каждый CU включает в себя 32×32 CB яркости и два 16×16 CB насыщенности цвета, и каждый CU, вероятно, разделяется дополнительно на более мелкие CU. Самый маленький допустимый размер CU (например, 8×8, 16×16) может быть передан в сигнале в битовом потоке.
[063] Как правило, CU имеет решим предсказания, такой как внутренний или внешний. CU включает в себя одну или более единиц предсказания в целях передачи сигналов информации предсказания (такой как подробности режима предсказания, значения смещения, и т.д) и/или обработки предсказания. Единица предсказания («PU») имеет блок предсказания яркости («PB») и два PB насыщенности цвета. В соответствии со стандартом H.265/HEVC, для CU внутреннего предсказания, PU имеет такой же размер, что и CU, если только CU не имеет наименьший размер (например, 8×8). В этом случае, CU может быть разделен на четыре более мелких PU (например, каждый 4×4, если наименьший размер CU составляет 8×8, для внутреннего предсказания) или PU может иметь наименьший размер CU, как указано синтаксическим элементом для CU. Для асимметричных разделов, используемых во внутреннем предсказании BC, однако, CU может быть разделена на несколько PU, как показано на Фигуре 9. В этом случае более крупная CU (например, 64×64, 32×32 или 16×16) или CU наименьшего размера (например, 8×8) может быть разделена на несколько PU.
[064] CU также имеет одну или более единиц предсказания в целях остаточного кодирования/декодирования, где единица преобразования («TU») имеет блок преобразования яркости («TB») и два TB насыщенности цвета. PU в CU внутреннего предсказания может содержать одну TU (равного размера с PU) или несколько TU. Кодер решает, как разделять видео на CTU, CU, PU, TU, и т.д.
[065] В реализациях H.265/HEVC фрагмент может включать в себя один сегмент фрагмента (независимый сегмент фрагмента) или может быть разделен на несколько сегментов фрагмента (независимый сегмент фрагмента и один или более зависимых сегментов фрагмента). Сегмент фрагмента представляет собой целое число CTU, упорядоченных последовательно в развертку элементов мозаичного изображения, содержащихся в одной единице сетевого уровня абстракции («NAL»). Для независимого сегмента фрагмента, заголовок сегмента фрагмента включает в себя значения синтаксических элементов, которые применяются для независимого сегмента фрагмента. Для зависимого сегмента фрагмента, усеченный заголовок сегмента фрагмента включает в себя несколько значений синтаксических элементов, которые применяются для этого зависимого сегмента фрагмента, а значения других синтаксических элементов для зависимого сегмента фрагмента выводятся из значений для предшествующего независимого сегмента фрагмента в порядке декодирования.
[066] В материалах настоящей заявки термин «блок» может указывать на макроблок, единицу предсказания, остаточную единицу данных или CB, PB или TB или некоторый другой набор выборочных значений, в зависимости от контекста.
[067] Возвращаясь к Фигуре 3, кодер представляет блок внутреннего кодирования исходного кадра (331) в терминах предсказания из других, ранее восстановленных выборочных значений в кадре (331). Для внутреннего предсказания BC, устройство оценки внутри изображения оценивает смещения блока по отношению к другим, ранее восстановленным выборочным значениям. Опорная область внутрикадрового предсказания представляет собой область выборочных значений в кадре, которые используются, чтобы сгенерировать значения BC-предсказания для блока. Область внутрикадрового предсказания может быть указана с помощью значения вектора блока («BV») (определенного в оценке BV). Примерные подходы к принятию решений во время кодирования внутри изображения описаны ниже. В зависимости от реализации, кодер может выполнять оценку BV для блока с использованием входных выборочных значений или восстановленных выборочных значений (ранее закодированных выборочных значений в том же изображении). Для дополнительных деталей смотри описание оценки BV в секции V.
[068] Для внутреннего пространственного предсказания для блока, устройство оценки внутри изображения оценивает экстраполяцию соседних восстановленных выборочных значений в блок. Устройство оценки внутри изображения может выводить информацию предсказания (такую как значения BV для внутреннего предсказания BC, или режим (направление) предсказания для внутреннего пространственного предсказания), которая энтропийно закодирована. Предсказывающее устройство внутрикадрового предсказания применяет информацию предсказания, чтобы определить значения внутреннего предсказания.
[069] Кодер (340) представляет межкадрово закодированный, предсказанный блок исходного кадра (331) в терминах предсказания из опорных кадров. Устройство оценки движения оценивает движение блока по отношению к одному или более опорным кадрам (369). Когда используются несколько опорных кадров, несколько опорных кадров могут быть из различных временных направлений или одного и того же временного направления. Опорная область предсказания с компенсацией движения представляет собой область выборочных значений в опорном кадре(ах), которые используются, чтобы сгенерировать значения предсказания с компенсацией движения для блока выборочных значений текущего кадра. Устройство оценки движения выводит информацию движения, такую как информация вектора движения («MV»), которая энтропийно закодирована. Компенсатор движения применяет MV к опорным кадрам (369), чтобы определить значения предсказания с компенсацией движения для межкадрового предсказания. Примерные подходы к принятию решений во время кодирования между изображениями описаны ниже.
[070] Кодер может определить различия (если таковые есть) между значениями предсказания блока (внутреннего или внешнего) и соответствующие исходные значения. Эти остаточные значения предсказания дополнительно кодируются с использованием частотного преобразования (если частотное преобразование не пропускается), квантования и энтропийного кодирования. Например, кодер (340) устанавливает значения для параметра квантования («QP») для изображения, элемента мозаичного изображения, фрагмента и/или другой части видео, и квантует коэффициенты преобразования соответственно. Энтропийный кодировщик кодера (340) сжимает квантованные значения коэффициента преобразования, а также определенную дополнительную информацию (например, информацию MV, значения индекса для предсказывающих устройств BV, дифференциалы BV, значения QP, решения режима, выборы параметра). Типичные методы энтропийного кодирования включают в себя экспоненциальное кодирования Голомба, кодирование Голомба-Райса, арифметическое кодирование, дифференциальное кодирование, кодирование Хаффмана, кодирование длины серий, кодирование переменная-длина-к-переменной-длине («V2V»), кодирование переменная-длина-к-фиксированной-длине («V2F»), кодирование Лемпеля-Зива («LZ»), кодирование словаря, энтропийное кодирование разделения интервала вероятности («PIPE») и комбинации вышеупомянутого. Энтропийный кодировщик может использовать различные методы кодирования для различных видов информации, может применять различные методы в комбинации (например, путем применения кодирования Голобма-Райса, за которым следует арифметическое кодирование), и может выбирать из множества кодовых таблиц в определенном методе кодирования. В некоторых реализациях частотное преобразование может быть пропущено. В этом случае остаточные значения предсказания могут быть квантованы и энтропийно закодированы.
[071] Адаптивный деблокирующий фильтр включен в контур компенсации движения (т.е., «внутриконтурная» фильтрация) в кодере (340), чтобы сгладить разрывы через строки и/или столбцы границы блока в декодированном кадре. Другая фильтрация (такая как дереверберационная фильтрация, адаптивная контурная фильтрация («ALF») или фильтрация адаптивного к выборке смещения («SAO»); не показана) может быть альтернативно или дополнительно применена в качестве операций внутриконтурной фильтрации.
[072] Закодированные данные, сформированные кодером (340), включают в себя синтаксические элементы для различных уровней синтаксиса битового потока. Для синтаксиса в соответствии со стандартом H.265/HEVC, например, набор параметров изображения («PPS») представляет собой синтаксическую структуру, которая содержит синтаксические элементы, которые могут быть связаны с изображением. PPS может использоваться для одного изображения, или PPS может быть повторно использован для нескольких изображений в последовательности. PPS, как правило, передается в сигнале отдельно от закодированных данных для изображения (например, одна единица NAL для PPS, и одна или более других единиц NAL для закодированных данных для изображения). В закодированных данных для изображения синтаксический элемент указывает, какой PPS использовать для изображения. Подобным образом, для синтаксиса в соответствии со стандартом H.265/HEVC, набор параметров последовательности («SPS») представляет собой синтаксическую структуру, которая содержит синтаксические элементы, которые могут быть связаны с последовательностью изображений. Битовый поток может включать в себя один SPS или несколько SPS. SPS, как правило, передается в сигнале отдельно от других данных для последовательности, и синтаксический элемент в других данных указывает, какой SPS использовать.
[073] Закодированные кадры (341) и информация (342) MMCO/RPS (или информация, эквивалентная информации (342) MMCO/RPS), поскольку зависимости и структуры упорядочения для кадров уже известны в кодере (340)) обрабатываются эмулятором (350) процесса декодирования. Эмулятор (350) процесса декодирования реализует некоторую функциональность декодера, например, задачи декодирования для восстановления опорных кадров. Способом, совместимым с информацией (342) MMCO/RPS, эмулятор (350) процесса декодирования определяет, должен ли заданный закодированный кадр (341) быть восстановлен и сохранен для использования в качестве опорного кадра в межкадровом предсказании последующих кадров, которые должны быть закодированы. Если закодированный кадр (341) должен быть сохранен, эмулятор (350) процесса декодирования моделирует процесс декодирования, который был бы проведен декодером, который принимает закодированный кадр (341), и формирует соответствующий декодированный кадр (351). При этом, когда кодер (340) использовал декодированный кадр(ы) 369, которые были сохранены в области (360) хранения декодированных кадров, эмулятор (350) процесса декодирования также использует декодированный кадр(ы) (369) из области хранения (360) как часть процесса декодирования.
[074] Временная область (360) памяти декодированных кадров включает в себя несколько областей (361, 362, …, 36n) памяти кадрового буфера. Способом, совместимым с информацией (342) MMCO/RPS, эмулятор (350) процесса декодирования управляет содержимым области (360) памяти, чтобы идентифицировать любые кадровые буферы (361, 362, и т.д.) с кадрами, которые больше не нужны кодеру (340) для использования в качестве опорных кадров. После моделирования процесса декодирования, эмулятор (350) процесса декодирования сохраняет недавно декодированный кадр (351) в кадровый буфер (361, 362, и т.д.), который был идентифицирован таким способом.
[075] Закодированные кадры (341) и информация (342) MMCO/RPS буферизуются во временной области (370) закодированных данных. Закодированные данные, которые агрегированы в области (370) закодированных данных, содержат, как часть синтаксиса элементарного закодированного видеопотока данных, закодированные данные для одного или более изображений. Закодированные данные, которые агрегированы в области (370) закодированных данных, могут также включать в себя метаданные медиа, относящиеся к закодированным видеоданным (например, в качестве одного или более параметров в одном или более сообщениях дополнительной информации расширения («SEI») или сообщениях информации о простоте использования видео («VUI»)).
[076] Агрегированные данные (371) из временной области (370) закодированных данных обрабатываются канальным кодером (380). Канальный кодер (380) может пакетировать и/или мультиплексировать агрегированные данные для передачи или хранения в качестве потока медиа (например, в соответствии с форматом программного потока медиа или транспортного потока, таким как TU-T H.222.0|ISO/IEC 13818-1, или форматом транспортного протокола Интернета реального времени, таким как IETF RFC 3550), и в этом случае канальный кодер (380) может добавлять синтаксические элементы как часть синтаксиса потока передачи медиа. Или, канальный кодер (380) может организовать агрегированные данные для хранения в виде файла (например, в соответствии с форматом контейнера медиа, таким как ISO/IEC 14496-12), и в этом случае канальный кодер (380) может добавлять синтаксические элементы как часть синтаксиса файла хранения медиа. Или, в более общем смысле, канальный кодер (380) может реализовывать один или более протоколов мультиплексирования медиа-системы или транспортных протоколов, и в этом случае канальный кодер (380) может добавлять синтаксические элементы как часть синтаксиса протокола(ов). Канальный кодер (380) предоставляет выходные данные в канал (390), который представляет хранение, соединение связи или другой канал для выходных данных. Канальный кодер (380) или канал (390) могут также включать в себя другие элементы (не показаны), например, для кодирования с упреждающей коррекцией ошибок («FEC») и аналоговой модуляции сигнала.
IV. ПРИМЕРНЫЕ СИСТЕМЫ ДЕКОДИРОВАНИЯ
[077] Фигура 4 представляет собой структурную схему примерной системы декодирования (400), в сочетании с которой некоторые из описанных вариантов осуществления могут быть реализованы. Система (400) декодирования может быть инструментом декодирования общего назначения, выполненным с возможностью работы в любом из нескольких режимов декодирования, таких как режим декодирования с малой задержкой для связи в реальном времени и режим декодирования с более высокой задержкой для воспроизведения медиа из файла или потока, или она может быть инструментом декодирования специального назначения, приспособленного для одного такого режима декодирования. Система (400) декодирования может быть реализована как модуль операционной системы, как часть библиотеки приложения или как отдельное приложение. В целом, система (400) декодирования принимает закодированные данные из канала (410) и формирует восстановленные кадры в качестве выходных данных для места назначения (490) выходных данных.
[078] Система (400) декодирования включает в себя канал (410), который может представлять запоминающее устройство, соединение связи или другой канал для закодированных данных в качестве входных данных. Канал (410) формирует закодированные данные, которые были закодированы в канале. Канальный декодер (420) может обрабатывать закодированные данные. Например, канальный декодер (420) депакетирует и/или демультиплексирует данные, которые были агрегированы для передачи или хранения в качестве потока медиа (например, в соответствии с форматом программного потока медиа или транспортного потока, таким как TU-T H.222.0|ISO/IEC 13818-1, или форматом транспортного протокола Интернета реального времени, таким как IETF RFC 3550), и в этом случае канальный декодер (420) может разбирать синтаксические элементы, добавленные как часть синтаксиса потока передачи медиа. Или, канальный декодер (420) выделяет закодированные данные, которые были агрегированы для хранения в виде файла (например, в соответствии с форматом контейнера медиа, таким как ISO/IEC 14496-12), и в этом случае канальный декодер (420) может разбирать синтаксические элементы, добавленные как часть синтаксиса файла хранения медиа. Или, в более общем смысле, канальный декодер (420) может реализовывать один или более протоколов демультиплексирования медиа-системы или транспортных протоколов, и в этом случае канальный декодер (420) может анализировать синтаксические элементы, добавленные как часть синтаксиса протокола(ов). Канал (410) или канальный декодер (420) могут также включать в себя другие элементы (не показаны), например, для декодирования FEC и аналоговой демодуляции сигнала.
[079] Закодированные данные (421), которые выводятся из канального декодера (420), хранятся во временной области (430) закодированных данных до тех пор, пока достаточное количество таких данных не будет принято. Закодированные данные (421) включают в себя закодированные кадры (431) и информацию (432) MMCO/RPS. Закодированные данные (421) в области (430) закодированных данных содержат, как часть синтаксиса элементарного закодированного видеопотока данных, закодированные данные для одного или более изображений. Закодированные данные (421) в области (430) закодированных данных могут также включать в себя метаданные медиа, относящиеся к закодированным видеоданным (например, в качестве одного или более параметров в одном или более сообщениях SEI или сообщениях VUI).
[080] В целом, область (430) закодированных данных временно хранить закодированные данные (421) до тех пор, пока такие закодированные данные (421) не будут использоваться декодером (450). В этот момент, закодированные данные для закодированного кадра (431) и информация (432) MMCO/RPS передаются из области (430) закодированных данных в декодер (450). По мере того как декодирование продолжается, новые закодированные данные добавляются в область (430) закодированных данных, и самые старые закодированные данные, остающиеся в области (430) закодированных данных, передаются в декодер (450).
[081] Декодер (450) декодирует закодированный кадр (431), чтобы сформировать соответствующий декодированный кадр (451). В зависимости от обстоятельств, при выполнении своего процесса декодирования, декодер (450) может использовать один или более ранее декодированные кадры (469) как опорные кадры для межкадрового предсказания. Декодер (450) считывает такие ранее декодированные кадре (469) и временной области (460) памяти декодированных кадров. В целом, декодер (450) включает в себя несколько декодирующих модулей, которые выполняют задачи декодирования, такие как энтропийное кодирование, внутрикадровое предсказание, межкадровое предсказание с компенсацией движения, обратное квантование, обратные частотные преобразования (если не пропущены) и слияние элементов мозаичного изображение. Точные операции, выполняемые декодером (450), могут изменяться в зависимости от формата сжатия.
[082] Например, декодер (450) принимает закодированные данные для сжатого кадра или последовательности кадров и формирует выходные данные, включающие в себя декодированный кадр (451). В декодере (450) буфер принимает закодированные данные для сжатого кадра и, в соответствующее время, делает принятые закодированные данные доступными для энтропийного декодера. Энтропийный декодер энтропийно декодирует энтропийно закодированные квантованные данные, а также энтропийно закодированную дополнительную информацию, как правило, применяя инверсию энтропийного кодирования, выполненного в кодере. Компенсатор движения применяет информацию движения к одному или более опорным кадрам, чтобы сформировать значения предсказания с компенсацией движения для любых внешним образом закодированных блоков кадра, которые восстанавливаются. Модуль внутрикадрового предсказания может пространственно предсказать выборочные значения текущего блока из соседних, ранее восстановленных выборочных значений или, для внутреннего предсказания BC, предсказать выборочные значения текущего блока, используя ранее восстановленные выборочные значения области внутрикадрового предсказания в кадре. Область внутрикадрового предсказания может быть указана с помощью значения BV. Декодер (450) также восстанавливает остаточные значения предсказания. Обратный квантователь обратно квантует энтропийно декодированные данные. Например, декодер (450) устанавливает значения для QP для изображения, элемента мозаичного изображения, фрагмента и/или другой части видео на основе синтаксических элементов в битовом потоке, и обратно квантует коэффициенты преобразования соответственно. Обратный частотный преобразователь преобразует квантованные данные частотной области в данные пространственной области. В некоторых реализациях частотное преобразование может быть пропущено, и в этом случае обратное частотное преобразование также пропускается. Если это так, остаточные значения предсказания могут быть энтропийно декодированы и обратно квантованы. Для межкадрово предсказанного блока, декодер (450) объединяет восстановленные остаточные значения предсказания со значениями предсказания с компенсацией движения. Декодер (450) может подобным образом объединить остаточные значения предсказания со значениями предсказания из внутреннего предсказания. Адаптивный деблокирующий фильтр включен в контур компенсации движения в видеодекодере (450), чтобы сгладить разрывы через строки и/или столбцы границы блока в декодированном кадре (451). Другая фильтрация (такая как дереверберационная фильтрация, ALF или фильтрация SAO; не показана) может быть альтернативно или дополнительно применена в качестве операций внутриконтурной фильтрации.
[083] Временная область (460) памяти декодированных кадров включает в себя несколько областей (461, 462, …, 46n) памяти кадрового буфера. Область (460) хранения декодированных кадров представляет собой пример буфера декодированных изображений. Декодер (450) использует информацию (432) MMCO/RPS, чтобы идентифицировать кадровый буфер (461, 462, и т.д), в котором он может хранить декодированный кадр (451). Декодер (450) хранит декодированный кадр (451) в этом кадровом буфере.
[084] Выходной секвенсор (480) идентифицирует, когда следующий кадр, который должен быть сформирован в выходном порядке, становится доступным в области (460) памяти декодированных кадров. Когда следующий кадр (481), который должен быть сформирован в выходном порядке, становится доступным в области (460) хранения декодированных кадров, он считывается выходным секвенсором (480) и выводится в выходное место назначения (490) (например, дисплей). В целом, порядок, в котором кадры выводятся из области (460) памяти декодированных кадров посредством выходного секвенсора (480), может отличаться от порядка, в котором кадры декодируются декодером (450).
V. ПРИМЕРНЫЕ ВИДЕОКОДЕРЫ
[085] Фигуры 5a и 5b представляет собой структурные схемы обобщенного видеокодера (500), в сочетании с которым некоторые из описанных вариантов осуществления могут быть реализованы. Кодер (500) принимает последовательность видеоизображений, включая текущее изображение, в качестве входного видеосигнала (505) и формирует закодированные данные в закодированном битовом видеопотоке (595) в качестве выходных данных.
[086] Кодер (500) является основанным на блоках и использует блоковый формат, который зависит от реализации. Блоки могут быть дополнительно подразделены на различных этапах, например, на этапах предсказания, частотного преобразования и/или энтропийного кодирования. Например, изображение может быть разделено на блоки 64×64, блоки 32×32 или блоки 16×16, которые, в свою очередь, могут быть разделены на более мелкие блоки или выборочные значения для кодирования и декодирования. В реализациях кодирования для стандарта H.265/HEVC, кодер разделяет изображение на CTU (CTB), CU (CB), PU (PB) и TU (TB). Блоки (например, CU) могут быть асимметрично разделены на более мелкие блоки (например, PU) в целях внутреннего предсказания BC, как показано на Фигуре 9.
[087] Кодер (500) сжимает изображения, используя кодирование внутри изображения и/или кодирование между изображений. Многие из компонентов кодера (500) используются как для кодирования внутри изображения, так и для кодирования между изображений. Точные операции, выполняемые этими компонентами, могут варьироваться в зависимости от типа сжимаемой информации.
[088] Модуль (510) элементов мозаичного изображения опционально разделяет изображение на несколько элементов мозаичного изображения одного и того же размера или различных размеров. Например, модуль (510) элементов мозаичного изображения разделяет кадр вдоль строк элементов мозаичного изображения и столбцов элементов мозаичного изображения, которые, вместе с границами изображения, определяют горизонтальные и вертикальные границы элементов мозаичного изображения на изображении, где каждый элемент мозаичного изображения представляет собой прямоугольную область. В реализациях H.265/HEVC, кодер (500) разделяет изображение на один или более фрагментов, где каждый фрагмент включает в себя один или более сегментов фрагмента.
[089] Общее управление (520) кодированием принимает изображения для входного видеосигнала (505), а также обратную связь (не показана) от различных модулей кодера (500). В целом, общее управление (520) кодированием подает управляющие сигналы (не показаны) другим модулям (таким как модуль (510) элементов мозаичного изображения, преобразователь/преобразователь масштаба/квантователь (530), преобразователь масштаба/обратный преобразователь (535), устройство (540) оценки внутри изображения, устройство (550) оценки движения и внутренний/внешний переключатель), чтобы установить и изменить параметры кодирования в ходе кодирования. В частности, общее управление (520) кодированием может управлять решениями о разделении во время кодирования. В более общем плане, общее управление (520) кодированием может решать, использовать ли и как использовать внутреннее предсказание BC во время кодирования. Общее управление (520) кодированием может также оценивать промежуточные результаты во время кодирования, например, выполняя анализ соотношения скорость-искажение. Общее управление (520) кодированием формирует общие управляющие данные (522), которые указывают на решения, сделанные во время кодирования, так что соответствующий декодер может принимать согласованные решения. Общие управляющие данные (522) предоставляются устройству форматирования заголовка/энтропийному кодировщику (590).
[090] Если текущее изображение предсказано с использованием межкадрового предсказания, устройство (550) оценки движения оценивает движение блоков выборочных значений текущего изображения входного видеосигнала (505) по отношению к одному или более опорным изображениям. Буфер (570) декодированных изображений буферизует одно или более восстановленные ранее закодированные изображения для использования в качестве опорных изображений. При определении, как разделять блоки для оценки движения, устройство (550) оценки движения может применять подход сверху вниз или подход снизу вверх, как описано ниже. Устройство (550) оценки движения может использовать схему поиска, как описано ниже, или другую схему поиска. Когда используются несколько опорных изображений, несколько опорных изображений могут быть из различных временных направлений или одного и того же временного направления. Устройство (550) оценки движения формирует в качестве дополнительной информации данные (552) движения, такие как данные MV, индексные значения режима слияния и данные выбора опорного изображения. Данные (552) движения передаются в устройство форматирования заголовка/энтропийный кодировщик (590), а также в компенсатор (555) движения.
[091] Компенсатор (555) движения применяет MV к восстановленному опорному изображению(ям) из буфера (570) декодированных изображений. Компенсатор (555) движения формирует предсказания с компенсацией движения для текущего изображения.
[092] В отдельном пути в кодере (500) устройство (540) оценки внутри изображения определяет, как выполнять предсказание внутри изображения для блоков выборочных значений текущего изображения входного видеосигнала (505). Текущее изображение может быть целиком или частично закодировано с использованием кодирования внутри изображения. Используя значения восстановления (538) текущего изображения, для внутреннего пространственного предсказания устройство (540) оценки внутри изображения определяет, как пространственно предсказать выборочные значения текущего блока текущего изображения из соседних, ранее восстановленных выборочных значений текущего изображения.
[093] Или, для внутреннего предсказания BC с использованием значений BV, устройство (540) оценки внутри изображения оценивает смещение выборочных значений текущего блока к различным опорным областям-кандидатам в текущем изображении. При определении, как разделять блоки для оценки BV (и внутреннего предсказания BC), устройство (540) оценки внутри изображения может применять подход сверху вниз или подход снизу вверх, как описано ниже. Устройство (540) оценки внутри изображения может использовать схему поиска, как описано ниже, или другую схему поиска. Для внутреннего предсказания BC, устройство (540) оценки внутри изображения может ограничивать процесс выбора BV с использованием одного или более ограничений, описанных ниже.
[094] В зависимости от реализации, кодер может выполнять оценку BV для текущего блока с использованием входных выборочных значений, восстановленных выборочных значений до внутриконтурной фильтрации, или восстановленных выборочных значений после внутриконтурной фильтрации. В целом, путем использования входных выборочных значений или неотфильтрованных, восстановленных выборочных значений для оценки BV, кодер может избежать узкого места последовательной обработки (что может быть результатом фильтрации восстановленных выборочных значений опорной области перед оценкой BV/внутренним предсказанием BC). С другой стороны, хранение неотфильтрованных, восстановленных выборочных значений использует дополнительную память. Также, если внутриконтурная фильтрация применяется до оценки BV, может быть область влияния, которая перекрывается между процессом фильтрации, который будет применен после того как область текущего блока декодирована, и областью, которая используется для оценки BV/внутреннего предсказания BC. В таком случае, оценка BV/внутреннее предсказание BC было бы применено до того аспекта операции фильтрации. В некоторых реализациях, кодер может применять некоторые операции внутриконтурной фильтрации до оценки BV/внутреннего предсказания BC, и выполнять дополнительную или альтернативную фильтрацию на более позднем этапе обработки.
[095] Или, для режима кодирования словаря внутри изображения, пиксели блока кодируются с использованием предыдущих выборочных значений, хранимых в словаре или другом местоположении, где пиксель представляет собой набор совместно расположенных выборочных значений (например, триплет RGB или триплет YUV). Например, кодер (500) может вычислить хэш-значения ранее восстановленных выборочных значений (например, группировок из 1 пикселя, 2 пикселей, 4 пикселей, 8 пикселей и так далее) и сравнить эти хэш-значения с хэш-значением набора текущих кодируемых пикселей. Совпадения длины одного или более могут быть идентифицированы в ранее восстановленных выборочных значениях на основе хэш-сравнения. Текущий пиксель(и) (или выборочные значения) могут быть закодированы в различных режимах словаря 1D и 2D, используя сдвиг, который идентифицирует местоположение в предыдущем пикселе (например, в словаре), и длину, указывающую на число пикселей, предсказываемых из того сдвига. Как правило, никакого остатка не вычисляется для блока, закодированного в режиме кодирования словаря внутри изображения.
[096] Устройство (540) оценки внутри изображения формирует в качестве дополнительной информации данные (542) внутреннего предсказания, такие как информация, указывающая, использует ли внутреннее предсказание пространственное предсказание, внутреннее предсказание BC или режим словаря, направление режима предсказания (для внутреннего пространственного предсказания), значения BV (для внутреннего предсказания BC) и сдвиги и длины (для режима словаря). Данные (542) внутреннего предсказания передаются в устройство форматирования заголовка/энтропийный кодировщик (590), а также в устройство (545) предсказания внутри изображения.
[097] В соответствии с данными (542) внутреннего предсказания, предсказатель (545) внутри изображения пространственно предсказывает выборочные значения текущего блока текущего изображения из соседних, ранее восстановленных выборочных значений текущего изображения. Или, для внутреннего предсказания BC, предсказатель (545) внутри изображения предсказывает выборочные значения текущего блока, используя ранее восстановленные выборочные значения опорной области предсказания внутри изображения, которая указывается значением BV для текущего блока. В некоторых случаях, значение BV может быть предсказателем BV (предсказанным значением BV). В других случаях, значение BV может отличаться от его предсказанного значения BV, и в этом случае дифференциал BV показывает различие между предсказанным значением BV и значением BV. Или, для режима словаря внутри изображения, предсказатель (545) внутри изображения восстанавливает пиксели, используя сдвиги и длины.
[098] Внутренний/внешний переключатель выбирает, будет ли предсказатель (558) для заданного блока предсказанием с компенсацией движения или предсказанием внутри изображения.
[099] Для режима без словаря, когда остаточное кодирования не пропускается, разница (если она есть) между блоком предсказания (558) и соответствующей частью исходного текущего изображения входного видеосигнала (505) предоставляет значения остатка (518). Во время восстановления текущего изображения, когда остаточные значения были закодированы/переданы, восстановленные остаточные значения объединяются с предсказанием (558), чтобы сформировать примерное или точное восстановление (538) исходного контента из видеосигнала (505). (В сжатии с потерями некоторая информация теряется из видеосигнала (505).)
[0100] В преобразователе/преобразователе масштаба/квантователе (530), для режимов без словаря, когда частотное преобразование не пропускается, частотные преобразователь преобразует видеоинформацию пространственной области в данные частотной области (например, спектральное преобразование). Для основанного на блоках кодирования видео, частотный преобразователь применяет дискретное косинусное преобразование («DCT»), его целочисленное приближение, или другой тип прямого блочного преобразования (например, дискретное синусное преобразование или его целочисленное приближение) к блокам предсказания остаточных данных (или данным выборочных значений, если предсказание (558) равно нулю), формируя блоки коэффициентов частотного преобразования. Преобразователь/преобразователь масштаба/квантователь (530) может применять преобразование с переменными размерами блоков. В этом случае, преобразователь/преобразователь масштаба/квантователь (530) может определить, какие размеры блоков преобразований использовать для остаточных значений для текущего блока. Преобразователь масштаба/квантователь масштабирует и квантует коэффициенты преобразования. Например, квантователь применяет скалярное квантование мертвой зоны к данным частотной области с размером шага квантования, который изменятся на основе картинки-к-картинке, основе элемента мозаичного изображения-к-элементу мозаичного изображения, на основе фрагмента-к-фрагменту, на основе блока-к-блоку, на характерной для частоты основе или другой основе. Данные (532) квантованных коэффициентов преобразования предоставляются устройству форматирования заголовка/энтропийному кодировщику (590). Если частотное преобразование пропущено, преобразователь масштаба/квантователь могут масштабировать и квантовать блоки остаточных данных предсказания (или данных выборочных значений, если предсказание (558) равно нулю), формируя квантованные значения, которые предоставляются устройству форматирования заголовка/энтропийному кодировщику (590).
[0101] В преобразователе масштаба/обратном преобразователе (535), для режимов без словаря, преобразователь масштаба/обратный преобразователь выполняет обратное масштабирование и обратное квантование квантованных коэффициентов преобразования. Когда этап преобразования не был пропущен, обратный частотный преобразователь выполняет обратное частотное преобразование, формируя блоки восстановленных остаточных значений предсказания или выборочных значений. Если этап преобразования был пропущен, обратное частотное преобразование также пропускается. В этом случае, преобразователь масштаба/обратный квантователь могут выполнять обратное масштабирование и обратное квантование блоков остаточных данных предсказания (или данных выборочных значений), формируя восстановленные данные. Когда остаточные значения были закодированы/переданы, кодер (500) объединяет восстановленные остаточные значения со значениями предсказания (558) (например, значениями предсказания с компенсацией движения, значениями предсказания внутри изображения), чтобы сформировать восстановление (538). Когда остаточные значения не были закодированы/переданы, кодер (500) использует значения предсказания (558) в качестве восстановления (538).
[0102] Для предсказания внутри изображения, значения восстановления (538) могут быть поданы обратно в устройство (540) оценки внутри изображения и предсказатель (545) внутри изображения. Значения восстановления (538) могут использоваться для предсказания с компенсацией движения последующих изображений. Значения восстановления (538) могут быть дополнительно отфильтрованы. Управление (560) фильтрацией определяет, как выполнять деблокирующую фильтрацию и фильтрацию SAO значений восстановления (538), для заданного изображения видеосигнала (505). Управление (560) фильтрацией формирует управляющие данные (562) фильтрации, которые предоставляются устройству форматирования заголовка/энтропийному кодировщику (590) и устройству слиянию/фильтру(ам) (565).
[0103] В устройстве слияния/фильтре(ах) (565) кодер (500) осуществляет слияние контента из различных элементов мозаичного изображения в восстановленную версию изображения. Кодер (500) выборочно осуществляет деблокирующую фильтрацию и фильтрацию SAO в соответствии с управляющими данными (562) фильтрации, с тем чтобы адаптивно сгладить разрывы через границы в изображениях. Другая фильтрация (такая как дереверберационная фильтрация или ALF; не показана) может быть альтернативно или дополнительно применена. Границы могут быть выборочно отфильтрованы или совсем не отфильтрованы, в зависимости от настроек кодера (500), и кодер (500) может предоставить синтаксис в закодированном битовом потоке, чтобы указать, была или нет такая фильтрация применена. Буфер (570) декодированных изображений буферизует восстановленное текущее изображение для использования в последующем предсказании с компенсацией движения.
[0104] Устройство форматирования заголовка/энтропийный кодировщик (590) форматирует и/или энтропийно кодирует общие управляющие данные (522), данные (532) квантованных коэффициентов преобразования, данные (542) внутреннего предсказания, данные (552) движения и управляющие данные (562) фильтрации. Для данных (552) движения, устройство форматирования заголовка/энтропийный кодировщик (590) может выбрать и энтропийно закодировать значения индекса режима слияния, или может быть использован предсказатель MV по умолчанию. В некоторых случаях, устройство форматирования заголовка/энтропийный кодировщик (590) также определяет дифференциалы MV для значений MV (по отношению к предсказателям MV для значений MV), затем энтропийно кодирует дифференциалы MV, например, используя контекстно-адаптивное двоичное арифметическое кодирование. Для данных (542) внутреннего предсказания, значение BV может быть закодировано с использованием предсказания BV. Предсказание BV может использовать предсказатель BV по умолчанию (например, из одного или более соседних блоков). Когда возможны несколько предсказателей BV, индекс предсказателя BV может указывать, какой из нескольких предсказателей BV использовать для предсказания BV. Устройство форматирования заголовка/энтропийный кодировщик (590) может выбирать и энтропийно кодировать значения индекса предсказателя BV (для внутреннего предсказания BC), или может быть использовать предсказатель BV по умолчанию. В некоторых случаях, устройство форматирования заголовка/энтропийный кодировщик (590) также определяет дифференциалы BV для значений BV (по отношению к предсказателям BV для значений BV), затем энтропийно кодирует дифференциалы BV, например, используя контекстно-адаптивное двоичное арифметическое кодирование.
[0105] Устройство форматирования заголовка/энтропийный кодировщик (590) предоставляет закодированные данные в закодированные битовый видеопоток (595). Формат закодированного битового видеопотока (595) может быть вариацией или расширением формата H.265/HEVC, формата Windows Media Video, формата VC-1, формата MPEG-x (например, MPEG-1, MPEG-2, или MPEG-4), формата H.26x (например, H.261, H.262, H.263, H.264), или другого формата.
[0106] В зависимости от реализации и желаемого типа сжатия, модули кодера (500) могут быть добавлены, опущены, разделены на несколько модулей, объединены с другими модулями, и/или заменены подобными модулями. В альтернативных вариантах осуществления, кодеры с различными модулями и/или другими конфигурациями модулей выполняют один или более из описанных методов. Конкретные варианты кодеров, как правило, используют разновидность или дополненную версию кодера (500). Взаимосвязи, показанные между модулями в кодере (500), указывают на общие потоки информации в кодере; другие взаимосвязи не показаны для простоты.
VI. ПРИМЕРНЫЕ ВИДЕОДЕКОДЕРЫ
[0107] Фигура 6 представляет собой структурную схему обобщенного декодера (600), в сочетании с которым некоторые из описанных вариантов осуществления могут быть реализованы. Декодер (600) принимает закодированные данные в закодированном битовом видеопотоке (605) и формирует выходной сигнал, включая изображения для восстановленного видео (695). Формат закодированного битового видеопотока (605) может быть вариацией или расширением формата HEVC, формата Windows Media Video, формата VC-1, формата MPEG-x (например, MPEG-1, MPEG-2, или MPEG-4), формата H.26x (например, H.261, H.262, H.263, H.264), или другого формата.
[0108] Декодер (600) является основанным на блоках и использует блоковый формат, который зависит от реализации. Блоки могут быть дополнительно подразделены на различных этапах. Например, изображение может быть разделено на блоки 64×64, блоки 32×32 или блоки 16×16, которые, в свою очередь, могут быть разделены на более мелкие блоки или выборочные значения. В реализациях кодирования для стандарта HEVC, изображение разделяется на CTU (CTB), CU (CB), PU (PB) и TU (TB). Блоки (например, CU) могут быть асимметрично разделены на более мелкие блоки (например, PU) в целях внутреннего предсказания BC, как показано на Фигуре 9.
[0109] Декодер (600) распаковывает изображения, используя кодирование внутри изображения и/или кодирование между изображений. Многие из компонентов декодера (600) используются как для кодирования внутри изображения, так и для кодирования между изображений. Точные операции, выполняемые этими компонентами, могут варьироваться в зависимости от типа распаковываемой информации.
[0110] Буфер принимает закодированные данные в закодированном битовом видеопотоке (605) и делает принятые закодированные данные доступными синтаксическому анализатору/энтропийному декодеру (610). Синтаксический анализатор/энтропийный декодер (610) энтропийно декодирует энтропийно закодированные данные, как правило, применяя инверсию энтропийного кодирования, выполняемого в кодере (500) (например, контекстно-адаптивное двоичное арифметическое декодирование). В результате синтаксического анализа и энтропийного декодирования, синтаксический анализатор/энтропийный декодер (610) формирует общие управляющие данные (622), данные (632) квантованных коэффициентов преобразования, данные (642) внутреннего предсказания, данные (652) движения и управляющие данные (662) фильтрации. Для данных (642) внутреннего предсказания, если переданы значения индекса предсказателя BV, синтаксический анализатор/энтропийный декодер (610) может энтропийно декодировать значения индекса предсказателя BV, например, используя контекстно-адаптивное двоичное арифметическое декодирование). В некоторых случаях, синтаксический анализатор/энтропийный декодер (610) также энтропийно декодирует дифференциалы BV для значений BV (например, используя контекстно-адаптивное двоичное арифметическое декодирование), затем объединяет дифференциалы BV с соответствующими предсказателями BV, чтобы восстановить значения BV. В других случаях, дифференциал BV опускается из битового потока, и значение BV представляет собой просто предсказатель BV (например, указанный вместе со значением индекса предсказателя BV).
[0111] Общее управление (620) декодированием принимает общие управляющие данные (622) и предоставляет управляющие сигналы (не показаны) другим модулям (таким как преобразователь масштаба/обратный преобразователь (635), предсказатель (645) внутри изображения, компенсатор (655) движения и внутренний/внешний переключатель), чтобы установить и изменить параметры декодирования во время декодирования.
[0112] Если текущее изображение предсказано с использованием предсказания между изображениями, компенсатор (655) движения принимает данные (652) движения, такие как данные MV, данные выбора опорного изображения и значения индекса режима слияния. Компенсатор (655) движения применяет MV к восстановленному опорному изображению(ям) из буфера (670) декодированных изображений. Компенсатор (655) движения формирует предсказания с компенсацией движения для внешним образом закодированных блоков текущего изображения. Буфер (670) декодированных изображений хранит одно или более ранее восстановленные изображения для использования в качестве опорных изображений.
[0113] В отдельном пути внутри декодера (600), предсказатель (645) предсказания внутри изображения принимает данные (642) внутреннего предсказания, такие как информация, указывающая, использует ли внутреннее предсказание пространственное предсказание, внутреннее предсказание BC или режим словаря, и направление режима предсказания (для внутреннего пространственного предсказания), значения BV (для внутреннего предсказания BC) или сдвиги и длины (для режима словаря). Для внутреннего пространственного предсказания, использование значений восстановления (638) текущего изображения, в соответствии с данными режима предсказания, предсказатель (645) внутри изображения пространственно предсказывает выборочные значения текущего блока текущего изображения из соседних, ранее восстановленных выборочных значений текущего изображения. Или, для внутреннего предсказания BC с использованием значений BV, предсказатель (645) внутри изображения предсказывает выборочные значения текущего блока, используя ранее восстановленные выборочные значения области предсказания внутри кадра, которая указывается значением BV для текущего блока. Или, для режима словаря внутри изображения, предсказатель (645) внутри изображения восстанавливает пиксели, используя сдвиги и длины.
[0114] Внутренний/внешний переключатель выбирает значения предсказания с компенсацией движения или предсказания внутри изображения для использования в качестве предсказания (658) для заданного блока. Например, когда следуют синтаксису HEVC, внутренний/внешний переключатель может управляться на основе синтаксического элемента, закодированного для CU изображения, которое может содержать внутренним образом предсказанные CU и внешним образом предсказанные CU. Когда остаточные значения были закодированы/переданы, декодер (600) объединяет предсказание (658) с восстановленными остаточными значениями, чтобы сформировать восстановление (638) контента из видеосигнала. Когда остаточные значения не были закодированы/переданы, декодер (600) использует значения предсказания (658) в качестве восстановления (638).
[0115] Чтобы восстановить остаток, когда остаточные значения были закодированы/переданы, преобразователь масштаба/обратный преобразователь (635) принимает и обрабатывает данные (632) квантованных коэффициентов преобразования. В преобразователе масштаба/обратном преобразователе (635), преобразователь масштаба/обратный преобразователь выполняет обратное масштабирование и обратное квантование квантованных коэффициентов преобразования. Обратный частотный преобразователь выполняет обратное частотное преобразование, формируя блоки восстановленных остаточных значений предсказания или выборочных значений. Например, обратный частотный преобразователь применяет обратное блочное преобразование к коэффициентам частотного преобразования, формируя данные выборочных значений или остаточные данные предсказания. Обратное частотное преобразование может быть обратным DCT, его целочисленным приближением, или другим типом обратного частотного преобразования (например, обратное дискретное синусное преобразование или его целочисленное приближение). Если частотное преобразование было пропущено во время кодирования, обратное частотное преобразование также пропускается. В этом случае, преобразователь масштаба/обратный квантователь могут выполнять обратное масштабирование и обратное квантование блоков остаточных данных предсказания (или данных выборочных значений), формируя восстановленные данные.
[0116] Для предсказания внутри изображения, значения восстановления (638) могут быть поданы обратно в предсказатель (645) внутри изображения. Для предсказания между изображениями, значения восстановления (638) могут быть дополнительно отфильтрованы. В устройстве слияния/фильтре(ах) (665) декодер (600) осуществляет слияние контента из различных элементов мозаичного изображения в восстановленную версию изображения. Декодер (600) выборочно осуществляет деблокирующую фильтрацию и фильтрацию SAO в соответствии с управляющими данными (662) фильтрации и правилами для адаптации фильтра, с тем чтобы адаптивно сгладить разрывы через границы в кадрах. Другая фильтрация (такая как дереверберационная фильтрация или ALF; не показана) может быть альтернативно или дополнительно применена. Границы могут быть выборочно отфильтрованы или совсем не отфильтрованы, в зависимости от настроек декодера (600) или указания синтаксиса в закодированных данных битового потока. Буфер (670) декодированных изображений буферизует восстановленное текущее изображение для использования в последующем предсказании с компенсацией движения.
[0117] Декодер (600) может также включать в себя фильтр последующей обработки. Фильтр (608) последующей обработки может включать в себя деблокирующую фильтрацию, дереверберационную фильтрацию, адаптивную фильтрацию Винера, фильтрацию воспроизведения зерна фотопленки, фильтрацию SAO или другой вид фильтрации. Тогда как «внутриконтурная» фильтрация выполняется на восстановленных выборочных значениях кадров в контуре компенсации движения, и, следовательно, оказывает влияние на выборочные значения опорных кадров, фильтр (608) последующей обработки применяется к восстановленным выборочным значениям за пределами контура компенсации движения, до вывода для дисплея.
[0118] В зависимости от реализации и желаемого типа распаковки, модули декодера (600) могут быть добавлены, опущены, разделены на несколько модулей, объединены с другими модулями, и/или заменены подобными модулями. В альтернативных вариантах осуществления, декодеры с различными модулями и/или другими конфигурациями модулей выполняют один или более из описанных методов. Конкретные варианты декодеров, как правило, используют разновидность или дополненную версию декодера (600). Взаимосвязи, показанные между модулями в декодере (600), указывают на общие потоки информации в декодере; другие взаимосвязи не показаны для простоты.
VII. ВНУТРЕННЕЕ ПРЕДСКАЗАНИЕ БЛОЧНОГО КОПИРОВАНИЯ С АСИММЕТРИЧНЫМИ РАЗДЕЛАМИ
[0119] В этом разделе представлены примеры асимметричных разделов для предсказанных посредством внутреннего BC блоков. Использование асимметричных разделов может позволить кодеру адаптировать разделы к строго определенным, но нерегулярным схемам изображений внутри блоков, которые являются общими в тексте, Веб страницах и других частях видео захвата экрана и другого искусственно созданного видео.
A. РЕЖИМ ВНУТРЕННЕГО ПРЕДСКАЗАНИЯ BC И ЗНАЧЕНИЯ BV – ВВЕДЕНИЕ
[0120] Для внутреннего предсказания BC, выборочные значения текущего блока изображения предсказываются с использованием выборочных значений в том же самом изображении. Значение BV указывает смещение от текущего блока в область изображения («опорную область»), которая включает в себя выборочные значения, используемые для предсказания. Опорная область предоставляет предсказанные значения для текущего блока. Выборочные значения, используемые для предсказания, представляют собой ранее восстановленные выборочные значения, которые, таким образом, доступны в кодере во время кодирования и в декодере во время декодирования. Значение BV передается в битовом потоке, и декодер может использовать значение BV, чтобы определить опорную область изображения, чтобы использовать для предсказания, которая также восстанавливается в декодере. Внутреннее предсказание BC представляет собой форму предсказания внутри изображения – внутреннее предсказание BC для блока изображения не использует каких-либо выборочных значений, отличных от выборочных значений в том же изображении.
[0121] Фигура 7 иллюстрирует внутреннее предсказание BC для текущего блока (730) текущего изображения (710). Текущий блок может быть блоком кодирования («CB») единицы кодирования («CU»), блоком предсказания («PB») единицы предсказания («PU»), блоком преобразования («TB») единицы преобразования («TU») или другим блоком. Размер текущего блока может быть 64×64, 32×32, 16×16, 8×8 или некоторым другим размером. В более общем смысле, размер текущего блока составляет m×n, где каждое из m и n представляет собой целое число, и где m и n могут быть равны друг другу или могут иметь различные значения. Таким образом, текущий блок может быть квадратным или прямоугольным. Альтернативно, текущий блок может иметь некоторую другую форму.
[0122] BV (740) указывает смещение (или сдвиг) от текущего блока (730) в опорную область (750) изображения, которая включает в себя выборочные значения, используемые для предсказания. Опорная область (750), указанная BV (740), иногда называется «блоком согласования» для текущего блока (730). Блок согласования может быть идентичным текущему блоку (730), или он может быть приближением текущего блока (730). Предположим, что верхнее левое положение текущего блока находится в положении (x0, y0) на текущем изображении, и предположим, что верхнее левое положение опорной области находится в положении (x1, y1) на текущем изображении. BV указывает смещение (x1-x0, y1-y0). Например, если верхнее левое положение текущего блока находится в положении (256, 128), а верхнее левое положение опорной области находится в положении (126, 104), значение BV составляет (-130, -24). В этом примере, отрицательное горизонтальное смещение указывает положение слева от текущего блока, а отрицательное вертикальное смещение указывает положение над текущим блоком.
[0123] Внутреннее предсказание BC может улучшить эффективность кодирования путем применения избыточности (например, повторяющийся паттерн внутри изображения) при использовании операций BC. Нахождение блока согласования для текущего блока может быть вычислительно сложным и трудоемким, однако, учитывающим количество блоков-кандидатов, которые кодер может оценить. Фигура 8 показывает некоторые из блоков-кандидатов для текущего блока (830) текущего изображения (810) в операциях согласования блоков. Четыре BV (841, 842, 843, 844) указывают смещения для четырех блоков-кандидатов. Блоки-кандидаты могут быть где угодно внутри восстановленного контента текущего изображения (810). (Блоки обычно кодируются слева направо, затем сверху вниз.) Блок-кандидат может перекрываться с другими блоками-кандидатами, как показано для блоков-кандидатов, указанных посредством BV (843, 844).
[0124] В некоторых примерных реализациях, внутренним образом предсказанная область (850) ограничена быть внутри того же фрагмента и элемента мозаичного изображения, что и текущий блок (830). Такое внутреннее предсказание BC не использует выборочные значения в других фрагментах или элементах мозаичного изображения. Местоположение предсказанной внутренним образом области (850) может быть предметом одного или более других ограничений (например, для диапазона поиска, учитывающего использование восстановленных выборочных значений закодированных внешним образом блоков). Альтернативно, местоположение предсказанной внутренним образом области (850) не ограничено (то есть, полный диапазон поиска) внутри восстановленного контента текущего изображения (810).
[0125] Блок с режимом предсказания внутреннего предсказания BC может быть CB, PB или другим блоком. Когда блок представляет собой CB, BV для блока может быть передан на уровне CU (и другие CB в CU используют тот же самый BV или его масштабированную версию). Или, когда блок представляет собой PB, BV для блока может быть передан на уровне PU (и другие PB в PU используют тот же самый BV или его масштабированную версию). В более общем смысле, BV для внутреннего предсказания BC передается на подходящем синтаксическом уровне для блока.
[0126] Операции поблочного копирования предсказания в соответствии с внутренним режимом предсказания BC могут быть выполнены на уровне CB (когда BV передается для каждого CB) или PB (когда BV передается для каждого PB). Например, предположим, CB 16×16 имеет один PB 16×16. BV (для PB) применяется для поблочного копирования области 16×16. Когда область внутреннего предсказания имеет ограничение, чтобы не перекрывать блок 16×16, который предсказывается, BV имеет величину (абсолютное значение) по меньшей мере 16 горизонтально или вертикально.
[0127] Альтернативно, операции поблочного копирования могут быть выполнены на уровне TB в PB или CB, даже когда BV передается для PB или CB. Таким образом, BV, по мере того как применяется для TB, может ссылаться на положения других TB в том же PB или CB. Например, предположим, что CB 16×16 имеет один PB 16×16, но разделен на шестнадцать TB 4×4 в целях остаточного кодирования/декодирования. BV (для PB) применяется для поблочного копирования области 4×4 для первого TB в порядке растрового сканирования, затем тот же BV применяется для поблочного копирования области 4×4 для второго TB в порядке растрового сканирования, и так далее. Область 4×4, используемая в операциях BC для TB, может включать в себя положения в ранее восстановленных TB в том же CB, после объединения остаточных значений с предсказанными значениями для этих ранее восстановленных TB. (BV все еще не ссылается на положения в том же TB, который предсказывается). Применение операций BC на уровне TB облегчает использование BV с относительно малыми величинами.
[0128] Перекрытие на уровне TB создает последовательные зависимости в восстановлении для TU в PU, неявно. Это уменьшает возможности для параллельных вычислений и потенциально снижает пропускную способность на аппаратном уровне. Перекрытие на уровне PU может устранить такие последовательные зависимости среди TB. В этом случае, операции поблочного копирования выполняются на уровне PB, которые могут перекрываться. Таким образом, BV, по мере того как применяется для PB, может ссылаться на положения других PB в том же CB. Предположим, CB 16×16 разделен на два PB в целях внутреннего предсказания BC (например, два PB 16×16, или два PB 8×8, или PB 4×16 и PB 12×16, и т.д.). BV для одного PB применяется для поблочного копирования области для этого PB, затем BV для другого PB применяется для поблочного копирования области для другого PB. Область, используемая в операциях BC для второго PB, может включать в себя положения в ранее восстановленном первом PB в том же CB, после объединения остаточных значений с предсказанными значениями для первого PB. (BV все еще не ссылается на положения в том же PB, который предсказывается). Применение операций BC на уровне PB облегчает использование BV с относительно малыми величинами (по сравнению с применением операций BC на уровне CB). Кроме того, когда операции BC применяются на уровне PB, параллельная обработка на уровне TU по-прежнему разрешена для TB в PB.
[0129] Операции внутреннего предсказания BC для блоков насыщенности цвета CU, как правило, соответствуют операциям внутреннего предсказания BC для блока яркости CU. Как правило, сегментация PB насыщенности цвета и TB яркости соответствует непосредственно сегментации PB яркости и TB яркости в CU. Когда формат видео представляет собой YUV 4:4:4, размеры PB и TB насыщенности цвета совпадают с размерами соответствующих PB и TB яркости. Когда формат видео представляет собой YUV 4:2:0, PB и TB насыщенности цвета равны половине ширины и половине высоты соответствующих PB и TB яркости. Если TB яркости имеет минимальный размер преобразования, тем не менее, используется один TB насыщенности цвета, имеющий этот минимальный размер преобразования. Когда формат видео представляет собой YUV 4:2:2, PB и TB насыщенности цвета равны половине ширины соответствующих PB и TB яркости.
[0130] В некоторых реализациях, для CU, предсказанной с помощью внутреннего предсказания BC, внутреннее предсказание BC для блока насыщенности цвета в PU использует то же самое значение BV, что и внутреннее предсказание BC для блока яркости в PU, возможно, после масштабирования и округления, когда данные насыщенности цвета имеют уменьшенное разрешение по отношению к данным яркости (например, когда формат представляет собой формат YUV 4:2:0, значение BV делится на два для горизонтального и вертикального компонентов; или, когда формат представляет собой формат YUV 4:2:2, значение BV делится для два для горизонтального компонента). Альтернативно, различные значения BV могут быть переданы для блока яркости и блоков насыщенности цвета PU.
[0131] В некоторых реализациях, кодер учитывает выборочные значения яркости при идентификации значения BV или значения MV во время оценки BV или оценки MV. Например, кодер пытается сопоставить выборочные значения яркости для текущего блока (например, PB из PU) с восстановленными выборочными значениями яркости. Результирующее значение BV или значение MV, тем не менее, также применяется к выборочным значениям насыщенности цвета соответствующих блоков насыщенности цвета. Альтернативно, кодер учитывает выборочные значения яркости и соответствующие выборочные значения насыщенности цвета при идентификации значения BV или значения MV во время оценки BV или оценки MV.
[0132] В некоторых реализациях, если режим предсказания блока яркости PU представляет собой внутреннее предсказание BC, режим предсказания для блоков насыщенности цвета PU также будет предсказан с помощью внутреннего предсказания BC. Например, режим предсказания передается для PU. Альтернативно, режим предсказания может быть внутренним предсказанием BC для блока яркости или блоков насыщенности цвета PU, но не для обоих.
B. АСИММЕТРИЧНЫЕ РАЗДЕЛЫ
[0133] Фигура 9 показывает примеры (900) разделов блока для внутреннего предсказания BC в некоторых примерных реализациях. Блок 2N×2N кодируется с использованием внутреннего предсказания BC. Например, блок 2N×2N представляет собой блок 64×64, блок 32×32, блок 16×16 или блок 8×8. Блок 2N×2N может быть предсказан с помощью внутреннего предсказания BC без разделения. Или, блок 2N×2N может быть разделен различными способами, как показано на Фигуре 9.
[0134] Блок 2N×2N может быть разделен горизонтально на два раздела. Два раздела могут иметь одинаковые размеры – два блока 2N×N – для симметричного разделения. Или, два раздела могут быть асимметричными. Например, верхний раздел представляет собой блок 2N×N/2, а нижний раздел представляет собой блок 2N×3N/2. Или, в качестве другого пример, верхний раздел представляет собой блок 2N×3N/2, а нижний раздел представляет собой блок 2N×N/2. Таким образом, блок 64×64 может быть разделен на два блока 64×32, блок 64×16 и блок 64×48, или блок 64×48 и блок 64×16. Блок 32×32, 16×16 или 8×8 может быть подобным образом горизонтально разделен.
[0135] Блок 2N×2N может быть вместо этого разделен вертикально на два раздела. Два раздела могут иметь одинаковые размеры – два блока N×2N – для симметричного разделения. Или, два раздела могут быть асимметричными. Например, левый раздел представляет собой блок N/2×2N, а правый раздел представляет собой блок 3N/2×2N. Или, в качестве другого примера, левый раздел представляет собой блок 3N/2×2N, а правый раздел представляет собой блок N/2×2N. Таким образом, блок 64×64 может быть разделен на два блока 32×64, блок 16×64 и блок 48×64, или блок 48×64 и блок 16×64. Блок 32×32, 16×16 или 8×8 может быть подобным образом вертикально разделен.
[0136] Или, блок 2N×2N может быть разделен на четыре раздела N×N, которые могут быть дополнительно подразделены. Например, как показано на Фигуре 9, заданный раздел N×N может быть дополнительно разделен на два блока N×N/2, два блока N/2×N или четыре блока N/2×N/2. Таким образом, блок 64×64 может быть разделен на четыре блока 32×32, каждый из которых может быть дополнительно разделен на два блока 32×16, два блока 16×32 или четыре блока 16×16. Блок 32×32, 16×16 или 8×8 может быть подобным образом разделен посредством деления квадродерева на четыре раздела.
[0137] Поскольку этот термин используется в материалах настоящей заявки, раздел “N×N” также может считаться разделом 2N×2N в большинстве случаев. В реализациях H.265/HEVC, термин N×N, как правило, используется для описания PU или PB, но не CU или CB. Как используется в материалах настоящей заявки, термин «раздел N×N» или «блок N×N» указывает на раздел текущего блока 2N×2N (например, как часть оценки сверху вниз режимов разделения или оценки снизу вверх режимов разделения). В этом контексте, раздел N×N или блок N×N сам может считаться блоком 2N×2N, и может рассматриваться таким в дальнейшем разделении, если раздел N××N или блок N×N не имеет минимальный размер и дополнительно не разделяется. Обозначения для разделов в разделе N×N или блоке N×N могут подобным образом быть скорректированы.
[0138] Ограничение размеров асимметричных разделов до кратных N/2 может уменьшить сложность оценки того, какой из режимов разделения использовать во время кодирования. Альтернативно, кодер может рассматривать другие размеры разделов (например, кратные N/4 или размеры разделов m×n, в более общем смысле). Рассмотрение других размеров разделов может немного улучшить выгоду при кодировании, но также увеличивает сложность процесса поиска во время кодирования, и может увеличить накладные расходы сигнализации.
C. Примерные Методы для Кодирования или Декодирования, которые включают в себя Внутреннее Предсказание BC с Асимметричными Разделами.
[0139] Фигура 10 показывает обобщенный метод (1000) для кодирования, который включает в себя внутреннее предсказание BC с асимметричными разделами. Кодер изображения или видео, такой как описанный со ссылкой на Фигуру 3 или Фигуры 5a-5b, может выполнять метод (1000). Фигура 11 показывает обобщенный метод (1100) для декодирования, который включает в себя внутреннее предсказание BC с асимметричными разделами. Декодер изображения или видео, такой как описанный со ссылкой на Фигуру 4 или Фигуру 6, может выполнять метод (1100).
[0140] Как показано на Фигуре 10, кодер кодирует (1010) изображение или видео для формирования закодированных данных. Как часть кодирования, кодер выполняет внутреннее предсказание BC для текущего блока, который асимметрично разделен для внутреннего предсказания BC. В частности, текущий блок может быть расщеплен на два раздела, которые имеют различные размеры. Кодер выводит (1020) закодированные данные как часть битового потока.
[0141] Как показано на Фигуре 11, декодер принимает (1110) закодированные данные как часть битового потока. Декодер декодирует (1120) закодированные данные, чтобы восстановить изображение или видео. Как часть декодирования, декодер выполняет внутреннее предсказание BC для текущего блока, который асимметрично разделен для внутреннего предсказания BC. В частности, текущий блок может быть расщеплен на два раздела, которые имеют различные размеры.
[0142] Например, текущий блок 2N×2N горизонтально разделен на (1) блок 2N×N/2 и блок 2N×3N/2 или (2) блок 2N×3N/2 и блок 2N×N/2. Или, текущий блок 2N×2N вертикально разделен на (1) блок N/2×2N и блок 3N/2×2N или (2) блок 3N/2×2N и блок N/2×2N. Альтернативно, текущий блок асимметрично разделен каким-либо другим способом.
[0143] Другой блок может быть симметрично разделен для внутреннего предсказания BC. Например, другой блок представляет собой блок 2N×2N, который разделен на (1) два блока 2N×N, (2) два блока N×2N, или (3) четыре блока N×N, каждый из которых может быть дополнительно разделен на два блока N×N/2, два блока N/2×N или четыре блока N/2×N/2. В более общем смысле, для симметричного разделения другой блок может быть расщеплен на два раздела, которые имеют идентичные размеры.
VIII. ПОДХОДЫ НА СТОРОНЕ КОДЕРА К РАЗДЕЛЕНИЮ
[0144] В этом разделе представлены различные подходы на стороне кодера к идентификации разделов во время оценки движения или оценки вектора блока (для внутреннего предсказания BC).
[0145] Примеры внутреннего предсказания BC и оценки представлены, например, в разделах V, VII.A, IX и X. Оценка BV может быть вычислительно сложной, учитывая большое количество возможных блоков-кандидатов для текущего блока. Вычислительная сложность оценки BV является особенно проблематичной, когда диапазон поиска для значений BV включает в себя все ранее восстановленные области изображения, из-за большого количества блоков-кандидатов, с которыми сравнивается текущий блок. Для блоков-кандидатов всего кадра, количество операций еще выше. Когда кодер оценивает асимметричные разделы, сложность оценки BV дополнительно увеличивается.
[0146] Вычислительная сложность оценки движения также может быть очень высокой, как объяснено в следующем разделе.
A. ОЦЕНКА ДВИЖЕНИЯ И ЗНАЧЕНИЙ MV – ВВЕДЕНИЕ
[0147] Для оценки движения, выборочные значения текущего блока текущего изображения предсказываются с использованием выборочных значений в другом изображении, которое называется опорным изображением. Значение вектора движения («MV») указывает смещение от положения текущего блока в опорном изображении в область опорного изображения («опорную область»), которая включает в себя выборочные значения, используемые для предсказания. Опорная область предоставляет предсказанные значения для текущего блока. Выборочные значения, используемые для предсказания, представляют собой ранее восстановленные выборочные значения, которые, таким образом, доступны в кодере во время кодирования и в декодере во время декодирования. Значение MV передается в битовом потоке, и декодер может использовать значение MV, чтобы определить опорную область опорного изображения, чтобы использовать для предсказания, которая также восстанавливается в декодере. Когда доступно несколько опорных изображений, битовый поток может также включать в себя указание того, какое опорное изображение использовать, чтобы найти опорную область.
[0148] Фигура 12 иллюстрирует оценку движения для текущего блока (1230) текущего изображения (1210). Текущий блок может быть блоком кодирования («CB») единицы кодирования («CU»), блоком предсказания («PB») единицы предсказания («PU»), блоком преобразования («TB») единицы преобразования («TU») или другим блоком. Размер текущего блока может быть 64×64, 32×32, 16×16, 8×8 или некоторым другим размером. В более общем смысле, размер текущего блока составляет m×n, где каждое из m и n представляет собой целое число, и где m и n могут быть равны друг другу или могут иметь различные значения. Таким образом, текущий блок может быть квадратным или прямоугольным. Альтернативно, текущий блок может иметь некоторую другую форму.
[0149] Значение (1240) MV указывает смещение (или сдвиг) от положения текущего блока (1230) в опорную область (иногда называемую опорным блоком) на опорном изображении (1250), которая включает в себя выборочные значения, используемые для предсказания. Опорная область, указанная значением (1240) MV, иногда называется «блоком согласования» для текущего блока (1230). Блок согласования может быть идентичным текущему блоку (1230), или он может быть приближением текущего блока (1230). Предположим, что верхнее левое положение текущего (1230) блока находится в положении (x0, y0) на текущем изображении (1210), и предположим, что верхнее левое положение опорной области находится в положении (x1, y1) на текущем изображении (1250). Значение (1240) MV указывает смещение (x1-x0, y1-y0). Например, если верхнее левое положение текущего блока находится в положении (256, 128), а верхнее левое положение опорной области находится в положении (126, 104), значение MV составляет (-130, -24). В этом примере, отрицательное горизонтальное смещение указывает положение слева от текущего блока, а отрицательное вертикальное смещение указывает положение над текущим блоком.
[0150] Опорная область для текущего блока (1230) выбирается из нескольких блоков-кандидатов во время оценки движения. Фигура 12 также показывает некоторые из блоков-кандидатов для текущего блока (1230) текущего изображения (1210) в оценке движения. Четыре значения (1241, 1242, 1243, 1244) MV указывают смещения для четырех блоков-кандидатов. В целом, блоки-кандидаты могут быть где угодно в пределах опорного изображения (1250). Блок-кандидат может перекрываться с другими блоками-кандидатами, как показано для блоков-кандидатов, указанных значениями (1243, 1244) MV. Вычислительная сложность оценки движения является особенно проблематичной, когда диапазон поиска для значений MV включает в себя все опорные изображения, из-за большого количества блоков-кандидатов, с которыми сравнивается текущий блок. Вычислительная сложность усугубляется, когда оценка движения выполняется для нескольких опорных изображений.
B. ТОЧНОСТЬ ЗНАЧЕНИЙ BV и MV
[0151] Во многих примерах, описанных в материалах настоящей заявки, значения BV имеют точность целочисленных выборок. Такие значения BV указывают на сдвиги целочисленных выборок. Внутреннее предсказание BC часто используется при кодировании искусственно созданного видео (такого как видео содержимого экрана), для которого смещения дробных выборок являются редкими, так что точности целочисленных выборок достаточно для значений BV. Альтернативно, значения BV могут указывать на сдвиги дробных выборок. Например, значение BV с точностью ½-выборки может указывать на горизонтальное и/или вертикальное смещение со сдвигом ½-выборки (например, 1,5 выборки, 2,5 выборки и так далее). Или, значение BV с точностью ¼-выборки может указывать на горизонтальное и/или вертикальное смещение со сдвигом ¼, ½ или ¾-выборки. Или, значение BV с точностью 1/8-выборки может указывать на горизонтальное и/или вертикальное смещение со сдвигом 1/8, 1/4, 3/8, 1/2, 5/8, 3/4, или 7/8-выборки. Или, значение BV может иметь некоторую другую точность.
[0152] С другой стороны, значения MV, как правило, имеют точность дробной выборки, поскольку смещения дробной выборки являются распространенными при кодировании естественного видео. Например, значения MV могут иметь точность ½-выборки, точность ¼-выборки, точность 1/8-выборки или некоторую другую точность. Альтернативно, значения MV имеют точность целочисленной выборки.
C. ПОДХОДЫ К ИДЕНТИФИКАЦИИ РАЗДЕЛОВ
[0153] В целом, кодер может использовать подход сверху вниз или подход снизу вверх при идентификации разделов во время оценки движения или оценки BV (для внутреннего предсказания BC). Подход снизу вверх первоначально оценивает варианты для разделов наименьшего размера, затем использует результаты от этой первоначальной оценки при оценке вариантов для разделов последовательно большего размера. Подход снизу вверх может быть вычислительно дорогим. С другой стороны, подход сверху вниз первоначально оценивает варианты для разделов большего размера, затем использует результаты от этой первоначальной оценки при оценке вариантов для разделов последовательно меньшего размера. Подход сверху вниз с меньшей вероятностью определит оптимальный путь для разделения блоков, но обычно вычислительно проще, чем подход снизу вверх.
[0154] Для дополнительных сведений о подходах к разделению, смотрите, например: (1) Салливан и другие, «Эффективное Кодирование Изображений и Видео с Помощью Квадродерева», вProc. IEEE Int. Conf. on Acoust., Speech, and Signal Proc.(ICASSP), Торонто, Канада, Том 4, стр. 2661–2664, Май 1991, который описывает, как идентифицировать оптимальное дерево с точки зрения соотношения скорость-искажение для древовидного кодирования (по меньшей мере, при некоторых обстоятельствах); (2) Салливан и другие, «Оптимизированная с Точки Зрения Соотношения Скорость-Искажение Компенсация Движения для Сжатия Видео с использованием Блоков Фиксированного или Переменного Размера», в Proc. IEEE Global Telecom. Conf. (GLOBECOM), Феникс, Аризона, стр. 85–90, Декабрь 1991, который описывает, как применить оптимизацию с точки зрения скорость-искажение к компенсации движения (с или без деревьев); и (3) Салливан и другие, «Эффективное Кодирование Изображений и Видео с Помощью Квадродерева», IEEE Trans. on Image Proc., Том IP-3, Номер 3, стр. 327–331, Май 1994, который дополнительно описывает, как идентифицировать оптимальное дерево с точки зрения соотношения скорость-искажение для древовидного кодирования.
[0155] В некоторых реализациях, применяя один из подходов сверху вниз или подходов снизу вверх, описанных ниже, кодер идентифицирует разделы для PU. Кодер может установить разделы для PU на основе анализа PB яркости из PU. Или, Кодер может установить разделы для PU на основе анализа как PB яркости, так и PB насыщенности цвета из PU. В любом случае, разделы, установленные на основе PU, затем применяются к PB из PU. Альтернативно, кодер идентифицирует разделы для другого типа единицы или блока.
1. C. ПОДХОДЫ СВЕРХУ ВНИЗ К ИДЕНТИФИКАЦИИ РАЗДЕЛОВ
[0156] Кодер может использовать подход сверху вниз при идентификации разделов текущего блока во время оценки BV (для внутреннего предсказания BC) или оценке движения. Текущий блок может быть PB из PU, или другим типом блока. Фигура 13 представляет собой блок-схему и прилагаемую схему, иллюстрирующую подход сверху вниз к разделению предсказанного с помощью внутреннего предсказания BC блока. Кодер изображения или видео, такой как описанный со ссылкой на Фигуру 3 или Фигуры 5a-5b, может использовать подход (1300). В примере, показанном на Фигуре 13, кодер идентифицирует по меньшей мере некоторые из разделов предсказанного с помощью внутреннего предсказания BC блока 2N×2N с асимметричным разделением.
[0157] Кодер проверяет (1310) режимы с размерами 2N. Например, кодер проверяет режим для одного блока 2N×2N, режим для двух блоков 2N×N, режим для двух блоков N×2N,режимы для одного блока N/2×2N и одного блока 3N/2×2N (два варианта, показанные на Фигуре 13, с узким блоком слева или справа) и режимы для одного блока 2N×N/2и одного блока 2N×3N/2 (два варианта, показанные на фигуре 13, с более коротким блоком в верхней или нижней части). Для CU 16×16, например, кодер проверяет все из PU с размером 16×P и все из PU с размером P×16, где P может быть 4, 8, 12 и 16 в разрешенных комбинациях.
[0158] Для заданного режима для текущего блока 2N×2N, кодер определяет значение(я) BV для блока(ов) текущего блока 2N×2N в соответствии с режимом. Для блока текущего блока 2N×2N, кодер может выбрать начальное значение BV, например, на основе (1) значения(й) BV, используемых соседним блоком(ами) в текущем изображении, (2) значения BV, используемого расположенным по соседству блоком предыдущего изображения, или (3) значения MV, идентифицированного для блока текущего блока 2N×2N в более ранней оценке движения. Кодер затем находит подходящее значение BV для блока текущего блока 2N×2N.
[0159] Кодер выбирает (1320) наилучший режим размерности 2N. Критерий выбора может быть стоимостью искажения, стоимостью битовой скорости или некоторой комбинацией стоимости искажения и стоимости битовой скорости, или критерий выбора может использовать некоторую другую метрику (например, используя предел отклонения или краевой детектор). Например, на Фигуре 13 кодер выбирает режим с левым блоком N/2×2N и правым блоком 3N/2×2N.
[0160] После разделения блока 2N×2N как квадродерева, кодер также проверят (1330) режимы для каждого блока N×N из блока 2N×2N. Например, для заданного блока N×N, кодер проверяет режим для одного блока N×N, режим для двух блоков N×N/2, режим для двух блоков N/2×N и режим для четырех блоков N/2×N/2. Кодер может проверить каждый блок N×N отдельно. Для CU 8×8, например, кодер проверяет PU 8×8, два PU 8×4, два PU 4×8 и четыре PU 4×4.
[0161] Для заданного режима для заданного блока N×N, кодер определяет значение(я) BV для блока(ов) заданного блока N×N в соответствии с режимом. Кодер может выбрать начальные значения BV, например, на основе значений BV, которые были идентифицированы для текущего блока 2N×2N. Кодер затем находит подходящее значение(я) BV для блока(ов) заданного блока N×N в соответствии с режимом.
[0162] Кодер выбирает (1340) наилучшую комбинацию режимов для соответствующих блоков N×N. Критерий выбора может быть стоимостью искажения, стоимостью битовой скорости или некоторой комбинацией стоимости искажения и стоимости битовой скорости, или критерий выбора может использовать некоторую другую метрику (например, используя предел отклонения или краевой детектор). Как показано на Фигуре 13, различные блоки N×N могут иметь один и тот же режим или различные режимы.
[0163] Для блока 2N×2N, кодер затем выбирает (1350) между наилучшим режимом размера 2N и комбинацией наилучших режимов для соответствующих блоков N×N. Критерий выбора может быть стоимостью искажения, стоимостью битовой скорости или некоторой комбинацией стоимости искажения и стоимости битовой скорости, или критерий выбора может использовать некоторую другую метрику (например, используя предел отклонения или краевой детектор).
2. ПОДХОДЫ СНИЗУ ВВЕРХ К ИДЕНТИФИКАЦИИ РАЗДЕЛОВ
[0164] Вместо использования подхода сверху вниз, кодер может использовать подход снизу вверх при идентификации разделов текущего блока во время оценки BV (для внутреннего предсказания BC) или оценке движения. Фигура 14 представляет собой блок-схему, иллюстрирующую обобщенный метод для использования подхода снизу вверх к разделению. Кодер изображения или видео, такой как описанный со ссылкой на Фигуру 3 или Фигуры 5a-5b, может выполнять метод (1400).
[0165] Кодер кодирует (1410) изображение или видео для формирования закодированных данных. Как часть кодирования (например, как часть оценки движения или как часть оценки вектора блока для внутреннего предсказания BC), кодер вычисляет предсказание для текущего блока текущего изображения. Текущий блок может быть PB из PU, или другим типом блока. При вычислении предсказания, кодер использует подход снизу вверх для идентификации разделов текущего блока. Кодер может асимметрично разделять текущий блок, так что разделы текущего блока представляют собой два раздела, которые имеют различные размеры, или симметрично разделять текущий блок, так что разделы текущего блока имеют одинаковые размеры.
[0166] В целом, для подхода снизу вверх, для текущего блока, кодер проверяет по меньшей мере некоторые режимы разделения для меньших блоков внутри текущего блока. Кодер кэширует результаты, такие как значения BV или значения MV для меньших блоков. Кодер затем проверяет по меньшей мере некоторые режимы разделения для текущего блока, используя кэшированные результаты (из меньших блоков), чтобы уменьшить вычислительную сложность проверки режимов разделения для текущего блока. Например, кодер использует кэшированные результаты из меньших блоков, чтобы идентифицировать начальные значения BV (во время оценки BV) или значения MV (во время оценки движения) для режимов разделения для текущего блока. Во многих случаях, начальные значения BV (или значения MV) будут использоваться для текущего блока, что значительно сокращает процесс поиска. Фигуры 15 и 16 показывают примерные подходы снизу вверх для идентификации разделов для текущего блока. Альтернативно, кодер использует другой подход снизу вверх.
[0167] Кодер затем выводит (1420) закодированные данные как часть битового потока.
[0168] Фигура 15 представляет собой блок-схему и прилагаемую схему, иллюстрирующую подход снизу вверх (1500) к разделению предсказанного с помощью внутреннего предсказания BC блока. Кодер изображения или видео, такой как описанный со ссылкой на Фигуру 3 или Фигуры 5a-5b, может использовать подход (1500).
[0169] Для блока 2N×2N, который разделен как квадродерево, кодер проверят (1510) режимы для каждого блока N×N из блока 2N×2N. Например, для заданного блока N×N, кодер проверяет режим для одного блока N×N, режим для двух блоков N×N/2, режим для двух блоков N/2×N и режим для четырех блоков N/2×N/2. Кодер может проверить каждый блок N×N отдельно. Для CU 8×8, например, кодер проверяет режимы для PU 8×8, двух PU 8×4, двух PU 4×8 и четырех PU 4×4.
[0170] Для заданного режима заданного блока N×N, кодер определяет значение(я) BV для блока(ов) заданного блока N×N в соответствии с режимом. Для блока заданного блока N×N, кодер может выбрать начальное значение BV, например, на основе (1) значения(й) BV, используемых соседним блоком(ами) в текущем изображении, (2) значения BV, используемого расположенным по соседству блоком предыдущего изображения, или (3) значения MV, идентифицированного для блока заданного блока N×N в более ранней оценке движения. Кодер затем находит подходящее значение BV для блока заданного блока N×N.
[0171] Кодер выбирает (1520) наилучшую комбинацию режимов для соответствующих блоков N×N. Критерий выбора может быть стоимостью искажения, стоимостью битовой скорости или некоторой комбинацией стоимости искажения и стоимости битовой скорости, или критерий выбора может использовать некоторую другую метрику (например, используя предел отклонения или краевой детектор). Как показано на Фигуре 15, различные блоки N×N могут иметь один и тот же режим или различные режимы.
[0172] Кодер кэширует (1530) значения вектора, информацию о режиме разделения и/или другие результаты проверки (1510) режимов для каждого блока N×N из блока 2N×2N. Например, кодер кэширует значения BV во время оценки BV, а также выборы режима разделения для блоков N×N из блоков 2N×2N.
[0173] Кодер проверяет (1540) режимы размерности 2N, используя кэшированную информацию, чтобы уменьшить вычислительную сложность путем сокращения процесса поиска во многих случаях. Кодер может использовать кэшированные результаты для идентификации начальных значений BV (во время оценки BV) для блока 2N×2N. Во многих случаях, начальные значения BV будут использованы для режимов разделения размера 2N блока 2N×2N, что значительно сокращает процесс поиска.
[0174] Например, кодер проверяет режим для одного блока 2N×2N, режим для двух блоков 2N×N, режим для двух блоков N×2N, режимы для одного блока N/2×2N и одного блока 3N/2×2N (два варианта, показанные на Фигуре 15, с узким блоком слева или справа) и режимы для одного блока 2N×N/2 и одного блока 2N×3N/2 (два варианта, показанные на фигуре 15, с более коротким блоком в верхней или нижней части). Для CU 16×16, например, кодер повторно использует информацию, закэшированную после проверки режимов разделения для четырех CU 8×8 из CU 16×16. Во многих случаях, режим разделения для CU 16×16 заканчивает использованием кэшированного значения BV из CU 8×8, что значительно сокращает процесс поиска.
[0175] Кодер выбирает (1550) наилучший режим размерности 2N. Критерий выбора может быть стоимостью искажения, стоимостью битовой скорости или некоторой комбинацией стоимости искажения и стоимости битовой скорости, или критерий выбора может использовать некоторую другую метрику (например, используя предел отклонения или краевой детектор). Например, на Фигуре 15 кодер выбирает режим с левым блоком N/2×2N и правым блоком 3N/2×2N.
[0176] Для блока 2N×2N, кодер затем выбирает (1560) между наилучшим режимом размера 2N и комбинацией режимов для соответствующих блоков N×N. Критерий выбора может быть стоимостью искажения, стоимостью битовой скорости или некоторой комбинацией стоимости искажения и стоимости битовой скорости, или критерий выбора может использовать некоторую другую метрику (например, используя предел отклонения или краевой детектор).
[0177] Метод (1500), описанный со ссылкой на Фигуру 15, также может быть использован для разделения снизу вверх закодированных внешним образом блоков. В этом случае, значения MV и другие результаты из блоков N×N кэшируются. Кодер может использовать кэшированные результаты для идентификации начальных значений MV (во время оценки движения) для блока 2N×2N. Во многих случаях, начальные значения MV будут использованы для режимов разделения размера 2N блока 2N×2N, что значительно сокращает процесс поиска.
[0178] Фигура 16 представляет собой блок-схему и прилагаемую схему, иллюстрирующую еще более быстрые подходы (1600) снизу вверх к разделению предсказанного с помощью внутреннего предсказания BC блока. Кодер изображения или видео, такой как описанный со ссылкой на Фигуру 3 или Фигуры 5a-5b, может использовать один из подходов (1600). Подходы (1600) на Фигуре 16 подобны подходу (1500) на Фигуре 15, но были изменены в нескольких местах, чтобы дополнительно сократить процесс поиска.
[0179] Для блока 2N×2N, который разделен как квадродерево, кодер проверят (1610) подмножество режимов для каждого блока N×N из блока 2N×2N. То есть, кодер проверяет некоторые, но не все из режимов для каждого блока N×N. Например, для заданного блока N×N, кодер проверяет только режим с двумя блоками N×N/2. Или, в качестве другого примера, кодер проверяет только режим с двумя блоками N/2×N. Кодер может проверить каждый блок N×N отдельно. Путем проверки меньшего количества режимов, однако, процесс поиска сокращается. Альтернативно, кодер проверяет другие и/или дополнительные режимы для каждого блока N×N.
[0180] Если было проверено (1610) несколько режимов, кодер выбирает (1620) наилучшую комбинацию режимов для соответствующих блоков N×N. Критерий выбора может быть стоимостью искажения, стоимостью битовой скорости или некоторой комбинацией стоимости искажения и стоимости битовой скорости, или критерий выбора может использовать некоторую другую метрику (например, используя предел отклонения или краевой детектор). Если был проверен (1610) только один режим, кодер просто использует этот режим для каждого блока N×N.
[0181] Кодер кэширует (1630) значения вектора, информацию о режиме разделения и/или другие результаты проверки (1610) режимов для каждого блока N×N из блока 2N×2N. Например, кодер кэширует значения BV во время оценки BV, а также выборы режима разделения для блоков N×N из блоков 2N×2N.
[0182] Кодер проверяет (1640) подмножество режимов размерности 2N, используя кэшированную информацию для уменьшения вычислительной сложности. Например, если кодер проверил (1610) только блоки N×N/2 из блоков N××N, кодер проверяет режим для одного блока 2N×2N, режим для двух блоков 2N×N, и режимы для одного блока 2N×N/2 и одного блока 2N×3N/2 (два варианта, показанные на Фигуре 16, с более коротким блоком в верхней или нижней части). Или, если кодер проверил (1610) только блоки N/2×N из блоков N×N, кодер проверяет режим для одного блока 2N×2N, режим для двух блоков N×2N, и режимы для одного блока N/2×2N и одного блока 3N/2×2N (два варианта, показанные на Фигуре 16, с узким блоком слева или справа).
[0183] Или, в качестве другого примера (не показанного на Фигуре 16), кодер проверяет (1610) только раздел N×N для каждого блока N×N из блока 2N×2N. Если блок 2N×2N представляет собой внутренним образом закодированный блок, кодер проверяет (1640) режим для одного блока 2N×2N, режим для двух блоков N×2N, и режимы для одного блока N/2×2N и одного блока 3N/2×2N (с узким блоком слева или справа). Если блок 2N×2N представляет собой внешним образом закодированный блок, кодер проверяет (1640) режим для одного блока 2N×2N, режим для двух блоков 2N×N, и режимы для одного блока 2N×N/2 и одного блока 2N×3N/2 (с более коротким блоком в верхней или нижней части).
[0184] Кодер выбирает (1650) наилучший режим размерности 2N. Критерий выбора может быть стоимостью искажения, стоимостью битовой скорости или некоторой комбинацией стоимости искажения и стоимости битовой скорости, или критерий выбора может использовать некоторую другую метрику (например, используя предел отклонения или краевой детектор). Для блока 2N×2N, кодер затем выбирает (1660) между наилучшим режимом размера 2N и комбинацией режимов для соответствующих блоков N×N. Критерий выбора может быть стоимостью искажения, стоимостью битовой скорости или некоторой комбинацией стоимости искажения и стоимости битовой скорости, или критерий выбора может использовать некоторую другую метрику (например, используя предел отклонения или краевой детектор).
[0185] Метод (1600), описанный со ссылкой на Фигуру 16, также может быть использован для разделения снизу вверх закодированных внешним образом блоков. В этом случае, значения MV и другие результаты из блоков N×N кэшируются. Кодер может использовать кэшированные результаты для идентификации начальных значений MV (во время оценки движения) для блока 2N×2N. Во многих случаях, начальные значения MV будут использованы для режимов разделения размера 2N блока 2N×2N, что значительно сокращает процесс поиска.
[0186] В подходах (1500, 1600), показанных на Фигурах 15 и 16, кодер может ограничить количество кэшированных значений BV или значений MV. Например, кодер хранит только значение(я) BV или значение(я) MV для наилучшего режима разделения для каждого блока N×N из блока 2N×2N. Альтернативно, кодер также хранит другие значения BV или значения MV. Ограничение кодера может управлять тем, сколько значений BV или значений MV кодер хранит.
IX. СХЕМЫ ПОИСКА
[0187] Настоящий раздел представляет различные схемы поиска, которые могут использоваться в оценке движения или внутреннем предсказании BC. В частности, схемы поиска используют общие типы движения в видео захвата экрана или другом искусственно созданном видео. В таком видео, движение блока часто представляет собой чисто горизонтальное движение или чисто вертикальное движение (например, от прокручивания содержимого Веб-страницы или контента приложения в компьютерной среде настольной системы, или от прокручивания тикерной графики в видео смешанного контента). В этом смысле, схемы поиска адаптированы для видео захвата экрана или другого искусственно-созданного видео, но они также могут быть использованы при кодировании естественного видео.
[0188] Фигура 17 представляет собой блок-схему, иллюстрирующую обобщенный метод (1700) для поиска значения BV или значения MV для блока с использованием итеративной оценки местоположения в малой окрестности(ях) и итеративного подтверждения местоположения в более крупной окрестности(ях). Кодер изображения или видео, такой как описанный со ссылкой на Фигуру 3 или Фигуры 5a-5b, может выполнять метод (1700).
[0189] Кодер кодирует изображение или видео для получения кодированных данных, и выводит кодированные данные как часть битового потока. Во время кодирования, кодер вычисляет предсказание для текущего блока текущего изображения (например, используя оценку BV или оценку движения). При вычислении предсказания, кодер идентифицирует (1710) текущее лучшее местоположение для предсказания с помощью итеративной оценки в малой окрестности вокруг текущего лучшего местоположения для предсказания. Например, малая окрестность включает в себя местоположения, которые расположены в непосредственной близости по горизонтали или по вертикали к текущему лучшему местоположению. Если одно из местоположений в малой окрестности дает более хорошие результаты, чем текущее лучшее местоположение, текущее лучшее местоположение заменяется более хорошим местоположением в малой окрестности, и новое местоположение проверяется в малой окрестности вокруг него. Таким образом, процесс поиска с помощью схемы малой окрестности может итеративно повторяться, пока текущее лучшее местоположение является лучшим местоположением в малой окрестности вокруг него. Это может произойти в первой итерации или после нескольких итераций.
[0190] Фигуры 18a и 18b иллюстрируют итеративную оценку местоположения в малой окрестности при поиске значения BV или значения MV для блока. На Фигуре 18a, текущее лучшее местоположение показано как черный круг. Смежные местоположения в ромбовидной схеме (показаны как серые круги) оцениваются. Результаты для четырех смежных местоположений, соответственно, сравниваются с результатами для текущего лучшего местоположения (с точки зрения стоимости искажения, стоимости битовой скорости или некоторой комбинации стоимости искажения и стоимости битовой скорости). В примере на Фигурах 18a и 18b, местоположение ниже текущего лучшего местоположения на Фигуре 18a дает более хорошие результаты и становится текущим лучшим местоположением. В следующей итерации, как показано на Фигуре 18b, оцениваются смежные местоположения в ромбовидной схеме вокруг нового текущего лучшего местоположения. Альтернативно, малая окрестность может иметь другую форму.
[0191] Кодер может использовать пороговое значение для ограничения количества итераций на этапе идентификации (1710). Пороговое значение зависит от реализации и составляет, например, 4 итерации. Если достигнуто пороговое число итераций, кодер может выполнить другой процесс поиска (например, процесс полного поиска или процесс хеширования), чтобы определить наилучшее место для предсказания.
[0192] Возвращаясь к Фигуре 17, после идентификации текущего лучшего местоположения в малой окрестности (в пределах порогового количества итераций), кодер подтверждает (1720) текущее лучшее местоположение для предсказания через итеративную оценку в последовательно более крупных окрестностях вокруг текущего лучшего местоположения для предсказания. Например, каждая из более крупных окрестностей включает в себя местоположения в кольце за пределами малой окрестности. Последовательно более крупные окрестности могут расти инкрементно на один образец, два образца, и т.д., на каждой стороне. Или, последовательно более крупные окрестности могут быть расширены посредством некоторого коэффициента. Например, радиус более крупной окрестности масштабируется с коэффициентом 2 в каждой итерации после первой.
[0193] Если одно из местоположений в более крупной окрестности дает более хорошие результаты, чем текущее лучшее местоположение, текущее лучшее местоположение заменяется более хорошим местоположением в более крупной окрестности, и кодер начинает заново процессы в новом текущем лучшем местоположении. В противном случае (ни одно из местоположений в более крупной окрестности не дает более хороших результатов, чем текущее лучшее местоположение), кодер повторяет процесс подтверждения со следующей более крупной окрестностью, пока пороговое значение итераций процесса подтверждения (1720) не будет достигнуто. Пороговое значение зависит от реализации и, например, любой из стадий с 4 по 7 проверок для последовательно более крупных окрестностей.
[0194] После того как самая крупная окрестность успешно проверена, кодер прекращает процесс поиска. В противном случае, (показано как решение 1730), кодер начинает заново процесс в новом текущем лучшем местоположении.
[0195] Фигура 19 иллюстрирует итеративное подтверждение местоположения в одной или нескольких более крупных окрестностях при поиске значения BV или значения MV для блока. На Фигуре 19, текущее лучшее местоположение показано как черный круг. Кодер проверяет восемь местоположений в углах и средних точках квадрата (внутреннего квадрата) вокруг текущего лучшего местоположения. Восемь местоположений показаны как серые круги на Фигуре 19. Результаты для восьми местоположений, соответственно, сравниваются с результатами для текущего лучшего местоположения (с точки зрения стоимости искажения, стоимости битовой скорости или некоторой комбинации стоимости искажения и стоимости битовой скорости). Если ни одно из восьми местоположений во внутреннем квадрате не лучше, чем текущее лучшее местоположение, кодер проверяет восемь местоположений (углы и средние точки) более крупного квадрата (внешнего квадрата на Фигуре 19). Альтернативно, более крупная окрестность может иметь другую форму (например, круг местоположений), включать в себя меньше местоположений, которые оцениваются (например, только углы по периметру формы).
[0196] Счетчик для первого порогового значения (итерации малой окрестности) может быть сброшен каждый раз, когда этап идентификации (1710) запущен или перезапущен. Или, кодер может сбросить счетчик для первого порогового значения только один раз, в начале процесса (1700). Подобным образом, счетчик для второго порогового значения (итерации более крупной окрестности) может быть сброшен каждый раз, когда этап подтверждения (1720) запущен или перезапущен. Или, кодер может сбросить счетчик для второго порогового значения только один раз, в начале процесса (1700). Если счетчики сбрасываются в рамках процесса (1700), кодер может использовать другое ограничение, чтобы ограничить то, насколько долго продолжается процесс поиска, гарантируя, что он заканчивается в течение разумного периода времени.
[0197] Фигура 20 представляет собой блок-схему, иллюстрирующую примерный метод для поиска значения BV или значения MV для блока с использованием итеративной оценки местоположения в малой окрестности(ях) и итеративного подтверждения местоположения в более крупной окрестности(ях).
[0198] Кодер сбрасывает (2010) первый и второй счетчики. Кодер устанавливает (2020) текущее лучшее местоположение и оценивает его (если результаты для текущего лучшего местоположения еще не доступны из предыдущей оценки). Кодер затем оценивает (2030) смежные местоположения в малой окрестности вокруг текущего лучшего местоположения (если результаты для смежных местоположений еще не доступны из предыдущей оценки). Кодер проверяет (2040), не найдено ли новое лучшее местоположение (путем сравнения результатов). Если это так, кодер проверяет (2042), не достигнуто ли первое пороговое значение, используя первый счетчик. Если это не так, кодер увеличивает первый счетчик (не показан), устанавливает (2010) текущее лучшее местоположение в качестве нового лучшего текущего местоположения (из числа смежных местоположений) и продолжает оттуда. Таким образом, кодер может итеративно проверить малую окрестность смежных местоположений вокруг текущего лучшего местоположения.
[0199] Если достигнуто первое пороговое значение, кодер выполняет (2080) полный поиск. Альтернативно, кодер использует другой процесс поиска, такой как процесс хэширования.
[0200] Если новое лучшее местоположение не найдено (на решении (2040)), кодер оценивает (2050) кольцо местоположений вокруг текущего лучшего местоположения. Кодер проверяет (2060), не найдено ли новое лучшее местоположение (путем сравнения результатов). Если это так, кодер сбрасывает (2090) первый и второй счетчики, устанавливает (2010) текущее лучшее местоположение в качестве нового лучшего текущего местоположения (из числа смежных местоположений) и продолжает оттуда. Таким образом, кодер перезапускает процесс (2000).
[0201] В противном случае (новое местоположение не найдено на решении (2060)), кодер проверяет (2062), не достигнуто ли второе пороговое значение, используя второй счетчик. Если это так, кодер (успешно) завершает процесс поиска. Если это не так, кодер увеличивает второй счетчик (не показан), расширяет кольцо (2070) местоположений и оценивает (2050) (расширенное) кольцо местоположений вокруг текущего лучшего местоположения.
[0202] В примерах, описанных в этом разделе, значения BV и значения MV указывают на сдвиги целочисленной выборки. Альтернативно, значения BV и/или значения MV могут указывать на сдвиги дробных выборок. Когда разрешены сдвиги дробных выборок, кодер может идентифицировать значение BV или значение MV, имеющее сдвиг целочисленной выборки, как описано со ссылкой на Фигуры 17-20. Затем, кодер может идентифицировать значение BV или значение MV в окрестности вокруг значения BV или MV целочисленной выборки (например, в пределах сдвига единственной выборки из значения BV или MV целочисленной выборки).
[0203] Альтернативно, когда разрешены сдвиги дробных выборок, кодер может идентифицировать значение BV или значение MV, имеющее сдвиг дробной выборки, с разрешенной точностью на каждом из этапов, описанных со ссылкой на Фигуры 17-20 (то есть, идентифицировать значение BV или значение MV, имеющее сдвиг дробной выборки в малой окрестности, идентифицировать значение BV или значение MV, имеющее сдвиг дробной выборки в более крупной окрестности, и так далее).
X. ОГРАНИЧЕНИЕ ДИАПАЗОНА ПОИСКА BV ДЛЯ ВНУТРЕННЕГО ПРЕДСКАЗАНИЯ BC
[0204] В некоторых примерных реализациях, кодер использует диапазон полного поиска для оценки BV. Осуществляется поиск по всей области восстановленного выборочного значения, чтобы идентифицировать значение BV для текущего блока. В то время как использование диапазона полного поиска может помочь идентифицировать наилучшие значения BV для использования во внутреннем предсказании BC, оно также может увеличить сложность оценки BV.
[0205] В других примерных реализациях, кодер ограничивает диапазон поиска BV в соответствии с одним или более ограничениями. Путем ограничения диапазона поиска BV, область восстановленных выборочных значений, на которую ссылается доступ быстрой памяти для внутреннего предсказания BC во время кодирования и декодирования, может быть уменьшена, что приводит к снижению затрат на реализацию.
[0206] В примерах настоящего раздела, кодер учитывает выборочные значения яркости текущего блока яркости при идентификации значения BV во время оценки BV. Кодер пытается сопоставить выборочные значения яркости для текущего блока с восстановленными выборочными значениями яркости предыдущих блоков яркости. Результирующее значение BV, тем не менее, также применяется к выборочным значениям насыщенности цвета соответствующих блоков насыщенности цвета.
[0207] Фигура 21a иллюстрирует примерные ограничения на диапазон поиска для значений BV. Помимо текущего блока (2130) текущего кадра (2110), Фигура 21a показывает диапазон поиска, определенный двумя CTB (2120, 2122). Текущий CTB (2120) является частью текущей CTU и включает в себя текущий блок (2130). Вместе с CTB (2120), расположенным слева, текущий CTB (2120) определяет диапазон поиска, в котором допустимые BV могут быть найдены для текущего блока (2130). BV (2142, 2144) ссылаются на области, которые находятся за пределами диапазона поиска, так что эти значения BV (2142, 2144) не допускаются.
[0208] В некоторых примерных реализациях, диапазон поиска для значений BV для текущего блока представляет собой текущий CTB и CTB слева от него. Например, CTB может иметь размер 64×64, 32×32 или 16×16 выборочных значений, что приводит к диапазону поиска 128×64, 64×32 или 32×16 выборочных значений. Только выборочные значения в текущем CTB и левом CTB используются для внутреннего предсказания BC для текущего блока. Это упрощает реализацию кодера путем ограничения процесса поиска. Это также упрощает реализацию декодера путем ограничения количества выборочных значений, которые декодер буферизует в быстрой памяти для внутреннего предсказания. (Декодер имеет достаточную емкость буфера для хранения выборочных значений для двух CTB самых крупных возможных размеров, даже если выбран меньший размер CTU/CTB). Другое ограничение состоит в том, что внутреннее предсказание не может ссылаться на выборочные значения из другого фрагмента или элемента мозаичного изображения. Для текущего блока m×n c верхним левым положением в (x0, y0) и CTB, каждым имеющим размеры CTBsizeY×CTBsizeY, кодер может проверить эти ограничения для двумерного BV, имеющего горизонтальный компонент BV[0] и вертикальный компонент BV[1], следующим образом.
- BV[0]≥-((x0% CTBsizeY)+CTBsizeY)
- BV[1]≥-(y0% CTBsizeY)
- Выборочные значения в положениях (x0, y0), (x0+BV[0], y0+BV[1]) и (x0+BV[0]+m-1, y0+BV[1]+n-1) должны быть в одном и том же фрагменте.
- Выборочные значения в положениях (x0, y0), (x0+BV[0], y0+BV[1]) и (x0+BV[0]+m-1, y0+BV[1]+n-1) должны быть в одном и том же элементе мозаичного изображения.
[0209] На практике, оценка значений кандидата BV в большом, квадратном диапазоне поиска (таком как диапазон поиска S×S, где S представляет собой CTBsizeY) или большем, прямоугольном диапазоне поиска (таком как диапазон поиска 2S×S, где S представляет собой CTBsizeY) не имеет смысла, если наилучшие значения BV имеют тенденцию быть ориентированными либо горизонтально, либо вертикально. Вместо этого, кодер может использовать меньший диапазон, который по-прежнему включает в себя вероятные значения кандидата BV, где меньший диапазон поиска BV ориентирован горизонтально (например, с размерами 2S×¼S или 2S×¾S) или ориентирован вертикально (например, с размерами ¼S×2S или ¾S×2S). В большинстве сценариев, кодер проверяет меньше значений BV во время оценки BV, но по-прежнему находит наиболее подходящие значения.
[0210] Диапазон поиска BV с горизонтальным отклонением (или горизонтальной ориентацией) включает в себя значения кандидата BV с более широким диапазоном значений горизонтального компонента BV, чем значений вертикального компонента BV. С другой стороны, диапазон поиска BV с вертикальным отклонением (или вертикальной ориентацией) включает в себя значения кандидата BV с более широким диапазоном значений вертикального компонента BV, чем значений горизонтального компонента BV.
[0211] Диапазон поиска BV также может быть предметом других ограничений. Например, диапазон поиска BV может быть предметом ограничения, заключающегося в том, что любое значение BV для текущего блока ссылается на область, которая лежит внутри текущего CTB и/или CTB слева от текущего CTB. То есть, диапазон поиска BV умещается внутри текущего CTB и CTB слева от него. Или, в качестве другого примера, диапазон поиска BV может быть предметом ограничения, заключающегося в том, что любое значение BV для текущего блока ссылается на область, которая лежит внутри текущего CTB и/или CTB над текущим CTB. То есть, диапазон поиска BV умещается внутри текущего CTB и CTB над ним. Диапазон поиска BV также может быть ограничен, чтобы умещаться внутри текущего изображения. В некоторых реализациях, диапазон поиска BV дополнительно ограничен, чтобы умещаться внутри текущего фрагмента или текущего элемента мозаичного изображения.
[0212] Помимо ограничения на дальней границе диапазона поиска BV (вдали от текущего блока), диапазон поиска BV может быть ограничен у его ближней границы (близко к текущему блоку). Например, в некоторых реализациях, для CU, имеющего размер 2N×2N, раздел PU может иметь размер N×N и 2N×N или N×2N, где каждый PU имеет свой собственный BV, или некоторые другие размер раздела. Для BV из PU не разрешено, тем не менее, ссылаться на другие области PU внутри той же CU. Это ограничение на диапазон поиска BV несколько снижает производительность по сравнению с разрешением перекрытия на уровне PU, но позволяет каждому PU иметь свой собственный BV и позволяет PU внутри каждой CU быть восстановленным параллельно, что может способствовать эффективному декодированию.
[0213] Альтернативно, если перекрытие между CB и соответствующей областью внутреннего предсказания разрешено, кодер может выполнить обработку перекрытия. В этом случае, диапазон поиска BV с горизонтальным отклонением или вертикальным отклонением может расшириться в текущую CU.
[0214] Фигура 21b показывает первый альтернативный диапазон (2181) поиска, который имеет горизонтальное отклонение (горизонтальную ориентацию). Диапазон (2181) поиска имеет размеры до 2S×¼S. Диапазон (2181) поиска может быть усечен, чтобы уместиться в текущем CTB и CTB слева от него, как показано в заштрихованной накрест и заштрихованной частях диапазона (2181) поиска. Или, диапазон (2181) поиска может быть дополнительно ограничен, чтобы не включать в себя какую-либо часть в текущем CTB (показано как заштрихованная часть диапазона (2181) поиска на Фигуре 21b).
[0215] Фигура 21c показывает второй альтернативный диапазон (2182) поиска, который имеет горизонтальное отклонение. Диапазон (2182) поиска имеет размеры до 2S×¾S. Диапазон (2182) поиска может быть усечен, чтобы уместиться в текущем CTB и CTB слева от него, как показано в заштрихованной накрест и заштрихованной частях диапазона (2182) поиска. Или, диапазон (2182) поиска может быть дополнительно ограничен, чтобы не включать в себя какую-либо часть в текущем CTB (показано как заштрихованная часть диапазона (2182) поиска на Фигуре 21c).
[0216] Фигура 21b показывает третий альтернативный диапазон (2183) поиска, который имеет вертикальное отклонение (вертикальную ориентацию). Диапазон (2183) поиска имеет размеры до ¼S×2S. Диапазон (2183) поиска может быть усечен, чтобы уместиться в текущем CTB и CTB над ним, как показано в заштрихованной накрест и заштрихованной частях диапазона (2183) поиска. Или, диапазон (2183) поиска может быть дополнительно ограничен, чтобы не включать в себя какую-либо часть в текущем CTB (показано как заштрихованная часть диапазона (2183) поиска на Фигуре 21d).
[0217] Фигура 21e показывает четвертый альтернативный диапазон (2184) поиска, который имеет вертикальное отклонение. Диапазон (2184) поиска имеет размеры до ¾S×2S. Диапазон (2184) поиска может быть усечен, чтобы уместиться в текущем CTB и CTB над ним, как показано в заштрихованной накрест и заштрихованной частях диапазона (2184) поиска. Или, диапазон (2184) поиска может быть дополнительно ограничен, чтобы не включать в себя какую-либо часть в текущем CTB (показано как заштрихованная часть диапазона (2184) поиска на Фигуре 21d).
[0218] Во время оценки BV, видеокодер или кодер изображения может выполнять кодирование, которое включает в себя оценку BV следующим образом.
[0219] Кодер определяет BV для текущего блока изображения. BV указывает на смещение в область внутри изображения. Текущий блок находится в текущем CTB, имеющем размер S. Как часть определения BV, кодер проверяет ограничение, что область находится внутри диапазона поиска BV, имеющего горизонтальное отклонение или вертикальное отклонение. Кодер выполняет внутреннее предсказание BC для текущего блока с помощью BV. Кодер также кодирует BV. Например, кодер выполняет предсказание BC и кодирует BV, как описано в другом месте в настоящей заявке.
[0220] В более общем смысле, кодер кодирует данные для изображения с помощью предсказания BC. Кодирование включает в себя выполнение операций оценки BV с использованием диапазона поиска BV с горизонтальным или вертикальным отклонением. Кодер выводит закодированные данные для изображения.
[0221] Диапазон поиска BV может иметь горизонтальное отклонение, имеющее размеры 2S×¼S или 2S×¾S. Или, в более общем смысле, горизонтально-отклоненный диапазон поиска BV имеет ширину между S и 2S, включительно, и имеет высоту между ¼S и ¾S, включительно. Или, диапазон поиска BV может иметь вертикальное отклонение, имеющее размеры ¼S×2S или ¾S×2S. Или, в более общем смысле, вертикально-отклоненный диапазон поиска BV имеет высоту между S и 2S, включительно, и имеет ширину между ¼S и ¾S, включительно.
[0222] Кодер может выбрать диапазон поиска BV из числа нескольких доступных диапазонов поиска BV. Например, кодер выбирает среди нескольких диапазонов поиска, имеющих горизонтальное отклонение (например, диапазонов поиска 2S×¼S и 2S×¾S). Или, кодер выбирает среди нескольких диапазонов поиска, имеющих вертикальное отклонение (например, диапазонов поиска ¼S×2S и ¾S×2S). Или, кодер выбирает среди нескольких диапазонов поиска, при этом каждый имеет горизонтальное отклонение или вертикальное отклонение.
[0223] Кодер может выбрать диапазон поиска BV на основе, по меньшей мере частично, значений BV одного или более предыдущих блоков. Например, предыдущий блок(и) находятся в текущем изображении. Или, предыдущий блок(и) находятся в одном или более из предыдущих изображений. Или, предыдущий блок(и) находятся в текущем изображении и одном или более из предыдущих изображений. Рассматривая значение(я) BV предыдущего блока(ов), кодер может идентифицировать тенденции в значениях BV (например, что большинство значений BV имеют сильный горизонтальный компонент BV, но мало или вообще не имеют вертикального компонента) и выбрать соответствующий диапазон поиска BV. Выбор диапазона поиска BV может также зависеть от других факторов (например, пользовательских настроек).
[0224] Значение(я) BV для предыдущего блока(ов) могут быть отслежены, например, с помощью структуры данных, которая организует значение(я) BV как гистограмму с различными категориями (или «столбцами гистограммы»), соответствующими различными диапазонам поиска значений BV и хранящими количество на категорию/столбец гистограммы. Таким образом, структура данных гистограммы может предоставить статистические данные о частоте использования различных значений BV. Или, значение(я) BV могут быть отслежены иным способом. Например, кодер отслеживает значения BV для блоков текущего изображения, затем оценивает значения BV предыдущих блоков в окрестности вокруг текущего блока для определения того, какой диапазон поиска BV использовать.
[0225] Использование более мелкого диапазона поиска BV с горизонтальным или вертикальным отклонением может быть чуть менее эффективным (с точки зрения производительности скорость-искажение), чем использование более крупного диапазона поиска SxS or 2S×S. Для многих сценариев кодирования, сокращение вычислительной сложности оценки BV оправдывает это ухудшение.
[0226] Фигура 22 показывает метод (2200) для кодирования с режимом внутреннего предсказания BC, при условии соблюдения одного или более ограничений на выбор значений BV. Кодер, такой как описанный со ссылкой на Фигуру 3 или Фигуры 5a-5b, может выполнять метод (2200).
[0227] Для начала, кодер определяет (2210) BV для текущего блока изображения. Текущий блок может быть CB, PB или другим блоком. BV указывает на смещение в область внутри изображения. При определении BV, кодер проверяет одно или более ограничений.
[0228] В соответствии с одним возможным ограничением, кодер проверяет диапазон выборочных значений, используемых для внутреннего предсказания BC. Кодер может проверить, что область-кандидат внутреннего предсказания находится внутри диапазона, определенного текущим CTB и одним или более другими CTB (например, CTB слева от текущего CTB)/Например, когда BV имеет первый компонент BV[0] и второй компонент BV[1], текущий блок имеет верхнее левое положение в положении (x0, y0), и каждый из CTB имеет ширину CTBwidth и высоту CTBheight, ограничение удовлетворено, если BV[0]>=-((x0%CTBwidth)+CTBwidth) и BV[1]>=-(y0%CTBheight). Кодер может аналогичным образом проверить верхние пределы на значениях BV[0] и BV[1] в диапазоне поиска: BV[0]<(CTBwidth - m-(x0% CTBwidth)) и BV[1]<(CTBheight-n - (y0% CTBheight)). Альтернативно, диапазон поиска включает в себя больше или меньше CTB, или диапазон поиска определяется каким-либо другим способом.
[0229] В соответствии с другим возможным ограничением, кодер ограничивает поиск текущим фрагментом и элементом мозаичного изображения (то есть, текущий блок и область являются частью не более, чем одного фрагмента изображения, и не более, чем одного элемента мозаичного изображения). Кодер может проверить, что верхнее левое положение текущего блока, верхнее левое положение области-кандидата внутреннего предсказания и нижнее правое положение области-кандидата внутреннего предсказания являются частью одного фрагмента и одного элемента мозаичного изображения. Например, ограничение удовлетворяется, если (x0, y0), (x0+BV[0], y0+BV[1]) и (x0+BV[0]+m-1, y0+BV[1]+n-1) являются частью одного фрагмента и одного элемента мозаичного изображения.
[0230] Альтернативно, кодер проверяет другие и/или дополнительные ограничения.
[0231] Кодер выполняет (2220) внутреннее предсказание BC для текущего блока с помощью BV. Например, кодер выполняет внутреннее предсказание BC для всего текущего блока. Или, кодер выполняет внутреннее предсказание BC для нескольких блоков, связанных с текущим блоком (например, для нескольких TB на основе TB-за-TB, где TB связаны с текущим PB, который имеет BV).
[0232] Кодер кодирует (2230) BV. Кодер может повторять метод (2200) для другого блока режима внутреннего предсказания BC.
[0233] Для внутреннего предсказания BC, кодер и декодер используют восстановленные выборочные значения. Невосстановленные выборочные значения могут присутствовать как части изображения, которые еще не были закодированы и восстановлены. Чтобы избежать использования невосстановленных выборочных значений для внутреннего предсказания BC, кодер устанавливает ограничения на допустимые значения BV, так что только фактические, ранее невосстановленные выборочные значения используются для внутреннего предсказания BC в соответствии с BV.
[0234] В некоторых примерах реализациях, кодер проверяет значение BV, рассматривая порядки z-сканирования текущего блока и блока, который содержит нижнее правое положение области-кандидата внутреннего предсказания. Более конкретно, кодер, что порядок z-сканирования блока, содержащего положение (x0+BV[0]+m-1, y0+BV[1]+n-1), меньше, чем порядок z-сканирования блока, содержащего (x0, y0). Если это так, блок, который содержит нижнее правое положение области внутреннего предсказания, был ранее восстановлен (и, следовательно, таким образом имеет оставшуюся часть области внутреннего предсказания). BV также удовлетворяет по меньшей мере одному из условий BV[0]+m≤0 и BV[1]+n≤0, гарантируя, что область внутреннего предсказания не перекрывает текущий блок.
[0235] Порядок z-сканирования следует за последовательно заданным упорядочиванием блоков, которые разделяют изображение. Фигура 23 показывает пример порядка (2300) z-сканирования для текущего блока (2330) и блоков, которые могут включать в себя нижнее правое положение области внутреннего предсказания для кандидата BV. Текущий блок (2330) может быть CB, PB или другим блоком. Порядки z-сканирования, как правило, назначаются блокам последовательно слева направо в строке, повторяя в последовательных строках сверху вниз. Когда блок разделен, порядки z-сканирования назначаются внутри разделенного блока рекурсивно. Для реализаций кодирования/декодирования для стандарта HEVC, порядок z-сканирования проходит CTB-к-CTB по шаблону растрового сканирования CTB (слева направо в строке CTB, повторяя в последовательных строках CTB сверху вниз). Если CTB разделен, порядок z-сканирования следует шаблону растрового сканирования для CB квадродерева в разделенном CTB. И, если CB разделен (например, на несколько CB или несколько PB), порядок z-сканирования следует шаблону растрового сканирования для блоков в разделенном CB.
[0236] Альтернативно, когда внутреннее предсказание BC может быть выполнено на основе TB-за-TB, кодер и декодер могут проверить на предмет возможного перекрытия между областью внутреннего предсказания и текущим блоком (TB), затем использовать результаты проверки, чтобы решить, должен ли текущий TB быть разделен на более мелкие TB для применения операций внутреннего предсказания BC. Предположим, текущий TB имеет размер m×n, где m и n могут быть равны друг другу или могут иметь разные значения. Если BV[0]>-m и BV[1]>-n, область внутреннего предсказания перекрывает текущий TB m×n, что является проблематичным, если текущий TB m×n не разделен на более мелкие TB для применения операций внутреннего предсказания BC. Таким образом, если BV[0]>-m и BV[1]>-n, кодер и декодер разделяют текущий TB на более мелкие TB. То же условие проверяется (например, проверяется рекурсивно) для более мелких TB, которые могут быть дополнительно разделены, если BV[0]>-m и BV[1]>-n даже для меньших значений m и n после разделения.
[0237] Например, предположим, что BV для РВ равно (-9, -5), и текущий TB представляет собой блок 32××32. Кодер и декодер определяют, что -9>-32 и -5>-32, указывая, что область внутреннего предсказания (чей левый верхний угол смещен -9, -5) будет перекрывать текущий TB 32×32. Кодер и декодер разделяют TB 32×32 на четыре TB 16×16. Для каждого из TB 16×16, кодер и декодер определяют, что -9>-16 и -5>-16, указывая, что область внутреннего предсказания (чей левый верхний угол смещен -9, -5) будет перекрывать текущий TB 16×16. Кодер и декодер разделяют каждый TB 16×16, последовательно, на четыре TB 8×8. Для TB 8×8, BV из (-9, -5) не является проблематичным, поэтому TB 8×8 не вынужден быть дополнительно разделен.
[0238] В этом сценарии, когда TB разделяется из-за значения BV и размера TB, кодер может пропустить передачу сигнала значения флага, который в противном случае передал бы сигнал, разделять ли текущий TB на более мелкие TB. Битовому потоку закодированных данных не хватает значения флага, предписывающего декодеру разделить текущий TB на более мелкие TB. Вместо этого, декодер может сделать вывод, что TB должен быть разделен из-за значения BV и размера TB. Это может сэкономить биты, которые иначе были бы потрачены на передачу информации о разделении TB.
[0239] Как часть оценки BV, кодер может использовать любой из нескольких подходов. Кодер может использовать полный поиск, оценивая каждое значения кандидата BV, разрешенное в диапазоне поиска. Или, кодер может использовать частичный поиск, оценивая только некоторые из значений кандидатов BV, разрешенных в диапазоне поиска. Например, кодер может начать частичный поиск c предсказанного значения BV для текущего блока (например, предсказанного на основе значений BV одного или нескольких соседних блоков). После оценки значения кандидата BV в начальном положении для частичного поиска, кодер может оценить одно или более других значений кандидатов BV на увеличивающихся расстояниях от начального положения (например, в соответствии со схемой спирального поиска или какой-либо другой схемой). Или, кодер может использовать схему поиска, как описано в предыдущем разделе. При оценке заданного значения кандидата BV, кодер может сравнить все выборочные значения в области внутреннего предсказания и текущего блока. Или, кодер может оценить подмножество выборочных значений (то есть, подвыборки, чьи значения оцениваются). При сравнении выборочных значений между областью внутреннего предсказания и текущим блоком для определения стоимости искажения, кодер может вычислить среднюю квадратичную ошибку, сумму квадратов разностей ("SSD"), сумму абсолютных разностей ("SAD") и некоторую другую меру искажения. Кодер также может определить стоимость битовой скорости, связанную с кодированием значения кандидата BV.
XI. АЛЬТЕРНАТИВЫ И ВАРИАЦИИ
[0240] Во многих примерах, описанных в материалах настоящей заявки, внутреннее предсказание ВС и компенсация движения реализованы в отдельных компонентах или процессах, и оценка BV и оценка движения реализованы в отдельных компонентах или процессах. Альтернативно, внутреннее предсказание BC может быть реализовано как частный случай компенсации движения, и оценка BV может быть реализована как частный случай оценки движения, для которой текущее изображение используется в качестве опорного изображения. В таких реализациях, значение BV может быть передано как значение MV, но использоваться для внутреннего предсказания BC (в пределах текущего изображения), а не предсказания между изображениями. Поскольку этот термин используется в материалах настоящей заявки, «внутреннее предсказание BC» указывает предсказание внутри текущего изображения, предоставлено ли это предсказание с помощью модуля предсказания внутри изображения, модуля компенсации движения или какого-либо другого модуля. Подобным образом, значение BV может быть представлено с использованием значения MV или с использованием определенного типа параметра или синтаксического элемента, и оценка BV может быть предоставлена с использованием модуля оценки внутри изображения, модуля оценки движения или какого-либо другого модуля.
[0241] Принимая во внимание множество вероятных вариантов осуществления, к которым могут быть применены принципы раскрытого изобретения, следует учитывать, что проиллюстрированные варианты осуществления являются лишь предпочтительными примерами изобретения и не должны восприниматься как ограничивающие область применения изобретения. Вместо этого, объем настоящего изобретения определяется следующей формулой изобретения. Поэтому мы заявляем наше изобретение в формуле в рамках области применения и духа этой формулы.

Claims (89)

1. Способ кодирования контента захвата экрана в вычислительном устройстве, которое реализует видеокодер, выполненный с возможностью кодирования контента захвата экрана, состоящий в том, что:
принимают кадр контента захвата экрана;
разделяют кадр контента захвата экрана на множество блоков 2Nx2N, причем упомянутое множество блоков 2Nx2N включает в себя текущий блок 2Nx2N кадра контента захвата экрана;
кодируют текущий блок 2Nx2N кадра контента захвата экрана для получения закодированных данных, причем текущий блок 2Nx2N находится в некотором определенном фрагменте кадра контента захвата экрана и находится в некотором определенном элементе мозаичного изображения кадра контента захвата экрана, текущий блок 2Nx2N имеет размеры 64×64, 32×32 или 16×16, в том числе:
ограничивают значения векторов для внутреннего предсказания блочного копирования («BC») так, чтобы они имели точность целочисленных выборок и указывали опорные области, которые находятся в упомянутом определенном фрагменте, в упомянутом определенном элементе мозаичного изображения, и не перекрываются с текущим блоком 2Nx2N в кадре контента захвата экрана;
асимметрично разделяют текущий блок 2Nx2N на первый и второй разделы для внутреннего предсказания BC посредством разбиения текущего блока 2Nx2N по горизонтали или по вертикали на первый и второй разделы, причем первый и второй разделы имеют размеры:
(a) 64x16 и 64x48 соответственно, или 16x64 и 48x64 соответственно, если текущий блок 2Nx2N имеет размеры 64x64;
(b) 32x8 и 32x24 соответственно, или 8x32 и 24x32 соответственно, если текущий блок 2Nx2N имеет размеры 32x32; и
(c) 16x4 и 16x12 соответственно, или 4x16 и 12x16 соответственно, если текущий блок 2Nx2N имеет размеры 16x16;
выполняют внутреннее предсказание BC для упомянутого первого раздела; и
выполняют внутреннее предсказание BC для упомянутого второго раздела; и
выводят закодированные данные как часть битового потока.
2. Способ по п. 1, в котором кодирование дополнительно состоит в том, что выполняют внутреннее предсказание BC для другого блока 2Nx2N, который симметрично разделен для внутреннего предсказания BC, при этом этот другой блок 2Nx2N разделен на (1) два блока 2N×N, (2) два блока N×2N или (3) четыре блока N×N, каждый из которых может быть дополнительно разделен на два блока N×N/2, два блока N/2×N или четыре блока N/2×N/2.
3. Способ по п. 1, в котором кодирование дополнительно включает в себя для текущего блока 2Nx2N:
определение первого вектора, который указывает первое смещение в первую опорную область кадра контента захвата экрана;
как часть выполнения внутреннего предсказания BC для первого раздела, использование первого вектора для определения предсказанных значений выборок для первого раздела из ранее восстановленных значений выборок в первой опорной области кадра контента захвата экрана;
определение второго вектора, который указывает второе смещение во вторую опорную область кадра контента захвата экрана; и
как часть выполнения внутреннего предсказания BC для второго раздела, использование второго вектора для определения предсказанных значений выборок для второго раздела из ранее восстановленных значений выборок во второй опорной области кадра контента захвата экрана.
4. Способ по п. 1, в котором текущий блок 2Nx2N разбивается по горизонтали и:
первый и второй разделы являются верхним и нижним разделами, соответственно; или
первый и второй разделы являются нижним и верхним разделами, соответственно.
5. Способ по п. 1, в котором текущий блок 2Nx2N разбивается по вертикали и:
первый и второй разделы являются левым и правым разделами, соответственно; или
первый и второй разделы являются правым и левым разделами, соответственно.
6. Вычислительное устройство, содержащее:
один или более обрабатывающих блоков;
энергозависимую память; и
энергонезависимую память и/или запоминающее устройство, причем энергонезависимая память и/или запоминающее устройство хранят исполняемые компьютером инструкции для побуждения вычислительного устройства, когда оно запрограммировано посредством этих инструкций, к выполнению операций видеодекодера, выполненного с возможностью декодирования контента захвата экрана, причем упомянутые операции содержат:
прием кодированных данных как часть битового потока; и
декодирование кодированных данных для восстановления кадра контента захвата экрана, в том числе выполнение внутреннего предсказания блочного копирования («BC») для первого и второго разделов текущего блока 2Nx2N кадра контента захвата экрана, причем текущий блок 2Nx2N находится в некотором определенном фрагменте кадра контента захвата экрана и находится в некотором определенном элементе мозаичного изображения кадра контента захвата экрана, а значения векторов для внутреннего предсказания BC ограничены так, чтобы иметь точность целочисленных выборок и указывать опорные области, которые находятся в упомянутом определенном фрагменте, в упомянутом определенном элементе мозаичного изображения, и не перекрываются с текущим блоком 2Nx2N в кадре контента захвата экрана, причем текущий блок 2Nx2N был асимметрично разделен для внутреннего предсказания BC, текущий блок 2Nx2N имеет размеры 64×64, 32×32 или 16×16, текущий блок 2Nx2N был разбит по горизонтали или по вертикали на первый и второй разделы, причем первый и второй разделы имеют размеры:
(a) 64x16 и 64x48 соответственно, или 16x64 и 48x64 соответственно, если текущий блок 2Nx2N имеет размеры 64x64;
(b) 32x8 и 32x24 соответственно, или 8x32 и 24x32 соответственно, если текущий блок 2Nx2N имеет размеры 32x32; и
(c) 16x4 и 16x12 соответственно, или 4x16 и 12x16 соответственно, если текущий блок 2Nx2N имеет размеры 16x16.
7. Вычислительное устройство по п. 6, в котором декодирование дополнительно состоит в том, что выполняют внутреннее предсказание BC для другого блока 2Nx2N, который был симметрично разделен для внутреннего предсказания BC, при этом этот другой блок 2Nx2N был разделен на (1) два блока 2N×N, (2) два блока N×2N или (3) четыре блока N×N, каждый из которых может быть дополнительно разделен на два блока N×N/2, два блока N/2×N или четыре блока N/2×N/2.
8. Вычислительное устройство по п. 6, в котором декодирование включает в себя для текущего блока 2Nx2N:
восстановление первого вектора, который указывает первое смещение в первую опорную область кадра контента захвата экрана;
восстановление второго вектора, который указывает второе смещение во вторую опорную область кадра контента захвата экрана;
как часть выполнения внутреннего предсказания BC для первого раздела, использование первого вектора для определения предсказанных значений выборок для первого раздела из ранее восстановленных значений выборок в первой опорной области кадра контента захвата экрана;
как часть выполнения внутреннего предсказания BC для второго раздела, использование второго вектора для определения предсказанных значений выборок для второго раздела из ранее восстановленных значений выборок во второй опорной области кадра контента захвата экрана.
9. Вычислительное устройство по п. 6, в котором текущий блок 2Nx2N разбит по горизонтали и:
первый и второй разделы являются верхним и нижним разделами, соответственно; или
первый и второй разделы являются нижним и верхним разделами, соответственно.
10. Вычислительное устройство по п. 6, в котором текущий блок 2Nx2N разбит по вертикали и:
первый и второй разделы являются левым и правым разделами, соответственно; или
первый и второй разделы являются правым и левым разделами, соответственно.
11. Способ декодирования контента захвата экрана в вычислительном устройстве, которое реализует видеодекодер, выполненный с возможностью декодирования контента захвата экрана, состоящий в том, что:
принимают закодированные данные как часть битового потока; и
декодируют закодированные данные, чтобы восстановить кадр контента захвата экрана, в том числе выполняют внутреннее предсказание блочного копирования («BC») для первого и второго разделов текущего блока 2Nx2N кадра контента захвата экрана, причем текущий блок 2Nx2N находится в некотором определенном фрагменте кадра контента захвата экрана и находится в некотором определенном элементе мозаичного изображения кадра контента захвата экрана, а значения векторов для внутреннего предсказания BC ограничены так, чтобы иметь точность целочисленных выборок и указывать опорные области, которые находятся в упомянутом определенном фрагменте, в упомянутом определенном элементе мозаичного изображения, и не перекрываются с текущим блоком 2Nx2N в кадре контента захвата экрана, причем текущий блок 2Nx2N был асимметрично разделен для внутреннего предсказания BC, текущий блок 2Nx2N имеет размеры 64×64, 32×32 или 16×16, текущий блок 2Nx2N был разбит по горизонтали или по вертикали на первый и второй разделы, причем первый и второй разделы имеют размеры:
(a) 64x16 и 64x48 соответственно, или 16x64 и 48x64 соответственно, если текущий блок 2Nx2N имеет размеры 64x64;
(b) 32x8 и 32x24 соответственно, или 8x32 и 24x32 соответственно, если текущий блок 2Nx2N имеет размеры 32x32; и
(c) 16x4 и 16x12 соответственно, или 4x16 и 12x16 соответственно, если текущий блок 2Nx2N имеет размеры 16x16.
12. Способ по п. 11, в котором декодирование включает в себя для текущего блока 2Nx2N:
восстановление первого вектора, который указывает смещение в первую опорную область кадра контента захвата экрана;
как часть внутреннего предсказания BC для первого раздела, использование первого вектора для определения предсказанных значений выборок для первого раздела из ранее восстановленных значений выборок в первой опорной области кадра контента захвата экрана;
восстановление второго вектора, который указывает смещение во вторую опорную область кадра контента захвата экрана; и
как часть внутреннего предсказания BC для второго раздела, использование второго вектора для определения предсказанных значений выборок для второго раздела из ранее восстановленных значений выборок во второй опорной области кадра контента захвата экрана.
13. Способ по п. 11, в котором текущий блок 2Nx2N разбит по горизонтали и:
первый и второй разделы являются верхним и нижним разделами, соответственно; или
первый и второй разделы являются нижним и верхним разделами, соответственно.
14. Способ по п. 11, в котором текущий блок 2Nx2N разбит по вертикали и:
первый и второй разделы являются левым и правым разделами, соответственно; или
первый и второй разделы являются правым и левым разделами, соответственно.
15. Вычислительное устройство, содержащее:
один или более обрабатывающих блоков;
энергозависимую память; и
энергонезависимую память и/или запоминающее устройство, причем энергонезависимая память и/или запоминающее устройство хранят исполняемые компьютером инструкции для побуждения вычислительного устройства, когда оно запрограммировано посредством этих инструкций, к выполнению операций видеокодера, выполненного с возможностью кодирования контента захвата экрана, причем упомянутые операции состоят в том, что:
принимают кадр контента захвата экрана;
разделяют кадр контента захвата экрана на множество блоков 2Nx2N, причем упомянутое множество блоков 2Nx2N включает в себя текущий блок 2Nx2N кадра контента захвата экрана;
кодируют текущий блок 2Nx2N кадра контента захвата экрана для получения закодированных данных, причем текущий блок 2Nx2N находится в некотором определенном фрагменте кадра контента захвата экрана и находится в некотором определенном элементе мозаичного изображения кадра контента захвата экрана, текущий блок 2Nx2N имеет размеры 64×64, 32×32 или 16×16, в том числе:
ограничивают значения векторов для внутреннего предсказания блочного копирования («BC») так, чтобы они имели точность целочисленных выборок и указывали опорные области, которые находятся в упомянутом определенном фрагменте, в упомянутом определенном элементе мозаичного изображения, и не перекрываются с текущим блоком 2Nx2N в кадре контента захвата экрана;
асимметрично разделяют текущий блок 2Nx2N на первый и второй разделы для внутреннего предсказания BC посредством разбиения текущего блока 2Nx2N по горизонтали или по вертикали на первый и второй разделы, причем первый и второй разделы имеют размеры:
(a) 64x16 и 64x48 соответственно, или 16x64 и 48x64 соответственно, если текущий блок 2Nx2N имеет размеры 64x64;
(b) 32x8 и 32x24 соответственно, или 8x32 и 24x32 соответственно, если текущий блок 2Nx2N имеет размеры 32x32; и
(c) 16x4 и 16x12 соответственно, или 4x16 и 12x16 соответственно, если текущий блок 2Nx2N имеет размеры 16x16;
выполняют внутреннее предсказание BC для упомянутого первого раздела; и
выполняют внутреннее предсказание BC для упомянутого второго раздела; и
выводят закодированные данные как часть битового потока.
16. Вычислительное устройство по п. 15, в котором текущий блок 2Nx2N разбивается по горизонтали и:
первый и второй разделы являются верхним и нижним разделами, соответственно; или
первый и второй разделы являются нижним и верхним разделами, соответственно.
17. Вычислительное устройство по п. 15, в котором текущий блок 2Nx2N разбивается по вертикали и:
первый и второй разделы являются левым и правым разделами, соответственно; или
первый и второй разделы являются правым и левым разделами, соответственно.
18. Вычислительное устройство по п. 15, в котором кодирование дополнительно состоит в том, что выполняют внутреннее предсказание BC для другого блока 2Nx2N, который симметрично разделен для внутреннего предсказания BC, при этом этот другой блок 2Nx2N разделен на (1) два блока 2N×N, (2) два блока N×2N или (3) четыре блока N×N, каждый из которых может быть дополнительно разделен на два блока N×N/2, два блока N/2×N или четыре блока N/2×N/2.
19. Вычислительное устройство по п. 15, в котором кодирование дополнительно включает в себя для текущего блока 2Nx2N:
определение первого вектора, который указывает первое смещение в первую опорную область кадра контента захвата экрана;
как часть выполнения внутреннего предсказания BC для первого раздела, использование первого вектора для определения предсказанных значений выборок для первого раздела из ранее восстановленных значений выборок в первой опорной области кадра контента захвата экрана;
определение второго вектора, который указывает второе смещение во вторую опорную область кадра контента захвата экрана; и
как часть выполнения внутреннего предсказания BC для второго раздела, использование второго вектора для определения предсказанных значений выборок для второго раздела из ранее восстановленных значений выборок во второй опорной области кадра контента захвата экрана.
RU2016128834A 2014-01-17 2015-01-12 Внутреннее предсказание блочного копирования с асимметричными разделами и схемами поиска на стороне кодера, диапазоны поиска и подходы к разделению RU2683165C1 (ru)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201461928970P 2014-01-17 2014-01-17
US61/928,970 2014-01-17
US201461954572P 2014-03-17 2014-03-17
US61/954,572 2014-03-17
US14/455,856 US11284103B2 (en) 2014-01-17 2014-08-08 Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US14/455,856 2014-08-08
PCT/US2015/010944 WO2015108793A1 (en) 2014-01-17 2015-01-12 Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning

Publications (1)

Publication Number Publication Date
RU2683165C1 true RU2683165C1 (ru) 2019-03-26

Family

ID=52469898

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2016128834A RU2683165C1 (ru) 2014-01-17 2015-01-12 Внутреннее предсказание блочного копирования с асимметричными разделами и схемами поиска на стороне кодера, диапазоны поиска и подходы к разделению

Country Status (11)

Country Link
US (4) US11284103B2 (ru)
EP (2) EP4329298A3 (ru)
JP (2) JP2017507554A (ru)
KR (1) KR102369117B1 (ru)
CN (1) CN105917648B (ru)
AU (1) AU2015206771B2 (ru)
BR (1) BR112016015740A2 (ru)
CA (1) CA2935156A1 (ru)
MX (1) MX361225B (ru)
RU (1) RU2683165C1 (ru)
WO (1) WO2015108793A1 (ru)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11265542B2 (en) 2019-01-16 2022-03-01 Telefonaktiebolaget Lm Ericsson (Publ) Uniform tile split with remainder
RU2785998C1 (ru) * 2019-08-29 2022-12-15 ЭлДжи ЭЛЕКТРОНИКС ИНК. Оборудование и способ для кодирования изображения
US11962767B2 (en) 2019-08-29 2024-04-16 Lg Electronics Inc. Apparatus and method for coding image

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9491461B2 (en) * 2012-09-27 2016-11-08 Qualcomm Incorporated Scalable extensions to HEVC and temporal motion vector prediction
CN105659602B (zh) 2013-10-14 2019-10-08 微软技术许可有限责任公司 用于视频和图像编码的帧内块复制预测模式的编码器侧选项
RU2654129C2 (ru) 2013-10-14 2018-05-16 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Функциональные возможности режима внутреннего предсказания с блочным копированием для кодирования и декодирования видео и изображений
WO2015054812A1 (en) 2013-10-14 2015-04-23 Microsoft Technology Licensing, Llc Features of base color index map mode for video and image coding and decoding
US10469863B2 (en) 2014-01-03 2019-11-05 Microsoft Technology Licensing, Llc Block vector prediction in video and image coding/decoding
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
US20160373744A1 (en) * 2014-04-23 2016-12-22 Sony Corporation Image processing apparatus and image processing method
CN105493505B (zh) 2014-06-19 2019-08-06 微软技术许可有限责任公司 统一的帧内块复制和帧间预测模式
US9811882B2 (en) * 2014-09-30 2017-11-07 Electronics And Telecommunications Research Institute Method and apparatus for processing super resolution image using adaptive preprocessing filtering and/or postprocessing filtering
AU2014408228B2 (en) 2014-09-30 2019-09-19 Microsoft Technology Licensing, Llc Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US10091511B2 (en) * 2015-01-05 2018-10-02 Getgo, Inc. Efficient video block matching
CN105872539B (zh) 2015-02-08 2020-01-14 同济大学 图像编码方法和装置及图像解码方法和装置
US10659783B2 (en) 2015-06-09 2020-05-19 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
US10368073B2 (en) * 2015-12-07 2019-07-30 Qualcomm Incorporated Multi-region search range for block prediction mode for display stream compression (DSC)
CA3014259A1 (en) 2016-02-12 2017-08-17 Thomson Licensing A method and device for intra-predictive encoding/decoding a coding unit comprising picture data, said intra-predictive encoding depending on a prediction tree and a transform tree
US10575007B2 (en) 2016-04-12 2020-02-25 Microsoft Technology Licensing, Llc Efficient decoding and rendering of blocks in a graphics pipeline
EP3442231A4 (en) 2016-05-02 2019-12-04 Industry - University Cooperation Foundation Hanyang University BILDCODE / DECODE PROCESS AND DEVICE USING INTRA-SCREEN PREDICTION
US10157480B2 (en) 2016-06-24 2018-12-18 Microsoft Technology Licensing, Llc Efficient decoding and rendering of inter-coded blocks in a graphics pipeline
WO2018066958A1 (ko) * 2016-10-04 2018-04-12 주식회사 케이티 비디오 신호 처리 방법 및 장치
EP3306927A1 (en) 2016-10-05 2018-04-11 Thomson Licensing Encoding and decoding methods and corresponding devices
US11197010B2 (en) 2016-10-07 2021-12-07 Microsoft Technology Licensing, Llc Browser-based video decoder using multiple CPU threads
CN116614647A (zh) * 2016-11-08 2023-08-18 株式会社Kt 对视频进行解码和编码的方法、发送压缩数据的方法
US10511853B2 (en) * 2016-11-24 2019-12-17 Ecole De Technologie Superieure Method and system for parallel rate-constrained motion estimation in video coding
US10674159B2 (en) 2017-07-28 2020-06-02 Microsoft Technology Licensing, Llc Effective intra encoding for screen data
EP3701721A1 (en) * 2017-10-27 2020-09-02 Huawei Technologies Co., Ltd. Apparatus and method for picture coding with asymmetric partitioning
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
US10687071B2 (en) * 2018-02-05 2020-06-16 Tencent America LLC Method and apparatus for video coding
US10848782B2 (en) 2018-09-21 2020-11-24 Tencent America LLC Method and apparatus for video coding
AU2018233042B2 (en) * 2018-09-21 2024-06-13 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tree of blocks of video samples
US11509919B2 (en) * 2018-10-17 2022-11-22 Tencent America Reference sample memory size restrictions for intra block copy
WO2020098695A1 (en) * 2018-11-13 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Construction method for a single type motion candidate list
US10771799B2 (en) * 2019-01-15 2020-09-08 Tencent America LLC Method and apparatus for video coding
WO2020156547A1 (en) 2019-02-02 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Buffer resetting for intra block copy in video coding
CN113396592B (zh) 2019-02-02 2023-11-14 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的缓冲区管理
EP3915265A4 (en) 2019-03-01 2022-06-22 Beijing Bytedance Network Technology Co., Ltd. DIRECTION-BASED PREDICTION FOR INTRA BLOCK COPY IN VIDEO CODING
KR20210125506A (ko) 2019-03-04 2021-10-18 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 버퍼 관리
SG11202109622QA (en) * 2019-03-09 2021-10-28 Tencent America LLC Method and apparatus for video coding
WO2020248105A1 (zh) * 2019-06-10 2020-12-17 Oppo广东移动通信有限公司 预测值的确定方法、编码器以及计算机存储介质
KR20220005591A (ko) * 2019-06-24 2022-01-13 엘지전자 주식회사 크로마 블록의 최대 변환 크기 설정을 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
CN114208179A (zh) * 2019-06-24 2022-03-18 Lg电子株式会社 利用色度分量编码块的最大变换大小限制的图像编码/解码方法和装置及发送比特流的方法
EP3981151A4 (en) 2019-07-06 2022-08-24 Beijing Bytedance Network Technology Co., Ltd. VIRTUAL PREDICTION BUFFER FOR INTRA-BLOCK COPY IN VIDEO ENCODING
MX2022000110A (es) 2019-07-10 2022-02-10 Beijing Bytedance Network Tech Co Ltd Identificacion de muestras para la copia intra-bloque en codificacion de video.
CN117579816A (zh) 2019-07-11 2024-02-20 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的比特流一致性约束
CN114208187A (zh) * 2019-07-25 2022-03-18 北京字节跳动网络技术有限公司 帧内块复制虚拟缓冲区的映射限制
CN114208186B (zh) * 2019-07-25 2023-12-22 北京字节跳动网络技术有限公司 帧内块复制虚拟缓冲区的尺寸限制
KR20220064968A (ko) 2019-09-23 2022-05-19 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 가상 파이프라인 데이터 유닛에 기초한 인트라 블록 복사 가상 버퍼의 설정
WO2021185306A1 (en) 2020-03-18 2021-09-23 Beijing Bytedance Network Technology Co., Ltd. Intra block copy buffer and palette predictor update
CN113709458B (zh) * 2020-05-22 2023-08-29 腾讯科技(深圳)有限公司 视频编解码中的位移矢量预测方法、装置及设备
CN115812306A (zh) * 2020-06-08 2023-03-17 抖音视界有限公司 使用非紧邻临近块的帧内块复制的约束
US20230086077A1 (en) * 2021-09-17 2023-03-23 Tencent America LLC Method and apparatus for intra block copy (intrabc) mode coding with search range restrictions
US11849129B2 (en) * 2022-03-18 2023-12-19 Qualcomm Incorporated Intra-block copy decoding using dynamic re-mapping of on-chip memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004064396A1 (en) * 2003-01-10 2004-07-29 Thomson Licensing S.A. Decoder apparatus and method for smoothing artifacts created during error concealment
US20060274070A1 (en) * 2005-04-19 2006-12-07 Herman Daniel L Techniques and workflows for computer graphics animation system
US20110194613A1 (en) * 2010-02-11 2011-08-11 Qualcomm Incorporated Video coding with large macroblocks
RU2472305C2 (ru) * 2007-02-23 2013-01-10 Ниппон Телеграф Энд Телефон Корпорейшн Способ кодирования видео и способ декодирования видео, устройства для этого, программы для этого и носители хранения, на которых хранятся программы

Family Cites Families (255)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2114404B (en) 1982-01-28 1986-07-02 British Broadcasting Corp Generating a colour video signal representative of a stored picture
JPH087553B2 (ja) 1988-10-27 1996-01-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 色画像量子化方法及び装置
US5706290A (en) 1994-12-15 1998-01-06 Shaw; Venson Method and apparatus including system architecture for multimedia communication
US6389162B2 (en) 1996-02-15 2002-05-14 Canon Kabushiki Kaisha Image processing apparatus and method and medium
JPH10262258A (ja) * 1997-03-19 1998-09-29 Sony Corp 画像符号化装置及び方法
JP2000102016A (ja) 1998-09-22 2000-04-07 Victor Co Of Japan Ltd 動き補償予測回路
JP2001251507A (ja) 2000-03-03 2001-09-14 Fujitsu Ltd 画像処理装置
US6701012B1 (en) 2000-07-24 2004-03-02 Sharp Laboratories Of America, Inc. Out-of-layer pixel generation for a decomposed-image layer
US6748116B1 (en) 2000-08-22 2004-06-08 Airzip, Inc. Apparatus and method for compressing and decompressing image files
DE10049571C1 (de) 2000-10-06 2002-06-13 Siemens Ag Verfahren und Anordnung zum Übertragen eines Vektors
US7023924B1 (en) 2000-12-28 2006-04-04 Emc Corporation Method of pausing an MPEG coded video stream
US6853755B2 (en) 2001-03-28 2005-02-08 Sharp Laboratories Of America, Inc. Method and apparatus for adaptive compression of scanned documents
JP2005503056A (ja) 2001-09-12 2005-01-27 ボネット, ジェレミー エス. デ 最小限の視覚的歪みでイメージのLempel−Ziv圧縮率を増大させる変換
JP2004007379A (ja) 2002-04-10 2004-01-08 Toshiba Corp 動画像符号化方法及び動画像復号化方法
US7120196B2 (en) 2002-04-29 2006-10-10 Ess Technology, Inc. Intra-prediction using intra-macroblock motion compensation
RU2314656C2 (ru) 2002-06-11 2008-01-10 Нокиа Корпорейшн Внутреннее кодирование, основанное на пространственном прогнозировании
US7289674B2 (en) 2002-06-11 2007-10-30 Nokia Corporation Spatial prediction based intra coding
US7016547B1 (en) 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
DE10301362B4 (de) 2003-01-16 2005-06-09 GEMAC-Gesellschaft für Mikroelektronikanwendung Chemnitz mbH Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
US7373005B2 (en) 2003-04-10 2008-05-13 Micron Technology, Inc. Compression system for integrated sensor devices
US7609763B2 (en) 2003-07-18 2009-10-27 Microsoft Corporation Advanced bi-directional predictive coding of video frames
BRPI0413647A (pt) 2003-08-26 2006-10-17 Thomson Licensing método e aparelho para codificar blocos intra-inter codificados hìbridos
US7724827B2 (en) 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US7317839B2 (en) 2003-09-07 2008-01-08 Microsoft Corporation Chroma motion vector derivation for interlaced forward-predicted fields
KR101044934B1 (ko) 2003-12-18 2011-06-28 삼성전자주식회사 움직임 벡터 추정방법 및 부호화 모드 결정방법
JP4591657B2 (ja) 2003-12-22 2010-12-01 キヤノン株式会社 動画像符号化装置及びその制御方法、プログラム
US8036271B2 (en) 2004-02-24 2011-10-11 Lsi Corporation Method and apparatus for determining a second picture for temporal direct-mode block prediction
JP4338654B2 (ja) * 2004-03-18 2009-10-07 三洋電機株式会社 動きベクトル検出装置及び方法、及びその動きベクトル検出装置を利用可能な画像符号化装置
US8116374B2 (en) 2004-05-07 2012-02-14 Broadcom Corporation Method and system for generating a transform size syntax element for video decoding
JP4418762B2 (ja) 2004-05-07 2010-02-24 キヤノン株式会社 画像符号化装置及び画像復号装置及びそれらの制御方法、並びに、コンピュータプログラム及びコンピュータ可読記憶媒体
CA2574590C (en) 2004-07-20 2013-02-19 Qualcomm Incorporated Method and apparatus for motion vector prediction in temporal video compression
JP2006140683A (ja) 2004-11-11 2006-06-01 Canon Inc 画像符号化装置
US7720154B2 (en) 2004-11-12 2010-05-18 Industrial Technology Research Institute System and method for fast variable-size motion estimation
JP2006140758A (ja) 2004-11-12 2006-06-01 Toshiba Corp 動画像符号化方法、動画像符号化装置および動画像符号化プログラム
KR100679035B1 (ko) 2005-01-04 2007-02-06 삼성전자주식회사 인트라 bl 모드를 고려한 디블록 필터링 방법, 및 상기방법을 이용하는 다 계층 비디오 인코더/디코더
US20060282855A1 (en) 2005-05-05 2006-12-14 Digital Display Innovations, Llc Multiple remote display system
KR100716999B1 (ko) 2005-06-03 2007-05-10 삼성전자주식회사 영상의 대칭성을 이용한 인트라 예측 방법, 이를 이용한영상의 복호화, 부호화 방법 및 장치
KR101211665B1 (ko) 2005-08-12 2012-12-12 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
JP2007053561A (ja) 2005-08-17 2007-03-01 Matsushita Electric Ind Co Ltd 画像符号化装置および画像符号化方法
ATE425516T1 (de) 2005-08-19 2009-03-15 Ericsson Telefon Ab L M Texturkomprimierung auf der basis zweier farbtöne mit modifizierter helligkeit
US7986844B2 (en) 2005-11-22 2011-07-26 Intel Corporation Optimized video compression using hashing function
US7956930B2 (en) 2006-01-06 2011-06-07 Microsoft Corporation Resampling and picture resizing operations for multi-resolution video coding and decoding
US8582905B2 (en) 2006-01-31 2013-11-12 Qualcomm Incorporated Methods and systems for rate control within an encoding device
CN101026761B (zh) 2006-02-17 2010-05-12 中国科学院自动化研究所 一种具有最小误差的快速变尺寸块匹配的运动估计方法
US7668382B2 (en) 2006-02-24 2010-02-23 Microsoft Corporation Block-based fast image compression
US7616816B2 (en) 2006-03-20 2009-11-10 Sarnoff Corporation System and method for mission-driven visual information retrieval and organization
EP2011342B1 (en) 2006-04-14 2017-06-28 Nxp B.V. Motion estimation at image borders
CA2655970A1 (en) 2006-07-07 2008-01-10 Telefonaktiebolaget L M Ericsson (Publ) Video data management
DE102007035204A1 (de) 2006-07-28 2008-02-07 Mediatek Inc. Videoverarbeitungs- und - betriebsvorrichtung
US8472527B2 (en) 2006-09-13 2013-06-25 Texas Instruments Incorporated Hierarchical motion estimation using original frame for sub-sampled reference
KR20150047639A (ko) 2006-09-22 2015-05-04 톰슨 라이센싱 다중 경로 비디오 코딩 및 디코딩을 위한 방법 및 장치
FR2906433B1 (fr) 2006-09-22 2009-02-27 Canon Kk Procedes et dispositifs de codage et de decodage d'images, programme d'ordinateur les mettant en oeuvre et support d'informaton permettant de les mettre en oeuvre
US20080084924A1 (en) 2006-10-05 2008-04-10 Donald Martin Monro Matching pursuits basis selection design
US8218641B2 (en) 2006-10-31 2012-07-10 Sony Computer Entertainment Inc. Picture encoding using same-picture reference for pixel reconstruction
US8218640B2 (en) 2006-10-31 2012-07-10 Sony Computer Entertainment Inc. Picture decoding using same-picture reference for pixel reconstruction
JP2008154015A (ja) 2006-12-19 2008-07-03 Hitachi Ltd 復号化方法および符号化方法
US7907783B2 (en) 2007-01-24 2011-03-15 Samsung Electronics Co., Ltd. Apparatus and method of matching symbols in a text image coding and decoding system
CN100527842C (zh) 2007-01-26 2009-08-12 清华大学 基于背景的运动估计编码方法
US8160150B2 (en) 2007-04-10 2012-04-17 Texas Instruments Incorporated Method and system for rate distortion optimization
JP2010525658A (ja) 2007-04-19 2010-07-22 トムソン ライセンシング イントラ予測のための適応参照画像データ生成
US7903873B2 (en) 2007-09-13 2011-03-08 Microsoft Corporation Textual image coding
CN101420606A (zh) 2007-10-23 2009-04-29 青岛海信电器股份有限公司 图像处理方法和装置
JP2009147807A (ja) 2007-12-17 2009-07-02 Fujifilm Corp 画像処理装置
CN101232619B (zh) 2008-01-25 2011-05-11 浙江大学 嵌入帧内编码块的视频编码方法
TWI375472B (en) 2008-02-04 2012-10-21 Ind Tech Res Inst Intra prediction method for luma block of video
CN101552924B (zh) 2008-03-31 2011-08-03 深圳市融创天下科技发展有限公司 一种用于视频编码的空间预测方法
KR101655444B1 (ko) 2008-04-11 2016-09-22 톰슨 라이센싱 변위된 인트라 예측과 템플릿 매칭을 위한 디블록 필터링
JP2009260473A (ja) 2008-04-14 2009-11-05 Canon Inc 色処理方法及び装置、プログラム、記録媒体
JP2010035137A (ja) 2008-07-01 2010-02-12 Sony Corp 画像処理装置および方法、並びにプログラム
US9445121B2 (en) 2008-08-04 2016-09-13 Dolby Laboratories Licensing Corporation Overlapped block disparity estimation and compensation architecture
US8213503B2 (en) 2008-09-05 2012-07-03 Microsoft Corporation Skip modes for inter-layer residual video coding and decoding
US8385404B2 (en) 2008-09-11 2013-02-26 Google Inc. System and method for video encoding using constructed reference frame
KR101306834B1 (ko) 2008-09-22 2013-09-10 에스케이텔레콤 주식회사 인트라 예측 모드의 예측 가능성을 이용한 영상 부호화/복호화 장치 및 방법
US8254704B2 (en) 2008-10-30 2012-08-28 Microsoft Corporation Remote computing platforms providing high-fidelity display and interactivity for clients
US8180165B2 (en) 2008-12-19 2012-05-15 Microsoft Corp. Accelerated screen codec
KR101359490B1 (ko) 2008-12-23 2014-02-10 에스케이 텔레콤주식회사 컬러 영상 부호화/복호화 방법 및 장치
TW201028018A (en) 2009-01-07 2010-07-16 Ind Tech Res Inst Encoder, decoder, encoding method and decoding method
EP2392130A4 (en) 2009-02-02 2013-04-03 Calgary Scient Inc TRANSMISSION OF IMAGE DATA
RU2420021C2 (ru) 2009-03-24 2011-05-27 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ сжатия изображений и видеопоследовательностей
EP2249571A1 (en) 2009-05-04 2010-11-10 Thomson Licensing SA Method and device for encoding an image frame comprising macroblocks
JP5566455B2 (ja) 2009-06-22 2014-08-06 トムソン ライセンシング 画像系列のビデオデータを符号化する方法及びエンコーダ並びに現在のブロックを復号化する方法及びデコーダ
JPWO2011004598A1 (ja) 2009-07-10 2012-12-20 パナソニック株式会社 動画像符号化方法、装置、プログラム、および集積回路
CN101626512A (zh) 2009-08-11 2010-01-13 北京交通大学 一种基于相关性优化准则的多描述视频编码方法及装置
ES2554237T3 (es) 2009-10-01 2015-12-17 Sk Telecom. Co., Ltd. Método y aparato para codificar/decodificar imagen usando una capa dividida
TWI566586B (zh) 2009-10-20 2017-01-11 湯姆生特許公司 一序列形象的現時區塊之寫碼方法和重建方法
WO2011048903A1 (ja) 2009-10-20 2011-04-28 シャープ株式会社 動画像符号化装置、動画像復号装置、および、データ構造
JP5321426B2 (ja) 2009-11-26 2013-10-23 株式会社Jvcケンウッド 画像符号化装置、画像復号化装置、画像符号化方法、及び画像復号化方法
KR101623124B1 (ko) 2009-12-03 2016-05-24 에스케이 텔레콤주식회사 비디오 인코딩 장치 및 그 인코딩 방법, 비디오 디코딩 장치 및 그 디코딩 방법, 및 거기에 이용되는 방향적 인트라 예측방법
EP2532159A1 (en) 2010-02-05 2012-12-12 Telefonaktiebolaget L M Ericsson (PUBL) Selecting predicted motion vector candidates
JP5375676B2 (ja) 2010-03-04 2013-12-25 富士通株式会社 画像処理装置、画像処理方法、および画像処理プログラム
CN102939751B (zh) 2010-03-31 2016-03-16 法国电信 通过向前运动补偿、对应的流和计算机程序实施预测的用于对图像序列进行编码和解码的方法和装置
CN105611304B (zh) 2010-04-09 2019-06-11 Lg电子株式会社 处理视频数据的方法和装置
US8644375B2 (en) 2010-04-09 2014-02-04 Sharp Laboratories Of America, Inc. Methods and systems for intra prediction
KR101752418B1 (ko) 2010-04-09 2017-06-29 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
US8619857B2 (en) 2010-04-09 2013-12-31 Sharp Laboratories Of America, Inc. Methods and systems for intra prediction
WO2011136896A1 (en) 2010-04-27 2011-11-03 Sony Corporation Boundary adaptive intra prediction for improving subjective video quality
KR20110123651A (ko) 2010-05-07 2011-11-15 한국전자통신연구원 생략 부호화를 이용한 영상 부호화 및 복호화 장치 및 그 방법
EP2583457A4 (en) 2010-06-21 2015-07-29 Thomson Licensing METHOD AND APPARATUS FOR ENCODING / DECODING IMAGE DATA
CN104853201A (zh) 2010-07-02 2015-08-19 数码士控股有限公司 用于帧内预测的编码/解码图像的装置和方法
KR101484281B1 (ko) 2010-07-09 2015-01-21 삼성전자주식회사 블록 병합을 이용한 비디오 부호화 방법 및 그 장치, 블록 병합을 이용한 비디오 복호화 방법 및 그 장치
PT2594076T (pt) 2010-07-14 2017-04-05 Ntt Docomo Inc Intra previsão de complexidade reduzida para codificação de vídeo
CN105163118B (zh) 2010-07-20 2019-11-26 Sk电信有限公司 用于解码视频信号的解码方法
EP4270957A3 (en) 2010-11-04 2024-06-19 GE Video Compression, LLC Picture coding supporting block merging and skip mode
US8787459B2 (en) 2010-11-09 2014-07-22 Sony Computer Entertainment Inc. Video coding methods and apparatus
KR101756442B1 (ko) 2010-11-29 2017-07-11 에스케이텔레콤 주식회사 인트라예측모드의 중복성을 최소화하기 위한 영상 부호화/복호화 방법 및 장치
US20120163457A1 (en) 2010-12-28 2012-06-28 Viktor Wahadaniah Moving picture decoding method, moving picture coding method, moving picture decoding apparatus, moving picture coding apparatus, and moving picture coding and decoding apparatus
US8767835B2 (en) 2010-12-28 2014-07-01 Mitsubishi Electric Research Laboratories, Inc. Method for coding videos using dictionaries
KR101739579B1 (ko) 2011-01-04 2017-05-24 에스케이 텔레콤주식회사 코딩 유닛 단위 병렬 인트라예측을 이용한 부호화/복호화 방법 및 장치
KR20120080122A (ko) 2011-01-06 2012-07-16 삼성전자주식회사 경쟁 기반의 다시점 비디오 부호화/복호화 장치 및 방법
US8913662B2 (en) 2011-01-06 2014-12-16 Qualcomm Incorporated Indicating intra-prediction mode selection for video coding using CABAC
SI3554079T1 (sl) 2011-01-07 2023-01-31 Lg Electronics Inc. Postopek za kodiranje video informacij, postopek za dekodiranje video informacij in dekodirna naprava za dekodiranje video informacij
US8737480B2 (en) 2011-01-14 2014-05-27 Motorola Mobility Llc Joint spatial and temporal block merge mode for HEVC
CN103404035B (zh) 2011-01-14 2017-05-10 Ge视频压缩有限责任公司 熵编码及解码方案
WO2012097376A1 (en) 2011-01-14 2012-07-19 General Instrument Corporation Spatial block merge mode
US8755437B2 (en) 2011-03-17 2014-06-17 Mediatek Inc. Method and apparatus for derivation of spatial motion vector candidate and motion vector prediction candidate
KR101912059B1 (ko) 2011-01-19 2018-10-25 르네사스 일렉트로닉스 가부시키가이샤 화상 부호화 장치 및 화상 복호 장치
US9532066B2 (en) 2011-01-21 2016-12-27 Qualcomm Incorporated Motion vector prediction
US8548057B2 (en) 2011-01-25 2013-10-01 Microsoft Corporation Video coding redundancy reduction
US9319716B2 (en) 2011-01-27 2016-04-19 Qualcomm Incorporated Performing motion vector prediction for video coding
US9288501B2 (en) 2011-03-08 2016-03-15 Qualcomm Incorporated Motion vector predictors (MVPs) for bi-predictive inter mode in video coding
US9788019B2 (en) 2011-03-09 2017-10-10 Hfi Innovation Inc. Method and apparatus of transform unit partition with reduced complexity
EP3139611A1 (en) 2011-03-14 2017-03-08 HFI Innovation Inc. Method and apparatus for deriving temporal motion vector prediction
HUE061938T2 (hu) 2011-03-21 2023-09-28 Lg Electronics Inc Mozgásvektor-prediktor kiválasztása
US8693547B2 (en) 2011-04-06 2014-04-08 Google Inc. Apparatus and method for coding using motion vector segmentation
MY185091A (en) 2011-04-21 2021-04-30 Samsung Electronics Co Ltd Method of quantizing linear predictive coding coefficients, sound encoding method, method of de-quantizing linear predictive coding coefficients, sound decoding method, and recording medium
WO2012146320A1 (en) 2011-04-29 2012-11-01 Telefonaktiebolaget L M Ericsson (Publ) Encoder, decoder and methods thereof for texture compression
US20120281760A1 (en) 2011-05-04 2012-11-08 Hyung Joon Kim Iterative Grid-Pattern Motion Search
US8971416B2 (en) 2011-05-05 2015-03-03 Vixs Systems, Inc Video decoder with vector processor and methods for use therewith
CN102137263B (zh) 2011-05-09 2013-07-03 松日数码发展(深圳)有限公司 基于cnm关键帧分类的分布式视频编码及解码方法
US20140085418A1 (en) 2011-05-16 2014-03-27 Sony Corporation Image processing device and image processing method
US20120294353A1 (en) 2011-05-16 2012-11-22 Mediatek Inc. Apparatus and Method of Sample Adaptive Offset for Luma and Chroma Components
CN102238391B (zh) 2011-05-25 2016-12-07 深圳市云宙多媒体技术有限公司 一种预测编码方法、装置
JP5727873B2 (ja) 2011-06-10 2015-06-03 日本放送協会 動きベクトル検出装置、符号化装置、及びこれらのプログラム
WO2012175003A1 (en) 2011-06-20 2012-12-27 Mediatek Singapore Pte. Ltd. Method and apparatus of chroma intra prediction with reduced line memory
WO2012174990A1 (en) 2011-06-24 2012-12-27 Mediatek Inc. Method and apparatus for removing redundancy in motion vector predictors
MX2013013483A (es) 2011-06-27 2014-02-27 Panasonic Corp Metodo de decodificacion de imagenes, metodo de codificacion de imagenes, aparato de decodificacion de imagenes, aparato de codificacion de imagenes y aparato de codificacion y decodificacion de imagenes.
US9060173B2 (en) 2011-06-30 2015-06-16 Sharp Kabushiki Kaisha Context initialization based on decoder picture buffer
US9516349B2 (en) 2011-07-12 2016-12-06 Futurewei Technologies, Inc. Pixel-based intra prediction for coding in HEVC
CN102223541B (zh) 2011-07-14 2013-07-03 北京工业大学 一种混合图像的编码方法
US9232237B2 (en) 2011-08-05 2016-01-05 Texas Instruments Incorporated Block-based parallel deblocking filter in video coding
EP2745519B1 (en) 2011-08-17 2017-09-27 MediaTek Singapore Pte Ltd. Method and apparatus for intra prediction using non-square blocks
KR101210892B1 (ko) 2011-08-29 2012-12-11 주식회사 아이벡스피티홀딩스 Amvp 모드에서의 예측 블록 생성 방법
US8804816B2 (en) 2011-08-30 2014-08-12 Microsoft Corporation Video encoding enhancements
US9578336B2 (en) 2011-08-31 2017-02-21 Texas Instruments Incorporated Hybrid video and graphics system with automatic content detection process, and other circuits, processes, and systems
US9451284B2 (en) 2011-10-10 2016-09-20 Qualcomm Incorporated Efficient signaling of reference picture sets
KR102014332B1 (ko) 2011-10-21 2019-08-26 노키아 테크놀로지스 오와이 비디오 코딩 방법 및 장치
GB2495990A (en) 2011-10-28 2013-05-01 Canon Kk Motion compensated image coding with omission of coding mode cost calculation for a motion predictor in a set.
US9484952B2 (en) 2011-11-03 2016-11-01 Qualcomm Incorporated Context state and probability initialization for context adaptive entropy coding
US10390046B2 (en) 2011-11-07 2019-08-20 Qualcomm Incorporated Coding significant coefficient information in transform skip mode
KR101674777B1 (ko) 2011-11-08 2016-11-09 구글 테크놀로지 홀딩스 엘엘씨 샘플 적응 오프셋 코딩 및/또는 시그널링을 위한 장치들 및 방법들
WO2013068564A1 (en) 2011-11-11 2013-05-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Effective wedgelet partition coding using spatial prediction
US20130121417A1 (en) 2011-11-16 2013-05-16 Qualcomm Incorporated Constrained reference picture sets in wave front parallel processing of video data
EP3739886A1 (en) 2011-11-18 2020-11-18 GE Video Compression, LLC Multi-view coding with efficient residual handling
US9883203B2 (en) 2011-11-18 2018-01-30 Qualcomm Incorporated Adaptive overlapped block motion compensation
MY164978A (en) 2011-11-25 2018-02-28 Sun Patent Trust Image processing method and image processing apparatus
RU2493670C2 (ru) 2011-12-15 2013-09-20 Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "МИЭТ" Способ блочной межкадровой компенсации движения для видеокодеков
WO2013096671A1 (en) 2011-12-20 2013-06-27 General Instrument Corporation Method and apparatus for efficient transform unit encoding
US20130163664A1 (en) 2011-12-22 2013-06-27 Qualcomm Incorporated Unified partition mode table for intra-mode coding
US9762904B2 (en) 2011-12-22 2017-09-12 Qualcomm Incorporated Performing motion vector prediction for video coding
US9900615B2 (en) 2011-12-28 2018-02-20 Microsoft Technology Licensing, Llc Representative motion information for temporal motion prediction in video encoding and decoding
WO2013102293A1 (en) 2012-01-04 2013-07-11 Mediatek Singapore Pte. Ltd. Improvements of luma-based chroma intra prediction
US9451252B2 (en) 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
US9749661B2 (en) 2012-01-18 2017-08-29 Qualcomm Incorporated Sub-streams for wavefront parallel processing in video coding
JP2013150173A (ja) 2012-01-19 2013-08-01 Sony Corp 画像処理装置および方法
JP2013150215A (ja) 2012-01-20 2013-08-01 Fujitsu Ltd 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム
US20130188719A1 (en) 2012-01-20 2013-07-25 Qualcomm Incorporated Motion prediction in svc using motion vector for intra-coded block
JP2015507899A (ja) 2012-01-20 2015-03-12 フラウンホッファー−ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ 並列処理を許容している符号化概念、トランスポートデマルチプレクサおよびビデオビットストリーム
US9210438B2 (en) 2012-01-20 2015-12-08 Sony Corporation Logical intra mode naming in HEVC video coding
US10244246B2 (en) 2012-02-02 2019-03-26 Texas Instruments Incorporated Sub-pictures for pixel rate balancing on multi-core platforms
WO2013128010A2 (en) 2012-03-02 2013-09-06 Canon Kabushiki Kaisha Method and devices for encoding a sequence of images into a scalable video bit-stream, and decoding a corresponding scalable video bit-stream
US8737824B1 (en) 2012-03-09 2014-05-27 Google Inc. Adaptively encoding a media stream with compound prediction
US9503720B2 (en) 2012-03-16 2016-11-22 Qualcomm Incorporated Motion vector coding and bi-prediction in HEVC and its extensions
JP2015515806A (ja) 2012-03-26 2015-05-28 ユークリッド・ディスカバリーズ・エルエルシーEuclid Discoveries,Llc コンテキストベースの映像符号化及び映像復号化
US20130258052A1 (en) 2012-03-28 2013-10-03 Qualcomm Incorporated Inter-view residual prediction in 3d video coding
US9838684B2 (en) 2012-04-11 2017-12-05 Qualcomm Incorporated Wavefront parallel processing for video coding
US20130272409A1 (en) 2012-04-12 2013-10-17 Qualcomm Incorporated Bandwidth reduction in video coding through applying the same reference index
WO2013159643A1 (en) 2012-04-24 2013-10-31 Mediatek Inc. Method and apparatus of motion vector derivation for 3d video coding
GB2501535A (en) 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
US9521410B2 (en) 2012-04-26 2016-12-13 Qualcomm Incorporated Quantization parameter (QP) coding in video coding
US9762903B2 (en) 2012-06-01 2017-09-12 Qualcomm Incorporated External pictures in video coding
US9621905B2 (en) 2012-06-29 2017-04-11 Qualcomm Incorporated Tiles and wavefront parallel processing
CN102752595B (zh) 2012-06-29 2014-07-09 香港应用科技研究院有限公司 用于深度图编码和解码的混合型跳过模式
US9602827B2 (en) 2012-07-02 2017-03-21 Qualcomm Incorporated Video parameter set including an offset syntax element
US9264713B2 (en) 2012-07-11 2016-02-16 Qualcomm Incorporated Rotation of prediction residual blocks in video coding with transform skipping
US9549182B2 (en) 2012-07-11 2017-01-17 Qualcomm Incorporated Repositioning of prediction residual blocks in video coding
US9467692B2 (en) 2012-08-31 2016-10-11 Qualcomm Incorporated Intra prediction improvements for scalable video coding
US20140071235A1 (en) 2012-09-13 2014-03-13 Qualcomm Incorporated Inter-view motion prediction for 3d video
ES2716579T3 (es) 2012-09-26 2019-06-13 Velos Media Int Ltd Procedimiento de decodificación de imágenes y aparato de decodificación de imágenes
JPWO2014050948A1 (ja) 2012-09-28 2016-08-22 シャープ株式会社 画像復号装置、画像復号方法及び画像符号化装置
WO2014053099A1 (en) 2012-10-03 2014-04-10 Mediatek Inc. Method and apparatus for motion information inheritance in three-dimensional video coding
US9357214B2 (en) 2012-12-07 2016-05-31 Qualcomm Incorporated Advanced merge/skip mode and advanced motion vector prediction (AMVP) mode for 3D video
US9615090B2 (en) 2012-12-28 2017-04-04 Qualcomm Incorporated Parsing syntax elements in three-dimensional video coding
US9826244B2 (en) 2013-01-08 2017-11-21 Qualcomm Incorporated Device and method for scalable coding of video information based on high efficiency video coding
CN103067716B (zh) 2013-01-10 2016-06-29 华为技术有限公司 深度图像的编解码方法和编解码装置
US9800857B2 (en) 2013-03-08 2017-10-24 Qualcomm Incorporated Inter-view residual prediction in multi-view or 3-dimensional video coding
US9516306B2 (en) 2013-03-27 2016-12-06 Qualcomm Incorporated Depth coding modes signaling of depth data for 3D-HEVC
US10904551B2 (en) 2013-04-05 2021-01-26 Texas Instruments Incorporated Video coding using intra block copy
CN103237226B (zh) 2013-04-07 2016-08-03 宁波大学 一种立体视频宏块丢失错误隐藏方法
WO2014166104A1 (en) 2013-04-12 2014-10-16 Mediatek Singapore Pte. Ltd. Removal of parsing dependency for illumination compensation
US11323747B2 (en) 2013-06-05 2022-05-03 Qualcomm Incorporated Residual differential pulse code modulation (DPCM) extensions and harmonization with transform skip, rotation, and scans
CN103281538B (zh) 2013-06-06 2016-01-13 上海交通大学 基于滚动哈希和块级别帧内预测的帧内编码方法
CN111800641B (zh) 2013-06-13 2023-08-25 上海天荷电子信息有限公司 同模式采用不同种类重构像素的图像编码解码方法和装置
US9300967B2 (en) 2013-06-19 2016-03-29 Apple Inc. Sample adaptive offset control
US10015515B2 (en) 2013-06-21 2018-07-03 Qualcomm Incorporated Intra prediction from a predictive block
GB2516422A (en) 2013-07-09 2015-01-28 Sony Corp Data encoding and decoding
US20150016533A1 (en) 2013-07-12 2015-01-15 Qualcomm Incorporated Intra motion compensation extensions
US9558567B2 (en) 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
US20150016516A1 (en) 2013-07-15 2015-01-15 Samsung Electronics Co., Ltd. Method for intra prediction improvements for oblique modes in video coding
JP6434012B2 (ja) 2013-07-24 2018-12-05 クゥアルコム・インコーポレイテッドQualcomm Incorporated 3d−hevcのための簡素化された高度動き予測
CN104378644B (zh) 2013-08-16 2020-12-04 上海天荷电子信息有限公司 定宽度变长度像素样值串匹配增强的图像压缩方法和装置
US9774879B2 (en) 2013-08-16 2017-09-26 Sony Corporation Intra-block copying enhancements for HEVC in-range-extension (RExt)
US10313682B2 (en) 2013-08-26 2019-06-04 Qualcomm Incorporated Determining regions when performing intra block copying
US9503715B2 (en) 2013-08-30 2016-11-22 Qualcomm Incorporated Constrained intra prediction in video coding
CN104427338B (zh) 2013-09-07 2019-11-05 上海天荷电子信息有限公司 一种使用块匹配的图像编码以及图像解码的方法和装置
US20150071357A1 (en) 2013-09-12 2015-03-12 Qualcomm Incorporated Partial intra block copying for video coding
AU2013228045A1 (en) 2013-09-13 2015-04-02 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data
US10009629B2 (en) 2013-10-11 2018-06-26 Sony Corporation Video coding system with search range and method of operation thereof
WO2015054812A1 (en) 2013-10-14 2015-04-23 Microsoft Technology Licensing, Llc Features of base color index map mode for video and image coding and decoding
CN105659602B (zh) 2013-10-14 2019-10-08 微软技术许可有限责任公司 用于视频和图像编码的帧内块复制预测模式的编码器侧选项
RU2654129C2 (ru) 2013-10-14 2018-05-16 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Функциональные возможности режима внутреннего предсказания с блочным копированием для кодирования и декодирования видео и изображений
US20150110181A1 (en) 2013-10-18 2015-04-23 Samsung Electronics Co., Ltd. Methods for palette prediction and intra block copy padding
US10291827B2 (en) 2013-11-22 2019-05-14 Futurewei Technologies, Inc. Advanced screen content coding solution
CN105981380B (zh) 2013-12-18 2019-08-20 寰发股份有限公司 利用调色板编码的编码视频数据区块的方法和装置
TWI536811B (zh) 2013-12-27 2016-06-01 財團法人工業技術研究院 影像處理方法與系統、解碼方法、編碼器與解碼器
US10469863B2 (en) 2014-01-03 2019-11-05 Microsoft Technology Licensing, Llc Block vector prediction in video and image coding/decoding
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
US9883197B2 (en) 2014-01-09 2018-01-30 Qualcomm Incorporated Intra prediction of chroma blocks using the same vector
US20150271515A1 (en) 2014-01-10 2015-09-24 Qualcomm Incorporated Block vector coding for intra block copy in video coding
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
GB2522844A (en) 2014-01-29 2015-08-12 Sony Corp Data encoding and decoding
US9699468B2 (en) 2014-02-10 2017-07-04 Microsoft Technology Licensing, Llc Adaptive screen and video coding scheme
CN106416243B (zh) 2014-02-21 2019-05-03 联发科技(新加坡)私人有限公司 利用基于帧内图像区块复制预测的视频编码方法
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
WO2015131325A1 (en) 2014-03-04 2015-09-11 Microsoft Technology Licensing, Llc Hash table construction and availability checking for hash-based block matching
EP3253059A1 (en) 2014-03-04 2017-12-06 Microsoft Technology Licensing, LLC Block flipping and skip mode in intra block copy prediction
EP3117608B1 (en) 2014-03-14 2021-05-12 HFI Innovation Inc. Method for palette management
WO2015140402A2 (en) 2014-03-17 2015-09-24 Nokia Technologies Oy Method and technical equipment for video encoding and decoding
US20150264348A1 (en) 2014-03-17 2015-09-17 Qualcomm Incorporated Dictionary coding of video content
US10432928B2 (en) 2014-03-21 2019-10-01 Qualcomm Incorporated Using a current picture as a reference for video coding
US10477232B2 (en) 2014-03-21 2019-11-12 Qualcomm Incorporated Search region determination for intra block copy in video coding
AU2014202682A1 (en) 2014-05-16 2015-12-03 Canon Kabushiki Kaisha Method, apparatus and system for copying a block of video samples
US11323733B2 (en) 2014-05-23 2022-05-03 Qualcomm Incorporated Predictor palette initialization in palette-based video coding
CN105493505B (zh) 2014-06-19 2019-08-06 微软技术许可有限责任公司 统一的帧内块复制和帧间预测模式
KR102402622B1 (ko) 2014-06-19 2022-05-27 브이아이디 스케일, 인크. 블록 벡터 도출을 이용하여 인트라 블록 복사 코딩을 위한 방법 및 시스템
KR101748620B1 (ko) 2014-06-20 2017-07-04 성균관대학교산학협력단 영상의 부호화/복호화 방법 및 이를 이용하는 장치
US9948949B2 (en) 2014-06-20 2018-04-17 Qualcomm Incorporated Intra block copy block vector signaling for video coding
US10477204B2 (en) 2014-06-20 2019-11-12 Sharp Kabushiki Kaisha Harmonized palette coding
US20150381994A1 (en) 2014-06-27 2015-12-31 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
US10412387B2 (en) 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
AU2014408228B2 (en) 2014-09-30 2019-09-19 Microsoft Technology Licensing, Llc Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US9591325B2 (en) 2015-01-27 2017-03-07 Microsoft Technology Licensing, Llc Special case handling for merged chroma blocks in intra block copy prediction mode
US10638140B2 (en) 2015-05-29 2020-04-28 Qualcomm Incorporated Slice level intra block copy and other video coding improvements
US11146821B2 (en) * 2016-05-25 2021-10-12 Arris Enterprises Llc JVET coding block structure with asymmetrical partitioning
JP2018032949A (ja) * 2016-08-23 2018-03-01 キヤノン株式会社 動きベクトル検出装置およびその制御方法
US10817747B2 (en) 2019-03-14 2020-10-27 Ubicquia Iq Llc Homography through satellite image matching

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004064396A1 (en) * 2003-01-10 2004-07-29 Thomson Licensing S.A. Decoder apparatus and method for smoothing artifacts created during error concealment
US20060274070A1 (en) * 2005-04-19 2006-12-07 Herman Daniel L Techniques and workflows for computer graphics animation system
RU2472305C2 (ru) * 2007-02-23 2013-01-10 Ниппон Телеграф Энд Телефон Корпорейшн Способ кодирования видео и способ декодирования видео, устройства для этого, программы для этого и носители хранения, на которых хранятся программы
US20110194613A1 (en) * 2010-02-11 2011-08-11 Qualcomm Incorporated Video coding with large macroblocks

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11265542B2 (en) 2019-01-16 2022-03-01 Telefonaktiebolaget Lm Ericsson (Publ) Uniform tile split with remainder
US11570435B2 (en) 2019-01-16 2023-01-31 Telefonaktiebolaget Lm Ericsson (Publ) Video coding comprising uniform tile split with remainder
RU2785998C1 (ru) * 2019-08-29 2022-12-15 ЭлДжи ЭЛЕКТРОНИКС ИНК. Оборудование и способ для кодирования изображения
RU2807256C2 (ru) * 2019-08-29 2023-11-13 ЭлДжи ЭЛЕКТРОНИКС ИНК. Оборудование и способ для кодирования изображения
US11962767B2 (en) 2019-08-29 2024-04-16 Lg Electronics Inc. Apparatus and method for coding image
RU2797358C1 (ru) * 2019-09-23 2023-06-02 Ханчжоу Хиквижен Диджитал Текнолоджи Ко., Лтд. Способ, устройство и аппарат для кодирования и декодирования

Also Published As

Publication number Publication date
US11284103B2 (en) 2022-03-22
US20150208084A1 (en) 2015-07-23
KR20160110961A (ko) 2016-09-23
MX361225B (es) 2018-11-29
CA2935156A1 (en) 2015-07-23
JP2017507554A (ja) 2017-03-16
US20230164349A1 (en) 2023-05-25
US11979600B2 (en) 2024-05-07
JP6931690B2 (ja) 2021-09-08
JP2020039167A (ja) 2020-03-12
US11595679B1 (en) 2023-02-28
KR102369117B1 (ko) 2022-02-28
US20230038995A1 (en) 2023-02-09
MX2016009128A (es) 2016-10-13
EP4329298A3 (en) 2024-04-03
US20230239495A1 (en) 2023-07-27
US11979601B2 (en) 2024-05-07
EP3095239B1 (en) 2024-02-28
BR112016015740A2 (pt) 2017-08-08
AU2015206771A1 (en) 2016-07-07
CN105917648B (zh) 2019-07-12
WO2015108793A1 (en) 2015-07-23
CN105917648A (zh) 2016-08-31
AU2015206771B2 (en) 2018-08-23
EP4329298A2 (en) 2024-02-28
EP3095239A1 (en) 2016-11-23

Similar Documents

Publication Publication Date Title
US11979600B2 (en) Encoder-side search ranges having horizontal bias or vertical bias
US11758162B2 (en) Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US20220132163A1 (en) Features of base color index map mode for video and image coding and decoding
CN107211155B (zh) 图内块拷贝预测模式下的合并的色度块的特殊情况处理
RU2683495C1 (ru) Нововведения в предсказание блочных векторов и оценку восстановленных значений отсчетов в области перекрытия
JP6462119B2 (ja) コンピューティングデバイス
US10368092B2 (en) Encoder-side decisions for block flipping and skip mode in intra block copy prediction
KR102197505B1 (ko) 비디오 및 이미지 코딩 및 디코딩에서의 해시 값을 갖는 블록의 표현
US20160277733A1 (en) Hash table construction and availability checking for hash-based block matching
KR20170021337A (ko) 해시 기반의 블록 매칭의 결과에 기초한 인코더 결정
KR20160075705A (ko) 비디오 및 이미지 코딩에서의 해시 기반 블록 매칭