СПОСОБ КОДИРОВАНИЯ, КОДЕР, ПРОГРАММНЫЙ ПРОДУКТ И ПРОГРАММНОЕ ПРИЛОЖЕНИЕ ДЛЯ МОБИЛЬНОГО УСТРОЙСТВА БЕСПРОВОДНОЙ СВЯЗИ
ENCODING METHOD, ENCODER, PROGRAM PRODUCT AND PROGRAM APPLICATION FOR MOBILE WIRELESS COMMUNICATION DEVICE

ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится к кодерам для приема входных данных и кодирования указанных входных данных с формированием кодированных выходных данных. Кроме того, настоящее изобретение также относится к способам кодирования входных данных с формированием соответствующих кодированных выходных данных. Также настоящее изобретение относится к программным продуктам, хранящимся на машиночитаемых носителях, при этом выполнение указанных программных продуктов осуществляют посредством вычислительных аппаратных средств для реализации вышеупомянутых способов.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
В современном обществе в возрастающей степени осуществляется хранение данных, например, мультимедийного контента, и обмен им посредством Интернета и беспроводных сетей связи; при этом такой мультимедийный контент часто включает, например, изображения, видео- и аудиоданные, но не ограничивается перечисленным. Хранение и обмен данными осуществляется между устройствами, программными приложениями, мультимедийными системами и службами данных. Во время такого хранения и обмена данными возникают ситуации, при которых осуществляют захват изображений и видеоданных, а также их сканирование, передачу, совместное использование, просмотр и печать. Однако обмен такими изображениями и видеоданными зависит от используемого объема памяти данных и ширины полосы пропускания системы связи. Если ширина полосы пропускания системы связи ограничена, для обмена такими изображениями и видеоданными требуется значительное время. Для удовлетворения таких требований к хранению обычной практикой является использование способов кодирования изображений и видеоданных, которые также обеспечивают сжатие данных. В таблице 1 представлены некоторые современные стандарты кодирования для изображений и видеоданных.
Таблица 1
Современные стандарты кодирования
JPEG
MPEG-1
H.261
WebP
Lucid
JPEG2000
MPEG-2
H.263
WebM
GIF
JPEG XR
MPEG-4
H.264
PNG
MPEG-4 AVC
HEVC
TIFF
MPEG-4 MVC
BMP
MP3
VC-1
Theora
AAC
FLAC
Ogg Vorbis
Speex
Размер файлов изображений и аудиоданных увеличивается, поскольку качество изображений значительно улучшается, например, путем применения стандартов высокой четкости (high definition, HD) и использования широкого динамического диапазона (high dynamic range, HDR). Однако трехмерные (3-dimensional, 3D) изображения, видео- и аудиоданные приобретают увеличивающуюся популярность, что требует, соответственно, более эффективных способов кодирования и декодирования в кодерах и декодерах, то есть «кодеках», чтобы справиться с соответствующим увеличившимся количеством данных, которые должны быть переданы и сохранены. Однако крайне необходимым является, чтобы способы кодирования, обеспечивающие сжатие данных, по существу не имели потерь в отношении информационного контента при формировании сжатых данных.
Стандартные кодеки описаны в ранее опубликованных заявках на патент и выданных патентах, например, в указанных в таблице 2.
Таблица 2
Предшествующая литература, в которой описаны кодеки.
Предшествующие патенты или заявки на патенты
Примечание
US 5832130
U S7379496
GB 2274754 A1
Samsung Electronics Co. Ltd.
US 6529634 A1
Thyagarajan
US 7676101
US 2006/0204115 A1
Berazerovic: применение одного типа кодирования с различными параметрами для кодированных блоков
В общем, многие известные видеокодеки не могут эффективно кодировать протяженные области изображений по существу с постоянными параметрами, хотя могут одновременно кодировать пространственно высокодетализированные области изображений. Обычной практикой является применение компенсации движения в форме предсказания и способов кодирования ошибок предсказания на основе использования преобразований, например, дискретного косинусного преобразования (discrete cosine transform, DCT) и вейвлет-преобразований. Эти преобразования используют процесс, при котором части заданного изображения, например, неподвижного изображения или изображения, формирующего часть видеопоследовательности, разделяют на блоки, которые затем подвергаются процессам кодирования. Такие блоки представляют собой, например, элементы изображения 8×8, элементы изображения 4×4 или тому подобное. Применяют такие относительно небольшие блоки, поскольку большие размеры блоков приводят к неэффективным процессам кодирования, хотя иногда используют блоки элементов изображений 16×16. В соответствии с известными современными подходами к кодированию изображений, если для кодирования используют множество блоков различного размера, обычной практикой является использование небольшого разброса размеров блоков; кроме того, размеры блоков выбирают на основе того, насколько хорошо может быть компенсировано движение в соответствующей области блока, или на основе параметра качества кодирования, например, параметра целевого качества. В общем, для обеспечения более высокого качества кодированных изображений требуется меньший размер блоков, что приводит к меньшему сжатию данных. Некоторые типы современного кодирования могут даже привести к увеличению размера данных, если включены функции коррекции ошибок, такие как коды контроля по четности и коды коррекции ошибок.
В соответствии с вышесказанным, необходимо понимать, что обеспечение сжатия данных изображений и видео при сохранении качества изображений является современной проблемой, которая не может быть в достаточной мере решена известными кодерами и декодерами, несмотря на большое разнообразие кодеков, разработанных в течение последних десятилетий.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
В соответствии с настоящим изобретением предложен кодер для кодирования входных данных, представляющих по меньшей мере один элемент контента, и для формирования соответствующих кодированных выходных данных, представляющих указанный по меньшей мере один элемент контента, при этом указанные кодированные выходные данные сжаты по отношению к указанным входным данным без существенной потери качества, возникающей во время декодирования; при этом данные опционально представляют собой данные любого типа, например, по меньшей мере одно из следующего: данные изображения, видеоданные, аудиоданные, экономические данные, данные маскирования, сейсмографические данные, данные аналого-цифрового преобразования (ADC), данные биомедицинских сигналов, данные текстур, календарные данные, математические данные, двоичные данные, но не ограничиваются перечисленным.
В соответствии с настоящим изобретением также предложен способ кодирования входных данных, представляющих по меньшей мере один элемент контента, и формирования соответствующих кодированных выходных данных, представляющих указанный по меньшей мере один элемент контента, при этом указанные кодированные выходные данные сжаты по отношению к указанным входным данным без существенной потери качества, возникающей во время декодирования.
Согласно первому аспекту, предложен способ кодирования входных данных с формированием соответствующих кодированных выходных данных согласно п.1 приложенной формулы изобретения: предложен способ кодирования входных данных с формированием соответствующих выходных данных, характеризующийся тем, что указанный способ включает следующие шаги:
a) разделение указанных входных данных на множество блоков или пакетов, размер которых зависит от характера их содержимого, при этом указанные блоки или пакеты имеют один или более размеров;
b) применение множества преобразований к содержимому указанных блоков или пакетов с формированием соответствующих преобразованных данных;
c) проверку качества представления указанных преобразованных данных блоков или пакетов по сравнению с содержимым указанных блоков или пакетов перед применением указанных преобразований для определения того, удовлетворяет ли качество представления указанных преобразованных данных одному или более критериям качества;
d) в случае если качество представления указанных преобразованных данных указанного одного или более блоков или пакетов не удовлетворяет указанному одному или более критериям качества, дополнительное разделение и/или объединение указанного одного или более блоков или пакетов и повторение шага (b) и
e) в случае если качество представления указанных преобразованных данных указанного одного или более блоков или пакетов удовлетворяет указанному одному или более критериям качества, вывод указанных преобразованных данных для предоставления кодированных выходных данных, представляющих указанные входные данные.
Преимущество настоящего изобретения состоит в том, что предложенный способ обеспечивает эффективное кодирование входных данных для получения соответствующих кодированных выходных данных с потенциальным обеспечением сжатия указанных кодированных выходных данных по существу без потерь относительно указанных входных данных, которые должны быть кодированы.
Опционально, указанный способ включает использование указанных преобразований для сжатия содержимого, связанного с указанными блоками или пакетами, так чтобы указанные кодированные выходные данные были меньше по размеру, чем указанные входные данные.
Опционально, способ включает выбор различных типов преобразований для обеспечения удовлетворения указанным одному или более критериям качества.
Опционально, указанный способ включает обеспечение динамического изменения указанного одного или более критериев качества во время кодирования указанных блоков или пакетов в зависимости от характера содержимого, включенного в указанные блоки или пакеты.
Опционально, указанный способ реализован так, что указанные блоки или пакеты разделяют и/или объедяют так, чтобы по меньшей мере один из представляющих их параметров, которые описывают содержимое указанных блоков или пакетов, являлся постоянным в пределах разделенных и/или объединенных блоков или пакетов. Указанный по меньшей мере один параметр, представляющий указанные блоки или пакеты, является, например, цветом, амплитудой, интенсивностью, количеством или кодом.
Опционально, указанный способ реализован так, что указанные блоки или пакеты представляют собой последовательности данных, при этом разделение указанных входных данных, соответствующих заданной информации, с формированием множества соответствующих блоков осуществляют в зависимости от содержимого, представленного в одних или более данных перед заданной информацией в указанной временной последовательности данных.
Опционально, указанный способ включает добавление к указанным преобразованным данным информации о заголовке на шаге e) с формированием кодированных выходных данных, при этом указанная информация о заголовке включает информацию, указывающую на преобразования, примененные на шаге b).
Опционально, указанный способ реализован так, что шаг b) включает извлечение дополнительной информации из базы данных для использования при выполнении указанных преобразований, при этом указанная дополнительная информация включает по меньшей мере одно из следующего: алгоритмы, правила, один или более параметров преобразования. Кроме того, указанный способ опционально включает добавление к указанным кодированным выходным данным информации о заголовке, указывающей на базу данных для обеспечения последующего декодирования указанных кодированных выходных данных, для предоставления доступа к указанной дополнительной информации при декодировании указанных кодированных выходных данных.
Опционально, указанный способ включает использование для указанных преобразований одного или более из следующего: ссылки на базу данных, значения постоянной составляющей, изменения, масштабирования, линейного, многоуровневого, неизменяемого кодирования, интерполяции, экстраполяции, дискретного косинусного преобразования (DCT), импульсно-кодовой модуляции (PCM), дифференциальной импульсно-кодовой модуляции (DPCM), кодирования длин серий (RLE), скользящего кодирования длин серий (SRLE), модификатора энтропии (EM), кодирования на основе преобразования Лемпеля-Зива (LZO), кодирования с переменной длиной (VLC), кодирования Хаффмана, арифметического кодирования, диапазонного кодирования, кодирования с преобразованием, дельта-кодирования, кодирования ODelta, кодирования длин серий для bzip2. Для использования в указанном способе также подходят другие типы преобразований.
Опционально, указанный способ включает кодирование по меньшей мере одного из следующего: видео, изображения, звука, графики, текста, электрокардиограммы, сейсмической информации, символов ASCII, символов Юникод и двоичной информации, представленной во входных данных.
Опционально, указанный способ включает кодирование множества каналов и/или уровней в указанных кодированных выходных данных для предоставления по меньшей мере одного из следующего: интерактивного видео, коммерческой рекламы, множества точек просмотра во время репортажа о спортивном событии, интерактивных водяных знаков, интерактивного распознавания образов, анимированных 2D/3D-кнопок пользовательского интерфейса.
Опционально, указанный способ включает передачу указанных кодированных данных по меньшей мере в одно из следующих мест назначения: устройство хранения данных, сеть связи, карту памяти, диски для хранения данных, локальные сети связи (LAN), непосредственно в декодер.
Опционально, шаг a) указанного способа включает первоначальное разбиение указанных входных данных (20) на один или более блоков на основе по меньшей мере одного из следующего:
a) разрешения изображений;
b) количества данных и
c) максимального размера блока или пакета.
В соответствии со вторым аспектом, предложен программный продукт, хранящийся на машиночитаемом носителе, при этом выполнение указанного программного продукта посредством вычислительных аппаратных средств обеспечивает выполнение способа в соответствии с первым аспектом настоящего изобретения.
В соответствии с третьим аспектом, предложено программное приложение для мобильного устройства беспроводной связи, причем указанное программное приложение содержит программный продукт в соответствии со вторым аспектом настоящего изобретения.
В соответствии с четвертым аспектом, предложен кодер для кодирования входных данных с формированием соответствующих кодированных выходных данных, характеризующийся тем, что указанный кодер содержит аппаратные средства для обработки данных, которые осуществляют:
a) разделение указанных входных данных на множество блоков или пакетов, размер которых зависит от характера их содержимого, при этом указанные блоки или пакеты имеют один или более размеров;
b) применение множества преобразований к содержимому указанных блоков или пакетов с формированием соответствующих преобразованных данных;
c) проверку качества представления указанных преобразованных данных блоков или пакетов по сравнению с содержимым указанных блоков или пакетов перед применением указанных преобразований для определения того, удовлетворяет ли качество представления указанных преобразованных данных одному или более критериям качества;
d) в случае если качество представления указанных преобразованных данных указанного одного или более блоков или пакетов не удовлетворяет указанному одному или более критериям качества, дополнительное разделение и/или объединение указанного одного или более блоков или пакетов, если это улучшает эффективность сжатия и не ухудшает восстановление значительно, и повторение шага (b) и
e) в случае если качество представления указанных преобразованных данных указанного одного или более блоков или пакетов удовлетворяет указанному одному или более критериям качества, вывод указанных преобразованных данных для предоставления указанных кодированных выходных данных, представляющих указанные входные данные.
Опционально, указанный кодер выполнен так, чтобы указанные аппаратные средства для обработки данных были реализованы с использованием вычислительных аппаратных средств, которые осуществляют исполнение программного продукта. Кроме того, опционально, указанные аппаратные средства для обработки данных включают множество процессоров, которые осуществляют обработку данных параллельно, а указанный кодер одновременно направляет данные блока и/или пакета в указанное множество процессоров для кодирования с получением данных, которые должны быть включены в указанные кодированные выходные данные.
Опционально, указанный кодер осуществляет выбор различных типов преобразований для обеспечения удовлетворения указанным одному или более критериям качества.
Опционально, указанный кодер осуществляет использование указанных преобразований для сжатия содержимого, связанного с указанными блоками или пакетами, так чтобы указанные кодированные выходные данные были меньше по размеру, чем указанные входные данные.
Опционально, указанный кодер осуществляет обеспечение динамического изменения указанного одного или более критериев качества во время кодирования указанных блоков или пакетов в зависимости от характера содержимого, включенного в указанные блоки или пакеты.
Опционально, указанный кодер осуществляет разделение указанных блоков или пакетов так, чтобы по меньшей мере один из представляющих их параметров, которые описывают содержимое указанных блоков или пакетов, являлся постоянным в пределах разделенных блоков или пакетов. Кроме того, опционально, указанный кодер выполнен так, чтобы указанный по меньшей мере один параметр представлял собой цвет, амплитуду, интенсивность, количество или код указанных разделенных блоков.
Опционально, указанный кодер выполнен так, что указанные блоки или пакеты представляют собой последовательности данных, при этом разделение указанных входных данных, соответствующих заданной информации, с формированием множества соответствующих блоков осуществляют в зависимости от содержимого, представленного в одних или более данных перед заданной информацией в указанной временной последовательности данных.
Опционально, указанный кодер осуществляет добавление к указанным преобразованным данным информации о заголовке с формированием кодированных выходных данных, при этом указанная информация о заголовке включает информацию, указывающую на преобразования, примененные кодером.
Опционально, указанный кодер осуществляет извлечение дополнительной информации из базы данных для использования при выполнении указанных преобразований, при этом указанная дополнительная информация включает по меньшей мере одно из следующего: алгоритмы, правила, один или более параметров преобразования. Кроме того, опционально, указанный кодер осуществляет добавление к указанным кодированным выходным данным информации о заголовке, указывающей на базу данных для обеспечения последующего декодирования указанных кодированных выходных данных, для предоставления доступа к указанной дополнительной информации при декодировании указанных кодированных выходных данных.
Опционально, указанный кодер осуществляет использование для указанных преобразований одного или более из следующего: ссылки на базу данных, значения постоянной составляющей, изменения, масштабирования, линейного, многоуровневого, неизменяемого кодирования, интерполяции, экстраполяции, дискретного косинусного преобразования (DCT), импульсно-кодовой модуляции (PCM), дифференциальной импульсно-кодовой модуляции (DPCM), кодирования длин серий (RLE), скользящего кодирования длин серий (SRLE), модификатора энтропии (EM), кодирования на основе преобразования Лемпеля-Зива (LZO), кодирования с переменной длиной (VLC), кодирования Хаффмана, арифметического кодирования, диапазонного кодирования, кодирования с преобразованием, дельта-кодирования, кодирования ODelta, кодирования длин серий для bzip2. Опционально кодером используются другие типы преобразований.
Опционально, указанный кодер осуществляет кодирование по меньшей мере одного из следующего: видео, изображения, звука, графики, текста, электрокардиограммы, сейсмической информации, символов ASCII, символок Юникод и двоичной информации, представленной во входных данных.
Опционально, указанный кодер осуществляет передачу указанных кодированных данных по меньшей мере в одно из следующих мест назначения: устройство хранения данных, сеть связи, карту памяти, диски для хранения данных, локальные сети связи (LAN), непосредственно в декодер.
В соответствии с пятым аспектом, предложен электронный потребительский продукт, осуществляющий передачу и/или хранение входных данных, отличающийся тем, что указанный электронный потребительский продукт содержит кодер для кодирования указанных входных данных в соответствии с четвертым аспектом.
Опционально, указанный электронный потребительский продукт представляет собой по меньшей мере одно из следующего: мобильный телефон, сотовый телефон, планшетный компьютер, персональный компьютер, телевизор, портативное мультимедийное устройство воспроизведения, фотокамеры, редакторы, транскодеры, сканеры, факсимильный аппарат, копировальный аппарат, микрофоны, звуковые карты, проигрыватели, DVD-проигрыватели и т.д.
Необходимо понимать, что признаки настоящего изобретения допускают их объединение в различных комбинациях без выхода за рамки объема настоящего изобретения, заданного приложенной формулой изобретения.
ОПИСАНИЕ ЧЕРТЕЖЕЙ
Далее только в качестве примера будут описаны варианты осуществления настоящего изобретения со ссылкой на следующие чертежи, на которых:
фиг.1 представляет собой схематическое изображение варианта осуществления кодера;
фиг.2 представляет собой блок-схему шагов способа кодирования входных данных, представляющих по меньшей мере один элемент контента, с формированием соответствующих кодированных выходных данных, при этом указанные кодированные выходные данные сжаты по отношению к указанным входным данным без существенной потери качества, возникающей во время декодирования, при этом указанный элемент контента предпочтительно включает по меньшей мере одно из следующего: данные изображения, видеоданные, аудиоданные, экономические данные, данные маскирования, сейсмографические данные, данные аналого-цифрового преобразования (ADC), данные биомедицинских сигналов, данные текстур, календарные данные, математические данные, двоичные данные, но не ограничиваются перечисленным;
на фиг.3 показан пример разделения изображения на области, соответствующие блокам для кодирования, с использованием способа, шаги которого проиллюстрированы на фиг.2;
на фиг.4 показан пример изображения и пример исходного изображения, разделенного для использования в соответствии с вариантами осуществления;
на фиг.5 показан пример блоков для примера изображения, проиллюстрированного на фиг.4; и
на фиг.6 проиллюстрированы блоки портативного устройства, в котором осуществляется кодирование.
На сопровождающих чертежах подчеркнутые номера позиций используются для представления элемента, над которым расположен подчеркнутый номер, или элемента, рядом с которым находится подчеркнутый номер. Неподчеркнутый номер относится к элементу, идентифицируемому линией, связывающей неподчеркнутый номер с указанным элементом. Если номер не подчеркнут и сопровождается соответствующей стрелкой, указанный неподчеркнутый номер используется для идентификации общего элемента, на который указывает стрелка.
ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
В целом настоящее изобретение относится к кодерам и соответствующим способам кодирования входных данных с формированием соответствующих кодированных выходных данных. Указанные способы относятся к приему входных данных, представляющих одно или более изображений и/или один или более аудиосигналов, и к последующей обработке указанных входных данных в соответствии по меньшей мере с одним из следующего:
a) разделением каждого изображения на блоки, которые могут иметь различные размеры;
b) разделением указанного одного или более аудиосигналов на пакеты, которые могут иметь различные размеры;
c) объединением блоков изображений с формированием более крупных блоков, которые могут иметь различные размеры, более предпочтительные для кодирования; и
d) объединением пакетов одного или более аудиосигналов с формированием объединенных пакетов, которые более предпочтительны для кодирования.
Кроме того, указанный способ включает обработку блоков и/или пакетов с формированием сжатых кодированных выходных данных, представляющих указанное одно или более изображений и/или указанный один или более аудиосигналов.
Способ предпочтительно использует множественное кодирование и способы модификации энтропии, а именно преобразования, при кодировании и сжатии данных, описывающих блоки данных. Например, для различных блоков заданного изображения используются различные преобразования, если тем самым достигаются предпочтительные характеристики кодирования и сжатия в зависимости от информационного содержимого различных блоков. Предпочтительно в качестве критерия качества при обработке блоков данных используется RD-оптимизация. Информацию, описывающую множество преобразований, используемых при кодировании блоков, передают в кодированных выходных данных, эта информация либо по существу включена в указанные кодированные выходные данные, либо выходные данные включают ссылку на одну или более баз данных, из которых может быть получена информация, описывающая используемые преобразования. RD-оптимизация более подробно будет описана далее. Предпочтительно используемые способы кодирования включают одно или более из следующего: многоуровневое кодирование, линейное кодирование, масштабирование, изменение, интерполяцию, экстраполяцию, неизменяемое кодирование, кодирование с оценкой движения, SRLE, EM, Odelta и диапазонное кодирование, как будет разъяснено более подробно далее. Опционально также предпочтительно применяется разбиение на lnit-блоки.
Выбор блоков и/или объединение блоков определяется простотой, с которой могут быть кодированы области, соответствующие указанным блокам, например, более крупные блоки применяют для областей указанного одного или более изображений, которые имеют по существу постоянное значение связанного с ними параметра, а меньшие блоки используют для областей указанного одного или более изображений, которые сложно кодировать вследствие относительно резких пространственных изменений значений связанного с ними параметра для указанных областей. Указанные параметры опционально относятся к одному или более из следующего: цвету, яркости, значению параметра изменения, образцу повторения, но не ограничиваются перечисленным. Каждое кодирование соответствует, например, по меньшей мере одному параметру, связанному с заданной областью, который является по существу постоянным в пределах указанной заданной области. Кроме того, указанный способ также использует блоки большего размера для стационарных областей в видеопоследовательностях изображений или для групп областей в видеопоследовательностях изображений, которые перемещаются аналогичным образом, а именно, блоки, которые соответствуют неподвижным объектам. Блоки опционально являются прямоугольными относительно областей указанного одного или более изображений, которые они представляют, например, 64×64 элемента, 32×16 элементов, 4×20 элементов, 10×4 элемента, 1×4 элемента, 3×1 элемент, 8× элементов, 1×1 элемент и т.д.; опционально, указанные элементы соответствуют пикселям, представленным в указанном одном или более изображениях, но могут быть подвергнуты операциям масштабирования во время кодирования, то есть каждый элемент относится к соответствующему множеству пикселей. Однако опционально применяют также другие формы блоков, например, эллиптические блоки, круглые блоки и т.д. Кроме того, аналогично, указанный способ может применяться для кодирования одного или более аудиосигналов, при этом указанный один или более аудиосигналы разделяют на пакеты и/или объединяют в пакеты различной временной длительности в зависимости от характера указанных соответствующих им аудиосигналов, затем пакеты кодируют с формированием кодированных сжатых выходных данных, при этом указанные пакеты аналогичны вышеупомянутым блокам, но относятся не к информации об изображении, а к аудиоинформации. Кодер согласно настоящему изобретению имеет возможность осуществлять одновременное кодирование как аудиоинформации, так и информации об изображении.
При обработке областей указанного одного или более изображений в соответствующих блоках указанный способ включает проверку качества представления информации, предоставленной блоками, в отношении соответствующей детали в указанном одном или более изображениях для вычисления соответствующего индекса качества; в случае если вычисленный индекс качества указывает, при сравнении с пороговым значением эталонного качества, что использовался такой выбор размеров блоков, что качество представления данных, предоставленных блоками, являлось недостаточным, способ осуществляет итерацию назад и последовательно использует блоки меньшего размера и/или комбинирует различные блоки, если это улучшает эффективность сжатия и не ухудшает значительно восстановление, до тех пор пока индекс качества не укажет, что качество представления удовлетворяет значению, заданному пороговым значением эталонного качества. Посредством такого подхода, в соответствии с настоящим изобретением, возможно обеспечить сжатие данных во время кодирования по существу без потерь в зависимости от выбора порогового значения для качества представления информации. Опционально, пороговое значение эталонного качества динамически изменяется в зависимости от содержимого, представленного в указанном одном или более изображениях; например, если указанное одно или более изображений являются частью видеопоследовательности, в которой имеется быстрая хаотическая активность, пороговое значение эталонного качества может уменьшаться во время указанной хаотической активности для обеспечения возможности достижения повышенной степени сжатия данных. Хаотическая активность может представлять собой, например, случайные признаки, такие как текущая бурная вода, пламя, падающий снег, клубящийся дым, океанские волны и т.д., для которых потеря информации не является легко различимой при последующем декодировании кодированных данных в декодере.
Определение блоков в вышеупомянутом кодере может быть опционально основано на одном или более критериях, перечисленных в таблице 3.
Таблица 3
Выбор разбиения и/или объединения при кодировании изображения
Номер критерия
Критерий
1
Дисперсия или стандартное отклонение данных блока, извлеченных из соответствующей области входного изображения
2
Среднее или суммарное значение абсолютной разности между данными, представленными заданным блоком, и предсказанием его значения
3
Дисперсия или стандартное отклонение абсолютной разности между данными, представленными заданным блоком, и предсказанием его значения
Опционально, предсказания в таблице 2 основаны на известных правилах, применяемых при кодировании одного или более изображений. Альтернативно, предсказания в таблице 3 основаны на предоставленной информации о конфигурации, например, из ссылок выбранной базы данных, из направлений предсказания, из перемещений координат блока в пределах указанного одного или более изображений и т.д. Использование дисперсии или стандартного отклонения является подходом, применяемым согласно настоящему изобретению для обеспечения сжатия информации путем описания взаимного отношения элементов, включенных в соответствующий заданный блок. Во многих ситуациях предсказание данных блока со связанным с ним кодированием само по себе является достаточным при выполнении кодирования в соответствии с настоящим изобретением, но опционально предпочтительно включать в предсказание данные ошибки предсказания кода для улучшения точности предсказания. В упрощенном варианте осуществления настоящего изобретения применяется упрощенный способ предсказания данных, например, среднее значение, а именно значение «постоянной составляющей», пикселей или элементов в заданном блоке, который должен быть предоставлен в кодированных выходных данных.
Области разбиения или, альтернативно, области объединения, одного или более изображений, переданных в качестве входных данных в кодер, осуществляющий выполнение вышеупомянутого способа, опционально реализуют в соответствии с любым способом, который одновременно обеспечивает сжатие, а также по существу поддерживает сохранение качества изображения, а именно по существу отсутствие потерь во время кодирования. Указанный способ использует различные алгоритмы для такого разбиения и/или объединения областей. Например, если заданный блок включает существенную информацию, его опционально разбивают на множество соответствующих блоков меньшего размера, которые являются относительно «однородными», альтернативно, его опционально объединяют в блоки большего размера, которые являются относительно «однородными», а именно по существу постоянными в отношении их содержимого, так, чтобы они по отдельности включали относительно мало информации. Если способ кодирования согласно настоящему изобретению применяется по меньшей мере к одному или более изображениям и/или одному или более аудиосигналам, качество кодирования и шум кодирования в кодированных выходных данных опционально используют для управления способом разбиения входных изображений и входных аудиосигналов на блоки и пакеты, соответственно. Однако необходимо понимать, что аналогичным образом могут быть обработаны другие типы элементов контента, например, по меньшей мере один тип из следующих: данные изображения, видеоданные, аудиоданные, экономические данные, данные маскирования, сейсмографические данные, данные аналого-цифрового преобразования (ADC), данные биомедицинских сигналов, данные текстур, календарные данные, математические данные, двоичные данные, не ограничиваясь перечисленным.
Опционально, указанный шум в кодированных выходных данных основан по меньшей мере на одном из следующего:
I) шум, имеющийся в текущем блоке или пакете;
II) шум, имеющийся в одном или более предыдущих блоков или пакетов, сформированных с использованием указанного способа;
III) предыдущие изображения.
Опционально, если заданное входное изображение разбито на области и соответствующие блоки, осуществляется анализ сформированных с использованием указанного способа блоков для определения того, могут ли быть объединены какие-либо из блоков, как было упомянуто выше, в соответствии с вышеупомянутыми критериями качества, для получения большей степени сжатия данных кодированных выходных данных. Согласно вышесказанному, кодированные выходные данные включают информацию, связанную с блоками, которые задают местоположение их соответствующих областей в исходных изображениях во входных данных, которые должны быть кодированы.
При кодировании указанного одного или более изображений, имеющихся во входных данных, которые должны быть кодированы с использованием указанного способа, данные, связанные с указанными входными изображениями, предпочтительно субдискретизируют, например, в отношении 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 или другим известным блоком изображений или аудиопакетом.
Способ кодирования согласно настоящему изобретению при его выполнении в кодере осуществляет кодирование входных данных с формированием кодированных выходных данных, при этом указанные кодированные выходные данные могут быть выведены в виде битового потока, или альтернативно сохранены на носителях для хранения данных, например, в виде файла данных. Кроме того, способ согласно настоящему изобретению может использоваться в ряде возможных приложений; предпочтительно, заголовок для видео, изображения, блока изображений, аудио или аудиопакетов включает дополнительную информацию, такую как номер версии, размер данных для видео, изображения или пакета, пороговое значение показателя качества, используемого при кодировании, максимальный размер блока или пакета, используемый принцип кодирования, а именно, типы используемых преобразований, таблицы параметров кодирования и любую другую информацию, содействующую последующим процессам декодирования. Опционально, информацию, которая не изменяется от блока к блоку, не включают в кодированные выходные данные для получения повышенной степени сжатия данных, или включают в кодированные выходные данные на более высоком уровне, например, на уровне заголовка или подзаголовка. В таблице 4 представлен иерархический порядок уровней, которые предпочтительно используются в кодированных выходных данных, сформированных кодером.
Таблица 4
Порядок уровней в кодированных выходных данных, от высокого к низкому.
Порядок уровней
Информация, связанная с уровнем
Высокий
Видео
Группы изображений
Изображение
Группы макроблоков
Средний
Макроблоки
Группы блоков
Блок
Группы микроблоков
Низкий
Микроблоки
Опционально, способ кодирования согласно настоящему изобретению при его выполнении осуществляет выбор и доставку информации, относящейся к одному или более уровням в кодированных выходных данных, например, в зависимости от области применения способа, например, в потребительских видеопродуктах, профессиональном устройстве сжатия изображений для использования при исследованиях, устройстве формирования изображений с помощью рентгеновских лучей, устройстве магниторезонансного (magnetic resonance imaging, MRA) формирования изображений. Аналогичные соображения относятся к порядку уровней в кодированных выходных данных при использовании способа в соответствии с настоящим изобретением для кодирования аудиоданных; могут использоваться заголовки для аудиоданных, групп пакетов, пакетов, субпакетов, групп сегментов сигнала и сегмента сигнала.
На фиг.1 показан кодер в соответствии с настоящим изобретением. Кодер, обозначенный позицией 10, осуществляет прием входных данных 20 и их кодирование путем применения способа кодирования в соответствии с настоящим изобретением для формирования соответствующих кодированных сжатых выходных данных 30. Как было описано выше, выходные данные 30 предпочтительно кодируют по существу без потерь. Опционально, кодер 10 соединен посредством сети 40 связи с базой 50 данных, в которой хранятся один или более параметров, таблиц и/или правил кодирования входных данных 20.
Во время работы кодер 10 принимает входные данные 20, опционально извлекает кодированную информацию из базы 50 данных по сети 40 связи и затем осуществляет кодирование входных данных 20 с формированием кодированных сжатых выходных данных 30. Опционально входные данные 20 включают одно из следующего: аудиоданные, одно или более изображений, видеоданные, графику, текст, ЭКГ, сейсмическую информацию, символы ASCII, Юникод и двоичную информацию, но не ограничивается перечисленным. Опционально, кодированные выходные данные 30 включают заголовки, кодированную информацию, а также кодированные данные. Может быть осуществлена потоковая передача выходных данных 30 из кодера 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-200. На первом шаге 100 способ включает прием входных данных для блоков, изображения, видеоданных и/или аудиоданных, но не ограничивается перечисленным; например, для приема вышеуказанных входных данных 20 информация о типе изображения/блока, о формате изображения/блока извлекается на первом шаге для включения в кодированные выходные данные 30. На первом шаге 100 имеется возможность обеспечения записи информации о заголовке, например, информации о размере изображения, в кодированные сжатые данные.
На втором шаге 110, выполняемом после первого шага 100, способ включает формирование, если необходимо, исходных блоков или пакетов. На третьем шаге 120, выполняемом после второго шага 110, способ включает выполнение анализа информации о блоке и/или пакете, сформированной на втором шаге 110. На четвертом шаге 130, выполняемом после третьего шага 120, способ включает определение того, нужно ли разделять и/или объединять один или более блоков и/или пакетов, идентифицированных на третьем шаге 120, для достижения заданного качества кодирования и/или заданного сжатия, а именно, по существу кодирования без потерь; в случае, если на четвертом шаге 130 определено, что один или более блоков или пакетов должны быть разделены и/или объединены, способ переходит к пятому шагу 140, на котором указанный один или более идентифицированных блоков или пакетов разделяют на блоки или пакеты меньшего размера и/или объединяют в блоки или пакеты большего размера, тем самым формируя дополнительные новые блоки или новые пакеты; в случае, если на четвертом шаге 130 определено, что необходимость разделения и/или объединения одного или более блоков или пакетов отсутствует, способ переходит к шестому шагу 150. После завершения пятого шага 140, в случае необходимости, способ переходит к шестому шагу 150.
На шестом шаге 150 данные указанных блоков, восстановленные путем преобразований на основе анализа, выполненного на шаге 120, выводятся в потоках данных, после чего способ переходит далее к седьмому шагу 160.
На седьмом шаге 160 способ включает определение того, был ли достигнут последний блок или пакет, который должен быть кодирован; в случае, если остались блоки или пакеты, которые необходимо кодировать, способ возвращается к третьему шагу 120 для выполнения анализа информации о блоке или пакете; в случае, если все блоки или пакеты были кодированы, способ переходит к восьмому шагу 170. Восьмой шаг 170 способа включает сжатие и кодирование данных, например, значений пикселей, параметров или информации о разделении, например, с использованием RLE, Хаффмана, DCT или аналогичных преобразований, и запись информации о заголовке, как было упомянуто выше; например, если значения постоянной составляющей блоков переданы, они могут быть сначала опционально дельта-кодированы, после чего соответствующие дельта-кодированные значения кодируют в виде RLE и затем их кодируют с использованием кодирования Хаффмана. Если процедуры сжатия и кодирования на восьмом шаге 170 завершены, способ переходит к девятому шагу 180, который касается проверки того, достигнут ли последний исходный блок, пакет или кадр; в случае если последний исходный блок, пакет или кадр не достигнут, способ переходит к третьему шагу 120; в случае если последний исходный блок, пакет или кадр достигнут, способ переходит к десятому шагу 190. На десятом шаге 190 способ включает выполнение одной или более процедур анализа того, являются ли изображения/блоки, например, аналогичными предыдущим изображениям/блокам или, например, они черного цвета. Для такого анализа опционально также необходима информация, которая может быть получена из одного или более предыдущих шагов. Такой шаг обеспечивает большее сжатие изображений/блоков кодированных выходных данных. Аналогичный анализ, для которого не требуется какая-либо информация из одного или более предыдущих шагов, также уже был выполнен на третьем шаге 120, и затем также возможно избежать нежелательной обработки, которая должна быть выполнена в процессоре. После завершения десятого шага 190 способ переходит к одиннадцатому шагу 200, на котором осуществляется применение завершающего кодирования блока, пакета, изображения или видео для финализации кодированных сжатых выходных данных 30. Опционально, способ включает переход с седьмого шага 160 непосредственно на одиннадцатый шаг 200, если это применимо, например, если только один блок в изображении необходимо кодировать и он, например, черного цвета или аналогичен предыдущему блоку в предыдущем изображении. Все кодированные данные, которые могут быть записаны в файл или которые могут быть переданы с использованием потоковой передачи, предпочтительно генерируются как можно раньше, чтобы избежать дополнительной буферизации при осуществлении указанного способа.
Обратимся далее к фиг.3, в соответствии с вышесказанным, необходимо понимать, что способ кодирования согласно настоящему изобретению использует, если это применимо, блоки или пакеты различного размера для обеспечения оптимального решения между сжатием данных в кодированных выходных данных 30 и по существу сжатием без потерь, а именно по существу без различимых потерь. На фиг.3 большие блоки 300 кодирования используются для верхнего левого угла данного изображения, в то время как блоки 310, 320, 330 меньшего размера требуются вдоль правой стороны и нижних краевых областей изображения для обеспечения более точного кодирования этих областей. Параметры, описывающие содержимое изображения блоков 300, 310, 320, 330 и положение блоков в пределах изображения, включены в кодированные выходные данные 30. Предпочтительно, способы кодирования, используемые для кодирования блоков 300, 310, 320, 330 также заданы в кодированных выходных данных 30, например, различные способы для различных блоков 300, 310, 320, 330. Распределение блоков 300, 310, 320, 330 будет изменяться в зависимости от пространственного распределения содержимого в изображениях, которые должны быть кодированы. На фиг.3 показан пример исходного разбиения на блоки в изображении, сформированном на втором шаге 110. Для такого исходного разбиения на блоки не требуется какая-либо информация, которая должна быть передана между кодером и декодером, поскольку такое разбиение может быть основано, например, на размере изображения. Согласно одному из вариантов осуществления, если фактическое разбиение на блоки выполняется на пятом шаге 140, то эта информация может быть доставлена из кодера в декодер. Практический пример кодирования изображения описан далее.
В настоящем описании использованы следующие аббревиатуры, заданные в таблице 5. Указанные различные форматы кодирования являются потенциально значимыми для использования при реализации кодера 10 в зависимости от требуемых характеристик кодера 10.
Обратимся снова к фиг.2, необходимо понимать, что способ кодирования опционально осуществляет завершение кодирования по меньшей мере одного из изображений, видеоданных и аудиоданных, и последующий вывод кодированных выходных данных 30. Альтернативно, путем перехода после шага 200, показанного на фиг.2, обратно к шагу 100 или 120, обеспечивается вывод кодированных выходных данных 30, например, посредством потоковой передачи, одновременно с выполнением согласно указанному способу шагов кодирования по меньшей мере изображений, видеоданных и аудиоданных. Такая операция предпочтительна, если способ согласно настоящему изобретению используется для кодирования данных источника на серверной стороне в реальном времени для потоковой передачи клиентам, например, для предоставляемых по Интернету мультимедийных услуг. Таким образом, способ согласно настоящему изобретению обеспечивает возможность функционирования с небольшой доступной емкостью запоминающего устройства, а прерывание пользователем потоковых кодированных данных, например, путем выбора пользователем альтернативного варианта, предотвращает кодирование всего видеофайла, если это не требуется пользователю, тем самым обеспечивается сохранение ресурсов для компьютерной обработки. Это является очень важным для современных мультимедийных потоковых услуг, например, функционирующих через Интернет.
При передаче кодированных выходных данных 30, например, в случае одновременного кодирования/потоковой передачи, как было описано выше, предпочтительно, например, чтобы сначала были переданы заголовки высшего уровня и после них кодированные данные, относящиеся к высшим уровням иерархии, а после этого были переданы кодированные данные, относящиеся к более низким уровням иерархии. Например, сначала в кодированных выходных данных 30 передают данные, относящиеся к размеру изображения, и данные, относящиеся к изображению/видео, затем передают информацию, относящуюся к разбиению блоков, а после этого передают алгоритмы, используемые при кодировании блоков и кодированные данные блока.
Кодер 10 предпочтительно реализуют с использованием вычислительных аппаратных средств, включающих параллельную архитектуру процессора, которая содержит множество процессоров, организованных для параллельной обработки данных. Например, вследствие разбиения исходного блока с получением разделенных блоков 300, 310, 320, 330, они могут быть распределены множеству процессоров, например, первый процессор кодирует блоки 300, 310, 320, а второй процессор кодирует блоки 330.
Во время кодирования количество каналов, используемых кодером 10 для кодирования изображений, видеоданных и/или аудиоданных, может динамически изменяться для получения большей степени сжатия данных в кодированных выходных данных 30. Например, удобно использовать до четырех каналов, хотя изображения могут включать множество слоев, которые могут быть представлены вместе. Указанные слои опционально относятся к одному или более из следующего: подзаголовкам, логотипам, многоракурсным изображениям, глубине. Кроме того, опционально указанные слои совместно передают различные объемы данных. Все связанные данные слоев кодируют с получением кодированных выходных данных 30 в качестве отдельных каналов, а соответствующее описание того, как должны быть объединены и использованы каналы, также включают в один или более заголовков, включенных в кодированные выходные данные 30.
Таблица 5
Аббревиатуры для преобразований кодирования, используемых при реализации вариантов осуществления настоящего изобретения
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
Способ кодирования на основе преобразования Лемпеля-Зива
EM
Модификатор энтропии
Необходимо понимать, что разбиение блоков, проиллюстрированное на фиг.3, является только примером. Во временной последовательности изображений, например, видеопоследовательности, часто обнаруживают перемещение объектов, отображенных на изображениях с четко очерченными краями, в пределах заданного поля изображений, что приводит к разбиению на блоки после перемещения объектов. В неподвижных изображениях разбиение блоков обычно формирует результат, который следует за краями в пространственном изображении. Если разбиение блоков проиллюстрировано неподвижным изображением, объекты часто могут быть обнаружены из него.
Способ кодирования согласно настоящему изобретению, например, как показано на фиг.2, посредством кодирования слоев и каналов, выполняемого в кодере 10, может поддерживать интерактивное представление видео для обеспечения новых типов услуг по доставке контента, например, интерактивной коммерческой рекламы, различных ракурсов просмотра при потоковой передаче репортажей о спортивных событиях в прямом эфире, таких как Формула 1 и т.д., а также фильмов. Например, кодер 10 обеспечивает возможность просмотра фильмов со слоями локализованных подзаголовков, интерактивных водяных знаков, интерактивного распознавания образов, анимированных 2D/3D-кнопок пользовательского интерфейса (user interface, UI) и т.д.
Упрощенный пример варианта осуществления кодирования показан на фиг.4. Изображение 400, которое должно быть кодировано, имеет однородную синюю область 414, показанную на фиг.4 белым цветом, зеленую область 412, показанную на фиг.4 с использованием точечной штриховки, и переменную красную область 410, показанную на фиг.4 как точечно заштрихованная область с переменным затенением. Размер изображения 400 может быть произвольным, например, 12×8 элементов или пикселей, 24×16 элементов или пикселей или 120×80 элементов или пикселей и т.д. Размеры 402 исходных блоков для изображения 400 выбирают как 4×4 элемента или пикселя, 8×8 элементов или пикселей или 40×40 элементов или пикселей, соответственно, для различных размеров изображения. В варианте осуществления настоящего изобретения имеется шесть элементов или блоков пикселей A, B, C, D, E и F, как было проиллюстрировано на чертеже. В соответствии с вариантом осуществления выполняется анализ первого блока A. Из анализа определяют, что блок A является однородным и включает только синий цвет, со значением цвета, представленным числом 10. Блок A рассматривают как одну область. После этого выполняют анализ блока B. Блок B также включает только синий цвет, следовательно, рассматривается как одна область. После этого выполняют анализ блока C. Блок C не является однородным, следовательно, его разбивают на четыре субблока, обозначенных C1, C2, C3 и C4. Выполняют анализ первого субблока C1. Он состоит из переменной красной области, со значением цвета, равным 15, в его нижнем левом углу, со значениями 20 в верхнем левом и нижнем правом углах субблока C1 и значением 25 в верхнем правом углу субблока C1. Субблок C1 рассматривают как одну область. Соответственно выполняют анализ субблоков C2, C3 и C4. Субблоки C2, C3 и C4 являются однородными синими и каждый из них обозначен как однородная синяя область. После этого выполняют анализ блока D. Блок D имеет только один цвет, а именно, однородный синий, и, следовательно, рассматривается как одна область. После этого выполняют анализ блока E. Блок E не является однородным и он, таким образом, разбит на четыре субблока E1, E2, E3 и E4. Субблоки E1 и E2 являются однородными и имеют однородный синий цвет. Субблок E3 не является однородным и он дополнительно разбит на четыре субблока E31, E32, E33 и E34. Выполняют анализ каждого из субблоков E31, E32, E33 и E34. Анализ субблока Е31 показывает, что он имеет однородный синий цвет и обозначается как однородная синяя область. Анализ субблоков E32, E33 и E34 показывает, что они имеют зеленый цвет, со значением цвета, например, равным 5, и обозначаются как зеленые. Выполняют анализ субблока E4 и определяют, что он является однородным, и обозначают его зеленым цветом. Выполняют анализ блока F и определяют, что он не является однородным. Блок F разбивают на четыре субблока F1, F2, F3 и F4. Выполняют анализ субблока F1 и определяют, что он не является однородным. Субблок F дополнительно разбивают на субблоки F11, F12, F13 и F14. Выполняют анализ каждого из субблоков F11, F12, F13 и F14. Определяют, что субблок F11 является однородным и имеет синий цвет.Определяют, что субблоки F12, F13 и F14 являются однородными и имеют зеленый цвет. Указанные значения связывают с блоками и субблоками, соответственно. Дополнительно анализируют субблоки F2, F3 и F4 и определяют, что они являются однородными и имеют зеленый цвет. Указанные значения связывают с указанными блоками и субблоками, соответственно.
Пример выполнения кода для вышеупомянутого процесса кодирования задает значение «0» для блока, который не является разделенными, и значение «1» для блока, который необходимо разбить. Используя такую логику, вышеупомянутый пример предпочтительно кодируют в виде следующих битов разбиения (Split Bits):
<mrow><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mrow><mn>0000</mn></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mrow><mn>0010</mn></mrow></mtd><mtd><mrow><mn>0000</mn></mrow></mtd><mtd><mn>1</mn></mtd><mtd><mrow><mn>1000</mn></mrow></mtd><mtd><mrow><mn>0000</mn></mrow></mtd></mtr></mtable></mrow>
,
При этом первые два логических значения «0» иллюстрируют, что указанные два исходных блока A, B не являются разделенными, третий блок C является разделенным и задается логическим значением «1», как было упомянуто выше, но субблоки не являются разделенными, четвертый блок D не разделен, пятый блок E разделен, первый два субблока E1, E2 не разделены, но суббллок Y3 разделен и т.д. Указанная битовая строка может быть дополнительно кодирована, например, с использованием кодирования длин серий.
Дополнительный способ «заполнения» для каждого блока может быть кодирован, например, с использованием логического значения, равного «0», для назначения однородного цвета для блока, и с использованием логического значения, равного «1», для назначения переменного цвета для блока, называемыми битами способа (Method Bits).
<mrow><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mrow>
В указанном коде первые два блока A, B имеют однородный цвет, следующий блок C1 является переменным, а остальные имеют однородный цвет. Указанные биты способа могут быть дополнительно кодированы, например, с использованием кодирования длин серий.
Значения цвета для указанных блоков, соответственно, называются Значениями (Values):
<mrow><mtable><mtr><mtd><mrow><mn>10</mn><mtext> </mtext><mn>10</mn></mrow></mtd><mtd><mrow><mn>20</mn><mtext> </mtext><mn>25</mn><mtext> </mtext><mn>15</mn><mtext> </mtext><mn>20</mn><mtext> </mtext><mn>10</mn><mtext> </mtext><mn>10</mn><mtext> </mtext><mn>10</mn></mrow></mtd><mtd><mrow><mn>10</mn></mrow></mtd><mtd><mrow><mn>10</mn><mtext> </mtext><mn>10</mn><mtext> </mtext><mn>5</mn><mtext> </mtext><mn>10</mn><mtext> </mtext><mn>5</mn><mtext> </mtext><mn>5</mn><mtext> </mtext><mn>5</mn></mrow></mtd><mtd><mrow><mn>5</mn><mtext> </mtext><mn>5</mn><mtext> </mtext><mn>5</mn><mtext> </mtext><mn>10</mn><mtext> </mtext><mn>5</mn><mtext> </mtext><mn>5</mn><mtext> </mtext><mn>5</mn></mrow></mtd></mtr></mtable></mrow>
где набор «20, 25, 15, 20» описывает значения цвета для каждого угла указанного блока С1. Указанная строка Значений может быть дополнительно кодирована, например, с использованием кодирования Хаффмана, для уменьшения размера данных. Кроме того, поскольку группа субблоков E31, E32, E33 и E34 и группа субблоков F11, F12, F13 и F14 имеют одинаковую комбинацию значений цвета и порядок, а именно, (10, 5, 5, 5), они могут рассматриваться как один элемент и обозначаются своим собственным значением, называемым значением комбинации (Combination Value). Указанное значение комбинации может быть сохранено в базе данных, например, кодера или соответствующего декодера, и называется опорным номером идентификации (Reference Identification number), если необходимо. Часто предпочтительным является использование отдельных потоков для значений для различных способов, так, в примере, описанном ранее, значения постоянной составляющей и значения изменений могут быть заданы в отдельных потоках. Ряд способов опционально также формирует множество потоков для обеспечения меньшей энтропии для каждого потока, что обеспечивает лучшую эффективность сжатия с использованием способов энтропийного кодирования, например, с использованием многоуровневого способа, в котором высокие и низкие уровни, используемые при осуществлении способа, могут быть заданы для обработки отдельных потоков, поскольку часто высокие значения более близки друг к другу, и, аналогично, низкие значения более близки друг к другу, благодаря чему диапазонное кодирование, которое использует высокие и низкие значения, кодированные с использованием дельта-кодирования, работает эффективно.
В соответствии с вариантами осуществления, биты разбиения, биты способа, значения и значения комбинации могут быть сохранены в аппаратных средствах кодера, например, для последующей их передачи в другие аппаратные средства в целях декодирования.
В одном из вариантов осуществления кодирование может быть осуществлено в портативном устройстве 600, показанном на фиг.6, таком как смартфон, цифровая камера или видеокамера. Портативное устройство 600 опционально включает камеру (КАМ) 604 для захвата одного или более изображений, дисплей (DISP) для демонстрации указанного одного или более изображений, приемник/передатчик (RX/TX) 606 для обеспечения связи с использованием сотовых беспроводных сетей или локальных сетей и другие устройства ввода/вывода (I/O) 612, такие как универсальная последовательная шина (Universal Serial Bus, USB) или Ethernet, центральный процессор 608 (Central Processing Unit, CPU) для выполнения алгоритмов и инструкций, относящихся к кодеру, и память (MEM) 610 для сохранения указанных одного или более изображений, получаемых от камеры 604, программное обеспечение для кодера и кодированный контент изображения. Портативное устройство 600 предпочтительно конфигурировано для сохранения одного или более кодированных изображений в его локальной памяти 610 и/или оно может быть конфигурировано для периодической передачи по запросу, в соответствии с действием пользователя, в реальном времени или по существу в реальном времени, кодированных изображений посредством приемника/передатчика (RX/TX) 606 или посредством устройства ввода/вывода (I/O) 612 во внешние системы.
Как было указано ранее, оптимизация RD используется для минимизации значения RD, которое извлекают из уравнения 1 (1) следующим образом:
<mrow><mi>R</mi><mi>D</mi><mo>=</mo><mo stretchy="false">(</mo><mi>E</mi><mo stretchy="false">)</mo><mo>+</mo><mo stretchy="false">(</mo><mi>λ</mi><mo>.</mo><mo stretchy="false">(</mo><msub><mi>B</mi><mi>C</mi></msub><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mtext> </mtext><mtext> </mtext><mtext> </mtext><mo stretchy="false">(</mo><mn>1</mn><mo stretchy="false">)</mo></mrow>
где E = ошибка;
λ = коэффициент, задающий стоимость числа битов как функцию ошибки E;
C
B = число битов.
C
Ошибка E может представлять собой, например, MAE, MSE, MAX или некоторую взвешенную комбинацию таких параметров, например, MAE+MAX. Параметр λ относится к вышеупомянутому коэффициенту, с использованием которого можно сравнить стоимость числа битов B с ошибкой E; параметр λ. становится больше при уменьшении числа битов, используемых для кодирования, при этом возможна большая ошибка, а именно, в ситуации, когда происходит сжатие большого количества данных, соответствующее меньшему значению критерия качества. Соответственно, параметр λ. становится меньше при увеличении числа битов, используемых для кодирования, при этом возможна меньшая ошибка, а именно, в ситуации, когда происходит сжатие небольшого количества данных, соответствующее большему значению критерия качества.
Что касается критерия качества кодирования, оно может быть связано, например, с равномерностью, например, показателем дисперсии. Часто предпочтительным является использование оценки значения RD, поскольку это уменьшает объем обработки, необходимой при определении качества кодирования. Значение числа битов, используемое при вычислении значения RD, часто оценивают, поскольку фактическое значение часто очень сложно вычислить, так как оно зависит от значений других данных и выбранного способа энтропийного кодирования. Оценка битов может быть осуществлена на основе количества битов, необходимых для доставки значения, умноженного на оцененный показатель сжатия, который может быть заранее задан для потока данных или может быть адаптивно модифицирован на основе предыдущих сжатых и доставленных данных.
При реализации вышеупомянутых вариантов осуществления используемое сжатие данных включает две отдельные фазы. Предпочтительно, способ сжатия данных выбирают так, чтобы обеспечить формирование информации выбора, которая задает способ и типы квантованных данных, формируемых с использованием указанного способа. Предпочтительно, указанная информация выбора кодируется с использованием энтропийного кодирования, например, для включения в выходные данные 30. При формировании выходных данных 30 также опционально предпочтительным является использование множества потоков, например, для целых изображений или lnit-блоков. Применение такого множества потоков является предпочтительным при уменьшении энтропии в сжатых выходных данных 30.
Возможны модификации вышеописанных вариантов осуществления настоящего изобретения без выхода за рамки объема настоящего изобретения, заданного приложенной формулой изобретения. Такие выражения как «включающий», «содержащий», «состоящий из», «имеет», «является», используемые для описания настоящего изобретения и в его формуле, должны истолковываться неисключительным образом, а именно должны допускать возможность наличия также объектов, компонентов или элементов, не описанных в явном виде. Следует также понимать, что ссылки на единственное число относятся также ко множественному числу. Числа в круглых скобках в приложенных пунктах формулы изобретения предназначены для обеспечения понимания формулы изобретения и не должны истолковываться любым образом, ограничивающим объект изобретения, заявленный в этих пунктах формулы изобретения.