УСТРОЙСТВО И СПОСОБ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ
IMAGE ENCODING DEVICE AND METHOD

Область техники, к которой относится изобретение
Настоящее изобретение относится к устройству и к способу обработки изображений, и, в частности, к устройству для уменьшения количества остаточных сигналов изображения и для энтропийного кодирования остаточных сигналов.
Уровень техники
Для эффективной передачи сигнала движущегося изображения при низкой скорости передачи данных с сохранением высокого качества изображения были предложены различные цифровые технологии сжатия движущихся изображений. Эти технологии сжатия движущихся изображений включают в себя стандарт H.261, стандарт MPEG-2/H.262, разработанный Экспертной группой по вопросам движущихся изображений (MPEG), стандарт H.263, стандарт MPEG-4, стандарт Усовершенствованного кодирования видеоинформации (AVC)/H.264 и т.д. Технологии сжатия включают в себя схему дискретного косинусного преобразования (ДКП), схему компенсация движения (КД), схему квантования, схему энтропийного кодирования и т.д.
Для кодирования изображений каждое изображение разделяют на множество слоев, и каждый слой разделяют на множество блоков кодирования заданного размера. Поскольку изображение высокой четкости (HD) или более высокого класса имеет много плоскостей, то сжатие изображения может быть улучшено путем кодирования изображения с блоками кодирования большего размера, чем макроблок MB.
Следовательно, поскольку размер блока кодирования увеличивают для увеличения коэффициента сжатия изображения без повышения сложности сжатия изображения, то необходим новый способ предсказания, и необходимы изменения в кодировании с преобразованием, энтропийном кодировании, интра-предсказании и интер-предсказании.
Раскрытие изобретения
Техническая задача
Настоящее изобретение относится к устройству для кодирования движущегося изображения, и, в частности, к устройству для эффективного кодирования преобразованных остаточных сигналов движущегося изображения, имеющих заданный или больший размер.
Техническое решение
Согласно одному из объектов настоящего изобретения предложено устройство для кодирования движущегося изображения, включающее в себя: устройство определения режима кодирования, сконфигурированное для разделения входного изображения на единичные элементы кодирования и для определения режима предсказания единичного элемента кодирования и размера блока кодирования с предсказанием этого единичного элемента кодирования; модуль преобразования/квантования, сконфигурированный для преобразования и квантования остаточного блока между блоком кодирования с предсказанием и блоком предсказания, сгенерированным путем интра-предсказания или интер-предсказания; модуль обратного квантования/преобразования, сконфигурированный для выполнения обратного квантования и обратного преобразования квантованного блока преобразования в частотную область; деблокирующий фильтр, сконфигурированный для применения способа деблокирующей фильтрации, к данным об изображении, принятым из устройства декодирования обратного квантования/преобразования; генератор блока предсказания, сконфигурированный для генерации блока кодирования с предсказанием; и энтропийный кодер, сконфигурированный для кодирования квантованных коэффициентов преобразования из устройства кодирования с преобразованием/квантования, причем, когда размер блока преобразования является равным или большим, чем заданный размер, то энтропийный кодер разделяет квантованные коэффициенты преобразования на множество подмножеств и выполняет сканирование и энтропийное кодирование не равных нулю квантованных коэффициентов преобразования из каждого подмножества.
Полезные эффекты изобретения
Настоящее изобретение обеспечивает возможность повышения эффективности кодирования за счет уменьшения количества остаточных сигналов из блока, подлежащего кодированию. К тому же, за счет эффективного сканирования квантованных коэффициентов преобразования, кроме тех, которые равны 0, во время энтропийного кодирования количество битов, требуемое для энтропийного кодирования, сведено к минимуму, вследствие чего эффективность кодирования может быть повышена.
Краткое описание чертежей
На Фиг.1 показана структура разделения на блоки согласно варианту осуществления настоящего изобретения, который приведен в качестве примера.
На Фиг.2 проиллюстрирован способ определения режима кодирования согласно настоящему изобретению.
На Фиг.3 проиллюстрировано устройство кодирования движущегося изображения согласно настоящему изобретению.
На Фиг. 4-6 изображены графики, на которых проиллюстрирован способ адаптивного разделения на блоки согласно настоящему изобретению.
На Фиг.7 изображен график, на котором проиллюстрирован способ кодирования остаточного сигнала.
Осуществление изобретения
Ниже будет приведено подробное описание различных вариантов осуществления настоящего изобретения со ссылкой на сопроводительные чертежи. Однако настоящее изобретение не ограничено раскрытыми ниже вариантами его осуществления, которые приведены в качестве примеров, но оно может быть осуществлено в различных вариантах. Следовательно, возможно множество иных модификаций и изменений настоящего изобретения, и следует понимать, что в пределах объема раскрытой концепции настоящее изобретение может быть реализовано на практике иным образом, чем, в частности, было описано выше.
Для кодирования изображений каждое изображение разделяют на множество слоев, и каждый слой разделяют на множество единичных элементов кодирования заданного размера. Поскольку изображение высокой четкости (HD) или более высокого класса имеет много плоскостей, то коэффициент сжатия изображения может быть повышен за счет кодирования изображения с единичными элементами кодирования, которые являются большими, чем макроблок MB, имеющий размер 16×16.
Единичным элементом кодирования согласно настоящему изобретению может являться блок, имеющий размер 32×32, или блок, имеющий размер 64×64, а также макроблоки MB, имеющие размер 16×16. К тому же, единичным элементом кодирования может являться блок, имеющий размер 8×8 или меньший. Для удобства наибольший единичный элемент кодирования именуют супер-макроблоком (SMB). Размер SMB может быть определен согласно информации, указывающей размер наименьшего единичного элемента кодирования и информации о глубине. Информация о глубине указывает разность между размером SMB и размером наименьшего единичного элемента кодирования.
Таким образом, единичным элементом кодирования, который будет использоваться для кодирования всех изображений из последовательности изображений, может являться SMB или подблоком SMB. Допустимые размеры единичных элементов кодирования могут быть заданы по умолчанию или в заголовке последовательности. Когда допустимые размеры единичных элементов кодирования заданы в заголовке последовательности, то допустимые размеры единичных элементов кодирования заданы в соответствии с размером наименьшего единичного элемента кодирования и информацией о глубине.
Каждое изображение или слой разделяют на множество единичных элементов SMB. Каждый SMB или подблок SMB может быть закодирован путем интер-кодирования или интра-кодирования и декодирован.
Для обеспечения возможности точного декодирования единичного элемента кодирования (то есть, SMB или подблока SMB) кодер должен добавлять информацию о размере блока кодирования с предсказанием единичного элемента кодирования и информацию о режиме предсказания, указывающую, что единичный элемент кодирования был закодирован в поток битов в режиме интра-предсказания или в режиме интер-предсказания. Для этого в состав потока битов единичного элемента кодирования должна быть включена информация о режиме предсказания и информация, указывающая размер блока кодирования с предсказанием. Режим предсказания изменяется в соответствии с типом слоя.
Когда типом слоя является тип "интра-" (I), то все блоки кодирования с предсказанием в слое являются блоками с интра-предсказанием, и тип предсказания блока кодирования с предсказанием может быть определен в соответствии с размером блока кодирования с предсказанием. Однако когда типом слоя является тип "с однонаправленным предсказанием" (P) или "с двунаправленным предсказанием" (B), то тип предсказания блока кодирования с предсказанием может быть определен в соответствии с информацией о режиме предсказания и с размером блока кодирования с предсказанием. Таким образом, предпочтительно генерировать тип предсказания блока кодирования с предсказанием на основании типа слоя, информации о режиме предсказания и информации, указывающей размер блока кодирования с предсказанием, и вставлять данные о сгенерированном типе предсказание в заголовок единичного элемента кодирования.
Когда блок кодирования с предсказанием закодирован способом интра-кодирования, то в декодер необходимо передавать информацию о режиме интра-предсказания, используемом для интра-предсказания, а также о типе предсказания.
Когда блок кодирования с предсказанием закодирован способом интер-кодирования, то блок кодирования с предсказанием закодирован любым из следующих способов: с однонаправленным предсказанием и с двунаправленным предсказанием. В случае однонаправленного предсказания поток битов должен включать в себя информацию об опорном изображении и информацию о векторе движения, используемую для предсказания, а также информацию о типе предсказания блока кодирования с предсказанием для однонаправленного предсказания. В случае двунаправленного предсказания заголовок блока кодирования с предсказанием должен включать в себя информацию о двух опорных изображениях и информацию о векторе движения, используемую для двунаправленного предсказания, а также информацию о типе предсказания блока для двунаправленного предсказания. Информация о векторе движения может включать в себя информацию, указывающую остаточный вектор движения, и предсказатель вектора движения.
На Фиг.1 показана иерархическая структура разделения, иллюстрирующая допустимые блоки кодирования с предсказанием для SMB, имеющего размер 64×64, согласно варианту осуществления настоящего изобретения, который приведен в качестве примера.
Когда в качестве единичного элемента кодирования используют SMB, то предпочтительно иметь четыре этапа разделения на подблоки, как показано на Фиг.1, но разделение на блоки не ограничено четырьмя этапами разделения на подблоки. При наличии четырех этапов разделения на подблоки, то может быть задано всего 13 типов блоков предсказания (64×64, 64×32, 32×64, 32×32, 32×16, 16×32, 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4).
Здесь могут отсутствовать какие-либо данные, подлежащие передаче для блоков интер-кодирования с предсказанием, имеющих больший размер, чем размер MB. Таким образом, предпочтительно заново добавить режим MB64_SKIP (ПРОПУСК_MB64), когда размер блока кодирования с предсказанием равен 64×64, и режим MB32_SKIP (ПРОПУСК_MB32), когда размер блока кодирования с предсказанием равен 32×32. Для передачи информации о режиме в декодер может использоваться флаг MB64_SKIP_flag или флаг MB32_SKIP_flag. Когда значения этих флагов равны 1, то отсутствуют какие-либо передаваемые данные о соответствующем блоке кодирования с предсказанием.
Когда множество следующих друг за другом SMB не закодированы, то флаг MB64_SKIP_flag может быть вставлен только в первый SMB, и может быть опущен в последующих SMB. В этом случае сведения о количестве последовательно пропущенных SMB могут быть добавлены к слою или к первому SMB. В частности, когда множество следующих друг за другом SMB не закодированы, то флаг SMB_SKIP_flag первого SMB устанавливают равным 1, и он также может быть совместно применен к нескольким последующим SMB. В этом случае к слою может быть добавлена информация, соответствующая количеству SMB, которые не являются последовательно закодированными (например, SMB_SKIP_number (количество_ПРОПУЩЕННЫХ_SMB)).
Когда единичный элемент кодирования имеет размер 32×32, то, в дополнение к существующему блоку, имеющему размер 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 или 4×4, в качестве блока кодирования с предсказанием может быть использован блок, имеющий размер 32×32, 32×16 или 16×32.
В режиме интер-предсказания тип (Mb32_type) предсказания единичного элемента кодирования может указывать раздел 32×32, когда тип предсказания равен 0, раздел 32×16, когда тип предсказания равен 1, раздел 16×32, когда тип предсказания равен 2, и раздел 16×16, когда тип предсказания равен 3.
Когда единичный элемент кодирования разделен на четыре единичных субэлемента кодирования, эти четыре единичных субэлемента кодирования кодируют и передают в порядке, соответствующем растровой развертке. В этом случае параметр квантования может быть передан для каждого единичного элемента кодирования, и может быть передан только лишь однократно в заголовке единичного супер-элемента кодирования тогда, когда один и тот же параметр квантования применен ко всем единичным субэлементам кодирования. Однако когда параметр квантования необходимо изменять в единичном субэлементе кодирования, то может быть передано только лишь значение разности относительно параметра квантования единичного элемента кодирования верхнего уровня или предыдущего единичного элемента кодирования того же самого уровня.
Каждый единичный субэлемент кодирования может быть разделен с использованием метода дерева квадрантов, и образец закодированного блока (cbp) и остаточный коэффициент также могут быть переданы с использованием метода дерева квадрантов. Когда используется 1-битовый cbp, то значение cbp, равное 1, может указывать, что единичный элемент кодирования имеет, по меньшей мере, один коэффициент, отличающийся от 0, а значение cbp, равное 0 может указывать, что все коэффициенты равны 0.
На Фиг.2 проиллюстрирован способ определения режима кодирования согласно настоящему изобретению, когда размер SMB равен 64×64.
Как проиллюстрировано на Фиг.2, когда SMB представляет собой блок 64×64, то кодер определяет, можно или нет пропустить блок 64×64, и определяет режим SKIP (ПРОПУСК) как режим кодирования, когда можно пропустить блок 64×64. При этом в декодер должен быть передан флаг mb64_skip_flag. Когда в блоке 64×64 имеются данные, подлежащие кодированию, но он не разделен на блоки 32×32, то в заголовок SMB вставляют информацию о размере кодирования SMB, которым является один из следующих размеров: 64×64, 64×32 и 32×64, и информацию о том, является ли SMB закодированным способом интра-кодирования или интер-кодирования, и генерируют блок данных SMB с использованием закодированных данных.
Когда в блоке 64×64 имеются данные, подлежащие кодированию, и он разделен на блоки 32×32, то аналогичным образом определяют, существуют ли в соответствующих блоках 32×32 данные, подлежащие кодированию. Когда в соответствующих блоках 32×32 отсутствуют какие-либо данные, подлежащие кодированию, то в качестве режима для блока 32×32 определяют режим SKIP (ПРОПУСК), и в декодер передают флаг mb32_skip_flag.
Однако когда в блоке 32×32 имеются данные, подлежащие кодированию, но он не разделен на блоки 16×16, то в заголовки блоков 32×32 вставляют размер кодирования блока 32×32, которым является один из следующих размеров: 32×32, 32×16 и 16×32, и информацию о том, являются ли блоки 32×32 закодированными способом интра-кодирования или интер-кодирования, и генерируют блок данных с использованием закодированных данных.
Когда в блоке 32×32 имеются данные, подлежащие кодированию, и он разделен на блоки 16×16, то определяют, имеются ли данные, подлежащие кодированию, в соответствующих блоках 16×16. Когда в соответствующих блоках 16×16 отсутствуют какие-либо данные, подлежащие кодированию, то в качестве режима для блока 16×16 определяют режим SKIP, и в декодер передают флаг mbl6_skip_flag. С другой стороны, когда в соответствующих блоках 16×16 имеются данные, подлежащие кодированию, то в заголовок блока 16×16 вставляют размер кодирования блока 16×16, которым является один из следующих размеров: 16×16, 16×8 и 8×16, и информацию о том, является ли блок 16×16 закодированным способом интра-кодирования или интер-кодирования, и генерируют блок данных с использованием закодированных данных.
Когда используются блоки, имеющие такое разнообразие размеров, то информация о размере блока может изменяться в соответствии с каждым уровнем последовательности, уровнем изображения, уровнем слоя, SMB или единичным субэлементом кодирования SMB.
На Фиг.3 проиллюстрировано устройство кодирования движущегося изображения согласно настоящему изобретению.
Со ссылкой на Фиг.3, устройство кодирования движущегося изображения согласно настоящему изобретению включает в себя устройство 110 определения режима кодирования, модуль 120 преобразования/квантования, энтропийный кодер 130, интра-предсказатель 140, компенсатор 150 движения, анализатор 155 параметров движения, модуль 160 обратного квантования/преобразования, деблокирующий фильтр 170, запоминающее устройство 180 для изображений, сумматор 185 и вычитающее устройство 190.
Устройство 110 определения режима кодирования анализирует входной видеосигнал для разделения изображения на единичные элементы кодирования и определяет размер блока кодирования с предсказанием и режим предсказания для каждого единичного элемента кодирования. Устройство 110 определения режима кодирования также передает блок кодирования с предсказанием, соответствующий определенному размеру, в вычитающее устройство 190.
Модуль 120 преобразования/квантования определяет размер блока преобразования для преобразования остаточного сигнала, принятого из вычитающего устройства 190. Размер блока преобразования может быть равным или меньшим, чем размер блока кодирования с предсказанием, но может быть задан иным образом в интер-режиме. Другими словами, размер блока преобразования может быть большим, чем размер блока кодирования с предсказанием в интер-режиме. В этом случае модуль 120 преобразования/квантования принимает множество остаточных блоков из вычитающего устройства 190 и генерирует один блок преобразования, состоящий из множества остаточных блоков. Размер блока преобразования является равным или меньшим, чем размер единичного элемента кодирования. Модуль 120 преобразования/квантования выполняет двумерное (2D) дискретное косинусное преобразование (ДКП) блока преобразования для генерации коэффициентов преобразования. ДКП может являться целочисленным ДКП.
Модуль 120 преобразования/квантования также определяет величину шага квантования, используемого для квантования коэффициентов преобразования, и выполняет квантование коэффициентов преобразования с использованием матрицы квантования, определенной в соответствии с определенной величиной шага квантования и с режимом кодирования.
Модуль 160 обратного квантования/преобразования выполняет обратное квантование и обратное преобразование коэффициентов квантования, квантованных модулем 120 кодирования преобразованием/квантования, посредством чего восстанавливают остаточный блок в пространственной области из остаточного блока, преобразованного в частотную область.
Деблокирующий фильтр 170 принимает данные об изображениях, подвергнутые обратному квантованию и обратному преобразованию, из устройства 160 обратного квантования/преобразования и выполняет процедуру фильтрации для устранения эффекта блочности. Процедура деблокирующей фильтрации, может быть применена к границе между блоками кодирования с предсказанием и между блоками преобразования. Эта граница представляет собой край сетки, имеющей заданный размер или больший, и заданным размером может являться 8×8. Процедура деблокирующей фильтрации включает в себя операцию определения границы, подлежащей фильтрации, операцию определения силы фильтрации границы, применяемой к границе, операции определения того, следует ли применять деблокирующий фильтр 170, или нет, и операцию выбора фильтра, применяемого к границе, когда определено, что следует применять деблокирующий фильтр 170.
Следует ли применять деблокирующий фильтр 170, определяют в соответствии со следующими условиями: i) является ли сила фильтрации границы большей, чем 0, или нет, и ii) является ли значение, указывающее разность между пикселями на границе блока P и блока Q, меньшим, чем первое опорное значение, определенное согласно параметру квантования, или нет.
Могут существовать два или более фильтров. Когда абсолютное значение разности между двумя пикселями, смежными с границей блока, является равным или большим, чем второе опорное значение, то выбирают слабый фильтр. Второе опорное значение определяется параметром квантования и силой фильтрации границы.
Запоминающее устройство 180 для изображений принимает отфильтрованное изображение из деблокирующего фильтра 170, сохраняет изображение в виде единичных изображений. Изображением может являться изображение кадра или изображение поля. Запоминающее устройство 180 для изображений имеет буфер (не показан), способный хранить множество изображений.
Анализатор 155 параметров движения выполняет анализ параметров движения с использованием, по меньшей мере, одного опорного изображения, хранящегося в запоминающем устройстве 180 для изображений, и выводит индекс опорного изображения, представляющего опорное изображение, и вектор движения.
Компенсатор 150 движения извлекает блок предсказания, соответствующий блоку, подлежащему кодированию, из опорного изображения, используемого для оценки движения, из множества опорных изображений, хранящихся в запоминающем устройстве 180 для изображений, согласно индексу опорного изображения и вектору движения, которые введены из анализатора 155 параметров движения, и выводит извлеченный блок предсказания.
Интра-предсказатель 140 выполняет интра-предсказание с использованием восстановленных значений пикселей в том же самом изображении. Интра-предсказатель 140 принимает текущий блок, подлежащий кодированию с предсказанием, выбирает один из заданного количества режимов интра-предсказания согласно размеру текущего блока, и выполняет интра-предсказание.
Энтропийный кодер 130 выполняет энтропийное кодирование коэффициентов квантования, квантование которых выполнено модулем 120 преобразования/квантования, информации о движении, сгенерированной анализатором 155 параметров движения, и т.д. Квантованные коэффициенты преобразования преобразовывают в информацию об одномерном (1D) преобразовании с квантованием заданным способом сканирования и подвергают энтропийному кодированию.
Ниже приведено описание способа интра-предсказания со ссылкой на Фиг.3.
Сначала интра-предсказатель 140 принимает информацию о положении и размере блока кодирования, подлежащего кодированию, из устройства 110 определения режима кодирования.
Затем интра-предсказатель 140 принимает правильные опорные пиксели для определения режима интра-предсказания текущего блока кодирования с предсказанием из запоминающего устройства 180 для изображений. Опорные пиксели уже были закодированы и восстановлены и являются смежными с текущим блоком кодирования с предсказанием (который ниже именуют текущим блоком). Когда текущий блок расположен на верхней границе текущего изображения, то пиксели, смежные с верхней стороной текущего блока, являются неопределенными. Когда текущий блок расположен на левой границе текущего изображения, то пиксели, смежные с левой стороной текущего блока, являются неопределенными. К тому же, когда текущий блок расположен на верхней или на левой границе слоя, то пиксели, смежные с верхней или с левой стороной, являются неопределенными.
Когда отсутствуют какие-либо пиксели, смежные с левой или с верхней стороной текущего блока, или отсутствуют какие-либо пиксели, которые были ранее закодированы и восстановлены, как упомянуто выше, режим интра-предсказания текущего блока может быть определен с использованием только правильных пикселей.
Однако могут быть сгенерированы неправильные опорные пиксели с использованием пикселей, смежных с текущим блоком или с имеющимся пикселем. Например, когда пиксели верхнего блока являются неправильными, пиксели на верхней стороне могут быть сгенерированы с использованием одного или большего количества имеющихся опорных пикселей на левой стороне.
Даже в том случае, когда существуют пиксели на верхней или на левой стороне текущего блока, пиксели могут быть определены как неправильные пиксели в соответствии с режимом кодирования блока, к которому принадлежат пиксели. Например, когда блок, к которому, принадлежат пиксели, смежные с верхней стороной текущего блока, был закодирован способом интер-кодирования и восстановлен, эти пиксели могут быть определены как неправильные пиксели. В этом случае опорные пиксели могут быть сгенерированы с использованием опорного пикселя блока, имеющего интра-режим.
Затем интра-предсказатель 140 определяет режим интра-предсказания текущего блока с использованием опорных пикселей. Количество режимов интра-предсказания зависит от размера блока.
В соответствии с размером блока разрешены 33, 16 или 2 направленных режима и, по меньшей мере, один ненаправленный режим. Ненаправленным режимом может являться режим с постоянной составляющей (DC) или планарный режим.
Блокам, имеющим одинаковый размер, может быть назначено различное количество режимов интра-предсказания. Для указания того, что разрешено различное количество режимов интра-предсказания, по меньшей мере, в один из следующих заголовков: в заголовок последовательности, в заголовок изображения, в заголовок слоя и в заголовок единичного элемента кодирования, может быть вставлена информация, указывающая количество режимов интра-предсказания. Предпочтительно эта информация вставлена в заголовок последовательности или в заголовок изображения.
Затем, когда определен режим интра-предсказания текущего блока, генерируют блок предсказания для текущего блока. Блок предсказания генерируют с использованием опорных пикселей, включающих в себя сгенерированный пиксель, или с использованием линейной комбинации опорных пикселей на основании режима интра-предсказания текущего блока. Например, в направленном режиме в конкретном направлении режим предсказания может быть сгенерирован с использованием опорных пикселей на верхней стороне текущего блока и опорных пикселей на левой стороне текущего блока.
Правильными опорными пикселями, используемыми для генерации блока предсказания, могут являться отфильтрованные опорные пиксели. Количество фильтров, применяемых для правильных опорных пикселей, может быть множественным. К тому же, может адаптивно применяться множество фильтров в соответствии с размером текущего блока и с режимом интра-предсказания.
Затем остаточный блок, полученный с использованием текущего блока и блока предсказания, сгенерированного интра-предсказателем 140, кодируют модулем 120 преобразования/квантования и энтропийным кодером 130.
Тем временем выполняют отдельное кодирование режима интра-предсказания текущего блока. Кодирование режима интра-предсказания может быть выполнено интра-предсказателем 140, отдельным устройством кодирования режима интра-предсказания (не показано) или энтропийным кодером 130.
Режим интра-предсказания текущего блока кодируют с использованием режимов интра-предсказания верхнего блока и левого блока из текущего блока.
Сначала получают режимы интра-предсказания левого и верхнего блоков из текущего блока. Когда количество верхних блоков является множественным, то в качестве верхнего блока для текущего блока задают крайний левый верхний блок или блок, имеющий минимальный номер режима. Когда количество левых блоков также является множественным, то в качестве левого блока из текущего блока задают самый верхний левый блок или блок, имеющий минимальный номер режима. Когда верхний блок или левый блок не являются закодированными в режиме интра-предсказания, то в качестве режима интра-предсказания верхнего блока или левого блока может быть задан режим постоянной составляющей (DC) (номер режима 2).
Затем, когда номер режима интра-предсказания верхнего или левого блока является равным или большим, чем количество допустимых режимов интра-предсказания текущего блока, режим интра-предсказания верхнего или левого блока преобразовывают в один из режимов интра-предсказания, разрешенных для текущего блока.
Затем, когда режим интра-предсказания текущего блока является идентичным одному из следующих режимов: режиму интра-предсказания левого блока и режиму интра-предсказания верхнего блока, передают флаг, указывающий, что режим интра-предсказания текущего блока является идентичным одному из следующих режимов: режиму интра-предсказания левого блока и режиму интра-предсказания верхнего блока, и флаг, указывающий, один из режимов интра-предсказания верхнего и левого блоков. В этом случае, когда левый и верхний блоки из текущего блока имеют одинаковый режим интра-предсказания, может быть передан только лишь флаг, указывающий, что режим интра-предсказания текущего блока является идентичным одному из следующих режимов: режиму интра-предсказания левого блока и режиму интра-предсказания верхнего блока. Аналогичным образом, когда только один из режимов интра-предсказания верхнего и левого блоков является правильным и идентичным режиму интра-предсказания текущего блока, может быть передан только лишь флаг, указывающий, что режим интра-предсказания текущего блока является идентичным одному из следующих режимов: режиму интра-предсказания левого блока и режиму интра-предсказания верхнего блока.
Однако когда режим интра-предсказания текущего блока является иным, чем режим интра-предсказания левого и верхнего блоков, то определяют, является ли номер режима интра-предсказания текущего блока меньшим, чем номер режима интра-предсказания левого и верхнего блоков.
Когда определено, что оба номера режима интра-предсказания левого и верхнего блоков из текущего блока являются большими, чем номер режима интра-предсказания текущего блока, то в качестве конечного режима интра-предсказания определяют режим интра-предсказания текущего блока. Однако когда только один из номеров режимов интра-предсказания левого и верхнего блоков из текущего блока не превышает номер режима интра-предсказания текущего блока, то в качестве конечного режима интра-предсказания текущего блока определяют режим интра-предсказания, имеющий номер режима, полученный путем вычитания 1 из номера режима интра-предсказания текущего блока. К тому же, когда ни один из номеров режимов интра-предсказания левого и верхнего блоков из текущего блока не превышает номер режима интра-предсказания текущего блока, то в качестве конечного режима интра-предсказания текущего блока определяют режим интра-предсказания, имеющий номер режима, полученный путем вычитания 2 из номера режима интра-предсказания текущего блока.
Затем выполняют кодирование конечного режима интра-предсказания текущего блока. Конечный режим интра-предсказания текущего блока кодируют с использованием различных кодовых таблиц в соответствии с тем, имеет ли верхний блок из текущего блока тот же самый режим интра-предсказания, что и левый блок из текущего блока. Режимом интра-предсказания верхнего блока или левого блока из текущего блока может являться видоизмененный режим интра-предсказания. Другими словами, режимом интра-предсказания верхнего блока или левого блока из текущего блока может являться режим интра-предсказания, видоизмененный в соответствии с таблицей соответствия режимов интра-предсказания, допустимых для верхнего блока и левого блока, заданному количеству режимов интра-предсказания. Заданным количеством может являться 9 или 3.
Ниже приведено описание способа кодирования квантованных коэффициентов преобразования, выполняемого в энтропийном кодере 130 из Фиг.3.
Энтропийное кодирование квантованных коэффициентов преобразования выполняют с использованием контекстно-адаптивного кодирования кодами переменной длины (CAVLC) или контекстно-адаптивного двоичного арифметического кодирования (CABAC). Когда размер блока преобразования становится большим, существует высокая вероятность того, что потребуется большое количество битов для сканирования и энтропийного кодирования коэффициентов, отличных от 0. Таким образом, предпочтительно ввести новый способ сканирования уменьшения количества битов для блока преобразования, имеющего размер, равный или больший, чем заданный размер.
Сначала определяют, следует ли разделять квантованные коэффициенты преобразования на множество подмножеств. Это зависит от размера блока преобразования. Другими словами, когда размер блока преобразования является равным или большим, чем заданный размер, то квантованные коэффициенты преобразования разделяют на множество подмножеств. Заданным размером может являться размер 8×8 или 16×16. Множество подмножеств состоит из одного главного подмножества и из одного или большего количества остаточных подмножеств. Главное подмножество расположено на левой верхней стороне, включая в себя коэффициент постоянной составляющей (DC), а одно или большее количество остаточных подмножеств охватывают область за исключением той области, которую охватывает главное подмножество.
Затем, когда размер блока преобразования является равным или большим, чем заданный размер, квантованные коэффициенты преобразования разделяют на главное подмножество и одно или большее количество остаточных подмножеств, и квантованные коэффициенты преобразования, содержащиеся в каждом подмножестве, сканируют и кодируют. Квантованные коэффициенты преобразования в подмножестве могут быть просканированы с использованием одного из множества шаблонов сканирования. Шаблон сканирования, в котором количество битов, подлежащих кодированию, становится минимальным, может быть выбран в соответствии с распределением не равных нулю пикселей квантованных коэффициентов преобразования в подмножестве. Множество шаблонов сканирования может включить в себя зигзагообразное сканирование, сканирование по вертикали и сканирование по горизонтали. К тому же, оно может включать в себя сканирование по вертикали или сканирование по горизонтали согласно стандарту MPEG-4 Экспертной группы по вопросам движущихся изображений. Когда шаблон сканирования передают для каждого подмножества, то для этого необходимо большое количество битов. Следовательно, для множества подмножеств может быть применен один шаблон сканирования.
Шаблон сканирования может быть выбран адаптивно в соответствии с режимом предсказания и с направлением интра-предсказания. Например, в режиме интер-предсказания может применяться только один заданный шаблон сканирования (например, зигзагообразное сканирование) или один из множества шаблонов сканирования. В первом случае отсутствует необходимость передачи информации о шаблоне сканирования в декодер, но в последнем случае информацию о шаблоне сканирования необходимо передавать в декодер. В режиме интра-предсказания шаблон сканирования может быть выбран в соответствии с направлением интра-предсказания. Например, может применяться сканирование по горизонтали в режиме интра-предсказания по вертикали, сканирование по вертикали в режиме интра-предсказания по горизонтали и зигзагообразное сканирование в режиме с постоянной составляющей (DC).
Шаблоном сканирования, применяемым для главного подмножества и для одного или большего количества остаточных подмножеств, может являться заданный шаблон. Заданным шаблоном может являться зигзагообразное сканирование. В дополнение к зигзагообразному сканированию, для подмножеств могут применяться сканирование по горизонтали или сканирование по вертикали. Шаблон сканирования, применяемый для подмножеств, также может быть адаптивно определен в соответствии с режимом предсказания и направлением интра-предсказания. Другими словами, в режиме интер-предсказания для подмножеств может применяться заданный шаблон сканирования. При интра-предсказании для подмножеств может применяться шаблон сканирования, выбранный в соответствии с направлением интра-предсказания.
Эффективным вариантом может являться сканирование квантованных коэффициентов преобразования в подмножестве в обратном направлении. Другими словами квантованные коэффициенты преобразования могут быть просканированы с последнего не равного нулю коэффициента подмножества в обратном направлении в соответствии с шаблоном сканирования. Аналогичным образом, сканирование множество подмножеств выполняют в обратном направлении с подмножества, включающего в себя последний не равный нулю коэффициент блока преобразования, до главного подмножества.
Для правильного энтропийного декодирования в декодере кодер кодирует информацию, способную указывать положение последнего не равного нулю коэффициента в блоке преобразования, и информацию, способную указывать положение последнего не равного нулю коэффициента в каждом подмножестве, и передает закодированную информацию в декодер. Эта информация может указывать положение последнего не равного нулю коэффициента в каждом подмножестве. К тому же, этой информацией может являться информация о карте, состоящая из флагов, указывающих, является ли каждый из коэффициентов преобразования равным 0 или нет, и флагов, указывающих, является ли не равный нулю коэффициент последним не равным нулю коэффициентом в блоке преобразования или нет. Шаблон сканирования для генерации информации о карте может быть тем же самым, что и шаблон сканирования в подмножествах.
В другом примере сканирования квантованных коэффициентов преобразования из блока преобразования квантованные коэффициенты преобразования из блока преобразования могут быть перекомпонованы с использованием способа перемежения и преобразованы во множество подблоков, и каждый из подблоков может быть просканирован и закодирован.
Когда изображение имеет границу в конкретном направлении, и используется эквивалентный режим предсказания, для аналогичных данных на участке границы движения используются различные подблоки, и могут иметь место непроизводительные издержки на передачу служебной информации. В этом случае еще более эффективным вариантом может являться разделение единичного элемента кодирования в конкретном направлением в соответствии с формой участка границы изображения и оценка параметров движения в каждой разделенной области.
Со ссылкой на Фиг. 4-6 будет описан способ адаптивного по направлению разделения блока с учетом характеристик изображения. На Фиг. 4, 5 и 6 в качестве примера будет описан единичный элемент кодирования размером 32×32. Однако размер единичного элемента кодирования не ограничен размером 32×32, и способ также может быть применен для блока 64×64 или для блока 16×16.
В одном из примеров простейшего адаптивного режима единичный элемент кодирования разделяют прямой линией на два блока для извлечения статистической зависимости области предсказания от локальной топографии. Другими словами, участок границы изображения ставят в соответствие прямым линиям и разделяют.
Как показано на чертежах, когда существует граница, которая проходит через изображение блока 32×32, то участок границы, проходящий через изображение, следует разделить на небольшие блоки для эффективного сжатия изображения согласно обычному способу разделения изображения.
Таким образом, как показано на Фиг.4, один блок 32×32 следует разделить, по меньшей мере, на 10 блоков и закодировать. Следовательно, в декодер должны быть переданы 10 векторов движения вместе с информацией, отображающей разделение изображения, и, следовательно, необходим большой объем дополнительной информации помимо информации об изображении.
Как показано на Фиг. 5 или 6, когда существует граница, которая проходит через изображение блока 32×32, количество порций дополнительной информации, подлежащей передаче в декодер, может быть заметно сокращено за счет установления соответствия границы изображения, по меньшей мере, одной прямой линии, указывающей границу изображения.
Например, когда граница, которая проходит через блок 32×32, поставлена в соответствие двум прямым линиям, как показано на Фиг.5, то блок 32×32 разделяют на четыре блока 16×16, и могут быть получены прямые линии, которые сопоставляют соответствующие первый и четвертый блоки 16×16 с границей блока. В этом случае требуется шесть областей разделения, и количество векторов движения, подлежащих передаче в декодер, может быть уменьшено до шести.
Аналогичным образом, когда граница, которая проходит через блок, поставлена в соответствие одной прямой линии, как показано на Фиг.6, то блок 32×32 разделяют на два блока, и в декодер необходимо передавать только одну порцию информации о режиме блока и два вектора движения.
Когда блок разделяют с использованием прямой линии, в декодер необходимо дополнительно передавать информацию об используемой прямой линии. Описание информации о прямой линии, подлежащей передаче, приведено ниже.
Информация о прямой линии, подлежащая передаче, может быть передана с использованием различных способов.
Первым примером является представление информации о прямой линии с использованием расстояния и угла относительно заданного положения. В этом случае заданным положением может являться пиксель в левом верхнем углу или центре блока. Расстояние может быть представлено целым числом или квантованным значением. Углом может являться угол от 0 до 180 градусов, и также может быть представлен квантованным значением.
Вторым примером является передача в декодер значений положений обоих концов прямой линии, проходящей через блок. Эти значения положений могут быть выражены как значения, указывающие, насколько далеко оба эти конца отстоят от пикселя в левом верхнем углу блока при обходе границы блока в направлении по часовой стрелке, начиная с левого верхнего угла. В этом случае любой из концов может быть представлен как положение относительно пикселя при обходе границы в направлении по часовой стрелке, а другой может быть представлен как положение относительно пикселя при обходе границы в направлении против часовой стрелки, таким образом, может быть выражена информация о прямой линии. В этом случае информация о прямых линиях, близких к более разнообразным формам, может быть выражена с использованием малого количества битов.
Когда существуют соседние блоки, которые уже были адаптивно разделенными по направлению и закодированными, эффективным вариантом является передача остаточной информации между информацией о прямой линии в текущем блоке и информацией о прямой линии в одном выбранном блоке из соседних блоков. Более предпочтительным вариантом является кодирование остаточной информации с использованием информации о направлении в блоках, разделенных в том же самом направлении, что и текущий блок. Информация о прямой линии или остаточная информация о текущем блоке может быть выражена в виде одного соответствующего индекса, который может быть закодирован кодами переменной длины и передан.
Определение того, следует ли применять адаптивный по направлению способ разделения или нет, может быть выполнено в соответствии с размером блока кодирования с предсказанием. Поскольку адаптивный по направлению способ разделения, примененный к чрезмерно малому блоку кодирования, может увеличивать объем информации, подлежащей передаче, и сложность, то предпочтительно не применять этот способ.
Как показано на Фиг.7, способ разделения блока кодирования с предсказанием в соответствии с формой участка границы изображения может быть применен только к конкретным направлениям, которые ограничены заданным их количеством. Например, способ разделения блока может быть ограничен четырьмя направлениями, которыми являются: направление по горизонтали, направление по вертикали, направление по диагонали вверх и направление по диагонали вниз, или двумя направлениями, которыми являются: направление по горизонтали и направление по вертикали. Количество вариантов разделения блока в конкретных направлениях может изменяться в соответствии с размером блока кодирования с предсказанием. Например, блок кодирования с предсказанием, имеющий размер 32×32, может быть разделен в конкретном направлении (например, в направлении по горизонтали) с использованием семи способов, а блок кодирования с предсказанием, имеющий размер 16×16, может быть разделен с использованием трех способов. К тому же, вне зависимости от размера блока кодирования с предсказанием, блок кодирования с предсказанием может быть разделен с использованием одного и того же количества способов.
В соответствии с цветностью блок кодирования с предсказанием также может быть разделен на те же самые разделы, и для разделения также могут быть применены все описанные ниже способы. Блок кодирования с предсказанием, имеющий соответствующие области разделения, должен включать в себя, в своем заголовке, флаг, указывающий наличие блока разделения, информацию, указывающую то, как было выполнено разделение, и закодированные индексы опорных изображений, на которые ссылаются согласно соответствующим областям разделения.
Когда один блок предсказан путем предсказания, адаптивного по направлению, необходимо выполнить оценку параметров движения и компенсацию движения для каждой из двух разделенных областей. Таким образом, из каждой из разделенных областей должен быть получен вектор движения, и должен быть получен и закодирован остаточный сигнал между каждой из разделенных областей и опорной областью, полученный на основании вектора движения.
Остаточный сигнал может быть закодирован с использованием любого из приведенных ниже способов.
Во-первых, из каждой из двух разделенных областей из одного блока кодирования с предсказанием может быть получен остаточный сигнал, а затем эти два остаточных сигнала могут быть просуммированы для формирования одного остаточного сигнала для блока и закодированы с преобразованием. В этом случае весьма вероятно наличие разности между общим распределением остаточных сигналов в соответствующих областях, разделенных вдоль границы, и, следовательно, предпочтительно применить фильтр к границе.
В другом способе кодирование может быть выполнено путем применения адаптивного к форме преобразования к каждой из разделенных областей. Как показано на Фиг.7, когда один блок разделен на две области, то верхний левый блок подвергают одномерному (1D) преобразованию по горизонтали "как есть", а затем одномерному (1D) преобразованию по вертикали, а нижний правый блок перекомпоновывают или поворачивают на 180 градусов, как показано на чертеже, и подвергают одномерному (1D) преобразованию, а затем одномерному (1D) преобразованию по вертикали. В этом случае остаточные коэффициенты, отдельно закодированные согласно соответствующим областям разделения, могут быть переданы в декодер или могут быть объединены и переданы.
В еще одном способе для генерации и кодирования блока может быть выполнено заполнение незначащей информацией согласно соответствующим разделенным областям Другими словами, при кодировании текущей области разделения другую область разделения, образующую блок, заполняют значениями из текущей области разделения для образования одного блока, и затем подвергают двумерному (2D) кодированию с преобразованием. Заполнением может являться заполнение по горизонтали (копирование неопределенной области из определенной области по горизонтали) и заполнение по вертикали (копирование неопределенной области из определенной области по вертикали). В этом случае предпочтительно выполнять заполнение по горизонтали, а затем заполнение по вертикали. К тому же, неопределенный пиксель, смежный с одним или с большим количеством определенных пикселей, может быть заполнен линейной комбинацией определенных пикселей. К тому же, может быть задана направленность согласно направлению разделения, так что любое из заполнений: заполнение по горизонтали и заполнение по вертикали, может быть выполнено первым.
Ниже будет приведено описание оценки вектора движения.
Когда один блок разделен на две области с использованием прямой линии, то вектор движения каждой из разделенных областей кодируют по-разному с использованием уже закодированного вектора движения.
В первом способе в качестве предсказателя вектора движения для первой области из разделенных областей может быть выбран один из векторов движения из смежных блоков, а в качестве предсказателя вектора движения для второй области может быть выбран один из векторов движения из иных смежных блоков, чем первая область.
Во втором способе в качестве предсказателя вектора движения для первой области из разделенных областей может быть выбран один из векторов движения из смежных блоков, а в качестве предсказателя вектора движения для второй области может быть выбран вектор движения из первой области.
В третьем способе при наличии среди блоков, смежных с текущим блоком, блока, адаптивно разделенного по направлению, в качестве опорного вектора движения используют вектор движения блока, адаптивно разделенного по направлению, с учетом направленности разделенных блоков. Таким образом, когда существует множество блоков, адаптивно разделенных по направлению, то в качестве опорных векторов движения могут быть использованы векторы движения в заданной последовательности или векторы движения блоков, имеющих сходные направления разделения.
В четвертом способе для первой области из разделенных областей в качестве предсказателя вектора движения первой области может быть задан вектор движения одного из блоков, смежных с первой областью, а для второй области в качестве предсказателя вектора движения может быть выбран любой из векторов движения блоков, смежных со второй областью, и вектор движения блока или области разделения в том же самом месте в предыдущем изображении, и может быть закодирован вектор остаточного движения.
Здесь для разделения на блоки использована одна прямая линия. Однако один блок также может быть разделен, по меньшей мере, на две области разделения с использованием информации, состоящей, по меньшей мере, из двух прямых линий, и кодирование разделенных областей может быть выполнено описанным выше способом.
Хотя изобретение было продемонстрировано и описано со ссылкой на некоторые варианты его осуществления, которые приведены в качестве примеров, для специалистов в данной области техники понятно, что могут быть сделаны различные его изменения, касающиеся формы и подробностей, не выходя за пределы сущности и объема изобретения, которые определяются прилагаемой формулой изобретения.