СПОСОБ ДЕКОДИРОВАНИЯ, ДЕКОДЕР, ПРОГРАММНЫЙ ПРОДУКТ, ПРОГРАММНОЕ ПРИЛОЖЕНИЕ ДЛЯ МОБИЛЬНОГО УСТРОЙСТВА БЕСПРОВОДНОЙ СВЯЗИ И ЭЛЕКТРОННЫЙ ПОТРЕБИТЕЛЬСКИЙ ПРОДУКТ
DECODING METHOD, DECODER, SOFTWARE PRODUCT, SOFTWARE APPLICATION FOR MOBILE WIRELESS COMMUNICATION DEVICE, AND ELECTRONIC CONSUMER PRODUCT

ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится к декодерам для приема кодированных входных данных и декодирования указанных входных данных с формированием соответствующих декодированных выходных данных. Кроме того, настоящее изобретения также относится к способам декодирования кодированных входных данных с формированием соответствующих декодированных выходных данных. Также настоящее изобретение относится к программным продуктам, хранящимся на машиночитаемых носителях, при этом выполнение указанных программных продуктов осуществляют посредством вычислительных аппаратных средств для реализации вышеупомянутых способов.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
В современном обществе в возрастающей степени осуществляется хранение данных, например, мультимедийного контента, и обмен им посредством Интернета и беспроводных сетей связи; при этом такой мультимедийный контент часто включает, например, изображения, видео- и аудиоданные, но не ограничивается перечисленным. Хранение и обмен данными осуществляется между устройствами, программными приложениями, мультимедийными системами и службами данных. Во время такого хранения и обмена данными возникают ситуации, при которых осуществляют захват изображений и видеоданных, а также их сканирование, передачу, совместное использование, просмотр и печать. Однако обмен такими изображениями и видеоданными зависит от используемого объема памяти данных и ширины полосы пропускания системы связи. Если ширина полосы пропускания системы связи ограничена, для обмена такими изображениями и видеоданными требуется значительное время. Для удовлетворения таких требований к хранению обычной практикой является использование способов кодирования изображений и видеоданных, которые также обеспечивают сжатие данных. В таблице 1 представлены некоторые современные стандарты кодирования для изображений и видеоданных.
Таблица 1
Современные стандарты кодирования
JPEG
MPEG-1
Н.261
WebP
Lucid
JPEG2000
MPEG-2
Н.263
WebM
GIF
JPEG XR
MPEG-4
Н.264
PNG
MPEG-4 AVC
HEVC
TIFF
MPEG-4 MVC
BMP
МР3
VC-1
Theora
AAC
FLAC
Ogg Vorbis
Speex
Размер файлов изображений и аудиоданных увеличивается, поскольку качество изображений значительно улучшается, например, путем применения стандартов высокой четкости (high definition, HD) и использования широкого динамического диапазона (high dynamic range, HDR). Однако трехмерные (3-dimensional, 3D) изображения, видео- и аудиоданные приобретают увеличивающуюся популярность, что требует, соответственно, более эффективных способов кодирования и декодирования в кодерах и декодерах, то есть «кодеках», чтобы справиться с соответствующим увеличившимся количеством данных, которые должны быть переданы и сохранены. Однако крайне необходимым является, чтобы способы кодирования, обеспечивающие сжатие данных, по существу не имели потерь в отношении информационного контента при формировании сжатых данных.
Стандартные кодеки описаны в ранее опубликованных заявках на патент и выданных патентах, например, в US 5832130, US 7379496 и US 7676101. В общем, известные видеокодеки не могут эффективно кодировать протяженные области изображений по существу с постоянными параметрами, хотя могут одновременно кодировать пространственно высокодетализированные области изображений. Обычной практикой является применение компенсации движения в форме предсказания и способов кодирования ошибок предсказания на основе использования преобразований, например, дискретного косинусного преобразования (discrete cosine transform, DCT) и вейвлет-преобразований. Эти преобразования используют процесс, при котором части заданного изображения, например, неподвижного изображения или изображения, формирующего часть видеопоследовательности, разделяют на блоки, которые затем подвергаются процессам кодирования. Такие блоки представляют собой, например, элементы изображения 8×8, элементы изображения 4×4 или тому подобное. Применяют такие относительно небольшие блоки, поскольку большие размеры блоков приводят к неэффективным процессам кодирования, хотя иногда используют блоки элементов изображений 16×16. В соответствии с известными современными подходами к кодированию изображений, если для кодирования используют множество блоков различного размера, обычной практикой является использование небольшого разброса размеров блоков; кроме того, размеры блоков выбирают на основе того, насколько хорошо может быть компенсировано движение в соответствующей области блока, или на основе параметра качества кодирования, например, параметра целевого качества. В общем, для обеспечения более высокого качества кодированных изображений требуется меньший размер блоков, что приводит к меньшему сжатию данных. Некоторые типы современного кодирования могут даже привести к увеличению размера данных, если включены функции коррекции ошибок, такие как коды контроля по четности и коды коррекции ошибок.
В соответствии с вышесказанным, необходимо понимать, что обеспечение сжатия данных, например, изображений и видео, но не ограничиваясь перечисленным, при сохранении качества является современной проблемой, которая не может быть в достаточной мере решена известными кодерами и декодерами, несмотря на большое разнообразие кодеков, разработанных в течение последних десятилетий.
В опубликованной заявке РСТ WO 2010/039822 («Кодирование видеосигнала с использованием преобразований, больших 4×4 и 8×8» ("Video Coding Using Transforms Bigger than 4×4 and 8×8"), заявитель Qualcomm Inc.) описана система обработки видеоданных, способ и система для применения преобразований, больших чем 8×8, и непрямоугольных преобразований, и для формирования синтаксических элементов преобразованного размера, указывающих на преобразования для декодирования видеоданных. Синтаксический элемент преобразованного размера опционально формируется кодером на основе размера блока видеоданных и содержимого указанного блока видеоданных. Кроме того, синтаксический элемент преобразованного размера может быть сформирован в соответствии с набором правил для выбора размеров преобразования из 4×4, 8×8 и больших размеров преобразования во время процесса кодирования. Декодер опционально выполняет обратное преобразование на основе синтаксического элемента преобразованного размера и правил, используемых кодером. Синтаксические элементы преобразованного размера опционально передают в декодер как часть кодированного битового потока видеоданных.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
В соответствии с настоящим изобретением предложен декодер для декодирования кодированных входных данных и для формирования соответствующих декодированных выходных данных, при этом указанные декодированные выходные данные являются распакованными по отношению к указанным кодированным входным данным без существенной потери качества, возникающей во время декодирования; при этом кодированные данные опционально представляют собой данные любого типа, например, по меньшей мере одно из следующего: данные изображения, видеоданные, аудиоданные, экономические данные, данные маскирования, сейсмографические данные, данные аналого-цифрового преобразования (ADC), данные биомедицинских сигналов, данные текстур, календарные данные, математические данные, двоичные данные, но не ограничиваются перечисленным.
В соответствии с настоящим изобретением также предложен способ декодирования кодированных входных данных и формирования соответствующих декодированных выходных данных, при этом указанные декодированные выходные данные распакованы по отношению к указанным кодированным входным данным без существенной потери качества, возникающей во время декодирования.
Согласно первому аспекту, предложен способ декодирования кодированных входных данных согласно п.1 приложенной формулы изобретения: предложен способ кодирования кодированных входных данных с формированием соответствующих декодированных выходных данных, характеризующийся тем, что указанный способ включает следующие шаги:
a) обработку указанных кодированных входных данных для извлечения из них информации о заголовке, указывающей на кодированные данные, относящиеся к блокам и/или пакетам, включенным в указанные кодированные входные данные, при этом указанная информация о заголовке включает данные, указывающие на одно или более преобразований, примененных для кодирования и сжатия исходных данных блока и/или пакета для включения их в качестве кодированных данных, относящихся к указанным блокам и/или пакетам;
b) подготовку поля данных в устройстве хранения данных для приема декодированного содержимого блока и/или пакета;
c) извлечение информации, описывающей указанное одно или более преобразований, и последующее применение инверсии указанного одного или более преобразований для декодирования указанных кодированных и сжатых исходных данных блока и/или пакета с формированием соответствующего декодированного содержимого блока и/или пакета для заполнения указанного поля данных;
d) разбиение и/или объединение блоков и/или пакетов в указанном поле данных в соответствии с информацией о разбиении и/или объединении, включенной в указанные кодированные входные данные; и
e) вывод данных из указанного поля данных в виде декодированных выходных данных, когда кодированные входные данные по меньшей мере частично декодированы.
Преимущество настоящего изобретения состоит в том, что предложенный способ обеспечивает эффективное декодирование кодированных входных данных и их распаковку по существу без потерь качества контента, представленного в указанных кодированных входных данных.
Кодированные данные предпочтительно представляют собой данные любого типа, например, данные, включающие по меньшей мере одно из следующего: данные изображения, видеоданные, аудиоданные, экономические данные, данные маскирования, сейсмографические данные, данные аналого-цифрового преобразования (ADC), данные биомедицинских сигналов, данные текстур, календарные данные, математические данные, но не ограничиваются перечисленным.
Опционально указанный способ включает подачу указанных кодированных данных по меньшей мере из одного из следующих источников: устройства хранения данных, посредством сети связи, карты памяти, дисков для хранения данных, локальных сетей связи (LAN), непосредственно из кодера.
Опционально указанный способ включает извлечение дополнительной информации из базы данных для использования при выполнении указанной инверсии указанного одного или более преобразований, при этом указанная дополнительная информация включает по меньшей мере одно из следующего: алгоритмы, правила, один или более параметров преобразования.
Опционально указанный способ включает декодирование блоков и/или пакетов, включающих временные последовательности элементов данных, при этом разделение указанных блоков заданного элемента данных в последовательности зависит от содержимого, представленного в одном или более элементах данных перед заданным элементом данных в указанной временной последовательности элементов данных; опционально элементы данных включают по меньшей мере одно из следующего: данные изображения, видеоданные, аудиоданные, экономические данные, данные маскирования, сейсмографические данные, данные аналого-цифрового преобразования (ADC), данные биомедицинских сигналов, данные текстур, календарные данные, математические данные, но не ограничиваются перечисленным.
Кроме того, указанный способ опционально включает извлечение из указанных кодированных входных данных информации о заголовке, указывающей на базу данных для обеспечения декодирования указанных кодированных входных данных, для предоставления доступа к указанной дополнительной информации, использованной при предшествующем кодировании указанных входных данных.
Опционально указанный способ включает использование для инверсии указанного одного или более преобразований одного или более из следующего: ссылки на базу данных, значения постоянной составляющей, изменения, масштабирования, линейного, многоуровневого, неизменяемого кодирования, интерполяции, экстраполяции, дискретного косинусного преобразования (DCT), импульсно-кодовой модуляции (РСМ), дифференциальной импульсно-кодовой модуляции (DPCM), кодирования длин серий (RLE), скользящего кодирования длин серий (SRLE), модификатора энтропии (ЕМ), кодирования на основе преобразования Лемпеля-Зива (LZO), кодирования с переменной длиной (VLC), кодирования Хаффмана, арифметического кодирования, диапазонного кодирования, кодирования с преобразованием, дельта-кодирования, кодирования ODelta, кодирования длин серий для bzip2.
Опционально, указанный способ включает декодирование по меньшей мере одного из следующего: данных изображения, видеоданных, аудиоданных, экономических данных, данных маскирования, сейсмографических данных, данных аналого-цифрового преобразования (ADC), данных биомедицинских сигналов, данных текстур, календарных данных, математических данных, двоичных данных, но не ограничиваются перечисленным.
В соответствии со вторым аспектом, предложен программный продукт, хранящийся на машиночитаемом носителе, характеризующийся тем, что выполнение указанного программного продукта посредством вычислительных аппаратных средств обеспечивает выполнение способа в соответствии с первым аспектом настоящего изобретения.
В соответствии с третьим аспектом, предложено программное приложение для мобильного устройства беспроводной связи, характеризующееся тем, что око включает программный продукт в соответствии со вторым аспектом настоящего изобретения.
В соответствии с четвертым аспектом, предложен декодер для декодирования входных данных с формированием соответствующих декодированных выходных данных, отличающийся тем, что указанный декодер содержит аппаратные средства для обработки данных, которые осуществляют:
a) обработку указанных кодированных входных данных для извлечения из них информации о заголовке, указывающей на кодированные данные, относящиеся к блокам и/или пакетам, включенным в указанные кодированные входные данные, при этом указанная информация о заголовке включает данные, указывающие на одно или более преобразований, примененных для кодирования и сжатия исходных данных блока и/или пакета для включения их в качестве кодированных данных, относящихся к указанным блокам и/или пакетам;
b) подготовку поля данных в устройстве хранения данных для приема декодированного содержимого блока и/или пакета;
c) извлечение информации, описывающей указанное одно или более преобразований, и последующее применение инверсии указанного одного или более преобразований для декодирования указанных кодированных и сжатых исходных данных блока и/или пакета с формированием соответствующего декодированного содержимого блока и/или пакета для заполнения указанного поля данных;
d) разбиение и/или объединение блоков и/или пакетов в указанном поле данных в соответствии с информацией о разбиении и/или объединении, включенной в указанные кодированные входные данные; и
e) вывод данных из указанного поля данных в виде декодированных выходных данных, когда кодированные входные данные по меньшей мере частично декодированы.
Кодированные данные предпочтительно представляют собой данные любого типа, например, по меньшей мере одно из следующего: данные изображения, видеоданные, аудиоданные, экономические данные, данные маскирования, сейсмографические данные, данные аналого-цифрового преобразования (ADC), данные биомедицинских сигналов, данные текстур, календарные данные, математические данные, двоичные данные, но не ограничиваются перечисленным.
Опционально указанный декодер осуществляет прием указанных кодированных данных по меньшей мере из одного из следующих источников: устройства хранения данных, посредством сети связи, карты памяти, дисков для хранения данных, локальных сетей связи (LAN), непосредственно из кодера.
Опционально указанный декодер выполнен так, чтобы указанные аппаратные средства для обработки данных были реализованы с использованием вычислительных аппаратных средств, которые осуществляют исполнение программного продукта.
Опционально указанный декодер осуществляет использование инверсии указанного одного или более преобразований для распаковки содержимого, связанного с указанными блоками и/или пакетами, так чтобы указанные декодированные выходные данные были больше по размеру, чем указанные кодированные входные данные, которые должны быть декодированы.
Опционально указанный декодер реализован так, что указанные блоки и/или пакеты разделены и/или объединены так, чтобы по меньшей мере один из представляющих их параметров, которые описывают содержимое указанных блоков или пакетов, являлся по существу постоянным в пределах разделенных и/или объединенных блоков и/или пакетов. Кроме того, опционально, при работе указанного декодера указанный по меньшей мере один параметр соответствует цвету указанных разделенных и/или объединенных блоков.
Опционально, указанный декодер реализован так, что указанные блоки и/или пакеты включают последовательности элементов данных, при этом разделение указанных входных данных, соответствующих заданному элементу данных, с формированием множества соответствующих блоков зависит от содержимого, представленного в одном или более элементах данных перед заданным элементом данных в указанной временной последовательности элементов данных; опционально элементы данных включают по меньшей мере одно из следующего: данные изображения, видеоданные, аудиоданные, экономические данные, данные маскирования, сейсмографические данные, данные аналого-цифрового преобразования (ADC), данные биомедицинских сигналов, данные текстур, календарные данные, математические данные, двоичные данные, но не ограничиваются перечисленным.
Опционально указанный декодер осуществляет извлечение из указанных преобразованных данных информации о заголовке с формированием декодированных выходных данных, при этом указанная информация о заголовке включает информацию, указывающую на указанное одно или более преобразований, примененных кодером, который формирует указанные кодированные входные данные.
Опционально указанный декодер осуществляет извлечение дополнительной информации из базы данных для использования при выполнении указанной инверсии одного или более преобразований, при этом указанная дополнительная информация включает по меньшей мере одно из следующего: алгоритмы, правила, один или более параметров преобразования. Кроме того, указанный декодер осуществляет извлечение информации о заголовке из указанных кодированных входных данных с обеспечением указания на базу данных для обеспечения декодирования указанных кодированных входных данных для предоставления доступа к указанной дополнительной информации, использованной при предшествующем кодировании или декодировании указанных кодированных входных данных.
Опционально указанный декодер осуществляет использование для инверсии указанного одного или более преобразований инверсий одного или более из следующего: ссылки на базу данных, значения постоянной составляющей, изменения, масштабирования, линейного, многоуровневого, неизменяемого кодирования, интерполяции, экстраполяции, дискретного косинусного преобразования (DCT), импульсно-кодовой модуляции (РСМ), дифференциальной импульсно-кодовой модуляции (DPCM), кодирования длин серий (RLE), скользящего кодирования длин серий (SRLE), модификатора энтропии (ЕМ), кодирования на основе преобразования Лемпеля-Зива (LZO), кодирования с переменной длиной (VLC), кодирования Хаффмана, арифметического кодирования, диапазонного кодирования, кодирования с преобразованием, дельта-кодирования, кодирования ODelta, кодирования длин серий для bzip2.
Опционально указанный декодер осуществляет декодирование по меньшей мере одного из следующего: данных изображения, видеоданных, аудиоданных, экономических данных, данных маскирования, сейсмографических данных, данных аналого-цифрового преобразования (ADC), данных биомедицинских сигналов, данных текстур, календарных данных, математических данных, двоичных данных.
В соответствии с пятым аспектом, предложен электронный потребительский продукт, осуществляющий прием и/или хранение входных данных, отличающийся тем, что указанный электронный потребительский продукт содержит декодер в соответствии с четвертым аспектом для декодирования указанных входных данных с формированием декодированного содержимого для предоставления по меньшей мере одному пользователю указанного потребительского продукта.
Опционально указанный электронный потребительский продукт представляет собой по меньшей мере одно из следующего: мобильный телефон, сотовый телефон, планшетный компьютер, телевизор, портативное мультимедийное устройство воспроизведения, камеру, персональный компьютер.
Согласно шестому аспекту предложен способ декодирования кодированных входных данных с формированием соответствующих декодированных выходных данных, отличающийся тем, что указанный способ включает следующие шаги:
a) обработку указанных кодированных входных данных для извлечения из них информации о заголовке, указывающей на кодированные данные, относящиеся к блокам и/или пакетам, включенным в указанные кодированные входные данные, при этом указанная информация о заголовке включает данные, указывающие на одно или более преобразований, примененных для кодирования и сжатия исходных данных блока и/или пакета для включения их в качестве кодированных данных, относящихся к указанным блокам и/или пакетам;
b) подготовку поля данных в устройстве хранения данных для приема декодированного содержимого блока и/или пакета;
c) извлечение информации, описывающей указанное одно или более преобразований, и последующее применение инверсии указанного одного или более преобразований для декодирования указанных кодированных и сжатых исходных данных блока и/или пакета с формированием соответствующего декодированного содержимого блока и/или пакета для заполнения указанного поля данных;
d) извлечение дополнительной информации из базы данных для использования при выполнении указанной инверсии указанного одного или более преобразований, при этом указанная дополнительная информация включает по меньшей мере одно из следующего: алгоритмы, правила, один или более параметров преобразования.
e) вывод данных из указанного поля данных в виде декодированных выходных данных, когда кодированные входные данные по меньшей мере частично декодированы.
В соответствии с седьмым аспектом, предложен декодер для декодирования входных данных с формированием соответствующих декодированных выходных данных, отличающийся тем, что указанный декодер содержит аппаратные средства для обработки данных, которые осуществляют:
a) обработку указанных кодированных входных данных для извлечения из них информации о заголовке, указывающей на кодированные данные, относящиеся к блокам и/или пакетам, включенным в указанные кодированные входные данные, при этом указанная информация о заголовке включает данные, указывающие на одно или более преобразований, примененных для кодирования и сжатия исходных данных блока и/или пакета для включения их в качестве кодированных данных, относящихся к указанным блокам и/или пакетам;
b) подготовку поля данных в устройстве хранения данных для приема декодированного содержимого блока и/или пакета;
c) извлечение информации, описывающей указанное одно или более преобразований, и последующее применение инверсии указанного одного или более преобразований для декодирования указанных кодированных и сжатых исходных данных блока и/или пакета с формированием соответствующего декодированного содержимого блока и/или пакета для заполнения указанного поля данных;
d) извлечение дополнительной информации из базы данных для использования при выполнении указанной инверсии указанного одного или более преобразований, при этом указанная дополнительная информация включает по меньшей мере одно из следующего: алгоритмы, правила, один или более параметров преобразования и
e) вывод данных из указанного поля данных в виде декодированных выходных данных, когда кодированные входные данные по меньшей мере частично декодированы.
Необходимо понимать, что признаки настоящего изобретения допускают их объединение в различных комбинациях без выхода за рамки объема настоящего изобретения, заданного приложенной формулой изобретения.
ОПИСАНИЕ ЧЕРТЕЖЕЙ
Далее только в качестве примера будут описаны варианты осуществления настоящего изобретения со ссылкой на следующие чертежи, на которых:
фиг.1 представляет собой схематическое изображение варианта осуществления декодера;
фиг.2 представляет собой блок-схему шагов способа декодирования кодированных входных данных, представляющих по меньшей мере один элемент данных, с формированием соответствующих декодированных выходных данных, при этом указанные декодированные выходные данные распаковывают по отношению к указанным кодированным входным данным без существенной потери качества контента данных во время декодирования, при этом указанный элемент данных предпочтительно включает по меньшей мере одно из следующего: данные изображения, видеоданные, аудиоданные, экономические данные, данные маскирования, сейсмографические данные, данные аналого-цифрового преобразования (ADC), данные биомедицинских сигналов, данные текстур, календарные данные, математические данные, но не ограничиваются перечисленным;
на фиг.3 показан пример разделения изображения на области, соответствующие блокам для декодирования, с использованием способа, шаги которого проиллюстрированы на фиг.2, хотя такое разделение также применимо к другим типам данных;
на фиг.4 показан пример исходного разделения изображения, которое должно быть декодировано с использованием способов в соответствии с вариантами осуществления;
на фиг.5 показан пример разделения изображения, которое должно быть декодировано с использованием способов в соответствии с вариантами осуществления;
на фиг.6 показан пример декодированного изображения и
на фиг.7 показан пример устройства, в котором может быть выполнен способ декодирования.
На сопровождающих чертежах подчеркнутые номера позиций используются для представления элемента, над которым расположен подчеркнутый номер, или элемента, рядом с которым находится подчеркнутый номер. Неподчеркнутый номер относится к элементу, идентифицируемому линией, связывающей неподчеркнутый номер с указанным элементом. Если номер не подчеркнут и сопровождается соответствующей стрелкой, указанный неподчеркнутый номер используется для идентификации общего элемента, на который указывает стрелка.
ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
В целом настоящее изобретение относится к декодерам и соответствующим способам декодирования кодированных входных данных с формированием соответствующих декодированных выходных данных. Кодированные данные опционально представляют собой данные любого типа, например, по меньшей мере одно из следующего: данные изображения, видеоданные, аудиоданные, экономические данные, данные маскирования, сейсмографические данные, данные аналого-цифрового преобразования (ADC), данные биомедицинских сигналов, текстурные данные текстур, календарные данные, математические данные, двоичные данные, но не ограничиваются перечисленным. Указанные способы относятся к приему кодированных входных данных, представляющих, например, одно или более изображений и/или один или более аудиосигналов, и к последующей обработке указанных кодированных входных данных путем выполнения следующих шагов:
I) интерпретации информации о заголовке, включенной в указанные кодированные входные данные;
II) идентификации информации о блоке и/или пакете, представленной в указанных кодированных входных данных;
III) заполнения поля данных блоками и/или пакетами, соответствующими указанной идентифицированной информации о блоке или пакете;
IV) идентификации одного или более преобразований, использованных для формирования информации о блоке и/или пакете; и;
V) применения инверсии указанного идентифицированного одного или более преобразований для декодирования указанной информации о блоке и/или пакете с формированием декодированных данных для заполнения указанного поля данных декодированной информацией о блоке или пакете, что обеспечивает предоставление вышеупомянутых декодированных выходных данных.
Опционально, после выполнения шага III), если во входных кодированных данных обнаруживают, что заданный блок или пакет разделен и/или объединен, заполненные блоки или пакеты в поле данных соответственно разбивают и/или объединяют; такой признак настоящего изобретения обеспечивает конфигурирование поля данных с использованием произвольного шаблона блоков или пакетов, которые последовательно изменяют, например, соответствующим образом разделяют и/или объединяют, во время декодирования указанных кодированных входных данных.
Во время начального кодирования с формированием кодированных входных данных путем использования способа кодирования, реализуемого в кодере, выбор блоков определяется простотой, с которой могут быть кодированы области, соответствующие указанным блокам, например, более крупные блоки применяют для областей указанного одного или более изображений, которые имеют по существу постоянное значение связанного с ними параметра, то есть являются «однородными», а меньшие блоки используют для областей указанного одного или более изображений, которые сложно кодировать вследствие относительно резких пространственных изменений значений связанного с ними параметра для указанных областей. Указанные параметры опционально относятся к одному или более из следующего: цвету, яркости, значению параметра изменения, шаблону повторения. Каждое кодирование соответствует, например, по меньшей мере одному параметру, связанному с заданной областью, который является по существу постоянным в пределах указанной заданной области, например, по существу постоянным заданным цветом, амплитудой, интенсивностью, количеством или кодом в пределах заданной области. Кроме того, указанный способ кодирования также использует блоки большего размера для стационарных областей в видеопоследовательностях изображений или для групп областей в видеопоследовательностях изображений, которые перемещаются аналогичным образом, а именно, блоки, которые соответствуют неподвижным объектам. Блоки опционально являются прямоугольными относительно областей указанного одного или более изображений, которые они представляют, например, 64×64 элемента, 32×16 элементов, 4×20 элементов, 10×4 элемента, 1×4 элемента, 3×1 элемент, 8×8 элементов, 1×1 элемент и т.д.; опционально, указанные элементы соответствуют пикселам, представленным в указанном одном или более изображениях, но могут быть подвергнуты операциям масштабирования во время кодирования, то есть каждый элемент относится к соответствующему множеству пикселов.
Однако опционально применяют также другие формы блоков, например, эллиптические блоки, круглые блоки и т.д. Кроме того, аналогично, указанный способ кодирования может применяться для кодирования одного или более аудиосигналов, при этом указанный один или более аудиосигналы разделяют на пакеты и/или объединяют в пакеты различной временной длительности в зависимости от характера указанных соответствующих им аудиосигналов, затем пакеты кодируют с формированием кодированных сжатых выходных данных, при этом указанные пакеты аналогичны вышеупомянутым блокам, но относятся не к информации об изображении, а к аудиоинформации. Способ кодирования позволяет осуществлять одновременное кодирование как аудиоинформации, так и информации об изображении, например, как в мультимедийном контенте. Однако необходимо понимать, что варианты осуществления настоящего изобретения не ограничиваются обработкой изображений, видеоданных и/или аудиоданных, но могут применяться к другим типам элементов данных, например, по меньшей мере к одному из таких типов как следующие: данные изображения, видеоданные, аудиоданные, экономические данные, данные маскирования, сейсмографические данные, данные аналого-цифрового преобразования (ADC), данные биомедицинских сигналов, данные текстур, календарные данные, математические данные, двоичные данные, но не ограничиваются перечисленным.
При обработке областей указанного одного или более изображений, а альтернативно или дополнительно - других типов элементов данных, в соответствующих блоках указанный способ кодирования включает проверку качества представления информации, предоставленной блоками, в отношении соответствующей детали в указанном одном или более изображениях для вычисления соответствующего индекса качества; в случае если вычисленный индекс качества указывает, при сравнении с пороговым значением эталонного качества, что использовался такой выбор размеров блоков, что качество представления данных, предоставленных блоками, являлось недостаточным, способ кодирования осуществляет итерацию назад и последовательно использует блоки меньшего размера, альтернативно большего размера, путем их объединения, если это улучшает эффективность сжатия и не ухудшает значительно восстановление, до тех пор пока индекс качества не укажет, что качество представления удовлетворяет значению, заданному пороговым значением эталонного качества. Посредством такого подхода, можно обеспечить сжатие данных во время кодирования по существу без потерь в зависимости от выбора порогового значения для качества представления информации. Опционально, пороговое значение эталонного качества динамически изменяется в зависимости от содержимого, представленного в указанном одном или более изображениях; например, если указанное одно или более изображений являются частью видеопоследовательности, в которой имеется быстрая хаотическая активность, пороговое значение эталонного качества может уменьшаться во время указанной хаотической активности для обеспечения возможности достижения повышенной степени сжатия данных. Хаотическая активность может представлять собой, например, случайные (признаки, такие как текущая бурная вода, пламя, падающий снег, клубящийся дым, океанские волны и т.д., для которых потеря информации не является легко различимой при последующем декодировании кодированных данных в декодере.
Определение блоков в вышеупомянутом кодере может быть опционально основано на одном или более критериях, перечисленных в таблице 2.
Таблица 2
Выбор разбиения и/или объединения во время кодирования изображения
Номер критерия
Критерий
1
Дисперсия или стандартное отклонение данных блока, извлеченных из соответствующей области входного изображения
2
Среднее или суммарное значение абсолютной разности между данными, представленными заданным блоком, и предсказанием его значения
3
Дисперсия или стандартное отклонение абсолютной разности между данными, представленными заданным блоком, и предсказанием его значения
Опционально, предсказания в таблице 2 основаны на известных правилах, применяемых при кодировании одного или более изображений. Альтернативно, предсказания в таблице 2 основаны на предоставленной информации о конфигурации, например, из ссылок выбранной базы данных, из направлений предсказания, из перемещений координат блока в пределах указанного одного или более изображений и т.д. Использование дисперсии или стандартного отклонения является подходом, применяемым для обеспечения сжатия информации путем описания взаимного отношения элементов, включенных в соответствующий заданный блок. Во многих ситуациях предсказания данных блока со связанным с ним кодированием само по себе является достаточным при выполнении кодирования, но опционально предпочтительно включать в предсказание данные ошибки предсказания кода для улучшения точности предсказания. В упрощенном примере кодирования применяется упрощенный способ предсказания данных, например, среднее значение, а именно значение постоянной составляющей, пикселей или элементов в заданном блоке, который должен быть предоставлен в кодированных выходных данных.
Области разбиения или, альтернативно, области объединения, одного или более изображений, переданных в качестве входных данных в кодер, осуществляющий выполнение вышеупомянутого способа, опционально реализуют в соответствии с любым способом, который одновременно обеспечивает сжатие, а также по существу поддерживает сохранение качества изображения, а именно по существу отсутствие потерь во время кодирования. Указанный способ кодирования использует различные алгоритмы для такого разбиения и/или объединения областей. Например, если заданный блок включает существенную информацию, его опционально разбивают на множество соответствующих блоков меньшего размера, альтернативно, его опционально объединяют в соответствующие блоки большего размера, которые являются относительно «однородными», а именно по существу постоянными в отношении их содержимого, так, чтобы они по отдельности включали относительно мало информации. Если способ кодирования применяется по меньшей мере к одному или более изображениям и/или одному или более аудиосигналам, качество кодирования и погрешность кодирования в кодированных выходных данных опционально используют для управления способом разбиения, альтернативно, объединения, входных изображений и входных аудиосигналов на блоки и пакеты, соответственно. Однако необходимо понимать, что аналогичным образом могут быть обработаны другие типы элементов данных, например, по меньшей мере один тип из следующих: данные изображения, видеоданные, аудиоданные, экономические данные, данные маскирования, сейсмографические данные, данные аналого-цифрового преобразования (ADC), данные биомедицинских сигналов, данные текстур, календарные данные, математические данные, но не ограничиваются перечисленным. Опционально, если заданное входное изображение разбито на области и соответствующие блоки, альтернативно, объединено в области и соответствующие блоки, осуществляется анализ сформированных с использованием указанного способа кодирования блоков для определения того, могут ли быть объединены какие-либо из блоков, в соответствии с вышеупомянутыми критериями качества, для получения большей степени сжатия данных в кодированных выходных данных. Согласно вышеупомянутому, кодированные выходные данные включают информацию, связанную с блоками, которые задают местоположение их соответствующих областей в исходных изображениях во входных данных, которые должны быть кодированы.
Способ предпочтительно использует множественное кодирование и способы модификации энтропии, а именно преобразования, при кодировании и сжатии данных, описывающих блоки данных. Например, для различных блоков заданного изображения используются различные преобразования, если тем самым достигаются предпочтительные характеристики кодирования и сжатия в зависимости от информационного содержимого различных блоков. Предпочтительно в качестве критерия качества при обработке блоков данных используется RD-оптимизация. Информацию, описывающую множество преобразований, используемых при кодировании блоков, передают в кодированных выходных данных, эта информация либо по существу включена в указанные кодированные выходные данные, либо выходные данные включают ссылку на одну или более баз данных, из которых может быть получена информация, описывающая используемые преобразования. Предпочтительно используемые способы кодирования включают одно или более из следующего: многоуровневое кодирование, линейное кодирование, масштабирование, изменение, интерполяцию, экстраполяцию, неизменяемое кодирование, кодирование с оценкой движения, SRLE, ЕМ, Odelta и диапазонное кодирование, как будет разъяснено более подробно далее. Опционально также предпочтительно применяется разбиение на Init-блоки.
При кодировании указанного одного или более изображений, имеющихся во входных данных, которые должны быть кодированы с использованием указанного способа, данные, связанные с указанными входными изображениями, предпочтительно субдискретизируют, например, в отношении 2×1:1,2×2:1,1×2:1,4×1:1 или аналогично дискретизируют до того, как они были подвергнуты вышеупомянутым способам кодирования. Опционально, такую субдискретизацию выполняют в ответ на желаемое качество кодирования сжатых кодированных выходных данных, сформированных согласно применяемым способам кодирования. Опционально, блоки большего размера, обработанные с использованием указанного способа кодирования, менее дискретизированы, чем блоки меньшего размера, другими словами, применяемая степень дискретизации опционально уменьшается при увеличении размеров блоков. Опционально, во время кодирования масштабный коэффициент, применяемый для субдискретизации, является динамически изменяющимся, например, в ответ на характер содержимого в последовательности кодируемых изображений, например, видео.
Во время кодирования блоков в соответствии с указанным способом кодирования каждый блок имеет различные параметры, которые описывают его содержимое. При кодировании посредством различных «каналов» осуществляют передачу этих параметров. Например, цветовые каналы, описывающие блоки изображения, могут включать одно или более из следующего: черный/белый (black/white, B/W), Y, U, V, красный (red, R), зеленый (green, G), синий (blue, B), голубой (Cyan, C), пурпурный (Magenta, M), желтый (Y) and черный (black, K). Кроме того, входные изображения для кодирования и блоки могут быть опционально обработаны при выполнении упомянутого способа кодирования с использованием множества возможных форматов цветов или пикселей, например, с использованием современных стандартов и форматов Y, YUV420, YUV422, YUV444, RGB444, G и CMYK. Кроме того, указанный формат опционально является планарным, чересстрочным планарным и т.д. Кроме того, способ кодирования предпочтительно используется для изменения формата изображений и/или блоков при выполнении операций кодирования, например, исходное изображение имеет чересстрочный формат RGB и кодируется с использованием способов кодирования с формированием кодированных выходных данных в формате YUV420 или наоборот.
Битовая глубина, а именно динамический диапазон пикселей при осуществлении вышеупомянутого способа кодирования, предпочтительно находится в диапазоне разрешений от 1 до 64 бит. Опционально различные цвета пикселей или аудиоканалы могут быть кодированы с взаимно различными разрешениями, при условии, что критерии качества и характеристики сжатия для способов кодирования удовлетворены.
Способы кодирования опционально осуществляют с использованием параметров кодирования и правил и/или таблиц кодирования, которые хранятся в базе данных и доступ к которым имеется при выполнении операций кодирования. Опционально базу данных создают во время процесса кодирования и предоставляют для использования при осуществлении способа посредством кодера. Например, компенсацию движения во время кодирования предпочтительно осуществляют с использованием баз данных информации, доставленных в кодер. Предпочтительно, кодер осуществляет кодирование исходной информации о пикселях, имеющейся во входных данных, и/или кодирование информации об ошибках предсказания. Использование информации из базы данных при кодировании входных данных для формирования соответствующих кодированных выходных данных обеспечивает возможность адаптации кодера к изменению стандартов кодирования параметров, таблиц и т.п., используемых для кодирования. Принципы кодирования, которые могут быть использованы при осуществлении способов кодирования, опционально включают одно или более из следующего: ссылку на базу данных, значение постоянной составляющей, изменение, масштабирование, линейное, многоуровневое, неизменяемое кодирование, интерполяцию, экстраполяцию, дискретное косинусное преобразование (Discrete Cosine Transform, DCT), импульсно-кодовую модуляцию (Pulse Code Modulation, PCM), дифференциальную импульсно-кодовую модуляцию (Differential Pulse Code Modulation, DPCM), кодирование длин серий (Run-Length Encoding, RLE), скользящее кодирование длин серий (SRLE), модификатор энтропии (Entropy Modifier, ЕМ), кодирование на основе преобразования Лемпеля-Зива (Lempel-Ziv transform based coding, LZO), кодирование с переменной длиной (Variable Length Coding, VLC), кодирование Хаффмана, арифметическое кодирование, диапазонное кодирование, кодирование с преобразованием, дельта-кодирование, кодирование ODelta, кодирование RLE для bzip2. Опционально, принципы кодирования включают любую комбинацию вышеупомянутых примеров кодирования. При использовании такого принципа кодирования как кодирование по способу Хаффмана для такого кодирования предпочтительно используют фиксированные таблицы параметров кодирования или предоставленные таблицы параметров кодирования. Кодер предпочтительно реализуют с использованием вычислительных аппаратных средств, имеющих средства для хранения данных, при этом оптимизированные таблицы параметров кодирования могут храниться в указанных средствах для хранения данных для дальнейшего использования при выполнении операций кодирования. Предпочтительно, адреса ссылок для обеспечения доступа декодера к базам данных для получения подходящих параметров для декодирования кодированных выходных данных от кодера включают в кодированные выходные данные. Опционально, доступ к базам данных осуществляют по сети связи, например, Интернет. Опционально, поддержку баз данных осуществляют через облачные вычислительные системы. Если в способе, осуществляемом в кодере, используют математически сформированные базы данных, указанные базы данных опционально могут быть значением постоянной составляющей, линейным переходом 1D/2D, криволинейным переходом 1D/2D, функцией преобразования 1D/2D или другим известным блоком изображений или аудиопакетом.
Способ кодирования при его выполнении в кодере осуществляет кодирование входных данных с формированием кодированных выходных данных, при этом указанные кодированные выходные данные могут быть выведены в виде битового потока, или альтернативно сохранены на носителях для хранения данных, например, в виде файла данных. Кроме того, способ кодирования может использоваться в ряде возможных приложений; предпочтительно, заголовок для видео, изображения, блока изображений, аудио или аудиопакетов включает дополнительную информацию, такую как номер версии, размер данных для видео, изображения или пакета, пороговое значение показателя качества, используемого при кодировании, максимальный размер блока или пакета, используемый принцип кодирования, таблицы параметров кодирования и любую другую информацию, содействующую последующим процессам декодирования. Аналогичные соображения относятся ко всем типам данных, которые должны быть кодированы, например, по меньшей мере к одному типу из следующих: данные изображения, видеоданные, аудиоданные, экономические данные, данные маскирования, сейсмографические данные, данные аналого-цифрового преобразования (ADC), данные биомедицинских сигналов, данные текстур, календарные данные, математические данные, двоичные данные, но не ограничиваются перечисленным. Опционально, информацию, которая не изменяется от блока к блоку, не включают в кодированные выходные данные для получения повышенной степени сжатия данных, или включают в кодированные выходные данные на более высоком уровне, например, на уровне заголовка или подзаголовка. В таблице 3 представлен иерархический порядок уровней, которые предпочтительно используются в кодированных выходных данных, сформированных кодером.
Таблица 3.
Порядок уровней в кодированных выходных данных, от высокого к низкому
Порядок уровней
Информация, связанная с уровнем
Высокий
Видео
Группы изображений
Изображение
Группы макроблоков
Средний
Макроблоки
Группы блоков
Блок
Группы микроблоков
Низкий
Микроблоки
Опционально, способ кодирования при его выполнении осуществляет выбор и доставку информации, относящейся к одному или более уровням в кодированных выходных данных, например, в зависимости от области применения способа, например, в потребительских видеопродуктах, профессиональном устройстве сжатия изображений для использования при исследованиях, устройстве формирования изображений с помощью рентгеновских лучей, устройстве магниторезонансного (magnetic resonance imaging, MRA) формирования изображений. Аналогичные соображения относятся к порядку уровней в кодированных выходных данных при использовании способа кодирования для кодирования аудиоданных; могут использоваться заголовки для аудиоданных, групп пакетов, пакетов, субпакетов, групп сегментов сигнала и сегмента сигнала.
Осуществляется передача кодированных выходных данных из кодера и/или их сохранение, и в конечном итоге прием в качестве кодированных входных данных в декодере в соответствии с настоящим изобретением. Декодер предпочтительно осуществляет способ декодирования кодированных входных данных в соответствии с настоящим изобретением.
На фиг.1 показан декодер в соответствии с настоящим изобретением. Декодер, обозначенный позицией 10, осуществляет прием кодированных входных данных 20, например, кодированных выходных данных из вышеупомянутого кодера и декодирование указанных кодированных входных данных 20 путем применения способа декодирования в соответствии с настоящим изобретением для формирования соответствующих декодированных распакованных выходных данных 30. Как было описано выше, выходные данные 30 предпочтительно декодируют по существу без потерь. Декодер 10 соединен посредством сети 40 связи с базой 50 данных, в которой хранятся один или более параметров, таблиц и/или правил декодирования кодированных входных данных 20. Кодированные входные данные 20 опционально представляют собой данные любого типа, например, по меньшей мере одно из следующего: данные изображения, видеоданные, аудиоданные, экономические данные, данные маскирования, сейсмографические данные, данные аналого-цифрового преобразования (ADC), данные биомедицинских сигналов, данные текстур, календарные данные, математические данные, двоичные данные, но не ограничиваются перечисленным. Опционально, указанный декодер 10 осуществляет прием указанных кодированных данных по меньшей мере из одного из следующих источников: устройства хранения данных, посредством сети связи, карты памяти, дисков для хранения данных, локальных сетей связи (LAN), непосредственно из кодера.
Во время работы декодер 10 принимает кодированные входные данные 20, извлекает декодированную информацию из базы 50 данных по сети 40 связи и затем осуществляет декодирование кодированных входных данных 20 с формированием декодированных распакованных выходных данных 30. Опционально, кодированные входные данные 20 включают одно из следующего: кодированные аудиоданные, одно или более кодированных изображений, кодированные видеоданные, но не ограничивается перечисленным. Опционально, кодированные входные данные 20 включают заголовки, кодированную информацию, а также кодированные данные. Может быть осуществлена потоковая передача кодированных входных данных 20 из кодера 10, например, посредством сети связи или их извлечение из машиночитаемых носителей для хранения данных, например, серверного накопителя на жестких дисках, портативных твердотельных запоминающих устройств и т.д.
Декодер 10 предпочтительно реализуют с использованием аппаратных средств, например, посредством одной или более программируемых вентильных логических матриц (Programmable Gate Logic Array, PGLA), посредством одного или более программных приложений, исполняемых с использованием вычислительных аппаратных средств, или любой комбинации аппаратных средств и программного обеспечения. Декодер 10 может использоваться в мультимедийных продуктах, компьютерах, мобильных телефонах («сотовых телефонах»), Интернет-услугах, видеомагнитофонах, видеопроигрывателях, устройствах связи и т.п. Декодер 10 опционально используют совместно с системами захвата изображений, которые осуществляют вывод кодированных данных, например, с камерами наблюдения, медицинскими рентгенографическими системами, медицинскими магниторезонансными сканерами, медицинскими ультразвуковыми сканерами, надземными системами наблюдения и аналогичными устройствами, которые формируют большое количество видеоданных, для которых желательно использовать сжатие данных без потерь, так чтобы сохранить точную информацию изображений при выполнении обработки большого количества видеоданных для их сохранения.
Декодер 10 предпочтительно подходит для эксплуатации с известным устройством для обработки изображений, например, в сочетании с процессором изображений/видеопроцессором, как описано в опубликованной заявке на патент США US 2007/280355, текст которой включен в настоящее описание путем ссылки, в сочетании с генератором изображений, как описано в опубликованной заявке на патент США US 2010/0322301, текст которой включен в настоящее описание путем ссылки, и в сочетании с устройством распознавания формы сигнала, как описано в опубликованной заявке на патент США US 2011/007971, текст которой включен в настоящее описание путем ссылки.
Способ кодирования входных данных с использованием кодера 10, показанного на фиг.1, будет описан далее со ссылкой на фиг.2. На фиг.2 шаги способа декодирования кодированных входных данных 20 обозначены позициями 100-190.
На первом шаге 100 способ декодирования включает прием кодированных входных данных для блоков, изображения, видеоданных и/или аудиоданных, но не ограничивается перечисленным, например, для приема вышеуказанных кодированных входных данных 20. На втором шаге 110, выполняемом после первого шага 100, указанный способ включает нахождение и декодирование информации о заголовке, представленной в указанных кодированных входных данных 20, например, параметрах, описывающих размер изображения, одном или более преобразований сжатия, которые были применены при формировании указанных кодированных входных данных 20, например алгоритмах RLE и/или Хаффмана.
На третьем шаге 120, выполняемом после второго шага 110, указанный способ опционально включает формирование исходного набора блоков и/или пакетов для приема декодированных данных после второго шага 110. После этого, на четвертом шаге 130 указанный способ включает анализ декодированных данных заголовка, полученных на втором шаге 110 для определения разбиений и/или объединений блоков и/или пакетов, и опционально для объединения информации, если это применимо, например, параметров дупликации, которые предназначены для описания содержимого множества блоков и/или пакетов. На пятом шаге 140, выполняемом после четвертого шага 130, способ включает определение того, является ли заданный блок или пакет разделенным и/или объединенным, в случае если заданный блок или пакет не был разделен и/или объединен, способ переходит к седьмому шагу 160, в случае если заданный блок или пакет был разделен и/или объединен, способ переходит к шестому шагу 150, который касается разбиения блоков или пакетов, включая формирование одного или более новых блоков или пакетов. После выполнения шестого шага 150 способ переходит к девятому шагу 180.
На седьмом шаге 160 способ включает обработку информации блоков и/или пакетов. На восьмом шаге 170, выполняемом после завершения седьмого шага 160, способ включает декодирование кодированных данных, соответствующих блокам или пакетам, включенным в указанные кодированные входные данные 20, путем применения одного или более обратных преобразований, вид которых определяют из информации о заголовке, полученной на втором шаге 110. Опционально, указанные одно или более обратных преобразования получают с использованием декодера 10, который связан по сети 40 связи с базой 50 данных, например, базой 50 данных, которая обеспечивает поддержку алгоритма преобразования для предшествующего кодирования указанных кодированных входных данных 20. На восьмом шаге 170 блоки и/или пакеты, сформированные на третьем шаге 120 и опционально разделенные и/или объединенные на четвертом, пятом и шестом шагах 130, 140, 150, соответственно, заполняют декодированными данными блока и/или пакета, сформированными на восьмом шаге 170, при этом указанные декодированные данные блока и/или пакета опционально распаковывают. На вышеуказанном девятом шаге 180 способ включает проверку того, достигнут ли последний блок, последний пакет или исходный блок или кадр; в случае если последний блок и так далее не достигнут, способ переходит к первому шагу 100 или четвертому шагу 130; в случае если последний блок и так далее достигнут, способ переходит к десятому шагу 190, на котором завершается декодирование блока, пакета изображения или видео, после чего способ включает вывод указанных декодированных выходных данных 30, а именно декодированной и распакованной версии указанных кодированных входных данных 20. Также возможно перейти непосредственно со второго шага 110 к восьмому шагу 170, если информация о заголовке показывает, что указанный блок или изображение аналогичен предыдущему блоку или изображению, или указанный блок или изображение являются, например, черными. Все декодированные данные, которые могут быть показаны, записаны в файл или которые могут быть переданы с использованием потоковой передачи, предпочтительно генерируются как можно раньше, чтобы избежать дополнительной буферизации и задержки.
Обратимся далее к фиг.3, в соответствии с вышесказанным, необходимо понимать, что способ кодирования, используемый для формирования кодированных входных данных 20, если это применимо, формирует блоки или пакеты различного размера для обеспечения оптимального решения между сжатием данных в кодированных входных данных 20 и по существу сжатием без потерь, а именно по существу без заметных потерь. На фиг.3 большие блоки 300 кодирования используются для верхнего левого угла данного изображения, в то время как блоки 310, 320, 330 меньшего размера требуются вдоль правой стороны и нижних краевых областей изображения для обеспечения более точного кодирования этих областей. Параметры, описывающие содержимое изображения блоков 300, 310, 320, 330 и положение блоков в пределах изображения, включены в кодированные входные данные 20. Предпочтительно, способы кодирования, используемые для кодирования блоков 300, 310, 320, 330 также заданы в кодированных выходных данных 20, например, различные способы для различных блоков 300, 310, 320, 330. Распределение блоков 300, 310, 320, 330 будет изменяться в зависимости от пространственного распределения содержимого в изображениях, которые должны быть кодированы. Декодер 10 осуществляет, например, декодирование кодированных данных из схемы, показанной на фиг.3. Опционально, вычислительные аппаратные средства кодера 10 реализуют в виде множества процессоров данных, которые могут функционировать одновременно для декодирования кодированных данных, соответствующих блокам и/или пакетам, тем самым увеличивается скорость, с которой могут быть декодированы указанные кодированные входные данные 20 с формированием декодированных выходных данных 30; например, тем самым становится возможным декодирование потоков видеоданных. На фиг.3 показан пример исходного разбиения на блоки в изображении, сформированном на третьем шаге 120 в декодере, а именно, на втором шаге 110 в кодере. Для такого исходного разбиения на блоки не требуется какая-либо информация, которая должна быть передана между кодером и декодером, поскольку такое разбиение может быть основано, например, на размере изображения. Если фактическое разбиение на блоки выполняется на пятом шаге 140 в кодере, то эта информация должна быть доставлена из кодера в декодер 10. Декодер 10 декодирует доставленную информацию на четвертом шаге 130 и осуществляет разбиение, альтернативно, объединение на блоки или пакеты на пятом шаге 140 на основе этой декодированной информации.
В настоящем описании использованы следующие аббревиатуры, заданные в таблице 4. Указанные различные форматы кодирования являются потенциально значимыми для использования при реализации декодера 10 в зависимости от требуемых характеристик декодера 10.
Таблица 4
Аббревиатуры для преобразований декодирования, используемых при реализации вариантов осуществления настоящего изобретения
1D
Одномерный (например, для сигнала или пакета)
MAD
Средняя абсолютная разность
2D
Двумерный (например, для блока, изображения, стерео или многоканального аудио)
MP3
MPEG-1 аудиослой 3
3D
Трехмерный (например, для видео, стереоизображения, многоканального изображения)
MPEG
Экспертная группа по движущимся изображениям
AAC
Улучшенное звуковое кодирование
MSD
Среднеквадратическая разность
AVC
Улучшенное видеокодирование
MVC
Многоракурсное видеокодирование
BMP
Битовое отображение - формат файлов
PCM
Импульсно-кодовая модуляция
DC
Постоянная составляющая
PNG
Переносимая сетевая графика
DCT
Дискретное косинусное преобразование
RLE
Кодирование длин серий
DPCM
Дифференциальная импульсно-кодовая модуляция
SAD
Сумма абсолютных разностей
FLAC
Бесплатный аудиокодек без потерь
SSD
Сумма квадратов разностей
GIF
Формат обмена графическими данными
TIFF
Теговый формат файлов изображений
JPEG
Объединенная группа экспертов в области фотографии
VLC
Кодирование с переменной длиной
JPEG XR
Растянутый диапазон JPEG
VQ
Векторное квантование
LZO
Способ кодирования на основе преобразования Лемпеля-Зива
ЕМ
Модификатор энтропии
Способ декодирования согласно настоящему изобретению, например, как показано на фиг.2, посредством кодирования слоев и каналов, выполняемого в декодере 10, может поддерживать интерактивное представление видео для обеспечения новых типов услуг по доставке контента, например, интерактивной коммерческой рекламы, различных ракурсов просмотра при потоковой передаче репортажей о спортивных событиях в прямом эфире, таких как Формула 1 и т.д., а также фильмов. Например, декодер 10 обеспечивает возможность просмотра фильмов со слоями локализованных подзаголовков, интерактивных водяных знаков, интерактивного распознавания образов, анимированных 2D/3D-кнопок пользовательского интерфейса (user interface, UI) и т.д.
ПРИМЕР
Далее описан упрощенный пример декодирования кодированного изображения. Согласно варианту осуществления декодер принимает информацию от кодера, например, в виде потоковой передачи или в виде файла. В соответствии с указанным примером, информация представлена в виде файла, состоящего из следующих полей информации и содержимого:
Imagesize (Размер изображения): 120×80 пикселей
InitialBlocksize (Размер исходного блока): 40×40 пикселей
SplitBit (Бит разбиения): 0 0 1 0000 0 1 0010 0000 1 1000 0000
MethodBits (Биты способа): 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Values (Значения): 10 10 20 25 15 20 10 10 10 10 10 10 5 10 5 5 5 5 5 5 10 5 5 5
где Imagesize описывает размер декодируемого изображения. Размер изображения может быть произвольным.
InitialBlocksize описывает, какую величину составляет размер «основных» исходных блоков. В зависимости от реализации InitialBlocksize может быть фиксированным, например, 40×40, или может изменяться, например, 20×20, 80×80 и т.д. Необходимость передачи информации о Initialblocksize может отсутствовать в случае использования значений по умолчанию в декодере и кодере.
Значения SplitBit, равные «0», указывают, что заданный блок не будет разделен, а значение «1» указывает, что заданный блок будет разделен. В случае разбиения блока на субблоки, значение «1» не будет соответствовать правилам относительно того, будет ли разделен субблок или нет.
Methodbits описывает, что будет сделано с каждым блоком. В качестве примера, значение «0» может относиться к заполнению блока однородным цветом, в то время как значение «1» может относиться к применению к блоку градиента цвета.
Values описывает значение, которое должно быть применено к каждому Methodbit; значение может представлять собой, например, значение цвета, или правила заполнения градиентов, или указатель на базу данных, содержащую инструкции относительно того, как заполнить блок. Например, значение «10» соответствует синему цвету, значение «5» соответствует зеленому цвету, а значения «15», «20», «25» соответствуют красному цвету различной интенсивности.
На первом шаге декодирования изображения, область изображения размером 120×80 пикселей резервируется в памяти устройства, в котором происходит декодирование. Область 402 изображения разбивают на шесть блоков 40×40, как показано на фиг.4. Блоки обозначены буквами A, B, C, D, E и F для ясности.
На втором шаге декодирования, содержимое информации Splitbit изображения (0 0 1 0000 0 1 0010 0000 1 1000 0000) используется для разбиения области 402 изображения на дополнительные блоки.
Бит номер 1 информации Splitbit имеет значение «0», указывающее, что блок A не будет дополнительно подвергнут разбиению.
Бит номер 2 информации Splitbit имеет значение «0», указывающее, что блок B не будет дополнительно подвергнут разбиению.
Бит номер 3 информации Splitbit имеет значение «1», указывающее, что блок C будет разбит на субблоки.
Бит номер 4 информации Splitbit имеет значение «0», указывающее, что субблок 1 (впоследствии C1) блока С не будет дополнительно подвергнут разбиению.
Бит номер 5 информации Splitbit имеет значение «0», указывающее, что субблок 2 (впоследствии C2) блока С не будет дополнительно подвергнут разбиению.
Бит номер 6 информации Splitbit имеет значение «0», указывающее, что субблок 3 (впоследствии C3) блока С не будет дополнительно подвергнут разбиению.
Бит номер 7 информации Splitbit имеет значение «0», указывающее, что субблок 4 (впоследствии C4) блока С не будет дополнительно подвергнут разбиению.
Бит номер 8 информации Splitbit имеет значение «0», указывающее, что блок D не будет дополнительно подвергнут разбиению.
Бит номер 9 информации Splitbit имеет значение «1», указывающее, что блок E будет разбит на субблоки.
Бит номер 10 информации Splitbit имеет значение «0», указывающее, что субблок 1 (впоследствии E1) блока E не будет дополнительно подвергнут разбиению.
Бит номер 11 информации Splitbit имеет значение «0», указывающее, что субблок 2 (впоследствии E2) блока E не будет дополнительно подвергнут разбиению.
Бит номер 12 информации Splitbit имеет значение «1», указывающее, что субблок E3 будет разбит на субблоки.
Бит номер 13 информации Splitbit имеет значение «0», указывающее, что субблок 1 (впоследствии E31) субблока E3 не будет дополнительно подвергнут разбиению.
Бит номер 14 информации Splitbit имеет значение «0», указывающее, что субблок 2 (впоследствии E32) субблока E3 не будет дополнительно подвергнут разбиению.
Бит номер 15 информации Splitbit имеет значение «0», указывающее, что субблок 3 (впоследствии E33) субблока E3 не будет дополнительно подвергнут разбиению.
Бит номер 16 информации Splitbit имеет значение «0», указывающее, что субблок 3 (впоследствии E34) субблока E3 не будет дополнительно подвергнут разбиению.
Бит номер 17 информации Splitbit имеет значение «0», указывающее, что субблок 4 (впоследствии E4) блока E не будет дополнительно подвергнут разбиению.
Бит номер 18 информации Splitbit имеет значение «1», указывающее, что блок F будет разбит на субблоки.
Бит номер 19 информации Splitbit имеет значение «1», указывающее, что субблок F1 будет разбит на субблоки.
Бит номер 20 информации Splitbit имеет значение «0», указывающее, что субблок 1 (впоследствии F11) субблока F1 не будет дополнительно подвергнут разбиению.
Бит номер 21 информации Splitbit имеет значение «0», указывающее, что субблок 2 (впоследствии F12) субблока F1 не будет дополнительно подвергнут разбиению.
Бит номер 22 информации Splitbit имеет значение «0», указывающее, что субблок 3 (впоследствии F13) субблока F1 не будет дополнительно подвергнут разбиению.
Бит номер 23 информации Splitbit имеет значение «0», указывающее, что субблок 4 (впоследствии F14) субблока F1 не будет дополнительно подвергнут разбиению.
Бит номер 24 информации Splitbit имеет значение «0», указывающее, что субблок F2 не будет дополнительно подвергнут разбиению.
Бит номер 25 информации Splitbit имеет значение «0», указывающее, что субблок F3 не будет дополнительно подвергнут разбиению.
Бит номер 26 информации Splitbit имеет значение «0», указывающее, что субблок F4 не будет дополнительно подвергнут разбиению.
Декодирование информации Splitbit приводит в результате к формированию «решетки» блоков над областью 500 изображения, как показано на фиг.5.
На третьем шаге в процессе декодирования используются Methodbits. Содержимое информации представляет собой 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0. Третий бит в Methodbits является ″1″, указывающей, что к третьему блоку в решетке должна быть применена градиентная функция. Третий блок представляет собой блок C1, показанный на фиг.5. Ко всем другим блокам должен быть применен постоянный цвет, заданный в правилах декодирования согласно варианту осуществления.
На четвертом шаге в процессе декодирования используется информация Value. Содержимое информации представляет собой 10 10 20 25 15 20 10 10 10 10 10 10 5 10 5 5 5 5 5 5 10 5 5 5.
Первое значение 10 указывает цвет первого блока A, то есть синий цвет. Указанный цвет применяется к блоку A.
Второе значение 10 указывает цвет второго блока B, то есть синий цвет. Указанный цвет применяется к блоку В.
Для третьего блока способ предлагает «градиент» значений 20, 25, 15 и 20, которые указывают цвет каждого угла блока C1, а именно, красный цвет со значением 20 в верхнем левом углу, 25 - в верхнем правом углу, 15 - в нижнем левом углу и 20 - в нижнем правом углу. Градиентное заполнение применяется к целому блоку с использование начальных значений для каждого угла блока C1.
Для четвертого блока (C2) применяется значение цвета 10 и т.д. Каждый блок заполняется соответствующим цветом. На фиг.6 показано результирующее изображение. Решетка блоков показана на фиг.6 для ясности. На практике для изображения, показываемого пользователю, такая решетка не будет видна для пользователя.
Алгоритм реализации одного или более вариантов осуществления также может включать одну или более баз данных для хранения «общих» комбинаций структур блоков и цветов. В соответствии с вариантом осуществления, поскольку группа субблоков E31, E32, E33 и E34 и группа субблоков F11, F12, F13 и F14 имеют одинаковую комбинацию значений цвета и порядок (10, 5, 5, 5), они могут рассматриваться как один элемент и обозначаются своим собственным значением (называемым значением комбинации (Combination Value)). Указанное значение комбинации может быть сохранено в базе данных (кодера или декодера) и называется опорным номером идентификации (Reference Identification number), если необходимо. Часто предпочтительным является использование отдельных потоков для значений для различных способов, так, в примере, описанном ранее, значения постоянной составляющей и значения изменения могут быть заданы в отдельных потоках. Ряд способов опционально также формирует множество потоков для обеспечения меньшей энтропии для каждого потока, что обеспечивает лучшую эффективность сжатия с использованием способов энтропийного кодирования, например, с использованием многоуровневого способа, в котором высокие и низкие уровни, используемые при осуществлении способа, могут быть заданы для обработки отдельных потоков, поскольку часто высокие значения более близки друг к другу, аналогично, и низкие значения более близки друг к другу, благодаря чему диапазонное кодирование, которое использует высокие и низкие значения, кодированные с использованием дельта-кодирования, работает очень хорошо.
ПРИМЕР УСТРОЙСТВА
В одном из вариантов осуществления декодирование может быть осуществлено в портативном устройстве 700, показанном на фиг.7, таком как смартфон, цифровая камера или видеокамера. Портативное устройство 700 может включать камеру 704 для захвата изображения, дисплей 702 для демонстрации изображения, приемник/передатчик (RX/TX) 706 для обеспечения связи с использованием сотовых сетей или локальных сетей, другие устройства ввода/вывода (I/O) 712, такие как универсальная последовательная шина (Universal Serial Bus, USB) или Ethernet, центральный процессор 708 (Central Processing Unit, CPU) для выполнения алгоритмов и инструкций, относящихся к кодированию и декодированию, память 710 для сохранения изображения, получаемого от камеры, и программное обеспечение для декодирования кодированного изображения. Портативное устройство 700 предпочтительно конфигурировано для сохранения кодированных изображений в его пространственно локализованной памяти 710 или оно может быть конфигурировано для периодической запрашивания, в соответствии с действием пользователя, или в реальном времени, или практически в реальном времени, кодированных изображений посредством приемника/передатчика (RX/TX) 706 или посредством устройства ввода/вывода (I/O) 712 из внешних систем.
Возможны модификации вышеописанных вариантов осуществления настоящего изобретения без выхода за рамки объема настоящего изобретения, заданного приложенной формулой изобретения. Такие выражения как «включающий», «содержащий», «состоящий из», «имеет», «является», используемые для описания настоящего изобретения и в его формуле, должны истолковываться неисключительным образом, а именно должны допускать возможность наличия также объектов, компонентов или элементов, не описанных в явном виде. Следует также понимать, что ссылки на единственное число относятся также ко множественному числу. Числа в круглых скобках в приложенных пунктах формулы изобретения предназначены для обеспечения понимания формулы изобретения и не должны истолковываться любым образом, ограничивающим объект изобретения, заявленный в этих пунктах формулы изобретения.