Область техники, к которой относится изобретение
Варианты осуществления настоящего изобретения относятся к области обработки изображений, например, кодирования изображений и/или видеоизображений. В частности, изобретение относится к усовершенствованиям фильтра удаления блочности.
Уровень техники
Кодирование изображения (кодирование и декодирование) используется в широком спектре приложений цифрового изображения, например, для цифрового телевещания, передачи видео через интернет и мобильные сети, диалоговых приложений в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Blu-ray диски, системы сбора и редактирования видеоконтента и видеокамеры приложений безопасности.
С момента разработки основанного на блоках гибридного подхода к кодированию видео в стандарте H.261 в 1990 году были разработаны новые способы и инструменты кодирования видео, которые легли в основу новых стандартов кодирования видео. Одной из целей большинства стандартов кодирования видео было снижение скорости передачи данных по сравнению с его предшественником без ущерба для качества изображения. Дополнительные стандарты кодирования видео содержат MPEG-1 видео, MPEG-2 видео, ITU-T H.262/MPEG-2, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, усовершенствованное кодирование видео. (AVC), ITU-T H.265, высокоэффективное кодирование видео (HEVC) и расширения, например, масштабируемость и/или трехмерные (3D) расширения этих стандартов.
Общей чертой схем кодирования изображений на основе блоков является то, что по краям блоков могут появляться краевые артефакты. Эти артефакты возникают из-за независимого кодирования блоков кодирования. Эти краевые артефакты часто легко видны пользователю. Целью блочного кодирования изображений является уменьшение краевых артефактов ниже порогового значения видимости. Это достигается путем фильтрации удаления блочности. Такая фильтрация удаления блочности выполняется, с одной стороны, на стороне декодирования для удаления видимых краевых артефактов, но также и на стороне кодирования для предотвращения краевых артефактов при кодировании изображения. Фильтрация удаления блочности может быть сложной задачей, особенно, для кодирования с небольшими размерами блоков.
Раскрытие сущности изобретения
Ввиду вышеупомянутых технических задач настоящее изобретение направлено на улучшение обычной фильтрации удаления блочности. Настоящее изобретение предлагает устройство для обработки изображений, которое может выполнять фильтрацию удаления блочности с уменьшенным временем обработки. Кроме того, удаление блочности должно быть эффективным и точным.
Варианты осуществления изобретения определяются признаками независимых пунктов формулы изобретения, и дополнительные преимущественные реализации вариантов осуществления определяются признаками зависимых пунктов формулы изобретения.
Согласно первому аспекту изобретения обеспечивается устройство обработки изображений. Устройство обработки изображения предназначено для использования в кодере изображения и/или декодере изображения для удаления блочности края блока между первым блоком кодирования и вторым блоком кодирования изображения, закодированного с помощью блочного кода. Первый блок кодирования имеет размер SA блока, перпендикулярный краю блока, тогда как второй блок кодирования имеет размер SB блока, перпендикулярный краю блока. Устройство обработки изображений содержит фильтр для фильтрации края блока, выполненный с возможностью
- модифицировать не более, чем количество MA значений выборок первого блока кодирования, смежного с краем блока, в качестве выходных значений первого фильтра,
- модифицировать не более, чем количество МВ значений выборок второго блока кодирования, смежного с краем блока, в качестве выходных значений второго фильтра,
- использовать не более, чем количество IA значений выборок первого блока кодирования, смежного с краем блока, в качестве входных значений первого фильтра для вычисления выходных значений первого фильтра и/или выходных значений второго фильтра,
- использовать не более, чем количество IB значений выборок второго блока кодирования, смежного с краем блока, в качестве входных значений второго фильтра для вычисления выходных значений первого фильтра и/или выходных значений второго фильтра.
где IA ≠ IB и MA ≠ MB.
Это позволяет по-разному обрабатывать две стороны края блока и, следовательно, гарантирует, что удаление блочности может выполняться параллельно, независимо от размера блока кодирования. Таким образом, время обработки для фильтрации удаления блочности значительно сокращается.
Следует отметить, что устройство обработки изображений может включать в себя процессор, выполненный с возможностью выполнять фильтрацию и модификацию.
Преимущественно, SA ≠ SB.
Это гарантирует, что, в частности, удаление блочности края между блоками с разными размерами блоков кодирования может быть выполнено параллельно.
Предпочтительно, устройство обработки изображения содержит определитель, выполненный с возможностью определять, должен ли край блока фильтроваться и/или должна ли выполняться сильная фильтрация или слабая фильтрация, на основании
- не более, чем количество DA значений выборок первого блока кодирования, смежного с краем блока, в качестве значений решения первого фильтра, и
- не более, чем количество DB значений выборок второго блока кодирования, смежного с краем блока, в качестве значений решения второго фильтра.
Это позволяет очень точно и параллельно определять, на каких краях фактически выполняется удаление блочности и на каких краях удаление блочности не выполняется.
Преимущественно, входные значения первого фильтра идентичны значениям решения первого фильтра. Входные значения второго фильтра идентичны значениям решения второго фильтра.
Это дополнительно увеличивает эффективность удаления блочности.
Предпочтительно, если SA = 4, фильтр выполнен с возможностью устанавливать
- IA на 3, и
- МА на 1.
Таким образом, обеспечивается очень эффективное удаление блочности.
Преимущественно, если SB = 8, фильтр выполнен с возможностью устанавливать
- IB на 4, и
- МВ на 3 или 4.
Это обеспечивает особенно точное и параллельное удаление блочности.
Предпочтительно, если SB = 16, фильтр выполнен с возможностью установить
- IB на 8, и
- МВ на 7 или 8.
Тем самым, достигается дополнительное повышение точности удаления блочности.
Преимущественно, если SB> 4, фильтр выполнен с возможностью установить
- IB на SB/2 и
- MB в SB/2 или SB/2 - 1.
Тем самым, возможно особенно эффективное удаление блочности.
Предпочтительно, если SA = 8, фильтр выполнен с возможностью устанавливать
- IA на SA/2 и
- MA на SA/2 или SA/2 - 1.
Тем самым, достигается дополнительное повышение эффективности и точности удаления блочности.
Предпочтительно, если SB> 8, фильтр выполнен с возможностью устанавливать
- IB на SB/2 и
- MB на SB/2 или SB/2 - 1.
Это дополнительно увеличивает эффективность и точность удаления блочности.
Преимущественно, если край блока является горизонтальным краем блока и, если край блока перекрывается с блоком дерева кодирования, CTU, краем блока изображения и, если второй блок кодирования является текущим блоком и первый блок кодирования является смежным блоком упомянутого текущего блока, фильтр выполнен с возможностью устанавливать
- IA на 4, и
- MA на 3 или 4.
Это значительно сокращает объем линейной памяти, необходимый для хранения значений пикселей предшествующих блоков кодирования, необходимых для выполнения удаления блочности на горизонтальном краю блока кодирования.
Согласно второму аспекту изобретения обеспечивается кодер для кодирования изображения, содержащий ранее описанное устройство обработки изображения.
Это позволяет очень эффективно и точно кодировать изображение.
Согласно третьему аспекту изобретения предоставлен декодер для декодирования изображения, содержащий ранее описанное устройство обработки изображения.
Это позволяет особенно точно и эффективно декодировать изображение.
Согласно четвертому аспекту изобретения обеспечивается способ удаления блочности для удаления блочности края блока между первым блоком кодирования и вторым блоком кодирования изображения, закодированного с помощью блочного кода, при кодировании изображения и/или декодировании изображения. Первый блок кодирования имеет размер SA блока, перпендикулярный краю блока. Второй блок кодирования имеет размер SB блока, перпендикулярный краю блока. Декодирование содержит фильтрацию, содержащую:
- модификацию не более, чем количество MA значений выборок первого блока кодирования, смежного с краем блока, в качестве выходных значений первого фильтра,
- модификацию не более, чем количество МВ значений выборок второго блока кодирования, смежного с краем блока, в качестве выходных значений второго фильтра,
- использование не более, чем количество IA значений выборок первого блока кодирования, смежного с краем блока, в качестве входных значений первого фильтра для вычисления выходных значений первого фильтра и/или выходных значений второго фильтра,
- использование не более, чем количество IB значений выборок второго блока кодирования, смежного с краем блока, в качестве входных значений второго фильтра для вычисления выходных значений первого фильтра и/или выходных значений второго фильтра.
где, IA ≠ IB и MA ≠ MB.
Это обеспечивает особенно точное и эффективное удаление блочности.
Преимущественно, SA ≠ SB.
Это гарантирует, что, в частности, может быть выполнено удаление блочности края между блоками с разными размерами блоков кодирования параллельно.
Предпочтительно, способ содержит определение, должен ли край блока быть отфильтрован и/или должна ли выполняться сильная фильтрация или слабая фильтрация, на основании
- не более, чем количество DA значений выборок первого блока кодирования, смежного с краем блока, в качестве значений решения первого фильтра, и
- не более, чем количество DB значений выборок второго блока кодирования, смежного с краем блока, в качестве значений решения второго фильтра.
Это позволяет очень точно и параллельно определять, на каких краях действительно выполнено удаление блочности, и на каких краях удаление блочности не выполнено.
Преимущественно, входные значения первого фильтра идентичны значениям решения первого фильтра. Входные значения второго фильтра идентичны значениям решения второго фильтра.
Это дополнительно увеличивает эффективность удаления блочности.
Предпочтительно, если SA = 4, фильтрация использует
- IA = 3, и
- МА = 1.
Таким образом, обеспечивается очень высокая эффективность удаления блочности.
Преимущественно, если SB = 8, фильтрация использует
- IB = 4, и
- МВ = 3 или 4.
Это обеспечивает особенно точное и параллельное удаление блочности.
Предпочтительно, если SB = 16, фильтрация использует
- IB = 8, и
- МВ = 7 или 8.
Тем самым, достигается дополнительное повышение точности удаления блочности.
Преимущественно, если SB> 4, фильтрация использует
- IB = SB/2, и
- MB = SB/2 или SB/2 - 1.
Тем самым, возможно особенно эффективное удаление блочности.
Предпочтительно, если SA = 8, фильтрация использует
- IA = SA/2, и
- MA = SA/2 или SA/2 - 1.
Тем самым, достигается дополнительное повышение эффективности и точности удаления блочности.
Предпочтительно, если SB> 8, фильтрация использует
- IB = SB/2, и
- MB = SB/2 или SB/2 - 1.
Это дополнительно увеличивает эффективность и точность удаления блочности.
Преимущественно, если край блока является горизонтальным краем блока и, если край блока перекрывается с блоком дерева кодирования, CTU, краем блока изображения и, если второй блок кодирования является текущим блоком и первый блок кодирования является смежным блоком упомянутого текущего блока, фильтрация использует
- IA = 4, и
- MA = 3 или 4.
Это значительно сокращает объем линейной памяти, необходимый для хранения значений пикселей предшествующих блоков кодирования, необходимых для выполнения удаления блочности на горизонтальном краю блока кодирования.
Согласно пятому аспекту изобретения обеспечивается способ кодирования для кодирования изображения, содержащий ранее показанный способ удаления блочности.
Это позволяет очень эффективно и точно кодировать изображение.
Согласно шестому аспекту изобретения обеспечивается способ декодирования для кодирования изображения, содержащий ранее показанный способ удаления блочности.
Это позволяет очень эффективно и точно декодировать изображение.
Согласно седьмому аспекту изобретения обеспечивается компьютерный программный продукт с программным кодом для выполнения ранее показанного способа, когда компьютерная программа выполняется на компьютере.
Подробности одного или более вариантов осуществления изложены на прилагаемых чертежах и в описании ниже. Другие признаки, объекты и преимущества будут очевидны из описания, чертежей и формулы изобретения.
Краткое описание чертежей
В следующих вариантах осуществления изобретения настоящее изобретение описано более подробно со ссылкой на прилагаемые чертежи, на которых:
Фиг.1 является блок-схемой, показывающей пример кодера видео, выполненного с возможностью реализации вариантов осуществления изобретения;
Фиг.2 является блок-схемой, показывающей примерную структуру декодера видео, выполненного с возможностью реализации вариантов осуществления изобретения;
Фиг.3 является блок-схемой, показывающей пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения;
Фиг.4 показывает три примерных блока кодирования;
Фиг. 5 показывает первый вариант осуществления устройства обработки изображений согласно первому аспекту изобретения;
Фиг.6 показывает первый вариант осуществления кодера согласно настоящему изобретению согласно второму аспекту изобретения;
Фиг.7 показывает первый вариант осуществления предлагаемого декодера согласно третьему аспекту изобретения;
Фиг.8 показывает второй вариант осуществления устройства обработки изображений согласно первому аспекту изобретения;
Фиг.9 показывает три примерных блока кодирования, включающих в себя различные значения выборки, используемые для фильтрации удаления блочности и модифицированные для фильтрации удаления блочности, как используется в третьем варианте осуществления устройства обработки изображений первого аспекта изобретения;
Фиг.10 показывает блок-схему алгоритма, изображающую примерный процесс увеличения эффективности фильтрации удаления блочности;
Фиг. 11 показывает три примерных блока кодирования и соответствующие значения выборки, используемые и модифицированные во время фильтрации с помощью примерного способа, показанного на фиг. 7;
Фиг. 12 показывает изображение, включающее в себя несколько блоков кодирования, которое фильтруется по четвертому варианту осуществления первого аспекта изобретения;
Фиг.13 показывает два примерных блока кодирования, соответствующих блокам кодирования примерного изображения по фиг.12, и значения выборок, используемые и модифицированные во время фильтрации по пятому варианту осуществления устройства для обработки изображений согласно первому аспекту изобретения, и
Фиг. 14 показывает блок-схему алгоритма варианта осуществления способа обработки изображения согласно четвертому аспекту изобретения.
В дальнейшем идентичные ссылочные позиции относятся к идентичным или, по меньшей мере, функционально эквивалентным элементам. Частично на разных чертежах использовались разные ссылочные позиции, относящиеся к одним и тем же объектам.
Осуществление изобретения
Прежде всего приведено описание общей концепции кодирования изображения на фиг.1-3. На фиг.4 показан дефект обычного фильтра удаления блочности. На фиг. 5-13 показаны и описаны реализации и функции различных вариантов осуществления предлагаемого устройства. Наконец, что касается фиг.14, показан и описан вариант осуществления способа по настоящему изобретению. Подобные объекты и ссылочные позиции на разных чертежах частично опущены.
В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть настоящего изобретения и показывают в качестве иллюстрации конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых могут использоваться варианты осуществления настоящего изобретения. Очевидно, что варианты осуществления изобретения могут использоваться в других аспектах и содержать структурные или логические изменения, не изображенные на чертежах. Поэтому нижеследующее подробное описание не следует рассматривать в ограничительном смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения.
Например, понятно, что настоящее изобретение в связи с описанным способом также может быть верным для соответствующего устройства или системы, выполненной с возможностью выполнять способ и наоборот. Например, если описан один или несколько конкретных этапов способа, соответствующее устройство может включать в себя один или несколько блоков, например, функциональные блоки для выполнения описанного одного или множества этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или несколько из множества этапов), даже если такой один или несколько блоков не описаны и не проиллюстрированы явно на чертежах. С другой стороны, например, если конкретное устройство описано на основании одного или множества модулей, например, функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества модулей (например, один этап, выполняющий функциональные возможности одного или множества модулей, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из множество блоков), даже если такой один или множество этапов явно не описаны или не проиллюстрированы на чертежах. Кроме того, следует понимать, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.
Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина «изображение» могут использоваться термины «кадр» или «изображение» как синонимы в области кодирования видео. Кодирование видео состоит из двух частей: кодирования видео и декодирования видео. Кодирование видео выполняется на стороне источника, обычно содержащее обработку (например, путем сжатия) исходных видеоизображений для уменьшения количества данных, необходимых для представления видеоизображений (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне назначения и обычно включает в себя обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеоизображений (или изображений в целом, как будет объяснено позже), следует понимать как относящиеся как к «кодированию», так и «декодированию» видеоизображений. Комбинация части кодирования и части декодирования также называется CODEC (COding и DECoding).
В случае кодирования видео без потерь исходные видеоизображения могут быть восстановлены, т.е. восстановленные видеоизображения имеют то же качество, что и исходные видеоизображения (при условии отсутствия потерь при передаче или других потерь данных во время хранения или передачи). В случае кодирования видео с потерями, выполняется дополнительное сжатие, например, посредством квантования, чтобы уменьшить количество данных, представляющих видеоизображения, которые не могут быть полностью восстановлены в декодере, то есть, качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.
Несколько стандартов кодирования видео, начиная с H.261, принадлежат к группе «гибридных видеокодеков с потерями» (т.е. объединяют пространственное и временное предсказание в области выборки и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть, кодируется на уровне блока (video block), например, используя пространственное (внутреннее изображение) предсказание и временное (внутреннее изображение) предсказание для генерирования блока предсказания, вычитание блока предсказания из текущего блока (блок, который в настоящее время обрабатывается/должен быть обработан) для получения остаточного блока, преобразование остаточного блока и квантование остаточного блока в области преобразования для уменьшения объема данных, которые должны быть переданы (сжатие), тогда как в декодере по сравнению с кодером выполняется обратная обработка закодированного или сжатого блока для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что оба будут генерировать идентичные предсказания (например, внутренне и внешнее предсказание) и/или восстанавливать для обработки, то есть, кодирования, последующих блоков.
Поскольку обработка видеоизображения (также называемая обработкой движущегося изображения) и обработка неподвижного изображения (термин обработка содержит кодирование) имеют много общих концепций и технологий или инструментов, в дальнейшем термин «изображение» используется для обозначения видеоизображения видеопоследовательность (как объяснено выше) и/или неподвижное изображение, чтобы избежать ненужных повторов и различий между видеоизображениями и неподвижными изображениями, где это не обязательно. Если описание относится только к неподвижным изображениям (или неподвижным изображениям), то следует использовать термин «неподвижное изображение».
В следующих вариантах осуществления кодера 100, декодера 200 и системы 300 кодирования описываются на основании фиг.1-3 перед более подробным описанием вариантов осуществления изобретения на основании фиг.4-14.
Фиг.3 является концептуальной или схематической блок-схемой, иллюстрирующей вариант осуществления системы 300 кодирования, например, система 300 кодирования изображений, в которой система 300 кодирования содержит устройство 310 источника, выполненное с возможностью предоставлять кодированные данные 330, например, закодированное изображение 330, например, в устройство 320 назначения для декодирования закодированных данных 330.
Устройство 310 источника содержит кодер 100 или блок 100 кодирования и может дополнительно, т.е. возможно, содержать источник 312 изображения, блок 314 предварительной обработки, например, блок 314 предварительной обработки изображения и интерфейс связи или блок 318 связи.
Источник 312 изображения может содержать или может быть устройством захвата изображения любого типа, например, для захвата реального изображения и/или устройством генерирования изображения любого типа, например, процессором компьютерной графики для генерирования компьютерного анимированного изображения, или устройством любого типа для получения и/или предоставления реального изображения, компьютерного анимированного изображения (например, отображаемого контента, изображения виртуальной реальности (VR)) и/или любой их комбинации (например, изображения дополненной реальности (AR)). В дальнейшем все эти виды изображений и любые другие изображения будут называться «изображение» или «кадр», если специально не указано иное в то время, как предшествующее пояснения в отношении термина «изображение» охватывают «видеоизображения» и «неподвижные изображения» остаются в силе, если явно не указано иное.
(Цифровое) изображение представляет собой или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может называться пикселем (сокращенная форма элемента изображения) или элементом. Количество выборок в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонентов, то есть, изображение может быть представлено или включать в себя три массива выборок. В формате RGB или цветовом пространстве изображение содержит соответствующий массив выборок красного, зеленого и синего цветов. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости/цветности или цветовом пространстве, например YCbCr, который содержит компонент яркости, обозначенный Y (иногда вместо него также используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (или для краткости, яркость) представляет яркость или интенсивность уровня серого (например, как в полутоновом изображении), в то время как два компонента (для краткости, цветность) Cb и Cr цветности представляют компоненты информации цветности или цвета. Соответственно, изображение в формате YCbCr содержит массив выборок яркости из значений (Y) выборок яркости и два массива выборок цветности значений (Cb и Cr) цветности. Изображения в формате RGB могут быть преобразованы в формат YCbCr и наоборот, этот процесс также известен как преобразование цвета. Если изображение является монохромным, оно может содержать только массив выборок яркости.
Источник 312 изображения может быть, например, камерой для захвата изображения, памятью, например. память изображения, содержащая или хранящая ранее захваченное или сгенерированное изображение, и/или интерфейс любого типа (внутренний или внешний) для получения или приема изображения. Камера может быть, например, локальной или интегрированной камерой, интегрированной в устройство источника, память может быть локальной или интегрированной памятью, например, интегрировано в устройство источника. Интерфейс может быть, например, внешним интерфейсом для приема изображения от внешнего источника видео, например, внешнего устройства захвата изображения, такого как камера, внешняя память, или внешнего устройства генерирования изображения, например, внешнего компьютерного графического адаптера, процессора, компьютера или сервера. Интерфейс может быть любым, например, проводным или беспроводным интерфейсом, оптическим интерфейсом в соответствии с любым запатентованным или стандартизованным протоколом интерфейса. Интерфейс для получения данных 312 изображения может быть тем же интерфейсом, что и интерфейс 318 связи, или его частью.
В отличие от блока 314 предварительной обработки и обработки, выполняемой блоком 314 предварительной обработки, изображение или данные 313 изображения также могут называться необработанным изображением или данными 313 необработанного изображения.
Блок 314 предварительной обработки выполнен с возможностью принимать (необработанные) данные 313 изображения и выполнять предварительную обработку данных 313 изображения для получения предварительно обработанного изображения 315 или предварительно обработанных данных 315 изображения. Предварительная обработка выполняется блоком 314 предварительной обработки может, например, содержать обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или устранение шумов.
Кодер 100 выполнен с возможностью принимать предварительно обработанные данные 315 изображения и предоставлять кодированные данные 171 изображения (дополнительно подробности будут описаны, например, на основании фиг.1).
Интерфейс 318 связи устройства 310 источника может быть выполнен с возможностью принимать данные 171 закодированного изображения и непосредственно передавать их в другое устройство, например, устройство 320 назначения или любое другое устройство для хранения или прямого восстановления или для обработки данных 171 кодированного изображения, соответственно, до сохранения кодированных данных 330 и/или передачи кодированных данных 330 в другое устройство, например, устройство 320 назначения или любое другое устройство для декодирования или сохранения.
Устройство 320 назначения содержит декодер 200 или блок 200 декодирования и может дополнительно, т.е. возможно, содержать интерфейс связи или блок 322 связи, блок 326 постобработки и устройство 328 отображения.
Интерфейс 322 связи устройства 320 назначения выполнен с возможностью принимать кодированные данные 171 изображения или кодированные данные 330, например, непосредственно из устройства 310 источника или из любого другого источника, например, память, например, память данных закодированного изображения.
Интерфейс 318 связи и интерфейс 322 связи могут быть выполнены с возможностью передавать, соответственно, принятые данные 171 закодированного изображения или закодированные данные 330 через прямую линию связи между устройством 310 источника и устройством 320 назначения, например, через прямое проводное или беспроводное соединение или через любую сеть, например, проводную или беспроводную сеть или любой их комбинации, или любую частную и общественную сеть, или любой их комбинации.
Интерфейс 318 связи может быть, например, выполнен с возможностью упаковывать данные 171 закодированного изображения в соответствующий формат, например, пакеты для передачи по каналу связи или сети связи и могут дополнительно содержать защиту от потери данных и восстановление после потери данных.
Интерфейс 322 связи, образующий аналог интерфейса 318 связи, может быть, например, выполнен с возможностью распаковки закодированных данных 330 для получения данных 171 закодированного изображения, а также может быть выполнен с возможностью выполнять защиту от потери данных и восстановления после потери данных, например, содержащую маскирование ошибок.
И интерфейс 318 связи, и интерфейс 322 связи могут быть сконфигурированы как однонаправленные интерфейсы связи, как показано стрелкой для данных 330 закодированного изображения на фиг. 3, указывающей от устройства 310 источника к устройству 320 назначения, или как двунаправленные интерфейсы связи, и могут быть выполнены с возможностью, например, отправлять и принимать сообщения, например, для установки соединения, подтверждения и/или повторной отправки потерянных или задержанных данных, включающие в себя данные изображения, и обмена любой другой информацией, относящейся к каналу связи и/или передаче данных, например, передача данных закодированного изображения.
Декодер 200 выполнен с возможностью принимать данные 171 кодированного изображения и предоставлять данные 231 декодированного изображения или декодированного изображения 231 (дополнительные подробности будут описаны, например, со ссылкой на фиг. 2).
Процессор 326 постобработки устройства 320 назначения выполнен с возможностью выполнять последующую обработку данных 231 декодированного изображения, например, декодированного изображения 231, чтобы получить данные 327 изображения после обработки, например, постобработанное изображение 327. Постобработка, выполняемая блоком 326 постобработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку, или любую другую обработку, например, для подготовки данных 231 декодированного изображения для отображения, например, с помощью устройства 328 отображения.
Устройство 328 отображения устройства 320 назначения выполнено с возможностью принимать данные 327 постобработанного изображения для отображения изображения, например, пользователю или зрителю. Устройство 328 отображения может быть или содержать любой вид дисплея для представления восстановленного изображения, например, встроенный или внешний дисплей или монитор. Дисплеи могут, например, содержать электронно-лучевую трубку (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или любые другие дисплеи… луча, голограммы (3D),…
Хотя фиг. 3 изображает устройство 310 источника и устройство 320 назначения как отдельные устройства, варианты осуществления устройств также могут содержать оба или обе функциональные возможности, устройство 310 источника или соответствующие функциональные возможности и устройство 320 назначения или соответствующие функциональные возможности. В таких вариантах осуществления устройство 310 источника или соответствующие функциональные возможности и устройство 320 назначения или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любой их комбинации.
Как будет очевидно для специалиста на основании описания, наличие и (точное) разделение функциональных возможностей различных блоков или функций в устройстве 310 источника и/или устройстве 320 назначения, как показано на фиг.3, может варьироваться в зависимости от фактического устройства и приложения.
Следовательно, устройство 310 источника и устройство 320 назначения, как показано на фиг. 3, представляют собой просто примерные варианты осуществления изобретения, и варианты осуществления изобретения не ограничиваются теми, которые показаны на фиг. 3.
Устройство 310 источника и устройство 320 назначения могут содержать любое из широкого диапазона устройств, включающие в себя любые виды портативных или стационарных устройств, например, ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые приставки, устройства потоковой передачи видео, устройства приемника вещания и т.п. (также серверы и рабочие станции для крупномасштабного профессионального кодирования/декодирования, например, сетевые объекты) и могут не использовать операционную систему любого типа.
На фиг.1 показана схематическая/концептуальная блок-схема варианта осуществления кодера 100, например, кодера 100 изображений, который содержит вход 102, блок 104 вычисления остаточной величины, блок 106 преобразования, блок 108 квантования, блок 110 обратного квантования и блок 112 обратного преобразования, блок 114 восстановления, буфер 118, контурный фильтр 120, буфер 130 декодированных изображений (DPB), блок 160 предсказания [блок 142 внешней оценки, блок 144 внешнего предсказания, блок 152 внутренней оценки, блок 154 внутреннего предсказания], блок 162 выбора режима, блок 170 энтропийного кодирования и выход 172. Кодер 100 видео, показанный на фиг.1, также может называться гибридным кодером видео или кодером видео согласно гибридному кодеку видео.
Например, блок 104 вычисления остаточной величины, блок 106 преобразования, блок 108 квантования и блок 170 энтропийного кодирования образуют прямой тракт сигнала кодера 100, тогда как, например, блок 110 обратного квантования, блок 112 обратного преобразования, блок 114 восстановления, буфер 118, контурный фильтр 120, буфер 130 декодированных изображений (DPB), блок 144 внешнего предсказания и блок 154 внутреннего предсказания образуют обратный тракт сигнала кодера, в котором обратный тракт сигнала кодера соответствует тракту сигнала декодера (см. декодер 200 на фиг. 2).
Кодер выполнен с возможностью принимать, например, посредством входа 102, изображение 101 или блок 103 изображения изображения 101, например, изображение последовательности изображений, образующих видео или видеопоследовательность. Блок 103 изображения также может называться текущим блоком изображения или блоком изображения, подлежащим кодированию, и изображение 101 является текущим изображением или изображением, которое нужно кодировать (в частности, при кодировании видео, чтобы отличать текущее изображение от других изображений, например, ранее закодированных и/или декодированные изображения одной и той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущее изображение).
Варианты осуществления кодера 100 могут содержать блок разделения (не изображен на фиг.1), например, который также может называться блоком разделения изображения, выполненный с возможностью разделять изображение 103 на множество блоков, например, блоки, подобные блоку 103, обычно на множество неперекрывающихся блоков. Блок разделения может быть выполнен с возможностью использования одного и того же размера блока для всех изображений видеопоследовательности и соответствующей сетки, определяющей размер блока, или для изменения размера блока между изображениями, подмножествами или группами изображений и разделения каждого изображения на соответствующие блоки.
Подобно изображению 101, блок 103 снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 101. Другими словами, блок 103 может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 101) или три массива выборок (например, массив яркости и два массива цветности в случае цветного изображения 101) или любое другое количество и/или тип массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлении (или по оси) блока 103 определяет размер блока 103.
Кодер 100, как показано на фиг.1, выполнен с возможностью кодировать изображение 101 блок за блоком, например, кодирование и предсказание выполняется в блоке 103.
Блок 104 вычисления остаточной величины выполнен с возможностью вычислять остаточный блок 105 на основании блока 103 изображения и блока 165 предсказания (дополнительные подробности о блоке 165 предсказания предоставлены позже), например, путем вычитания значений выборок блока 165 предсказания из значений выборок блока 103 изображения, выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 105 в области выборки.
Блок 106 преобразования выполнен с возможностью применять преобразование, например, пространственно-частотное преобразование или линейное пространственное преобразование, например, дискретное косинусное преобразование (DCT) или дискретное синусоидальное преобразование (DST) на значениях выборок остаточного блока 105 для получения преобразованных коэффициентов 107 в области преобразования. Преобразованные коэффициенты 107 могут также называться преобразованными остаточными коэффициентами и представлять остаточный блок 105 в области преобразования.
Блок 106 преобразования может быть выполнен с возможностью применять целочисленные аппроксимации DCT/DST, такие как базовые преобразования, определенные для HEVC/H.265. По сравнению с ортонормированным преобразованием DCT, такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, в процессе преобразования применяются дополнительные коэффициенты масштабирования как часть процесса преобразования. Коэффициенты масштабирования обычно выбираются на основании определенных ограничений, таких как коэффициенты масштабирования, являющиеся степенью два для операции сдвига, разрядность преобразованных коэффициентов, компромисс между точностью и затратами на реализацию и т.д. Могут быть определены конкретные коэффициенты масштабирования, например, указанные для обратного преобразования, например, блоком 212 обратного преобразования в декодере 200 (и для соответствующего обратного преобразования, например, блоком 112 обратного преобразования в кодере 100) и соответствующие коэффициенты масштабирования для прямого преобразования, например, с помощью блока 106 преобразования в кодере 100, соответственно.
Блок 108 квантования выполнен с возможностью квантования преобразованных коэффициентов 107, чтобы получить квантованные коэффициенты 109, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 109 также могут называться квантованными остаточными коэффициентами 109. Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, быть индексом для заранее определенного набора применимых размеров шага квантования. Например, малые параметры квантования могут соответствовать точному квантованию (малые размеры шагов квантования) и большие параметры квантования могут соответствовать грубому квантованию (большие размеры шагов квантования) или наоборот. Квантование может включать в себя деление по размеру шага квантования и соответствующее или обратное деквантование, например, посредством обратного квантования 110, может включать в себя умножение на размер шага квантования.
Варианты осуществления согласно HEVC могут быть сконфигурированы для использования параметра квантования для определения размера шага квантования. Как правило, размер шага квантования может быть вычислен на основании параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования для восстановления нормы остаточного блока, который может быть изменен из-за масштабирования, используемого в приближении фиксированной точки уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантования могут быть объединены. В качестве альтернативы могут использоваться сконфигурированные таблицы квантования и сигнализироваться из кодера в декодер, например, в битовом потоке. Квантование является операцией с потерями, в которой потери возрастают с увеличением размеров шага квантования.
Варианты осуществления кодера 100 (или, соответственно, блока 108 квантования) могут быть сконфигурированы для вывода схемы квантования и размера шага квантования, например, с помощью соответствующего параметра квантования, так что декодер 200 может принимать и применять соответствующее обратное квантование. Варианты осуществления кодера 100 (или блока 108 квантования) могут быть сконфигурированы для вывода схемы квантования и размера шага квантования, например, кодируется непосредственно или энтропийно через блок 170 энтропийного кодирования или любой другой блок энтропийного кодирования.
Блок 110 обратного квантования выполнен с возможностью применять обратное квантование блока 108 квантования к квантованным коэффициентам, чтобы получить деквантованные коэффициенты 111, например, путем применения обратной схемы квантования, применяемой блоком 108 квантования, на основании или с использованием того же размера шага квантования, что и блок 108 квантования. Деквантованные коэффициенты 111 также могут упоминаться как деквантованные остаточные коэффициенты 111 и соответствуют, хотя обычно они не идентичны преобразованным коэффициентам из-за потери при квантовании, преобразованным коэффициентам 108.
Блок 112 обратного преобразования выполнен с возможностью применять обратное преобразование, применяемого блоком 106 преобразования, например, обратное дискретное косинусное преобразование (DCT) или обратное дискретное синусоидальное преобразование (DST) для получения блока 113 обратного преобразования в области выборки. Блок 113 обратного преобразования также может упоминаться как деквантованный блок 113 обратного преобразования или остаточный блок 113 обратного преобразования.
Блок 114 восстановления выполнен с возможностью объединять блок 113 обратного преобразования и блок 165 предсказания для получения восстановленного блока 115 в области выборки, например, путем дискретного сложения значений выборок декодированного остаточного блока 113 и значений выборок блока 165 предсказания.
Блок 116 буфера (или для краткости, «буфер» 116), например, линейный буфер 116 выполнен с возможностью буферизации или хранения восстановленного блока и соответствующих значений выборок, например, для внутренней оценки и/или внутреннего предсказания. В дополнительных вариантах осуществления кодер может быть выполнен с возможностью использовать нефильтрованные восстановленные блоки и/или соответствующие значения выборок, хранящихся в блоке 116 буфера, для любого вида оценки и/или предсказания.
Варианты осуществления кодера 100 могут быть сконфигурированы так, что, например, блок 116 буфера используется не только для хранения восстановленных блоков 115 для внутренней оценки 152 и/или внутреннего предсказания 154, но, также для блока 120 контурного фильтра (не показан на фиг.1) и/или, например, блок 116 буфера и блок 130 буфера декодированных изображений образуют один буфер. Дополнительные варианты осуществления могут быть выполнены с возможностью использовать фильтрованные блоки 121 и/или блоки или выборки из буфера 130 декодированных изображений (оба не показаны на фиг.1) в качестве входных данных или основы для внутренней оценки 152 и/или внутреннего предсказания 154.
Блок 120 контурного фильтра (или для краткости, «контурный фильтр» 120) выполнен с возможностью фильтрации восстановленного блока 115 для получения отфильтрованного блока 121, например, путем применения фильтра удаления блочности с адаптивным смещением (SAO) или других фильтров, например, фильтры повышения резкости или сглаживания или совместные фильтры. Отфильтрованный блок 121 также может называться отфильтрованным восстановленным блоком 121. Контурный фильтр 120 далее также называется фильтром удаления блочности.
Варианты осуществления блока 120 контурного фильтра могут содержать (не показаны на фиг.1) блок анализа фильтра и фактический блок фильтра, при этом, блок анализа фильтра выполнен с возможностью определять параметры контурного фильтра для фактического фильтра. Блок анализа фильтра может быть выполнен с возможностью применять фиксированные заранее определенные параметры фильтра к фактическому контурному фильтру, адаптивно выбирать параметры фильтра из набора заранее определенных параметров фильтра или адаптивно вычислять параметры фильтра для фактического контурного фильтра.
Варианты осуществления блока 120 контурного фильтра могут содержать (не показаны на фиг.1) один или множество фильтров (компоненты/подфильтры контурного фильтра), например, один или несколько различных типов или видов фильтров, например, соединены последовательно или параллельно или в любой их комбинации, при этом, каждый из фильтров может содержать отдельно или совместно с другими фильтрами из множества фильтров блок анализа фильтра для определения соответствующих параметров контурного фильтра, например, как описано в предшествующем абзаце.
Варианты осуществления кодера 100 (соответственно блок 120 контурного фильтра) могут быть выполнены с возможностью выводить параметры контурного фильтра, например, кодируемые непосредственно или энтропийно через блок 170 энтропийного кодирования или любой другой блок энтропийного кодирования, так что, например, декодер 200 может принимать и применять одни и те же параметры контурного фильтра для декодирования.
Буфер 130 декодированных изображений (DPB) выполнен с возможностью принимать и хранить отфильтрованный блок 121. Буфер 130 декодированных изображений может быть дополнительно выполнен с возможностью хранить другие ранее отфильтрованные блоки, например, ранее восстановленные и отфильтрованные блоки 121 одного и того же текущего изображения или разных изображений, например, ранее восстановленных изображений и могут предоставлять полные ранее восстановленные, т.е. декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для внешней оценки и/или внешнего предсказания.
Дополнительные варианты осуществления изобретения также могут быть выполнены с возможностью использовать ранее отфильтрованные блоки и соответствующие отфильтрованные значения выборок буфера 130 декодированных изображений для любого вида оценки или предсказания, например, внутренней и внешней оценки и предсказания.
Блок 160 предсказания, также называемый блоком 160 предсказания блока, выполнен с возможностью принимать или получать блок 103 изображения (текущий блок 103 изображения текущего изображения 101) и декодированных или, по меньшей мере, восстановленных данных изображения, например, опорных выборок того же (текущего) изображения из буфера 116 и/или данных 231 декодированного изображения из одного или множества ранее декодированных изображений из буфера 130 декодированных изображений, и обрабатывать такие данные для предсказания, то есть, обеспечивать блок 165 предсказания, который может быть блоком 145 внешнего предсказания или блоком 155 внутреннего предсказания.
Блок 162 выбора режима может быть выполнен с возможностью выбирать режим предсказания (например, режим внутреннего или внешнего предсказания) и/или соответствующего блока 145 или 155 предсказания, который будет использоваться в качестве блока 165 предсказания для вычисления остаточного блока 105 и для восстановления восстановленного блока 115.
Варианты осуществления блока 162 выбора режима могут быть выполнены с возможностью выбирать режим предсказания (например, из тех, которые поддерживаются блоком 160 предсказания), который обеспечивает наилучшее совпадение или, другими словами, минимальную остаточную величину (минимальная остаточная величина означает лучшее сжатие для передачи или хранения), или минимальные накладные расходы на сигнализацию (минимальные накладные расходы на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или уравновешивает и то, и другое. Блок 162 выбора режима может быть выполнен с возможностью определять режим предсказания на основании оптимизации искажения скорости (RDO), то есть, выбора режима предсказания, который обеспечивает оптимизацию искажения с минимальной скоростью или которое ассоциированное искажение скорости, по меньшей мере, удовлетворяет критерию выбора режима предсказания.
Далее приведено подробное описание процесса обработки предсказания (например, блок 160 предсказания и выбор режима (например, блоком 162 выбора режима), выполняемого примерным кодером 100.
Как описано выше, кодер 100 выполнен с возможностью определять или выбирать наилучший или оптимальный режим предсказания из набора (заранее определенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутреннего предсказания и/или режимы внешнего предсказания.
Набор режимов внутреннего предсказания может содержать 32 различных режима внутреннего предсказания, например, ненаправленные режимы, такие как DC режим (или средний) и планарный режим, или направленные режимы, например, как определено в H.264, или может содержать 65 различных режимов внутреннего предсказания, ненаправленные режимы, такие как DC режим (или средний) и планарный режим, или направленные режимы, например, как определено в H.265.
Набор (или возможных) режимов внешнего предсказания зависит от доступных опорных изображений (то есть, предшествующих, по меньшей мере, частично декодированных изображений, например, сохраненных в DBP 230) и других параметров внешнего предсказания, например, будь то все опорное изображение или только его часть, например, окно поиска области вокруг области текущего блока, опорного изображения используется для поиска наилучшего соответствия опорного блока и/или, например, применяется ли интерполяция пикселей, например, половина/полупиксельная и/или четверть-пиксельная интерполяция, или нет.
В дополнение к вышеуказанным режимам предсказания могут применяться режим пропуска и/или прямой режим.
Блок 160 предсказания может быть дополнительно выполнен с возможностью разделения блока 103 на более мелкие блоки или подблоки, например, итеративно с использованием четырехъядерного разделения (QT), двоичного разделения (BT) или тройного разделения дерева (TT) или любой их комбинации, и для выполнения, например, предсказание для каждого из разделов или подблоков блока, при этом, выбор режима включает в себя выбор древовидной структуры разделенного блока 103 и режимов предсказания, применяемых к каждому из разделов или подблоков блока.
Блок 142 внешней оценки, также называемый блоком 142 внешней оценки изображения, выполнен с возможностью принимать или получать блок 103 изображения (текущий блок 103 изображения текущего изображения 101) и декодированного изображения 231 или, по меньшей мере, один или множество ранее восстановленных блоков, например, восстановленные блоки одного или множества других/различных ранее декодированных изображений 231 для внешней оценки (или «внешней оценки изображения»). Например. видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.
Кодер 100 может, например, быть выполнен с возможностью выбирать опорный блок из множества опорных блоков одинаковых или различных изображений из множества других изображений и обеспечивает опорное изображение (или индекс опорного изображения, ...) и/или смещение (пространственное смещение) между позицией (X, Y) координат опорного блока и позицией текущего блока в качестве параметров 143 внешней оценки в блок 144 внешнего предсказания. Это смещение также называется вектором движения (MV). Внешняя оценка также называется оценкой движения (ME) и внешнее предсказание также называется предсказанием движения (MP).
Блок 144 внешнего предсказания выполнен с возможностью получать, например, принимать параметр 143 внешнего предсказания и выполнять внешнее предсказание на основании или с использованием параметра 143 внешнего предсказания для получения блока 145 внешнего предсказания.
Хотя на фиг.1 показаны два отдельных блока (или этапы) для внешнего кодирования, а именно, внешняя оценка 142 и внешнее предсказание 152, обе функции могут выполняться, поскольку одна (внешняя оценка) требует/содержит вычисление/блока внешнего предсказания, т.е. или «вид» внешнего предсказания 154), например, путем итеративного тестирования всех возможных или заранее заданного подмножества возможных режимов внешнего предсказания с сохранением лучшего на данный момент режима внешнего предсказания и соответствующего блока внешнего предсказания и использования текущего лучшего режима внешнего предсказания и соответствующего блока внешнего предсказания в качестве (окончательного) параметра 143 внешнего предсказания и блока 145 внешнего предсказания, не выполняя в другой раз внешнее предсказание 144.
Блок 152 внутренней оценки выполнен с возможностью получать, например, принимать, блок 103 изображения (текущий блок изображения) и один или множество ранее восстановленных блоков, например, восстановленные смежные блоки одного и того же изображения для внутренней оценки. Кодер 100 может, например, быть выполнен с возможностью выбирать режим внутреннего предсказания из множества (заранее определенных) режимов внутреннего предсказания и предоставлять в качестве параметра 153 внутренней оценки в блок 154 внутреннего предсказания.
Варианты осуществления кодера 100 могут быть выполнены с возможностью выбирать режим внутреннего предсказания на основании критерия оптимизации, например, минимальная остаточная величина (например, режим внутреннего предсказания, обеспечивающий блок 155 предсказания, наиболее похожий на текущий блок 103 изображения) или минимальное искажение скорости.
Блок 154 внутреннего предсказания выполнен с возможностью определять на основании параметра 153 внутреннего предсказания, например, выбранный режим 153 внутреннего предсказания, блок 155 внутреннего предсказания.
Хотя на фиг.1 показаны два отдельных блока (или этапы) для внутреннего кодирования, а именно, внутренняя оценка 152 и внутреннее предсказание 154, обе функции могут выполняться, поскольку одна (внутренняя оценка) требует/содержит вычисление блока внутреннего предсказания, т.е. или «своего рода» внутреннее предсказание 154), например, путем итеративного тестирования всех возможных или заранее заданного подмножества возможных режимов внутреннего предсказания с сохранением лучшего на данный момент режима внутреннего предсказания и соответствующего блока внутреннего предсказания и использования лучшего в настоящее время режима внутреннего предсказания и соответствующего блока внутреннего предсказания в качестве (окончательного) параметра 153 внутреннего предсказания и блока 155 внутреннего предсказания без повторного выполнения внутреннего предсказания 154.
Блок 170 энтропийного кодирования выполнен с возможностью применять алгоритм или схему энтропийного кодирования (например, схему кодирования с переменной длиной (VLC), контекстно-адаптивную схему VLC (CALVC), схему арифметического кодирования, схему контекстно-адаптивного двоичного арифметического кодирования (CABAC)) на квантованных остаточных коэффициентах 109, параметрах 143 внешнего предсказания, параметре 153 внутреннего предсказания и/или параметрах контурного фильтра, по отдельности или совместно (или не применять) для получения данных 171 кодированного изображения, которые могут выводиться выходом 172, например, в виде кодированного битового потока 171.
Фиг.2 показывает примерный кодер 200 видео, выполненный с возможностью принимать кодированные данные изображения (например, кодированного битового потока) 171, например, кодируемые кодером 100, чтобы получить декодированное изображение 231.
Декодер 200 содержит вход 202, блок 204 энтропийного декодирования, блок 210 обратного квантования, блок 212 обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированных изображений, блок 260 предсказания, блок 244 внешнего предсказания, блок 254 внутреннего предсказания, блок 260 выбора режима и выход 232.
Блок 204 энтропийного декодирования выполнен с возможностью выполнять энтропийное декодирование кодированных данных 171 изображения для получения, например, квантованных коэффициентов 209 и/или декодированных параметров кодирования (не показаны на фиг.2), например, (декодированный) любой или все параметры 143 внешнего предсказания, параметр 153 внутреннего предсказания и/или параметры контурного фильтра.
В вариантах осуществления декодера 200 блок 210 обратного квантования, блок 212 обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированных изображений, блок 260 предсказания и блок 260 выбора режима выполнены с возможностью выполнять обратную обработку кодера 100 (и соответствующих функциональных блоков) для декодирования данных 171 кодированного изображения.
В частности, блок 210 обратного квантования может быть идентичен по функциям блока 110 обратного квантования, блока 212 обратного преобразования может быть идентичным по функциям блока 112 обратного преобразования, блока 214 восстановления может быть идентичным блоку 114 восстановления функций, буферу 216 может быть идентичен по функциям буферу 116, контурный фильтр 220 может быть идентичен по функции контурному фильтру 220 (что касается фактического контурного фильтра, поскольку контурный фильтр 220 обычно не содержит блок анализа фильтра для определения параметры фильтра основаны на исходном изображении 101 или блоке 103, но принимает (явно или неявно) или получает параметры фильтра, используемые для кодирования, например, из блока 204 энтропийного декодирования), и буфер 230 декодированных изображений может быть идентичен по функции буферу 130 декодированных изображений.
Блок 260 предсказания может содержать блок 244 внешнего предсказания и блок 254 внешнего предсказания, в котором блок 144 внешнего предсказания может быть идентичен по функциям блока 144 внешнего предсказания и блока 154 внешнего предсказания может быть идентичным по функциям блока 154 внутреннего предсказания. Блок 260 предсказания и блок 262 выбора режима обычно выполнены с возможностью выполнять предсказание блока и/или получать предсказанный блок 265 только из кодированных данных 171 (без какой-либо дополнительной информации об исходном изображении 101) и принимать или получать (явно или неявно) параметры 143 или 153 предсказания и/или информацию о выбранном режиме предсказания, например, из блока 204 энтропийного декодирования.
Декодер 200 выполнен с возможностью выводить декодированное изображение 230, например, через выход 232 для презентации или просмотра пользователю.
Хотя варианты осуществления изобретения были в основном описаны на основе кодирования видео, следует отметить, что варианты осуществления кодера 100 и декодера 200 (и, соответственно, системы 300) также могут быть выполнены с возможностью обрабатывать или кодировать неподвижные изображения, то есть, обрабатывать или кодировать отдельные изображения независимо от любого предшествующего или последующего изображения, как при кодировании видео. В общем, только внешняя оценка 142, внешнее предсказание 144, 242 недоступны в случае, если кодирование обработки изображения ограничено одним изображением 101. Большинство, если не все другие функции (также называемые инструментами или технологиями) кодера 100 видео и декодера 200 видео могут одинаково использоваться для неподвижных изображений, например, разделение, преобразование (масштабирование) 106, квантование 108, обратное квантование 110, обратное преобразование 112, внутренняя оценка 142, внутреннее предсказание 154, 254 и/или контурная фильтрация 120, 220, энтропийное кодирование 170 и энтропийное декодирование 204.
Настоящее изобретение относится к внутренней работы фильтра удаления блочности, также называемого контурным фильтром на фиг.1 и фиг.2.
Схемы кодирования видео, такие как H.264/AVC и HEVC, разработаны на основе успешного принципа гибридного кодирования видео на основе блоков. Используя этот принцип, изображение сначала разделяется на блоки, и затем каждый блок предсказывается с использованием внутреннего или внешнего предсказания. Эти блоки кодируются относительно смежных блоков и аппроксимируют исходный сигнал с некоторой степенью подобия. Поскольку кодированные блоки только аппроксимируют исходный сигнал, разница между аппроксимациями может вызвать разрывы на границах блоков предсказания и преобразования. Эти неоднородности подавляются фильтром удаления блочности. HEVC заменяет структуру макроблоков H.264/AVC концепцией блока дерева кодирования (CTU) с максимальным размером 64x64 пикселей. CTU может быть дополнительно разделен на схему разложения квадродерева на меньшие блоки кодирования (CU), которые могут быть подразделены до минимального размера 8 x 8 пикселей. HEVC также вводит концепции блоков предсказания (PB) и блоков преобразования (TB).
Удаление блочности в HEVC выполняется для всех краев, принадлежащих блоку кодирования (CU), блокам предсказания (PU) и блокам преобразования (TU), которые перекрываются с 8 x 8 сеткой. Более того, фильтр удаления блочности в HEVC гораздо более удобен для параллельной обработки по сравнению с H.264/AVC, где операции фильтрации выполняются по 4 x 4 сетке. Вертикальные и горизонтальные края блоков в HEVC обрабатываются в другом порядке, чем в H.264/AVC. В HEVC сначала фильтруются все вертикальные края блоков в изображении, и затем фильтруются все горизонтальные края блоков. Поскольку минимальное расстояние между двумя параллельными границами блоков в HEVC составляет восемь выборок, и HEVC удаление блочности модифицирует не более трех выборок от края блока и использует четыре выборки от края блока для решений удаления блочности, фильтрация одного вертикального края не влияет на фильтрацию какого-либо другого вертикального края. Это означает, что между границами блоков нет зависимостей удаления блочности. В принципе, любая вертикальная граница блока может обрабатываться параллельно любой другой вертикальной границе. То же самое справедливо и для горизонтальных границ, хотя модифицированные выборки от фильтрации вертикальных границ используются в качестве входных данных для фильтрации горизонтальных границ.
ITU-T VCEG (Q6/16) и ISO/IEC MPEG (JTC 1/SC 29/WG 11) изучают потенциальную потребность в стандартизации будущей технологии кодирования видео с возможностью сжатия, которая значительно превышает возможности текущего стандарта HEVC (включающий в себя его текущие расширения и краткосрочные расширения для кодирования контента экрана и кодирования с высоким динамическим диапазоном). Группы работают вместе над этой исследовательской деятельностью в рамках совместной работы, известной как Joint Video Exploration Team (JVET), для оценки проектов технологий сжатия, предложенных их экспертами в этой области.
Совместная модель исследования (JEM) описывает признаки, которые скоординировано исследуются моделями тестирования Объединенной группой исследования видео (JVET) ITU-T VCEG и ISO/IEC MPEG, как потенциально улучшенная технология кодирования видео, выходящая за рамки возможностей HEVC.
Программное обеспечение JEM (Joint Exploratory Model) использует новую схему блочной структуры секционирования, называемую квадродерево плюс бинарное дерево (QTBT).
QTBT структура удаляет концепции нескольких типов разделения, то есть, удаляет разделение блок кодирования (CU), блоков предсказания (PU) и блоков преобразования (TU). Следовательно (CU = PU = TU). QTBT поддерживает более гибкие формы разделения CU, в котором CU может иметь квадратную или прямоугольную форму. Минимальная ширина и высота CU могут составлять 4 выборки, и размеры CU также могут быть 4 x N или N x 4, где N может принимать значения в диапазоне [4, 8, 16, 32].
Текущий LUMA фильтр удаления блочности в JEM фильтрует все края блока CU, включающие в себя края, принадлежащие CU, размер которых составляет 4 x N и N x 4, что приводит к следующим недостаткам.
• Уже отфильтрованные выборки могут повлиять на решение о фильтрации на границе последовательных блоков.
• Края соседних блоков не могут обрабатываться параллельно.
Текущая операция фильтра удаления блочности, используемая для JEM (с разделением QTBT), изображена на фиг.4.
Блоки 401, 402, 403 кодирования, также обозначаемые как P, Q и R представляют собой три CUs. Размер CU составляет 8 x 8, 4 x 8 и 4 x 8 соответственно (N = 8) выборок. Сильная фильтрация края 404, также называемого E1, модифицирует выборки, отмеченные в пунктирной рамке 406. Сильная фильтрация края 405, также называемая E2, модифицирует выборки, отмеченные в пунктирной рамке 407. Как мы можем видеть, существует перекрытие рамки 406 и рамки 407 и, следовательно,
- Уже отфильтрованные выборки в блоке Q во время фильтрации края E1 влияют на решение о фильтрации последовательного края блока (край E2)
- Смежные края блока (E1 и E2) не могут обрабатываться параллельно.
Следовательно, необходимо выполнять фильтрацию удаления блочности последовательным образом. Это приводит к очень долгому времени обработки. Это приводит к неоправданно длительному времени обработки, особенно с появлением новых процессорных технологий, использующих все больше и больше параллельных структур обработки. Адаптировав фильтрацию удаления блочности к параллельной работе, можно сэкономить значительное время обработки.
Теперь со ссылкой на фиг.5-фиг.8 кратко описаны различные варианты осуществления первого аспекта, второго аспекта и третьего аспекта изобретения. Подробные функции вариантов осуществления, изображенных на фиг.5-фиг.8, описаны ниже со ссылкой на фиг.9-13.
На фиг.5 показан первый вариант осуществления устройства для обработки изображений согласно первому аспекту изобретения. Устройство 501 для обработки изображения содержит фильтр для фильтрации края блока между первым блоком кодирования и вторым блоком кодирования изображения, закодированного с помощью блочного кода.
В частности, устройство 501 для обработки изображения предназначено для удаления блочности края блока между первым блоком кодирования и вторым блоком кодирования изображения, закодированного с помощью блочного кода. Первый блок кодирования имеет размер SA блока, перпендикулярный краю блока, тогда как второй блок кодирования имеет размер SB блока, перпендикулярный краю блока. Устройство 501 для обработки изображения содержит фильтр 502 для фильтрации края блока. Фильтр выполнен с возможностью
- модифицировать самое большее количество MA значений выборок первого блока кодирования, смежного с краем блока, в качестве выходных значений первого фильтра,
- модифицировать самое большее количество МВ значений выборок второго блока кодирования, смежного с краем блока, в качестве выходных значений второго фильтра,
- использовать самое большее количество IA значений выборок первого блока кодирования, смежного с краем блока, в качестве входных значений первого фильтра для вычисления выходных значений первого фильтра и/или выходных значений второго фильтра,
- использовать самое большее количество IB значений выборок второго блока кодирования, смежного с краем блока, в качестве входных значений второго фильтра для вычисления выходных значений первого фильтра и/или выходных значений второго фильтра, как описано выше.
В котором IA отличается от IB, и MA отличается от MB.
На фиг.6 показан вариант осуществления кодера согласно второму аспекту изобретения. Кодер 600 содержит устройство 601 для обработки изображения, которое, в свою очередь, содержит фильтр 602. Устройство 601 для обработки изображения соответствует устройству 501 для обработки изображения на фиг.5. Кодер работает в соответствии с основным кодером, показанным на фиг.1. Контурный фильтр, также называемый фильтром удаления блочности на фиг.1, заменен устройством 601 для обработки изображения, показанным в настоящем документе.
На фиг.7 показан вариант осуществления третьего аспекта изобретения. Декодер 700 содержит устройство 701 для обработки изображения, которое, в свою очередь, содержит фильтр 702. Устройство 701 для обработки изображения соответствует устройству 501 для обработки изображения на фиг.5. Декодер 700 работает согласно принципу декодера, показанному на фиг.2. Контурный фильтр, также называемый фильтром удаления блочности на фиг. 2, заменен устройством 701 для обработки изображения, изображенным в настоящем документе.
Наконец, на фиг. 8 показан еще один вариант осуществления устройства для обработки изображений согласно первому аспекту изобретения. Устройство 801 для обработки изображений содержит фильтр 802 и определитель 803. Определитель 803 определяет, нужно ли фильтровать край блока и/или следует ли выполнять сильную фильтрацию или слабую фильтрацию. Это решение основано не более, чем на количестве DA значений выборок первого блока кодирования, смежного с краем блока, в качестве значений решения первой фильтрации и не более чем на количестве DB значений выборок второго блока кодирования, смежного с краем блока, как значения решения второго фильтра.
Значения решения о фильтрации не обязательно должны быть идентичны входным значениям фильтра, описанным на фиг.5. Однако на практике они могут быть идентичными.
Устройство обработки изображения согласно фиг.8, кроме того, содержит фильтр 802, который работает аналогично фильтру 502 по фиг.5.
Подробно, техническая задача распараллеливания фильтрации удаления блочности может быть решена подходом, показанным на фиг.9. Здесь изображение 900 содержит три блока 901, 902 и 903 кодирования. Между блоками 901 и 902 кодирования находится край 904 блока. Между блоками 902 и 903 кодирования находится край 905 блока. При выполнении фильтрации края 904 учитываются значения выборки, показанные пунктирной линией 906. Которые являются входными значениями фильтра, как описано ранее. В то же время только значения выборки, изображенные в пунктирной линии 907, изменяются посредством фильтрации. Эти примерные значения являются выходными значениями фильтра, как описано ранее.
При фильтрации края 905 блока значения выборки в пунктирной линии 908 используются в качестве входных значений фильтра в то время, как только значения выборки в пунктирной линии 909 изменяются и составляют выходные значения фильтра.
Очевидно, что выходные значения фильтра фильтрации края 904, показанные пунктирной линией 907, не перекрываются с входными значениями фильтра фильтрации края 905, показанными в пунктирной линии 908. Наоборот, также выходные значения фильтра при фильтрации края 905 блока, изображенные пунктирной линии 909, не перекрываются с входными значениями фильтра фильтрации края 904 блока, изображенными в пунктирной линии 906. Возможна параллельная обработка фильтрации обоих краев блока, поскольку нет взаимозависимостей между обработкой двух краев 904 и 905 блока.
Кроме того, здесь ясно видно, что количество значений выборок, используемых в качестве входных значений фильтра и выходных значений фильтра, зависит от размера обрабатываемого в данный момент блока кодирования. Например, блок 901 кодирования имеет размер блока кодирования восемь пикселей. Следовательно, количество I входных выборок фильтра установлено равным четырем. В то же время количество M измененных значений выборки устанавливается равным трем. I соответствует пикселям P 3, x, P 2, x, P 1, x и P 0, x, в то время как значения I соответствуют пикселям P 2, x, P 1, x и P 0, x.
В то же время блок 902 кодирования имеет только размер S блока, равный четырем, поэтому количество входных значений I выборки устанавливается равным трем, и количество модифицированных значений выборок устанавливается равным 1.
Это означает, что в случае неидентичных размеров блока по краю блока, подлежащего фильтрации, используется асимметричный фильтр.
Поскольку ширина блока 901 составляет 8 выборок, решение о фильтрации может использовать выборки Pi, j, где и . Поскольку ширина блока Q составляет 4 выборки, решение о фильтрации может использовать только выборки Qi, j, где и .
Для фактической операции фильтрации, то есть выборок, которые модифицируются во время операции фильтрации, применяется следующее:
для блока 901, поскольку его ширина блока составляет 8 выборок, можно модифицировать до 3 выборок. Следовательно, выборки Pi, j, где и могут быть модифицированы, тогда как
для блока 902, поскольку ширина его блока составляет только 4 выборки, можно модифицировать до 1 отсчета, чтобы гарантировать отсутствие перекрытий фильтров. Следовательно, выборки Qi, j, где и могут быть модифицированы.
Для края 905 два смежных блока, которые имеют общий край, 902 и 903 с шириной блока 4 и 4 соответственно.
Поскольку ширина блока 902 составляет 4 выборки, решение о фильтрации может использовать выборки Qi, j, где и . Поскольку ширина блока 903 составляет 4 выборки, решение о фильтрации может использовать только выборки Ri, j, где и .
Для фактической операции фильтрации, то есть, выборок, которые модифицируются во время операции фильтрации, применяется следующее:
для блока 902, поскольку его ширина блока составляет 8 выборок, можно модифицировать до 3 выборок. Следовательно, выборки Qi, j, где и могут быть модифицированы таким же образом, поскольку ширина блока R составляет 4 выборки, можно модифицировать только до 1 выборки, чтобы гарантировать отсутствие перекрытий фильтров. Следовательно, выборки Ri, j, где и могут быть модифицированы.
В результате асимметричный фильтр модифицирует максимум 3 выборки в блоке 901, 1 выборку в блоке 902 и 1 выборку в блоке 903.
Фактическая операция сильного фильтра для блоков, размер которых равен 4 выборкам, устанавливается следующим образом:
допустим, блоки, примыкающие к краю блока, представляют собой два блока, размер которых равен 4 выборкам, тогда:
решение сильного фильтра установлено на
и сильный, и нормальный фильтры изменяют только один пиксель, поэтому, только когда применяется сильный фильтр, одна выборка в блоке p модифицируется следующим образом:
Для слабой фильтрации в качестве входных выборок фильтра используется только меньшее количество значений выборки. В частности, используются следующие уравнения фильтра:
Вместо использования асимметричного фильтра, как описано выше, на фиг. 10 представлено альтернативное примерное решение. На первом этапе 1000 проверяется, совмещен ли текущий отфильтрованный край блока с сеткой выборок кодирования 8 x 8. Если это так, на втором этапе 1001 проверяется, является ли край блока, подлежащего фильтрации, границей между блоками предсказания или блоками преобразования. Если это так, на третьем этапе 1002 проверяется, является ли граничная прочность Bs> 0. Если это условие также выполняется, на четвертом этапе 1003 проверяется, истинно ли условие 7.1.
Условие 7.1 используется для проверки того, применяется ли фильтрация удаления блочности к границе блока или нет. Условие особенно проверяет, насколько сигнал на каждой стороне края блока отклоняется от прямой линии (наклон).
Если это условие не выполняется или любая из проверок этапов 1000, 1001 и 1002 не выполняется, то на пятом этапе 1004 решается, что фильтрация не выполняется.
На шестом этапе 1005 теперь проверяется, равен ли размер блока любого из двух блоков, окружающих край, подлежащий фильтрации, четырем. Если это не так, на седьмом этапе 1006 проверяется, выполняются ли дополнительные условия 7.2, 7.3 и 7.4.
Условие 7.2 проверяет отсутствие значительных изменений сигнала на сторонах края блока. Условие 7.3 проверяет ровность сигнала с обеих сторон. Условие 7.4 гарантирует, что шаг между значениями выборки на сторонах края блока будет небольшим.
Если все эти условия верны, то на восьмом этапе 1007 выполняется строгая фильтрация. Если это не так, то на девятом этапе 1008 решается, что выполняется обычная фильтрация. Затем продолжается обычная обработка фильтрации на десятом этапе 1009.
В случае, если проверка шестого этапа 1005 привела к тому, что, по меньшей мере, один из блоков имел размер блока четыре, этапы 1006, 1007 и 1008 не выполняются, а непосредственно продолжается с этапа 1009. Это решение обеспечивает выполнение части блок-схемы алгоритма удаления блочности, так что выполняется только одна модификация выборки.
На десятом этапе 1009 проверяется, выполняется ли дополнительное условие 7.12. Условие 7.12 оценивает, является ли разрыв на границе блока естественным краем или вызван артефактом блока.
Если это условие не является истинным, то на одиннадцатом этапе 1010 решается, что фильтрация в конце концов не выполняется. Если это так, то на двенадцатом этапе 1011 значения p0 и q0 пикселей, непосредственно окружающие край, модифицируются.
На дополнительном этапе 1012 проверяется, выполняется ли дополнительное условие 7.5. Условие 7.5 проверяет, насколько ровным является сигнал на стороне края блока (то есть, для блока P). Чем ровнее сигнал, тем больше применяется фильтрация.
Если это условие истинно, значение p1 пикселя на четырнадцатом этапе 1013 модифицируется. Затем продолжается с пятнадцатого этапа 1014. Если условие 7.5 не выполняется, то непосредственно продолжается с пятнадцатого этапа 1014, на котором проверяется, выполняется ли дополнительное условие 7.6.
Условие 7.6 проверяет, насколько ровным является сигнал на стороне края блока (т.е. для блока Q). Чем ровнее сигнал, тем больше применяется фильтрация. Если условие выполнено, значение q1 пикселя модифицируется на шестнадцатом этапе 1015. Если условие 7.6 не выполняется, значение q1 пикселя не модифицируется.
Это позволяет значительно сократить количество проверок, необходимых для определения того, выполняется ли фильтрация и какой тип фильтрации выполняется в случае, если, по меньшей мере, один из размеров блока равен четырем.
Подробные сведения о стандартных условиях соответствия, упомянутых выше, можно найти у Vivienne Sze, Mudhukar Buagavi, Gary J. Sullivan «Высокоэффективное кодирование видео (HEVC), алгоритмы и архитектуры» (в частности, условия 7.1–7.6 и 7.12 соответствуют уравнениям 7.1–7.6 и 7.12 в главе 7).
Этот подход также показан на фиг.11. На фиг.11 показано изображение 1100, содержащее три блока 1101, 1102 и 1103. Край 1104 блока разделяет блоки 1101 и 1102. Край 1105 блока разделяет блоки 1102 и 1103. Поскольку размер блока 1102 равен четырем, при проверке размера блока во время обработки края 1104 блока определяется, что, по меньшей мере, один из задействованных блоков 1101, 1102 имеет размер блока четыре, и используется этап 1005 при выборе фильтра, как показано на фиг.10. Следовательно, модифицируют только значения выборок непосредственно на краю 1104 блока, тогда как с обеих сторон края 1104 блока два последовательных значения выборки используются в качестве входных значений фильтра. То же самое верно и для края 1105 блока.
Таким образом, вариант, изображенный на фиг.10 и фиг.11, состоит из принудительной слабой фильтрации, если обнаруживается размер блока, равный четырем, по меньшей мере, одного из задействованных блоков.
В частности, используются следующие уравнения:
В будущем стандарте кодирования видео может использоваться фильтр «длинного отвода», который модифицирует более 3 выборок. Далее фильтр с «длинным отводом», который использует 8 выборок в качестве входных значений фильтра и модифицирует до 7 выборок, может использоваться всякий раз, когда размер блока больше или равен 16 выборкам.
Чтобы гарантировать возможность параллельного удаления блочности в таком сценарии, предлагается два решения:
Решение 1a: применять фильтр «длинного отвода» только тогда, когда текущий размер блоков составляет ≥ 16 выборок, а также когда размер соседних блоков также составляет ≥ 16 выборок.
Решение 2a: применять «асимметричный фильтр», как объяснялось ранее.
Следовательно, «асимметричный фильтр» модифицирует выборки, используемые в качестве входных значений, и модифицированные значения в соответствии с шириной блока:
например: если
• ширина блока == 4, тогда в решение о фильтрации и одна выборка может быть модифицирована
• ширина блока == 8, тогда 4 выборки можно использовать при решении фильтрации и модификацию
• для ширины блока> = 16 фильтр с длинным отводом может быть применяется как есть.
Еще один аспект, который следует принять во внимание, это то, где находится соответствующий край блока по отношению к кодированному изображению. В частности, если в настоящее время отфильтрованный край блока выровнен с границей блока дерева кодирования (CTU) и является горизонтальным краем блока, количество входных значений фильтра и выходных значений фильтра сильно влияет на объем линейной памяти для выполнения кодирования. Это показано на фиг. 12.
На фиг.12 показано изображение 1200, содержащее несколько блоков CTU1-CTU40 дерева кодирования. Каждый блок дерева кодирования имеет, например, 256 x 256 значений выборки. Если должна выполняться фильтрация с длинным отводом, как объяснено выше, восемь значений выборок по краям блока кодирования рассматриваются для определения выходных значений фильтра. Поскольку блоки кодирования CTU1 - CTU40 обрабатываются последовательно, это может привести к очень большому объему необходимой линейной памяти.
Рассмотрим фильтрацию удаления блочности края 1201 блока, показанного на фиг.12. Здесь край 1201 блока простираться по всей ширине блоков CTU17 и CTT25 кодирования. Однако на практике, размер блока кодирования будет значительно меньше, поскольку кодирование не выполняется в масштабе блока дерева кодирования.
Поскольку блоки CTU1-CTU40 дерева кодирования обрабатываются последовательно для выполнения удаления блочности края 1201 кодового блока, необходимо сохранить всю нижнюю горизонтальную граничную область блоков CTU17-CTU24 дерева кодирования в строчной памяти. В показанном здесь примере с восемью блоками CTU17 - CTU24 дерева кодирования и шириной 256 выборок каждого из блоков кодирования и восемью соответствующими значениями выборок в качестве входных значений фильтра, необходим размер памяти 8 x 256 x 8 = строка из 16 384 выборок линейной памяти. Этот недостаток возникает для каждого края блока горизонтального кодирования. Это особенно проблематично для блока CTU9, CTU17, CTU25 и CTU33 дерева кодирования, поскольку в любом из этих случаев вся горизонтальная граничная область предшествующей строки блоков дерева кодирования должна храниться в линейной памяти. Это дополнительно показано на фиг.13.
На фиг.13 изображены только соответствующие блоки 1301 и 1302 изображения 1300. Изображение 1300 соответствует изображению 1200 на фиг.12. Блок 1301 соответствует самому нижнему блоку кодирования блока 17 кодирования на фиг.12, тогда как блок 1302 соответствует самому верхнему блоку кодирования блока 25 кодирования на фиг.12. Край 1303 блока соответствует краю 1201 блока на фиг.12.
Для ограничения объема необходимой линейной памяти в вышеописанном случае, используется только значение входной выборки фильтра, равное четырем из предшествующего блока 1301, в то время как модифицировано только количество выходных выборок фильтра, равное трем. Это приводит к значительному сокращению объема необходимой линейной памяти, поскольку теперь в линейной памяти необходимо хранить только 8 x 256 x 4 = 8 096 выборок.
Наконец, на фиг.14 показан вариант осуществления способа удаления блочности четвертого аспекта изобретения.
На первом этапе 1400 предоставляются первый блок кодирования и второй блок кодирования изображения, закодированного с помощью блочного кода, разделенных краем блока.
На втором этапе 1401 самое большее количество IA значений выборок первого блока кодирования, смежных с краем блока, используется в качестве входных значений первого фильтра. На втором этапе 1402 самое большее количество IB значений выборок второго блока кодирования, смежных с краем блока, используется в качестве входных значений второго фильтра. На четвертом этапе 1403 самое большее количество MA значений выборок первого блока кодирования, смежных с краем блока, модифицируется как выходные значения первого фильтра. Наконец, на пятом этапе 1404, самое большее количество МВ значений выборок второго блока кодирования, смежных с краем блока, модифицируется как выходные значения второго фильтра. В этом случае МА не равно МВ.
Следует отметить, что входные значения фильтра являются последовательными значениями, перпендикулярными краю блока, начиная с края блока. Кроме того, выходные значения фильтра являются последовательными значениями, перпендикулярные краю блока, начиная с края блока.
Изобретение было описано здесь вместе с различными вариантами осуществления. Однако другие варианты раскрытых вариантов осуществления могут быть поняты и осуществлены специалистами в данной области техники при практическом применении заявленного изобретения на основании изучения чертежей, описания и прилагаемой формулы изобретения. В формуле изобретения слово «содержащий» не исключает других элементов или этапов, и неопределенный артикль «а» или «an» не исключает множественность. Один процессор или другое устройство может выполнять функции нескольких элементов, указанных в формуле изобретения. Простой факт, что определенные меры изложены в обычно различных зависимых пунктах формулы изобретения, не означает, что комбинация этих мер не может быть использована с выгодой. Компьютерная программа может храниться/распределяться на подходящем носителе, таком как оптический носитель данных или твердотельный носитель, поставляемый вместе с другим оборудованием или как его часть, но также может распределяться в других формах, например, через интернет или другие системы проводной или беспроводной связи.
В вариантах осуществления термин «память» следует понимать и/или должен содержать [список всех возможных память] магнитный диск, оптический диск, постоянное запоминающее устройство (Read-Only Memory, ROM) или оперативное запоминающее устройство (Random Access Memory, EAM),…, если явно не указано иное.
Везде, где варианты осуществления и описание относятся к термину «сеть», термин «сеть» следует понимать и/или должен содержать [список всех возможных памяти]…, если явно не указано иное.
Специалист в данной области техники поймет, что «блоки» («units») на различных чертежах (способ и устройство) представляют или описывают функциональные возможности вариантов осуществления изобретения (а не обязательно отдельные «блоки» в аппаратном или программном обеспечении) и таким образом описывают в равной степени функции или признаки вариантов осуществления устройства, а также варианты осуществления способа (блок = этап).
Терминология «блоки» используется просто для иллюстративных целей функциональных возможностей вариантов осуществления кодера/декодера и не предназначена для ограничения настоящего изобретения.
В нескольких вариантах осуществления, представленных в настоящей изобретении, следует понимать, что раскрытые система, устройство и способ могут быть реализованы другими способами. Например, описанный вариант осуществления устройства является просто примерным. Например, разделение на блоки является просто разделением логических функций и может быть другим разделением в реальной реализации. Например, множество блоков или компонентов могут быть объединены или интегрированы в другую систему, или некоторые функции могут игнорироваться или не выполняться. Кроме того, отображаемые или обсуждаемые взаимные связи или прямые связи или коммуникационные соединения могут быть реализованы с использованием некоторых интерфейсов. Непрямые связи или коммуникационные соединения между устройствами или блоками могут быть реализованы в электронной, механической или других формах.
Блоки, описанные как отдельные части, могут быть или не могут быть физически отдельными, и части, отображаемые как блоки, могут быть или не быть физическими блоками, могут быть расположены в одной позиции или могут быть распределены по множеству сетевых блоков. Некоторые или все блоки могут быть выбраны в соответствии с фактическими потребностями для достижения целей решений вариантов осуществления.
Дополнительно, функциональные блоки в вариантах осуществления настоящего изобретения могут быть интегрированы в один блок обработки, или каждый из блоков может существовать отдельно физически, или два или более блоков объединены в один блок.
Варианты осуществления изобретения могут дополнительно содержать устройство, например, кодер и/или декодер, который содержит схему обработки, выполненную с возможностью выполнять любой из способов и/или процессов, описанных в данном документе.
Варианты осуществления могут быть реализованы как аппаратное обеспечение, встроенное программное обеспечение, программное обеспечение или любая их комбинация. Например, функциональные возможности кодера/кодирования или декодера/декодирования могут выполняться схемой обработки с или без встроенного программного обеспечения или программного обеспечения, например, процессор, микроконтроллер, цифровой сигнальный процессор (DSP), программируемая вентильная матрица (FPGA), специализированная интегральная схема (ASIC) и т.п.
Функциональные возможности кодера 100 (и соответствующего способа 100 кодирования) и/или декодера 200 (и соответствующего способа 200 декодирования) могут быть реализованы с помощью программных инструкций, сохраненных на машиночитаемом носителе. Программные инструкции при исполнении побуждают схему обработки, компьютер, процессор и т.п. выполнять этапы способов кодирования и/или декодирования. Машиночитаемый носитель может быть любым носителем, включающий в себя постоянный носитель, на котором хранится программа, например, диск Bluray, DVD, CD, USB (flash), жесткий диск, серверное хранилище, доступное через сеть и т.д.
Вариант осуществления изобретения содержит или представляет собой компьютерную программу, содержащую программный код для выполнения любого из описанных здесь способов, при исполнении на компьютере.
Вариант осуществления изобретения содержит или является машиночитаемым носителем, содержащим программный код, который при исполнении процессором побуждают компьютерную систему выполнять любой из описанных в настоящем документе способов.
ПЕРЕЧЕНЬ ССЫЛОЧНЫХ ПОЗИЦИЙ
Фиг.1
100 кодер
103 блок изображения
102 вход (например, входной порт, входной интерфейс)
104 вычисление остаточной величины [блок или этап]
105 остаточный блок
106 преобразование (например, дополнительно содержащий масштабирование) [блок или этап]
107 преобразованные коэффициенты
108 квантование [блок или этап]
109 квантованные коэффициенты
110 обратное квантование [блок или этап]
111 деквантованные коэффициенты
112 обратное преобразование (например, дополнительно содержащее масштабирование) [блок или этап]
113 блок с обратным преобразованием
114 восстановление [блок или этап]
115 восстановленный блок
116 (Строка) буфер [блок или этап]
117 опорные выборки
120 контурный фильтр [блок или этап]
121 отфильтрованный блок
130 буфер декодированных изображений (DPB) [блок или этап]
142 внешняя оценка (или внешняя оценка изображения) [блок или этап]
143 параметры внешней оценки (например, опорное изображение/индекс опорного изображения, вектор движения/смещение)
144 внешнее предсказание (или внешнее предсказание изображения) [блок или этап]
145 блок внешнего предсказания
152 внутренняя оценка (или внутренняя оценка изображения) [блок или этап]
153 параметры внутреннего предсказания (например, режим внутреннего предсказания)
154 внутреннее предсказание (внутреннее предсказание кадра/изображения) [блок или этап]
155 блок внутреннего предсказания
162 выбор режима [блок или этап]
165 блок предсказания (блок 145 внешнего предсказания или блок 155 внутреннего предсказания)
170 энтропийное кодирование [блок или этап]
171 данные закодированного изображения (например, битовый поток)
172 выход (выходной порт, выходной интерфейс)
231 декодированное изображение
Фиг. 2
200 декодер
171 данные закодированного изображения (например, битовый поток)
202 вход (порт/интерфейс)
204 энтропийное декодирование
209 квантованные коэффициенты
210 обратное квантование
211 деквантованные коэффициенты
212 обратное преобразование (масштабирование)
213 обратно преобразованный блок
214 восстановление (блок)
215 восстановленный блок
216 (строка) буфер
217 опорные выборки
220 контурный фильтр (в контурном фильтре)
221 отфильтрованный блок
230 буфер декодированных изображений (DPB)
231 декодированное изображение
232 выход (порт/интерфейс)
244 внешнее предсказание (внешнее предсказание изображения/кадра)
245 блок внешнего предсказания
254 внутреннее предсказание (внутреннее предсказание изображения/кадра)
255 блок внутреннего предсказания
260 выбор режима
265 блок предсказания (блок 245 внешнего предсказания или блок 255 внутреннего предсказания)
Фиг. 3
300 система кодирования
310 устройство источника
312 изображение источника
313 (необработанные) данные изображения
314 препроцессор/блок предварительной обработки
315 данные предварительно обработанного изображения
318 блок/интерфейс связи
320 устройство назначения
322 блок/интерфейс связи
326 постпроцессор/блок постобработки
327 данные постобработанного изображения
328 устройство/блок отображения
330 переданные/принятые/сообщенные (закодированные) данные изображения
Фиг. 4
400 изображение
401 первый блок кодирования
402 второй блок кодирования
403 третий блок кодирования
404 край первого блока кодирования
405 край второго блока кодирования
406 первые модифицированные выборки
407 вторые модифицированные выборки
Фиг. 5
501 устройство для обработки изображений
502 фильтр
Фиг. 6
600 кодер
601 устройство для обработки изображений
602 фильтр
Фиг. 7
700 декодер
701 устройство обработки изображений
702 фильтр
Фиг. 8
801 устройство обработки изображений
802 фильтр
803 блок принятия решений
Фиг.9
900 изображение
901 первый блок кодирования
902 второй блок кодирования
903 третий блок кодирования
904 край первого блока кодирования
905 край второго блока кодирования
906 первые входные выборки
907 первые модифицированные выборки
908 вторые входные выборки
909 вторые модифицированные выборки
Фиг. 10
1000 первый этап
1001 второй этап
1002 третий этап
1003 четвертый этап
1004 пятый этап
1005 шестой этап
1006 седьмой этап
1007 восьмой этап
1008 девятый этап
1009 десятый этап
1010 одиннадцатый этап
1011 двенадцатый этап
1012 тринадцатый этап
1013 четырнадцатый этап
1014 пятнадцатый этап
1015 шестнадцатый этап
Фиг. 11
1100 изображение
1101 первый блок кодирования
1102 второй блок кодирования
1103 третий блок кодирования
1104 край первого блока
1105 край второго блока
Фиг. 12
1200 изображение
1201 край блока
CU1 -
CU40 блоки 1-40 кодирования
Фиг.13
1300 изображение
1301 первый блок кодирования
1302 второй блок кодирования
1303 край блока
Фиг. 14
1400 первый этап
1401 второй этап
1402 третий этап
1403 четвертый этап
1404 пятый этап
название | год | авторы | номер документа |
---|---|---|---|
УСТРОЙСТВО ОБРАБОТКИ ИЗОБРАЖЕНИЙ И СПОСОБ ВЫПОЛНЕНИЯ ЭФФЕКТИВНОГО УДАЛЕНИЯ БЛОЧНОСТИ | 2022 |
|
RU2779474C1 |
УСТРОЙСТВО И СПОСОБ ВЫПОЛНЕНИЯ УДАЛЕНИЯ БЛОЧНОСТИ | 2019 |
|
RU2785090C2 |
УСТРОЙСТВО ОБРАБОТКИ ИЗОБРАЖЕНИЙ И СПОСОБ ВЫПОЛНЕНИЯ УСТРАНЕНИЯ БЛОЧНОСТИ С ОПТИМИЗАЦИЕЙ КАЧЕСТВА | 2019 |
|
RU2793920C2 |
ФЛАГИ ФИЛЬТРА ДЛЯ УСТРАНЕНИЯ БЛОЧНОСТИ СУБКАРТИНОК | 2020 |
|
RU2825099C2 |
ФЛАГИ ФИЛЬТРА ДЛЯ УСТРАНЕНИЯ БЛОЧНОСТИ СУБКАРТИНОК | 2020 |
|
RU2825100C2 |
ФЛАГИ ФИЛЬТРА ДЛЯ УСТРАНЕНИЯ БЛОЧНОСТИ СУБКАРТИНОК | 2020 |
|
RU2825023C1 |
СИСТЕМА И СПОСОБ ДЛЯ КОДИРОВКИ ВИДЕО | 2020 |
|
RU2824190C2 |
СИСТЕМА И СПОСОБ ДЛЯ КОДИРОВКИ ВИДЕО | 2020 |
|
RU2813135C1 |
ДЕБЛОКИРУЮЩИЙ ФИЛЬТР ДЛЯ ГРАНИЦ ПОДРАЗДЕЛОВ, ВОЗНИКАЮЩИХ ПОД ДЕЙСТВИЕМ ИНСТРУМЕНТА КОДИРОВАНИЯ ИНТРА-ПОДРАЗДЕЛОВ | 2020 |
|
RU2777967C1 |
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ПОЛУЧЕНИЯ ГРАНИЧНОЙ МОЩНОСТИ ФИЛЬТРА ДЕБЛОКИНГА | 2019 |
|
RU2783348C1 |
Изобретение относится к области обработки изображений. Технический результат заключается в повышении эффективности удаления блочности за счет обеспечения гибкого осуществления параллелизации обработки асимметричной фильтрации для обоих краев блоков. Первый блок кодирования имеет размер блока SA выборок на N выборок. Второй блок кодирования имеет размер блока SB выборок на М выборок. Декодирование содержит фильтрацию, содержащую этапы, на которых модифицируют значения не более чем MA выборок первого блока кодирования в качестве выходных значений первого фильтра, причем не более чем MA выборок расположены в строке, перпендикулярной и смежной краю блока. Модифицируют значения не более чем MB выборок второго блока кодирования в качестве выходных значений второго фильтра, причем не более чем MB выборок расположены в строке, перпендикулярной и смежной краю блока, где MA≠MВ. Используют значения не более чем IA выборок первого блока кодирования в качестве входных значений первого фильтра для вычисления выходных значений первого фильтра и/или выходных значений второго фильтра, причем не более чем IA выборок расположены в строке, перпендикулярной и смежной краю блока. 5 н. и 3 з.п. ф-лы, 14 ил.
1. Устройство (501, 601, 701, 801) обработки изображения для использования в кодере (600) изображения и/или декодере (700) изображения для удаления блочности края (904, 905, 1201, 1303) блока между первым блоком (901, 1301) кодирования и вторым блоком (902, 1302) кодирования изображения (900, 1200, 1300), при этом
первый блок (901, 1301) кодирования имеет размер блока SA выборок на N выборок, при этом SA выборок расположены в линии, перпендикулярной краю (904, 905, 1201, 1303) блока, а N выборок расположены в линии, параллельной краю (904, 905, 1201, 1303) блока,
второй блок (902, 1302) кодирования имеет размер блока SB выборок на N выборок, при этом SB выборок расположены в линии, перпендикулярной краю (904, 905, 1201, 1303) блока, а N выборок расположены в линии, параллельной краю (904, 905, 1201, 1303) блока, причем
устройство (501, 601, 701, 801) обработки изображений содержит фильтр (502, 602, 702, 802) для фильтрации края (904, 905, 1201, 1303) блока, выполненный с возможностью
модификации значений не более чем MA выборок первого блока (901, 1301) кодирования в качестве выходных значений первого фильтра, причем не более чем MA выборок расположены в строке, перпендикулярной и смежной краю (904, 905, 1201, 1303) блока;
модификации значений не более чем MВ выборок второго блока (902, 1302) кодирования в качестве выходных значений второго фильтра, причем не более чем MВ выборок находится в строке, перпендикулярной и смежной краю (904, 905, 1201, 1303) блока, где MA≠MВ;
использования не более чем количество IA значений выборок первого блока (901, 1301) кодирования в качестве входных значений первого фильтра для вычисления выходных значений первого фильтра и/или выходных значений второго фильтра, причем не более чем IA выборок расположены в строке, перпендикулярной и смежной краю (904, 905, 1201, 1303) блока; и
использования значений не более чем IB выборок второго блока (902, 1302) кодирования в качестве входных значений второго фильтра для вычисления выходных значений первого фильтра и/или выходных значений второго фильтра, причем не более чем IB выборок расположены в строке, перпендикулярной и смежной краю (904, 905, 1201, 1303) блока, где IA ≠ IB; причем
фильтр (502, 602, 702, 802) выполнен с возможностью конфигурирования, когда SA=4, для установки IA=3 и MA=1; и фильтр (502, 602, 702, 802) выполнен с возможностью конфигурирования, когда SA= 8, для установки IB=4 и MB=3.
2. Устройство (501, 601, 701, 801) обработки изображений по п.1, дополнительно содержащее определитель (803), выполненный с возможностью определения, должен ли край (904, 905, 1201, 1303) блока быть отфильтрован и/или должна выполняться слабая фильтрация или сильная фильтрация на основании
значений не более чем DA выборок первого блока (901, 1301) кодирования в качестве значений решения первого фильтра, причем DA выборки расположены в строке, перпендикулярной и смежной краю (904, 905, 1201, 1303) блока, и
значений не более чем DB выборок второго блока (902, 1302) кодирования в качестве значений решения второго фильтра, причем DB выборки расположены в строке, перпендикулярной и смежной краю (904, 905, 1201, 1303) блока.
3. Устройство (501, 601, 701, 801) обработки изображений по п.2, в котором входные значения первого фильтра идентичны значениям решения первого фильтра, а
входные значения второго фильтра идентичны значениям решения второго фильтра.
4. Устройство (501, 601, 701, 801) обработки изображений по любому из пп.1-3, в котором,
если край (1201) блока является горизонтальным краем (1201) блока, и
если край (1201) блока перекрывается с краем блока блока дерева кодирования (CTU) изображения (1200), и
если второй блок кодирования является текущим блоком, и первый блок кодирования является смежным блоком упомянутого текущего блока, фильтр (502, 602, 702, 802) выполнен с возможностью установки
- IA в 4, и
- MA в 3 или 4.
5. Кодер для кодирования изображения (900, 1300), содержащий устройство (501, 601, 701, 801) обработки изображения по любому из пп.1-3.
6. Декодер для декодирования изображения (900, 1300), содержащий устройство (501, 601, 701, 801) обработки изображения по любому из пп.1-3.
7. Способ удаления блочности для удаления блочности края (904, 905, 1201, 1303) блока между первым блоком (901, 1301) кодирования и вторым блоком (902, 1302) кодирования изображения (900, 1200, 1300) при кодировании изображения и/или декодировании (1400) изображения, причем
первый блок (901, 1301) кодирования имеет размер блока SA выборок на N выборок, при этом SA выборок расположены в линии, перпендикулярной краю (904, 905, 1201, 1303) блока, а N выборок расположены в линии, параллельной краю (904, 905, 1201, 1303) блока,
второй блок (902, 1302) кодирования имеет размер блока SB выборок на N выборок, при этом SB выборок расположены в линии, перпендикулярной краю (904, 905, 1201, 1303) блока, а N выборок расположены в линии, параллельной краю (904, 905, 1201, 1303) блока, при этом
декодирование содержит фильтрацию, содержащую этапы, на которых:
модифицируют (1403) значения не более чем MA выборок первого блока (901, 1301) кодирования в качестве выходных значений первого фильтра, причем не более чем MA выборок расположены в строке, перпендикулярной и смежной краю (904, 905, 1201, 1303) блока;
модифицируют (1404) значения не более чем MB выборок второго блока (902, 1302) кодирования в качестве выходных значений второго фильтра, причем не более чем MB выборок расположены в строке, перпендикулярной и смежной краю (904, 905, 1201, 1303) блока, где MA≠MВ;
используют (1401) значения не более чем IA выборок первого блока (901, 1301) кодирования в качестве входных значений первого фильтра для вычисления выходных значений первого фильтра и/или выходных значений второго фильтра, причем не более чем IA выборок расположены в строке, перпендикулярной и смежной краю (904, 905, 1201, 1303) блока; и
используют (1402) значения не более чем IB выборок второго блока (902, 1302) кодирования в качестве входных значений второго фильтра для вычисления выходных значений первого фильтра и/или выходных значений второго фильтра, причем не более чем IB выборок расположены в строке, перпендикулярной и смежной краю (904, 905, 1201, 1303) блока, где IA ≠ IB; причем
фильтр (502, 602, 702, 802) выполнен с возможностью конфигурирования, когда SA=4, для установки IA=3 и MA=1; и фильтр (502, 602, 702, 802) выполнен с возможностью конфигурирования, когда SA= 8, для установки IB=4 и MB=3.
8. Энергонезависимый машиночитаемый носитель, содержащий программный код, вызывающий, при исполнении компьютером, выполнение способа по п.7.
WO 2012096614 A2, 19.07.2012 | |||
US 20130329814 A1, 12.12.2013 | |||
US 20150365666 A1, 17.12.2015 | |||
US 20150249842 A1, 03.09.2015 | |||
US 9363516 B2, 07.06.2016 | |||
ОПРЕДЕЛЕНИЕ ЗНАЧЕНИЙ УРОВНЯ ГРАНИЦЫ ФИЛЬТРОВАНИЯ УДАЛЕНИЯ БЛОЧНОСТИ ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2012 |
|
RU2586003C2 |
Авторы
Даты
2022-03-15—Публикация
2018-03-28—Подача