Фрагментированная ссылка во временном сжатии для кодирования видео
Иллюстрации
Показать всеИзобретение относится к кодированию и декодированию видео с использованием фрагментарных опорных изображений. Техническим результатом является повышение эффективности кодирования видео. Указанный технический результат достигается тем, что предложен способ кодирования и декодирования видео для видоизмененного временного сжатия на основании фрагментированных ссылок, а не полных опорных изображений. В типичной последовательности видеокадров лишь участок (т.е. мозаичный элемент) каждого кадра включает в себя движущиеся объекты. Кроме того, в каждом кадре движущимся объектам свойственно быть заключенными в конкретные области, которые являются общими для всех кадров в последовательности видеокадров. Такие общие области движения идентифицируются и из идентифицированных областей видеокадров извлекаются изображения. Поскольку эти изображения могут представлять лишь участки кадров, эти изображения именуются "фрагментами", и в процессе компенсации движения для генерации предсказанных кадров в качестве опорных изображений используются эти фрагменты, а не весь кадр. 10 н. и 30 з.п. ф-лы, 18 ил.
Реферат
Область техники
Раскрытие относится к обработке мультимедийного сигнала и, в частности, к кодированию и декодированию видео.
Уровень техники
Цифровые мультимедийные возможности могут быть включены в широкий круг устройств, включая цифровые телевизоры, системы прямого цифрового вещания, устройства беспроводной связи, системы беспроводного вещания, карманные персональные компьютеры (“КПК”), портативные или настольные компьютеры, цифровые фотоаппараты, цифровые устройства записи, устройства для видеоигр, приставки для видеоигр, сотовые или спутниковые радиотелефоны и т.п. В цифровых мультимедийных устройствах могут быть реализованы методы кодирования видео, например, методы, заданные согласно стандартам MPEG-2, MPEG-4 или ITU H.264/MPEG-4, Part 10, Advanced Video Coding (“AVC”), для более эффективного осуществления передачи и приема цифровых видеоданных. Методы кодирования видео могут осуществлять сжатие видео посредством пространственного и временного предсказания для устранения или сокращения избыточности, присущей видеопоследовательностям.
Для осуществления сжатия видео посредством временного предсказания, видеокодер может использовать процесс компенсации движения. В процессе компенсации движения, видеокодер делит текущий видеокадр на набор макроблоков. Затем, для каждого макроблока текущего видеокадра, видеокодер путается идентифицировать один или несколько макроблоков в одном или нескольких опорных кадрах, которые содержат примерно те же данные, что и макроблок в текущем видеокадре. Если видеокодер успешно идентифицирует такой макроблок в опорном кадре, видеокодер может генерировать вектор движения, который указывает смещение между идентифицированным макроблоком в опорном кадре и макроблоком в текущем кадре. Если видеокодер не может идентифицировать такой макроблок в опорном кадре, видеокодер может генерировать вектор движения, который не указывает никакого смещения. Затем видеокодер может генерировать предсказательный кадр путем “перемещения” идентифицированных макроблоков из позиций в опорном кадре в позиции, указанные векторами движения. После генерации предсказательного кадра, видеокодер может генерировать остаточный кадр путем вычитания, на помакроблочной основе, предсказательного кадра из текущего кадра для указания остаточных различий между соответствующими блоками. Затем видеокодер может кодировать остаточный кадр совместно с соответствующими векторами движения. Затем, видеокодер может выводить кодированный остаточный кадр и соответствующие векторы движения для использования декодером.
Для декодирования видеокадра, который был закодирован с использованием процесса компенсации движения, видеодекодер может извлекать опорный кадр, указанный векторами движения. Затем видеодекодер может “перемещать” макроблоки опорного кадра, указанные векторами движения, в позиции, указанные векторами движения. В результате перемещения макроблоков опорного кадра, видеодекодер генерирует предсказательный кадр. Затем видеодекодер может генерировать реконструированный видеокадр путем суммирования предсказательного кадра с декодированной версией принятого остаточного кадра.
Сущность изобретения
В общем случае, это раскрытие описывает методы кодирования и декодирования последовательностей видеокадров с использованием фрагментарных опорных изображений. Раскрытие представляет методы кодирования и декодирования видео для видоизмененного временного сжатия на основании фрагментированных ссылок, а не полных опорных изображений. В типичной последовательности видеокадров, лишь участок (т.е. мозаичный элемент) каждого кадра включает в себя движущиеся объекты. Кроме того, в каждом кадре, движущимся объектам свойственно быть заключенными в конкретные области, которые являются общими для всех кадров в последовательности видеокадров. Как описано здесь, такие общие области движения идентифицируются. Затем из идентифицированных областей видеокадров извлекаются изображения. Поскольку эти изображения может представлять лишь участки кадров, в данном раскрытии эти изображения именуются “фрагментами”. Затем, в процессе компенсации движения, для генерации предсказанных кадров в качестве опорных изображений используются эти фрагменты, а не весь кадр.
В одном примере, способ содержит этап, на котором сохраняют опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров. Каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра. Способ также содержит этап, на котором осуществляют компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
В еще одном примере, устройство содержит опорный буфер, в котором хранятся опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров. Каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра. Устройство также содержит блок компенсации движения, который осуществляет компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
В еще одном примере, устройство содержит средство для сохранения опорных фрагментов, содержащих видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров. Каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра. Устройство также содержит средство для осуществления компенсации движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
В еще одном примере, интегральная схема содержит схему, которая сохраняет опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров. Каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра. Кроме того, интегральная схема содержит схему, которая осуществляет компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
Методы, описанные в этом раскрытии, могут быть реализованы в оборудовании, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. В случае программной реализации, программное обеспечение может выполняться с использованием одного или нескольких процессоров, например, микропроцессора, специализированной интегральной схемы (ASIC), вентильной матрицы, программируемой пользователем (FPGA), или цифрового сигнального процессора (DSP). Программное обеспечение, которое выполняет методы, может первоначально храниться на компьютерно-считываемом носителе и загружаться и выполняться с использованием процессора.
Соответственно, в этом раскрытии также рассмотрен компьютерно-считываемый носитель, который содержит выполняемые инструкции. При выполнении на одном или нескольких процессорах, инструкции предписывают одному или нескольким процессорам сохранять опорные фрагменты, содержащие видеоданные, связанные с набором мозаичных элементов видеокадров в последовательности видеокадров. Каждый мозаичный элемент в наборе мозаичных элементов представляет поднабор разделов для соответствующего видеокадра. Инструкции также предписывают одному или нескольким процессорам осуществлять компенсацию движения для текущего мозаичного элемента текущего видеокадра на основании одного или нескольких опорных фрагментов.
В ряде случаев, компьютерно-считываемый носитель может составлять, по меньшей мере, часть компьютерного программного продукта, который может продаваться и/или использоваться в устройстве кодирования видео. Компьютерный программный продукт может включать в себя компьютерно-считываемый носитель и, в ряде случаев, также может включать в себя упаковочные материалы.
Методы кодирования и декодирования последовательностей видеокадров с использованием фрагментарных опорных изображений будут, в основном, описаны применительно к методам кодирования с компенсацией движения. Однако описанное здесь использование фрагментарных опорных изображений также можно использовать в других контекстах кодирования, например, масштабирования, усиления контуров и т.п.
Детали одного или нескольких примеров представлены в прилагаемых чертежах и нижеследующем описании. Другие признаки, объекты и преимущества явствуют из описания и чертежей, а также из формулы изобретения.
Краткое описание чертежей
Фиг. 1 - блок-схема иллюстративной системы кодирования и декодирования видео.
Фиг. 2 - блок-схема, демонстрирующая иллюстративные детали кодера, представленного на фиг. 1.
Фиг. 3 - блок-схема, демонстрирующая иллюстративные детали модуля идентификации мозаичного элемента, представленного на фиг. 2.
Фиг. 4 - иллюстративная последовательность видеокадров и соответствующий набор карт разделов, где активные разделы изображены в виде черных блоков.
Фиг. 5A, 5B и 5C - иллюстративные составные карты активности разделов.
Фиг. 5D демонстрирует эффект сглаживания режима на карте активности разделов.
Фиг. 6A и 6B - иллюстративная операция кодера, представленного на фиг. 2.
Фиг. 7 - блок-схема, демонстрирующая иллюстративные детали декодера представленного на фиг. 1.
Фиг. 8A и 8B - логические блок-схемы иллюстративных операций модулей в декодере, представленном на фиг. 7.
Фиг. 9 - блок-схема, демонстрирующая иллюстративные детали препроцессора, представленного на фиг. 1.
Фиг. 10 - логическая блок-схема, демонстрирующая иллюстративную операцию препроцессора, представленного на фиг. 9.
Фиг. 11 - блок-схема, демонстрирующая альтернативный набор иллюстративных деталей декодера, представленного на фиг. 1.
Фиг. 12 - логическая блок-схема иллюстративной операции альтернативной реализации декодера, представленного на фиг. 11.
Фиг. 13 - логическая блок-схема иллюстративной операции модуля заполнения буфера для сохранения фрагментов в буферах отображения, представленные на фиг. 1.
Подробное описание
На фиг. 1 показана блок-схема иллюстративной системы 2 кодирования и декодирования видео. Согласно примеру, приведенному на фиг. 1, система 2 включает в себя устройство кодирования 4 и устройство декодирования 6. В общем случае, устройство кодирования 4 способно кодировать видеоданные, и устройство декодирования 6 способно декодировать видеоданные, закодированные устройством кодирования 4 или другим устройством кодирования. Устройство кодирования 4 и устройство декодирования 6 могут представлять собой любые из разнообразных устройств. Например, устройство кодирования 4 и устройство декодирования 6 могут представлять собой персональные компьютеры, сетевые серверы, карманные персональные компьютеры (“КПК”), устройства для видеоигр, персональные медиа-проигрыватели, мобильные телефоны, цифровые фотоаппараты, цифровые видеокамеры или устройства других типов. Альтернативно, единое устройство может включать в себя функции устройства кодирования 4 и/или функции устройства декодирования 6.
Согласно примеру, приведенному на фиг. 1, устройство кодирования 4 включает в себя медиа-источник 8. Медиа-источник 8 выводит некодированные видеоданные (т.е. видеоданные, которые не были закодированы с использованием описанного здесь процесса кодирования). Медиа-источник 8 может представлять собой любое из разнообразных программных и/или аппаратных блоков, которые выводят некодированные видеоданные. Например, медиа-источник 8 может представлять собой цифровую видеокамеру, цифровой фотоаппарат, модуль памяти, где хранятся некодированные видеоданные, интерфейс, который принимает некодированные видеоданные от поставщика услуг кабельного, эфирного или спутникового телевидения, или другие типы программных и/или аппаратных блоков, которые выводят некодированные видеоданные. Кроме того, медиа-источник 8 может быть подключен с возможностью обмена данными к устройству кодирования 4 через одно или несколько проводных или беспроводных соединений. Медиа-источник 8 может обеспечивать некодированные видеоданные на препроцессор 10.
Кроме того, в примере, приведенном на фиг. 1, устройство кодирования 4 может включать в себя транскодер 12. В общем случае, транскодер 12 принимает видеоданные, выводимые источником 14 битового потока. Видеоданные, выводимые источником 14 битового потока, могут кодироваться в первом формате. Например, источник 14 битового потока может выводить видеоданные в формате «последовательного цифрового интерфейса». Когда транскодер 12 принимает видеоданные, выводимые источником 14 битового потока, декодер 13 в транскодере 12 может декодировать видеоданные, принятые от транскодера 12, таким образом, генерируя несжатую последовательность видеокадров. Декодировав видеоданные, декодер 13 может обеспечивать декодированные видеоданные на препроцессор 10, который осуществляет одну или несколько операций предварительной обработки видео на декодированных видеоданных. Затем кодер 16 в транскодере 12 может кодировать предварительно обработанные видеоданные во втором формате, отличном от первого формата. Употребляемый в этом раскрытии термин “формат” может означать формат кодирования данных или формат представления данных. Таким образом, транскодер 12 перекодирует видео, сгенерированно источником 14 битового потока из первого формата во второй формат. Например, транскодер 12 может перекодировать видео, сгенерированное источником 14 битового потока, из стандарта H.263 в стандарт H.264. В еще одном примере, транскодер 12 может перекодировать видео, сгенерированное источником 14 битового потока, из первого разрешения (например, H.264 SD) во второе разрешение (H.264 QVGA).
Препроцессор 10 может осуществлять разнообразные операции предварительной обработки видео на некодированных видеоданных. Например, препроцессор 10 может осуществлять операции чередования, операции дечередования, операции регулировки контрастности, операции шумоподавления и/или другие типы операций предварительной обработки видео на некодированных видеоданных.
Осуществив одну или несколько операций предварительной обработки видео на некодированных видеоданных, препроцессор 10 может обеспечивать предварительно обработанные видеоданные на кодер 16. Кодер 16 кодирует предварительно обработанные видеоданные, таким образом, создавая кодированные видеоданные. После того, как кодер 16 кодирует предварительно обработанные видеоданные, устройство кодирования 4 может совершать разнообразные действия над кодированными видеоданными. В одном примере, устройство кодирования 4 может сохранять кодированные видеоданные в виде медиа-файла или медиа-объекта другого типа на носителе информации (не показан), например, в оперативной памяти, на оптическом диске, магнитном диске, во флэш-памяти, электрически стираемой программируемой постоянной памяти или в модулях памяти других типов. В еще одном примере, устройство кодирования 4 может выводить кодированные видеоданные как один из нескольких разных типов медиа-объектов. Например, устройство кодирования 4 может выводить кодированные видеоданные в виде потока аудио/видеоданных в реальном времени. В еще одном примере, устройство кодирования 4 может выводить кодированные видеоданные в виде медиа-файла, который может быть или не быть пригоден для прогрессивного воспроизведения. Когда устройство кодирования 4 выводит кодированные видеоданные, устройство кодирования 4 может передавать кодированные видеоданные с использованием компьютерной сети, передатчика беспроводного вещания, коаксиального кабеля, волоконно-оптического кабеля или другого типа механизма связи.
Декодер 18 в устройстве декодирования 6 может декодировать видеоданные, закодированные устройством кодирования 4. В общем случае, декодер 18 обращает процесс кодирования, который кодер 16 применял к видеоданным. После того, как декодер 18 декодирует видеоданные, постпроцессор 20 в устройстве декодирования 6 осуществляет одну или несколько операций последующей обработки на декодированных видеоданных. Например, постпроцессор 20 может осуществлять операции последующей обработки, которые включают в себя операции гамма-коррекция, операции увеличения резкости и другие операции последующей обработки. После того, как постпроцессор 20 осуществляет операции последующей обработки на видеоданных, модуль 22 заполнения буфера в устройстве декодирования 6 может сохранять видеоданные в наборе из одного или нескольких буферов отображения 24. Например, модуль 22 заполнения буфера может сохранять отдельные кадры постобработанных видеоданных в отдельные буферы отображения 24. Буферы отображения 24 можно реализовать как один или несколько компьютерно-считываемых носителей (например, блоков оперативной памяти, флэш-памяти или компьютерно-считываемых носителей других типов).
Блок отображения 26 в устройстве декодирования 6 может отображать видеоданные в буферах отображения 24. Блок отображения 26 может представлять собой один или несколько из различных типов блока отображения. Например, блок отображения 26 может представлять собой монитор или телевизор на основе электронно-лучевой трубки (“ЭЛТ”), жидкокристаллический дисплей (“ЖКД”), дисплей на основе органических светодиодов (“ОСИД”), традиционный светодиодный дисплей, плазменный дисплей или дисплей иного типа. Хотя в примере, приведенном на фиг. 1, показано, что блок отображения 26 включен в состав устройства декодирования 6, он может быть внешним по отношению к устройству декодирования 6. Например, блок отображения 26 может быть подключен к устройству декодирования 6 одним или несколькими кабелями и/или одной или несколькими беспроводными линиями связи.
Как описано здесь, препроцессор 10, кодер 16, декодер 18 и постпроцессор 20 могут, независимо или совместно, использовать методы идентификации мозаичных элементов видео для сокращения или восстановления временной избыточности среди видеокадров в наборе видеокадров. В общем случае, эти методы идентификации мозаичных элементов видео предусматривают идентификацию одного или нескольких наборов мозаичных элементов видеокадров в последовательности видеокадров. Мозаичный элемент представляет собой область видеокадра. Например, мозаичный элемент может представлять собой прямоугольную область видеокадра шириной в двадцать пикселей, высотой в тридцать пикселей, и имеет верхний левый пиксель, находящийся в пяти столбцах от левого края видеокадра и в семидесяти строках от верхнего края видеокадра (т.е. верхний левый пиксель имеет координаты (5, 70)). Мозаичные элементы в, по меньшей мере, одном из наборов мозаичных элементов являются областями видеокадров, которые могут не включать или не включать в себя целый видеокадр.
После идентификации мозаичных элементов, фрагменты можно извлекать из каждого видеокадра. Употребляемый в этом раскрытии термин “фрагмент” означает изображение, содержащееся в мозаичном элементе видеокадра. Пусть, например, мозаичный элемент видеокадра является прямоугольной областью видеокадра шириной в двадцать пикселей и высотой в тридцать пикселей. Верхний левый пиксель области имеет координаты (5, 70). В этом примере, фрагмент, извлеченный из этого мозаичного элемента, является независимым изображением шириной в двадцать пикселей и высотой в тридцать пикселей. Кроме того, в этом примере, верхний левый пиксель фрагмента (т.е. пиксель фрагмента, имеющий координаты (0, 0)) имеет такие же пиксельные значения, как пиксель видеокадра, имеющий координаты (5, 70). Аналогично, пиксель фрагмента, имеющий координаты (1, 0) имеет такие же пиксельные значения, как пиксель видеокадра, имеющий координаты (6, 70), и т.д.
Когда фрагменты извлечены из видеокадров, операции над видеокадрами можно осуществлять только в отношении фрагментов. Например, при осуществлении операции предварительной обработки в отношении видеокадра, препроцессор 10 может осуществлять операции предварительной обработки только на фрагментах. В еще одном примере, кодер 16 и декодер 18 могут использовать фрагменты в качестве ссылок в ходе операций компенсации движения. После осуществления операций, кадры можно повторно собирать (т.е. визуализировать) путем составления обработанных фрагментов на ранее декодированный полный видеокадр. Это возможно, поскольку можно предполагать, что все участки кадра, которые не находятся в одном из идентифицированных мозаичных элементов, идентичны участкам ранее декодированного полного видеокадра, которые не находятся в одном из идентифицированных мозаичных элементов.
На фиг. 2 показана блок-схема, демонстрирующая иллюстративные детали кодера 16 (фиг. 1). В примере, приведенном на фиг. 2, препроцессор 10 или другой аппаратный и/или программный блок может сохранять последовательность некодированных видеокадров в буфере 30 кадров в кодере 16. Буфер 30 кадров может представлять собой блок памяти, который может быть отделен от или составлять часть основной памяти кодера 16. Эта последовательность видеокадров может включать в себя переменное количество видеокадров. Например, первая последовательность видеокадров может включать в себя пять видеокадров, вторая последовательность видеокадров может включать в себя шестнадцать видеокадров, и третья последовательность видеокадров может включать в себя триста видеокадров. В еще одном примере, последовательность видеокадров может составлять одну или несколько «групп изображений» (“GOP”).
Когда последовательность видеокадров сохраняется в буфере 30 кадров, блок 32 оценки движения в кодере 16 может генерировать данные движения для каждого раздела в каждом видеокадре в последовательности видеокадров. Употребляемый в этом раскрытии термин “раздел” означает сплошную группу пикселей. Например, раздел может представлять собой группу пикселей 16x16. В этом примере, термин “раздел” может быть синонимом термина “макроблок” или “блок”, употребляемого в стиле речи стандартов кодирования видео MPEG и H.26x. Однако, в более общем примере, раздел может представлять собой группу пикселей любой формы (например, треугольной, трапецеидальной, круглой, прямоугольной и т.д.).
Данные движения, сгенерированные блоком 32 оценки движения, могут изменяться в зависимости от того, как нужно кодировать текущий кадр. Например, если кадр нужно интеркодировать как предсказательный кадр (“P-кадр”), блок 32 оценки движения может генерировать векторы движения для каждого раздела кадра. Каждый вектор движения, сгенерированный блоком 32 оценки движения, может указывать значения смещения одного или нескольких разделов из позиций в одном или нескольких опорных кадрах в позицию в P-кадре. Например, вектор движения для раздела может указывать один или несколько опорных кадров, горизонтальные смещения идентифицированных разделов и вертикальные смещения идентифицированных разделов. В этом примере опорные кадры, указанные в векторе движения текущего кадра не обязаны быть кадрами, которые непосредственно предшествуют текущему кадру или следуют за ним. Например, в стандарте H.264, опорный кадр может составлять до шестнадцати кадров, удаленных из текущего кадра. Если кадр нужно интеркодировать как би-предсказательный кадр (“B-кадр”), блок 32 оценки движения может генерировать, для каждого раздела кадра, набор списков индексных значений опорного кадра. В ходе декодирования, списки индексных значений кадра можно использовать для интерполяции позиции раздела в B-каде. Если кадр подлежит кодированию как интракодированный кадр (“I-кадр”), блок 32 оценки движения может не генерировать данные движения или может не осуществлять никаких действий в отношении I-кадра.
После того, как блок 32 оценки движения сгенерирует данные движения для каждого раздела в каждом видеокадре в последовательности видеокадров, модуль 34 определения режима может выбрать режим кодирования раздела для каждого раздела. Например, в стандарте H.264/AVC, модуль 34 определения режима может определять на пораздельной основе, подлежат ли разделы интра-кадров кодированию с использованием режима кодирования Intra_4x4 или режима кодирования Intra_16x16. Кроме того, в стандарте H.264/AVC, модуль 34 определения режима может определять на пораздельной основе, подлежат ли разделы P-кадров кодированию с использованием режима «пропуска» или кодированию с использованием компенсация движения. В режиме «пропуска», раздел интерпретируется для сохранения тех же пиксельных данных, что и эквивалентно расположенный раздел в опорном кадре.
Помимо выбора режима кодирования для каждого раздела в каждом видеокадре последовательности видеокадров, модуль 34 определения режима может осуществлять операцию “сглаживания режима” над разделами. В общем случае, когда модуль 34 определения режима осуществляет операцию сглаживания режима, модуль 34 определения режима переклассифицирует изолированные разделы первого режима как разделы второго режима. Например, в последовательности видеокадров, единичный раздел может перемещаться по фону, который иначе является статичным. В этом примере, разделы статичного фона могут быть разделами режима «пропуска» и движущийся раздел можно кодировать согласно другому режиму. Операция сглаживания режима может переклассифицировать этот раздел как раздел режима пропуска. Часто такие изолированные движущиеся разделы являются визуальным шумом и могут быть ненужными и визуально отвлекающими. Благодаря осуществлению операции сглаживания режима над разделами, модуль 34 определения режима может эффективно увеличивать количество разделов режима пропуска, в то же время, снижая визуальный шум.
После того, как модуль 34 определения режима определит режим кодирования раздела для каждого раздела, модуль 36 карты разделов в кодере 16 может генерировать карту разделов для каждого видеокадра последовательности видеокадров. Сгенерировав карту разделов для видеокадра, модуль 36 карты разделов может сохранить карту разделов в буфере 38 карты. Буфер 38 карты может представлять собой отдельный блок памяти, область в основной памяти устройства кодирования 4 или любой другой пригодный блок памяти, к которому может обращаться кодер 16.
Карта разделов для видеокадра может включать в себя структуру данных для каждого раздела видеокадра. Структура данных для раздела видеокадра указывает информацию о разделе, необходимую для идентификации мозаичных элементов. Например, структура данных для раздела может указывать режим кодирования для раздела, может указывать, находится ли раздел в области равномерного движения, и/или другую информацию, касающуюся раздела. В еще одном примере, структура данных для раздела может указывать информацию яркости раздела, палитру цветности раздела (например, черно-белый, сепия и т.д.), находится ли раздел в области равномерного движения, находится ли раздел в области ускоренного движения, находится ли раздел в области морфинга (например, увеличения/уменьшения), и/или другую информацию, касающуюся раздела.
Модуль 40 идентификации мозаичного элемента в кодере 16 может использовать карты разделов в буфере 38 карты для идентификации одного или нескольких из наборов мозаичных элементов видеокадров в последовательности видеокадров. Модуль 40 идентификации мозаичного элемента может идентифицировать один или несколько из наборов мозаичных элементов видеокадров в последовательности видеокадров по-разному. Например, на фиг. 3 показаны иллюстративные детали, касающиеся того, как модуль 40 идентификации мозаичного элемента может идентифицировать наборы мозаичных элементов, которые совмещены. Альтернативно, модуль 40 идентификации мозаичного элемента может идентифицировать наборы мозаичных элементов видеокадров, которые перекрываются, но не строго совмещены. Помимо идентификации наборов мозаичных элементов, модуль 40 идентификации мозаичного элемента может генерировать информацию описания мозаичного элемента для каждого из идентифицированного набора мозаичных элементов. Информация описания мозаичного элемента для набора мозаичных элементов может указывать индексный номер набора мозаичных элементов, который можно использовать для ссылки на набор мозаичных элементов, информацию, которая указывает положение и форму набора мозаичных элементов, и, возможно другие атрибуты.
Затем, модуль 42 извлечения фрагментов в кодере 16 может извлекать фрагменты из видеокадров. Употребляемый здесь термин “фрагмент” означает изображение в мозаичном элементе видеокадра. Например, если модуль 40 идентификации мозаичного элемента идентифицировал прямоугольный мозаичный элемент видеокадра с координатами (5, 5) верхнего левого в пикселя видеокадра и координатами (10, 10) нижнего правого пикселя видеокадра, модуль 42 извлечения фрагментов может извлекать из видеокадра набор разделов в прямоугольном изображении кадра с координатами (5, 5) верхнего левого в пикселя и координатами (10, 10) нижнего правого пикселя. Этот набор разделов является фрагментом. В еще одном примере, что может иметь место для интракодированных видеокадров (“I-кадров”), если модуль 40 идентификации мозаичного элемента идентифицирует прямоугольный мозаичный элемент видеокадра с координатами (0, 0) верхнего левого пикселя видеокадра и координатами нижнего правого пикселя в нижнем правом углу видеокадра, модуль 42 извлечения фрагментов может извлекать из кадра набор разделов, который включает в себя все разделы кадра.
После извлечения фрагментов и соответствующих данных движения, модуль 42 извлечения фрагментов может сохранять фрагменты и соответствующие векторы движения в буфере 44 фрагментов. Буфер 44 фрагментов может представлять собой отдельный блок памяти, область основной памяти устройства кодирования 4 и т.д.
Извлекши фрагмент и соответствующие данные движения, модуль 42 извлечения фрагментов может генерировать информацию идентификации изображения для фрагмента. Информация идентификации фрагмента для фрагмента может указывать индексный номер кадра, из которого модуль 42 извлечения фрагментов извлек фрагмент. Кроме того, информация идентификации фрагмента для фрагмента может указывать индексный номер набора мозаичных элементов, связанного с фрагментом. Как описано выше, индексный номер набора мозаичных элементов может быть указан посредством информации описания мозаичного элемента набора мозаичных элементов. Таким образом, информация идентификации фрагмента для фрагмента идентифицирует соотношение между фрагментом и видеокадром. Например, информация идентификации фрагмента для фрагмента может указывать, что фрагмент извлечен из кадра “5” и связан с набором мозаичных элементов “3”.
Затем буфер 44 фрагментов может передавать набор данных движения, связанный с разделами одного из фрагментов на блок 46 компенсации движения в кодере 16. В целях объяснения, этот один из фрагментов именуется здесь “текущим фрагментом”. Приняв набор данных движения, связанных с разделами текущего фрагмента, блок 46 компенсации движения может определить, подлежит ли текущий фрагмент кодированию как P-кадр, B-кадр или как I-кадр.
Если текущий фрагмент кодируется как P-кадр, данные движения, связанные с текущим фрагментом могут указывать один или несколько векторов движения и один или несколько индексных значений кадра для каждого раздела текущего фрагмента. Блок 46 компенсации движения может извлекать из опорного буфера 48 каждый опорный фрагмент, связанный с указанными индексными значениями кадра, и также связанный с индексным значением набора мозаичных элементов, указанным в информации идентификации фрагмента для текущего фрагмента.
После извлечения опорных фрагментов из опорного буфера 48, блок 46 компенсации движения может, для каждого раздела текущего фрагмента, использовать векторы движения раздела для идентификации раздела в одном или нескольких из извлеченных опорных фрагментов и затем помещать идентифицированный раздел в раздел текущего фрагмента. Например, вектор движения для раздела текущего фрагмента может указывать раздел одного из извлеченных опорных фрагментов, указывая горизонтальное смещение и вертикальное смещение между разделом текущего фрагмента и разделом извлеченного опорного фрагмента. В этом примере, блок 46 компенсации движения может использовать пиксельные данные указанного фрагмента извлеченного опорного фрагмента как пиксельные данные фрагмента текущего фрагмента. Таким образом, блок 46 компенсации движения “перемещает” разделы из опорных фрагментов в надлежащие положения в предсказательном фрагменте, связанном с текущим фрагментом.
Когда текущий фрагмент меньше видеокадра, из которого он был извлечен, текущий фрагмент включает в себя меньше разделов, чем видеокадр. Поскольку текущий фрагмент включает в себя меньше разделов, чем видеокадр, блок 46 компенсации движения может быстрее и эффективнее осуществлять операцию компенсации движения на текущем фрагменте (в отношении вычислительной и аппаратной сложности), чем блок 46 компенсации движения был бы способен осуществлять на видеокадре.
Если текущий фрагмент кодируется как B-кадр, данные движения, связанные с текущим фрагментом, могут указывать два или более списков для каждого раздела текущего фрагмента. В одной иллюстративной реализации, первый из списков для раздела (т.е. список 0) может указывать нуль или более индексных значений кадра для кадров, которые существуют до кадра, из которого был извлечен текущий фрагмент. Второй из списков для раздела (т.е. список 1) может указывать нуль или более индексных значений кадра для кадров, которые существуют после кадра, из которого был извлечен текущий фрагмент. Блок 46 компенсации движения может извлекать из опорного буфера 48 каждый опорный фрагмент, связанный с индексными значениями кадра, указанными в двух или более списках, и также связанный с индексным значением набора мозаичных элементов текущего фрагмента. После извлечения опорных фрагментов из опорного буфера 48, блок компенсации движения 46 может, для каждого раздела текущего фрагмента, интерполировать содержимое раздела.
Если текущий фрагмент кодируется как I-кадр, блок 46 компенсации движения может идентифицировать предсказательный фрагмент, состоящий только из нулей. Поскольку предсказательный фрагмент состоит только из нулей, когда модуль 50 генерации остатка в кодере 16 суммирует отрицательную версию предсказательного фрагмента с текущим фрагментом, результирующий остаточный фрагмент совпадает с текущим фрагментом. В альтернативной реализации, блок 46 компенсации движения и модуль 50 генерации остатка можно полностью обойти, когда текущий фрагмент подлежит кодированию как I-кадр. Другими словами, текущий фрагмент может поступать непосредственно на блок 52 блочного преобразования в кодере 16.
Как упомянуто в предыдущем абзаце, после того, как блок 46 компенсации движения генерирует предсказательный фрагмент, модуль 50 генерации остатка может генерировать остаточный фрагмент путем суммирования отрицательной версии предсказательного фрагмента и соответствующего исходного фрагмента, хранящегося в буфере 44 фрагментов. В более общем случае, модуль 50 генерации остатка может генерировать остаточный фрагмент, который представляет различие между предсказательным фрагментом и соответствующим исходным фрагментом. Затем, блок 52 блочного преобразования может генерировать набор коэффициентов путем осуществления процесса трансформации на остаточном фрагменте. Например, блок 52 блочного преобразования может генерировать матрицу коэффициентов для каждого блока пикселей в остаточном изображении путем осуществления двухмерного дискретного косинусного преобразования на каждом из блоков пикселей в остаточном фрагменте. После того, как блок 52 блочного преобразования генерирует набор коэффициентов, модуль квантования 54 в ко