Эффективные аппроксимации с фиксированной запятой прямого и обратного дискретных косинусных преобразований
Иллюстрации
Показать всеИзобретения относятся к способу и устройствам для сжатия и отображения изображения. Техническим результатом является исключение ошибок аппроксимации вычисления обратного дискретного косинусного преобразования с использованием вычислений с фиксированной запятой. Способ содержит этапы: масштабируют каждый коэффициент в матрице закодированных коэффициентов с размерами 8×8 одним из множителей для формирования матрицы масштабированных коэффициентов, повторно применяют масштабированные одномерные преобразования с фиксированной точкой для преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов, сдвигают вправо преобразованные коэффициенты для формирования матрицы скорректированных коэффициентов, причем каждый скорректированный коэффициент в матрице скорректированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые можно сформировать с применением идеального двумерного обратного дискретного косинусного преобразования к матрице закодированных коэффициентов, отображают блок пикселей с размерами 8×8, причем каждый пиксель в блоке пикселей включает в себя значение компонента пикселя с учетом скорректированного коэффициента. 4 н. и 62 з.п. ф-лы, 12 ил., 3 табл.
Реферат
По настоящей заявке на патент испрашивается приоритет по дате подачи предварительной заявки США № 60/816697, поданной 26 июня 2006, предварительной заявки США № 60/841362, поданной 30 августа 2006, предварительной заявки США № 60/847194, поданной 25 сентября 2006, предварительной заявки США № 60/829669, поданной 16 октября 2006, предварительной заявки США № 60/869530, поданной 11 декабря 2006, предварительной заявки США № 60/883932, поданной 8 января 2007, предварительной заявки США № 60/896778, поданной 23 марта 2007, и предварительной заявки США № 60/909335, поданной 30 марта 2007, которые полностью включены в настоящий документ в качестве ссылки.
Область техники, к которой относится изобретение
Это раскрытие относится к компьютерной графике и мультимедиа и, в частности, к сжатию графики, изображений и видеоинформации.
Предшествующий уровень техники
Во многих существующих стандартах кодирования видео и изображения используются способы сжатия для обеспечения возможности сохранения или передачи видео и изображений с высоким разрешением как относительно компактных файлов или потоков данных. Такие стандарты кодирования включают в себя стандарт сжатия неподвижного изображения (JPEG), разработанный группой экспертов по видео международный стандарт сжатия видео- и аудиоданных (MPEG)-1, MPEG-2, часть 2 MPEG-4, H.261, H.263 и другие стандарты кодирования видео или изображения.
Согласно многим из этих стандартов видеокадры сжимают с использованием "пространственного" кодирования. Эти кадры могут быть исходными кадрами (то есть i-кадрами) или могут быть остаточными кадрами, сформированными с временным кодированием, которое использует компенсацию движения. Во время пространственного кодирования кадры разбиваются на блоки пикселей равного размера. Например, несжатый кадр может быть разбит на ряд блоков пикселей 8×8. Для каждого блока пикселей компоненты пикселя разделяются на матрицы значений компонента пикселя. Например, каждый блок пикселей может быть разделен на матрицу значений компонента пикселя Y, матрицу значений компонента пикселя U и матрицу значений компонента пикселя V. В этом примере значения компонента пикселя Y указывают значения яркости и значения компонентов пикселя U и V представляют значения информации о цвете.
Кроме того, во время пространственного кодирования к каждой матрице значений компонента пикселя в кодируемом кадре применяется прямое дискретное косинусное преобразование (FDCT). Идеальное одномерное FDCT определяется:
где s - массив N исходных значений, t - массив N преобразованных значений, и коэффициенты c задаются:
для 1≤k≤N-l.
Идеальное двумерное FDCT определяется формулой:
где s - массив N исходных значений, t - массив N преобразованных значений, и c(i,j) задается c(i,j)=c(i)c(j), причем c(k) определяется, как в одномерном случае.
Матрица коэффициентов формируется при преобразовании блока значений компонента пикселя с использованием FDCT. Далее эту матрицу коэффициентов можно квантовать и кодировать с использованием, например, кодов Хаффмана или арифметических кодов. Битовый поток видео представляет объединенный результат выполнения этого процесса для всех блоков значений цветового компонента в последовательности видеокадров в несжатой последовательности видеокадров.
Несжатый видеокадр может быть получен из битового потока видео с изменением направления этого процесса на обратное. В частности, каждая матрица коэффициентов в битовом потоке восстанавливается из сжатых данных, и восстановленные из сжатых данных значения деквантуются для получения матрицы преобразованных коэффициентов. Далее к каждой матрице преобразованных коэффициентов применяется обратное дискретное косинусное преобразование ("IDCT") для получения матриц значений компонента пикселя. Идеальное одномерное IDCT определяется:
где s - массив N исходных значений, t - массив N преобразованных значений, и коэффициенты c задаются:
для 1≤k≤N-l.
Идеальное двумерное IDCT определяется формулой:
Далее получающиеся в результате матрицы значений компонента пикселя заново собираются в блоки пикселей, и эти блоки пикселей заново собираются для формирования декодированного кадра. Если декодированный кадр является i-кадром, то этот кадр теперь полностью декодирован. Однако если несжатый кадр является прогнозированным или бипрогнозированным кадром, то декодированный кадр является только декодированным остаточным кадром. Законченный кадр формируется с созданием восстановленного кадра с использованием векторов движения, связанных с декодированным кадром, и последующего суммирования восстановленного кадра с декодированным остаточным кадром.
При идеальных обстоятельствах информация не теряется при использовании FDCT для кодирования или IDCT для декодирования блока значений компонента пикселя. Следовательно, при этих идеальных обстоятельствах декодированная версия видеокадра идентична исходной версии видеокадра. Однако вычисление FDCT или IDCT может быть в вычислительном отношении трудным, потому что вычисление преобразований FDCT и IDCT подразумевает использование вещественных чисел и значительное количество операций умножения. Поэтому вещественные числа, используемые в преобразованиях FDCT и IDCT, часто аппроксимируются с использованием чисел с ограниченной точностью. В результате использования чисел с ограниченной точностью для представления значений вещественных чисел получаются ошибки округления. Кроме того, дополнительные ошибки могут вноситься квантованием и деквантованием.
Ошибки в процессе сжатия и восстановления из сжатых данных могут в результате привести к существенным различиям между исходным несжатым кадром и конечным несжатым кадром. Например, цвета в конечном несжатом кадре могут отличаться от цветов в исходном несжатом кадре. Кроме того, ошибки, вызванные рассогласованием между реализацией преобразований IDCT в кодере и реализацией IDCT в декодере, могут накапливаться во время кодирования и декодирования последовательностей прогнозированных кадров. Эти накопленные ошибки обычно называются "дрейфом IDCT".
Сущность изобретения
Технический результат, достигаемый при использовании настоящего изобретения, заключается в улучшении способов аппроксимации вычисления обратного дискретного косинусного преобразования с использованием вычислений с фиксированной точкой. В результате, данные способы можно применять в малогабаритных, менее сложных устройствах, таких как мобильные телефоны, карманные персональные компьютеры и медиа-плейеры. Кроме того, эти способы могут быть применены к форматам, которые включают в себя рекомендации Н.261, Н.263, Н.264, Т.81 (JPEG) сектора стандартизации Международного союза электросвязи (ITU-Т), а также форматы мультимедиа Международной организации по стандартизации (ISO)/MEC Группы экспертов по видео (MPEG)-1, (MPEG)-2, части 2 MPEG-4. Описаны способы аппроксимации вычисления обратного дискретного косинусного преобразования с использованием вычислений с фиксированной точкой. Согласно этим способам матрицы масштабированных коэффициентов формируются умножением коэффициентов в матрицах закодированных коэффициентов на масштабные множители. Затем, с добавлением значения смещения центра к коэффициенту DC матрицы масштабированных коэффициентов формируются матрицы смещенных коэффициентов. Далее используются арифметические операции с фиксированной запятой для применения преобразования к матрицам смещенных коэффициентов. После этого значения в получающихся в результате матрицах сдвигаются вправо для получения матриц значений компонента пикселя. Матрицы значений компонента пикселя затем объединяются для создания матриц пикселей. Матрицы пикселей, сформированные этими способами, близко напоминают матрицы пикселей, восстановленные из сжатых данных с использованием идеального обратного дискретного косинусного преобразования ("IDCT").
В одном аспекте способ содержит масштабирование каждого коэффициента в матрице закодированных коэффициентов, 8×8 одним из множителя A, множителя B, множителя C, множителя D, множителя E, множителя F, множителя G, множителя H, множителя I или множителя J для формирования матрицы масштабированных коэффициентов. В этом способе A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718 и J=2528. Способ также содержит использование повторных применений масштабированного одномерного преобразования с фиксированной запятой для преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов. Кроме того, способ содержит сдвиг вправо преобразованных коэффициентов в матрице преобразованных коэффициентов для формирования матрицы скорректированных коэффициентов. Каждый скорректированный коэффициент в матрице скорректированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые можно сформировать с применением идеального двумерного IDCT к матрице закодированных коэффициентов. Кроме того, способ содержит отображение блока пикселей, 8×8. Каждый пиксель в блоке пикселей, 8×8, включает в себя значение компонента пикселя на основе скорректированного коэффициента в матрице скорректированных коэффициентов.
В другом аспекте устройство содержит модуль масштабирования, который масштабирует каждый коэффициент в матрице закодированных коэффициентов, 8×8, одним из множителя A, множителя B, множителя C, множителя D, множителя E, множителя F, множителя G, множителя H, множителя I или множителя J для формирования матрицы масштабированных коэффициентов, причем A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718 и J=2528. Устройство также содержит модуль обратного преобразования, который использует повторные применения масштабированного одномерного преобразования с фиксированной запятой для преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов. Кроме того, устройство содержит модуль сдвига вправо, который сдвигает вправо преобразованные коэффициенты в матрице преобразованных коэффициентов для формирования матрицы скорректированных коэффициентов. Каждый скорректированный коэффициент в матрице скорректированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые можно сформировать с применением идеального двумерного IDCT к матрице закодированных коэффициентов. Устройство также содержит модуль вывода, который выводит блок пикселей, 8×8. Каждый пиксель в блоке пикселей включает в себя значение компонента пикселя на основе скорректированного коэффициента в матрице скорректированных коэффициентов.
В другом аспекте устройство содержит средство для масштабирования коэффициентов в матрице закодированных коэффициентов, 8×8, одним из множителя A, множителя B, множителя C, множителя D, множителя E, множителя F, множителя G, множителя H, множителя I или множителя J для формирования матрицы масштабированных коэффициентов, причем A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718 и J=2528. Кроме того, устройство содержит средство для использования повторных применений масштабированного одномерного преобразования с фиксированной запятой для преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов. Кроме того, устройство содержит средство для сдвига вправо преобразованных коэффициентов в матрице преобразованных коэффициентов для формирования матрицы скорректированных коэффициентов. Каждый скорректированный коэффициент в матрице скорректированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые можно сформировать с применением идеального двумерного IDCT к матрице закодированных коэффициентов. Кроме того, устройство содержит средство для вывода блока пикселей, 8×8. Каждый пиксель в блоке пикселей включает в себя значение компонента пикселя на основе скорректированного коэффициента в матрице скорректированных коэффициентов.
В другом аспекте изобретение ориентировано на машиночитаемый носитель информации, содержащий команды. Эти команды вызывают масштабирование программируемым процессором каждого коэффициента в матрице закодированных коэффициентов, 8×8, одним из множителя A, множителя B, множителя C, множителя D, множителя E, множителя F, множителя G, множителя H, множителя I или множителя J для формирования матрицы масштабированных коэффициентов, причем A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718 и J=2528. Команды также вызывают использование повторных применений масштабированного одномерного преобразования с фиксированной запятой программируемым процессором для преобразования матрицы масштабированных коэффициентов в матрицу преобразованных коэффициентов. Кроме того, команды вызывают сдвиг вправо программируемым процессором преобразованных коэффициентов в матрице преобразованных коэффициентов для формирования матрицы скорректированных коэффициентов. Каждый скорректированный коэффициент в матрице скорректированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые можно сформировать с применением идеального двумерного IDCT к матрице закодированных коэффициентов. Команды также вызывают вывод программируемым процессором сигналов, которые вызывают отображение устройством отображения блока пикселей, 8×8. Каждый пиксель в блоке пикселей включает в себя значение компонента пикселя на основе скорректированного коэффициента в матрице скорректированных коэффициентов.
В некоторых случаях машиночитаемый носитель информации может являться частью компьютерного программного продукта, который может быть продан изготовителям и/или использоваться в устройстве кодирования видео. Компьютерный программный продукт может включать в себя машиночитаемый носитель информации и в некоторых случаях может также включать в себя упаковочные материалы.
В нижеследующем описании и прилагаемых чертежах подробно изложены один или несколько примеров. Другие признаки, цели и преимущества изобретения будут очевидны из упомянутых описания и чертежей и из формулы изобретения.
Краткое описание чертежей
Фиг.1 - блок-схема, изображающая иллюстративное устройство, которое кодирует и декодирует файлы мультимедиа.
Фиг.2 - блок-схема, изображающая иллюстративные детали модуля кодирования.
Фиг.3 - блок-схема, изображающая иллюстративные детали модуля декодирования.
Фиг.4 - блок-схема, изображающая иллюстративную работу модуля кодирования.
Фиг.5 - блок-схема, изображающая иллюстративную работу модуля декодирования.
Фиг.6 - блок-схема, изображающая иллюстративные детали модуля обратного дискретного косинусного преобразования ("IDCT").
Фиг.7 - блок-схема, изображающая иллюстративную работу модуля обратного преобразования.
Фиг.8 - блок-схема, изображающая иллюстративные детали модуля прямого дискретного косинусного преобразования ("FDCT").
Фиг.9 - блок-схема, изображающая иллюстративную работу модуля прямого преобразования вектора.
Фиг.10A - блок-схема, изображающая иллюстративное одномерное преобразование.
Фиг.10В - блок-схема, изображающая иллюстративное масштабированное одномерное преобразование.
Фиг.11 - блок-схема, изображающая иллюстративное масштабированное одномерное преобразование, используемое модулем обратного преобразования.
Подробное описание
Фиг.1 является блок-схемой, изображающей иллюстративное устройство 2, которое кодирует и декодирует файлы мультимедиа. Устройство 2 может содержать персональный компьютер, мобильный радиотелефон, сервер, сетевое устройство, компьютер, встроенный в транспортное средство, видеоигровую платформу, переносное видеоигровое устройство, автоматизированное рабочее место, компьютерный киоск, цифровой идентификационный комплект, универсальный компьютер, телевизионную приставку, сетевой телефон, персонального цифрового секретаря, видеоигровую платформу, мобильный медиаплеер, бытовой медиаплеер, цифровой видеопроектор, личный медиаплеер (например, iPod) или другой тип электронного устройства.
Устройство 2 может включать в себя источник 4 мультимедиа для формирования мультимедийных данных. Источник 4 мультимедиа может содержать цифровую видео- или фотокамеру для ввода данных изображения. Источник 4 мультимедиа может быть встроен в устройство 2 или может быть присоединен к устройству 2 как периферийное устройство. Источник 4 мультимедиа может также содержать микрофон для записи аудиоданных. Источник 4 мультимедиа может обеспечивать мультимедийные данные в процессор 6. Процессор 6 может содержать цифровой сигнальный процессор (DSP), микропроцессор или некоторый другой тип интегральной схемы.
Когда процессор 6 принимает мультимедийные данные из источника 4 мультимедиа, модуль 8 кодирования может кодировать мультимедийные данные. Модуль 8 кодирования может содержать программные средства, исполняемые процессором 6. В качестве альтернативы модуль 8 кодирования может содержать специализированные аппаратные средства в процессоре 6, который кодирует мультимедийные данные. В еще одном альтернативном варианте модуль 8 кодирования может содержать любую комбинацию программных и аппаратных средств для кодирования мультимедийных данных.
Модуль 8 кодирования может сохранять закодированные мультимедийные данные в репозитории 10 мультимедиа. Репозиторий 10 мультимедиа может содержать флэш-память, оперативное запоминающее устройство, накопитель на жестких дисках или некоторый другой тип энергозависимого или энергонезависимого блока хранения данных.
Модуль 12 декодирования может извлекать закодированные мультимедийные данные из репозитория 10 мультимедиа. Модуль 12 декодирования может содержать программные средства, исполняемые процессором 6. В качестве альтернативы модуль 12 декодирования может содержать специализированные аппаратные средства в процессоре 6, который декодирует закодированные мультимедийные данные. В еще одном альтернативном варианте модуль 12 декодирования может содержать комбинацию программных и аппаратных средств, которые совместно функционируют для декодирования закодированных мультимедийных данных.
Блок 14 воспроизведения мультимедиа в устройстве 2 может воспроизводить мультимедийные данные, декодированные модулем 12 декодирования. Например, блок 14 воспроизведения мультимедиа может содержать компьютерный монитор, который воспроизводит мультимедийные данные видео или изображения. В другом примере блок 14 воспроизведения мультимедиа может содержать устройство вывода аудио (например, динамик), которое воспроизводит звуковые мультимедийные данные аудио. Блок 14 воспроизведения мультимедиа может быть интегрирован в устройство 2 или может быть связан с ним через проводную или беспроводную линию связи как периферийное устройство.
Устройство 2 может также содержать сетевой интерфейс 16. Сетевой интерфейс 16 может обеспечивать связь между устройством 2 и компьютерной сетью через проводную или беспроводную линию связи. Например, сетевой интерфейс 16 может обеспечивать связь между устройством 2 и сетью мобильной радиотелефонной связи. Устройство 2 может принимать файлы мультимедиа через сетевой интерфейс 16. Например, устройство 2 может принимать фотографии, видеоклипы, потоковое видео (например, телевидение, видеоконференцию, кинофильмы), аудиоклипы (например, мелодии для звонка, песни, файлы MP3), потоковое аудио (например, цифровые радиостанции, речевые вызовы и т.д.) через сетевой интерфейс 16. Когда сетевой интерфейс 16 принимает битовый поток видео или файла мультимедиа, сетевой интерфейс 16 может сохранять этот битовый поток видео или файла мультимедиа в репозитории 10 мультимедиа.
Видеосигнал может быть описан в терминах последовательности изображений, которые включают в себя кадры (все изображение), или области (например, изображение, которое содержит или нечетные или четные строки кадра). Кроме того, каждый кадр или область могут включать в себя два или большее количество вырезок или субфрагментов кадра или области. Термин "кадр", используемый в этом документе или один или в комбинации с другими словами, может относиться к изображению, кадру, области или их слою.
Когда модуль 8 кодирования кодирует последовательность видеокадров, модуль 8 кодирования может начинать с выбора тех видеокадров, которые должны быть "i-кадрами". Например, модуль 8 кодирования может выбирать каждый восьмой кадр как i-кадр. i-Кадры являются кадрами, которые не ссылаются на другие кадры. После выбора i-кадров модуль 8 кодирования использует "пространственное кодирование" для кодирования i-кадров. Кроме того, модуль 8 кодирования может использовать "временное кодирование" для кодирования оставшихся кадров.
Для использования пространственного кодирования для кодирования кадра модуль 8 кодирования может разбивать данные кадра на блоки пикселей. Например, модуль 8 кодирования может разбивать данные кадра на блоки пикселей шириной в восемь пикселей и высотой в восемь пикселей (то есть каждый блок пикселей содержит 64 пикселя). После этого модуль 8 кодирования может разделять значения компонента пикселя из пикселей в каждом блоке пикселей на отдельные матрицы значений компонента пикселя. Значения компонента пикселя одного пикселя являются значениями, которые характеризуют вид пикселя. Например, каждый пиксель может специфицировать значение компонента пикселя Y, значение компонента пикселя Cr и значение компонента пикселя Cb. Значение компонента пикселя Y указывает яркость пикселя, значение компонента пикселя Cr указывает информацию о красном цвете пикселя, и значение компонента пикселя Cb указывает информацию о синем цвете пикселя. В этом примере, когда модуль 8 кодирования разделяет значения компонента пикселя из блока пикселей, модуль 8 кодирования может получать матрицу значений компонента пикселя Y, матрицу значений компонента пикселя Cr и матрицу значений компонента пикселя Cb.
После разделения значений компонентов пикселя в матрицы значений компонента пикселя со сдвигом влево значений компонента пикселя в матрицах значений компонента пикселя модуль 8 кодирования формирует матрицы скорректированных коэффициентов. Для каждой матрицы скорректированных коэффициентов модуль 8 кодирования использует арифметические операции с фиксированной запятой для повторного применения одномерного преобразования к матрице скорректированных коэффициентов, тем самым формируя матрицы преобразованных коэффициентов. Затем модуль 8 кодирования формирует матрицу масштабированных коэффициентов путем масштабирования матрицы преобразованных коэффициентов набором масштабных множителей. Каждый из этих масштабных множителей является целочисленным значением. Масштабные множители были выбраны так, что множители в одномерном преобразовании могут быть аппроксимированы с использованием простых рациональных чисел.
Каждый масштабированный коэффициент в матрице масштабированных коэффициентов аппроксимирует соответствующее значение в матрице значений, которые формируются с применением идеального двумерного прямого дискретного косинусного преобразования ("FDCT") к соответствующей матрице значений цветового компонента. Идеальное одномерное FDCT определяется:
где s - массив N исходных значений, t - массив N преобразованных значений, и коэффициенты c задаются
для 1≤k≤N-l.
Идеальное двумерное FDCT определяется формулой:
где s - массив N исходных значений, t - массив N преобразованных значений, и c(i,j) задается c(i,j)=c(i)c(j), и причем c(k) определяется, как в одномерном случае.
После получения матрицы масштабированных коэффициентов модуль 8 кодирования формирует матрицу квантованных коэффициентов путем квантования коэффициентов в матрице масштабированных коэффициентов. Квантование масштабированных коэффициентов может уменьшать количество информации, связанной с высокочастотными коэффициентами в матрице масштабированных коэффициентов. После формирования матрицы квантованных коэффициентов модуль 8 кодирования может применять схему энтропийного кодирования к матрице квантованных коэффициентов. Например, модуль 8 кодирования может применять схему кодирования методом Хаффмана к квантованным коэффициентам в матрице коэффициентов. Когда модуль 8 кодирования применяет схему энтропийного кодирования к каждой из матриц квантованных коэффициентов, модуль 8 кодирования может выводить закодированные матрицы как часть битового потока видео.
Для использования временного кодирования для кодирования кадра модуль 8 кодирования может разделять кадр на "макроблоки". В зависимости от используемого стандарта кодирования эти макроблоки могут иметь фиксированный или переменный размер и могут быть перекрывающимися или неперекрывающимися. Например, каждый макроблок может быть блоком пикселей 16×16. Для каждого макроблока в кадре модуль 8 кодирования может пытаться идентифицировать исходный макроблок в одном или нескольких опорных кадрах. В зависимости от стандарта кодирования опорные кадры могут быть i-кадрами, прогнозированными кадрами или бипрогнозированными кадрами. Если модуль 8 кодирования может идентифицировать исходный макроблок в опорном кадре, то модуль 8 кодирования записывает вектор движения для этого макроблока. Вектор движения включает в себя значение x, которое указывает горизонтальное перемещение макроблока относительно идентифицированного исходного макроблока, и значение y, которое указывает вертикальное перемещение макроблока относительно идентифицированного исходного макроблока. Если модуль 8 кодирования не способен идентифицировать исходный макроблок для упомянутого макроблока, то может не потребоваться запись вектора движения модулем 8 кодирования для этого макроблока. Затем, модуль 8 кодирования формирует "восстановленный" кадр. Восстановленный кадр содержит кадр, который получается в результате перемещения макроблоков из опорных кадров согласно записанным векторам движения для текущего кадра. После формирования восстановленного кадра модуль 8 кодирования вычитает значения компонента пикселя в каждом пикселе восстановленного кадра из соответствующих значений компонента пикселя в соответствующих пикселях текущего кадра, в результате чего получается "остаточный" кадр. После этого модуль 8 кодирования может использовать схему энтропийного кодирования для сжатия векторов движения для макроблоков текущего кадра. Кроме того, модуль 8 кодирования использует описанный выше способ пространственного кодирования для сжатия остаточного кадра.
Модуль 12 декодирования может выполнять процесс, аналогичный процессу модуля 8 кодирования, но в обратном порядке. Например, для выполнения пространственного декодирования модуль 12 декодирования может применять схему энтропийного декодирования к каждой закодированной матрице квантованных коэффициентов в закодированном битовом потоке видео. После этого модуль 12 декодирования может деквантовать коэффициенты в каждой матрице квантованных коэффициентов, тем самым формируя матрицу деквантованных коэффициентов для каждой матрицы квантованных коэффициентов. Для каждой матрицы квантованных коэффициентов с масштабированием матрицы квантованных коэффициентов с использованием набора масштабных множителей модуль 12 декодирования формирует матрицу масштабированных коэффициентов. Эти масштабные множители могут быть масштабными множителями, идентичными масштабным множителям, используемым в упомянутом выше пространственном кодировании. После формирования матрицы масштабированных коэффициентов модуль 12 декодирования использует арифметические операции с фиксированной запятой для повторного применения одномерного преобразования к матрице квантованных коэффициентов, тем самым формируя матрицу преобразованных коэффициентов. Например, модуль 12 декодирования может формировать матрицу промежуточных коэффициентов с применением одномерного преобразования к каждой вектор-строке в матрице масштабированных коэффициентов. В этом примере модуль 12 декодирования после этого может формировать матрицу преобразованных коэффициентов с применением одномерного преобразования к каждому вектор-столбцу в матрице промежуточных коэффициентов. После формирования матрицы преобразованных коэффициентов со сдвигом вправо преобразованных коэффициентов в матрице преобразованных коэффициентов модуль 12 декодирования формирует матрицу скорректированных коэффициентов.
Скорректированные коэффициенты в матрице скорректированных коэффициентов аппроксимируют значения, которые формируются с применением идеального двумерного обратного дискретного косинусного преобразования ("IDCT") к матрице деквантованных коэффициентов. Идеальное одномерное IDCT определяется формулой:
где s - массив N исходных значений, t - массив N преобразованных значений, и коэффициенты c задаются:
для 1≤k≤N-l. Идеальное двумерное IDCT определяется формулой:
Эти блоки значений компонента пикселя могут затем заново быть собраны в блоки пикселей, и эти блоки пикселей могут заново быть собраны для формирования несжатого видеокадра.
После формирования матрицы скорректированных коэффициентов модуль 12 декодирования может затем ограничивать скорректированные коэффициенты в матрице скорректированных коэффициентов для обеспечения нахождения скорректированных коэффициентов в пределах диапазона, допустимого для значения компонента пикселя. Модуль 12 декодирования может затем заново собирать матрицы ограниченных коэффициентов в блоки пикселей. После сборки заново блоков значений компонента пикселя в блоки пикселей со сборкой заново блоков пикселей модуль 12 декодирования может формировать изображение.
Для декодирования прогнозированного кадра модуль 12 декодирования может использовать способ пространственного декодирования, описанный выше, для декодирования матриц квантованных коэффициентов в остаточном изображении для прогнозированного кадра. Кроме того, модуль 12 декодирования может использовать схему энтропийного декодирования для декодирования векторов движения прогнозированного кадра. Затем, с "перемещением" макроблоков опорных кадров прогнозированного кадра согласно векторам движения модуль 12 декодирования может формировать восстановленный кадр. После формирования восстановленного кадра модуль 12 декодирования суммирует значения компонента пикселя в каждом пикселе декодированного остаточного кадра с соответствующими значениями компонента пикселя в соответствующих пикселях восстановленного кадра. Результатом этого суммирования является восстановленный прогнозированный кадр.
Способы, описанные в этом раскрытии, могут обеспечить несколько преимуществ. Например, так как в этих способах применяются арифметические операции с фиксированной запятой, то эти способы могут применяться в меньших, менее сложных устройствах, например мобильных телефонах, персональных цифровых секретарях и личных медиаплеерах. Кроме того, эти способы могут быть применены к форматам, которые включают в себя рекомендации H.261, H.263, H.264, T.81 (JPEG) сектора стандартизации (электросвязи) Международного союза электросвязи (ITU-T), а также форматы мультимедиа Международной организации по стандартизации (ISO)/MEC Группы экспертов по видео (MPEG)-1, MPEG-2 и Части 2 MPEG-4.
Фиг.2 является блок-схемой, изображающей иллюстративные детали модуля 8 кодирования. Модуль 8 кодирования может содержать набор "модулей". Эти модули могут содержать подмножества программных команд модуля 8 кодирования. В качестве альтернативы, эти модули могут содержать программно-аппаратные средства, аппаратные средства, например одно или несколько специализированных аппаратных средств. В другом альтернативном варианте эти модули могут содержать программные команды и специализированные аппаратные средства или программно-аппаратные средства.
Как изображено в примере фиг.2, модуль 8 кодирования включает в себя модуль 20 управления кадром, который управляет тем, обрабатывает ли модуль 8 кодирования видеокадр как i-кадр, прогнозированный кадр или бипрогнозированный кадр. Например, когда модуль 8 кодирования принимает видеокадр, модуль 20 управления кадром может устанавливать, указывает ли флажок битового потока, связанный с этим видеокадром, что кадр является i-кадром, прогнозированным кадром или бипрогнозированным кадром. Если модуль 20 управления кадром устанавливает, что флажок битового потока указывает, что кадр является i-кадром, то модуль 20 управления кадром может вызвать обработку видеокадра набором модулей, которые непосредственно выполняют пространственное кодирование видеокадра. С другой стороны, если модуль 20 управления кадром устанавливает, что кадр является прогнозированным кадром или бипрогнозированным кадром, то модуль 20 управления кадром может вызвать обработку видеокадра набором модулей, которые выполняют временное кодирование.
Модуль 8 кодирования включает в себя последовательность модулей для применения пространственного кодирования к видеокадрам. Эти модули включают в себя модуль 22 разделителя на блоки, модуль 24 выделения компонента, модуль 26 прямого преобразования, модуль 28 квантования и модуль 30 энтропийного кодирования. Модуль 22 разделителя на блоки может принимать незакодированные видеокадры из источника 4 мультимедиа, сетевого интерфейса 16 или другого источника. Когда модуль 22 разделителя на блоки принимает незакодированный видеокадр, модуль 22 разделителя на блоки может разделять кадр на блоки пикселей. Модуль 22 разделителя на блоки может предоставить блоки пикселей в модуль 24 выделения компонента.
Когда модуль 24 выделения компонента принимает блоки пикселей, модуль 24 выделения компонента может преобразовывать значения компонента пикселя каждого пикселя в другой цветовой формат. Например, модуль 24 выделения компонента может преобразовывать каждый пиксель из цветового формата "красный-зеленый-синий" (RGB) в цветовой формат YCrCb. После преобразования пикселей в блоке в другой цветовой формат модуль 24 выделения компонента может разделять значения компонента пикселя из пикселей в блоке на матрицы значений компонента пикселя. Например, модуль 24 выделения компонента может выделять матрицу значений Y, матрицу значений Cr и матрицу значений Cb из одного блока пикселей. Значения Y специфицируют яркость пикселей, значения Cr специфицируют информацию о красном цвете пикселей и значения Cb специфицируют информацию о синем цвете пикселей. После выделения матриц значений компонента пикселя модулем 24 выделения компонента модуль 24 выделения компонента может предоставить каждую из матриц отдельно в модуль 26 дискретного косинусного преобразования (DCT).
Когда модуль 26 прямого преобразования принимает матрицу значений компонента пикселя, модуль 26 прямого преобразования формирует матрицу масштабированных коэффициентов. Каждый коэффициент в этой матрице масштабированных коэффициентов аппроксимирует коэффициент, который формируется с использованием идеального прямого дискретного косинусного преобразования, для преобразования матрицы значений компонента пикселя.
Модуль 26 прямого преобразования использует арифметические операции с фиксированной запятой для применения одномерного преобразования к матрицам значений компонента пикселя. Использование арифметических