Устройство кодирования изображения, способ кодирования изображения и программа, а также устройство декодирования изображения, способ декодирования изображения и программа
Иллюстрации
Показать всеИзобретение относится к области кодирования и декодирования изображений. Технический результат – обеспечение возможности управления качеством изображения. Устройство кодирования содержит: модуль получения, сконфигурированный с возможностью получения информации, соответствующей размеру блока для подлежащего кодированию целевого блока; модуль кодирования, сконфигурированный с возможностью кодирования параметра квантования упомянутого целевого блока в случае, когда информация, полученная посредством модуля получения, указывает, что упомянутый целевой блок меньше, чем блок управления квантованием, и параметр квантования, использованный для управления квантованием блока в блоке управления квантованием, который содержит подлежащий кодированию целевой блок, не был кодирован. 12 н. и 6 з.п. ф-лы, 32 ил.
Реферат
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0001] Настоящее изобретение относится к устройству кодирования изображения, способу кодирования изображения и программе, а также к устройству декодирования изображения, способу декодирования изображения и программе. В частности, настоящее изобретение относится к способу кодирования параметра качества изображения и к способу декодирования, относящемуся к вычислению параметра качества изображения и вставке кода в кодирование изображения.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
[0002] H.264/Усовершенствованное кодирование видеоданных (AVC) стандарта экспертной группы по вопросам движущегося изображения (MPEG)-4, далее в настоящем документе именуемое H.264, известен как способ записи движущегося изображения со сжатием. H.264 широко используется в односегментном цифровом наземном вещании и других применениях. H.264 характеризуется тем, что обеспечивает множество возможностей внутреннего предсказания, используя целочисленные преобразования в модулях размером 4x4 пикселей в дополнение к традиционным схемам кодирования (смотри ISO/IEC 14496-10: 2004 Information technology -- Coding of audio-visual objects -- Part 10: Advanced Video Coding, ITU-T H.264 Advanced video coding for generic audiovisual services).
[0003] Схемы кодирования с использованием ортогонального преобразования и квантования, представленные в стандарте MPEG-2 и H.264, выполняют ортогональное преобразование и квантование предварительно заданных разделенных на блоки изображений с целью генерирования данных коэффициента квантования. Для управления качеством изображения квантование выполняется посредством использования параметра управления качеством изображения, называемого параметром квантования. В конкретном плане квантование с использованием малого значения параметра квантования позволяет получить улучшенное качество изображения, но с большим объемом кода. Квантование с большим значением параметра квантования позволяет получить низкое качество изображения с уменьшенным объемом кода. В соответствии с целевым объемом кода для осуществления кодирования выбираются оптимальные значения параметра квантования. Такое управление именуется управлением скоростью. Были описаны различные способы управление скоростью, включая TM5. После осуществления квантования, с целью генерирования кодированных данных коэффициента, данные коэффициента квантования подвергаются кодированию переменной длины (с переменной длиной кода).
[0004] Кодирование параметров квантования также осуществляется с целью генерирования кода параметров квантования. Например, H.264 использует значение разности между параметром квантования, используемым для квантования блока, предшествующего целевому блоку, и параметром квантования, используемым для квантования целевого блока. Упомянутое значение разности именуется разностью параметров квантования (QP_DELTA). Вычисленная QP_DELTA кодируется в код QP_DELTA посредством кодирования Голомба или арифметического кодирования. Например, кодек кода QP_DELTA с использованием кодирования Голомба позволяет получить один бит кода, даже если значение разности составляет 0. Сгенерированные таким образом кодированные данные коэффициента и код параметров квантования передаются на декодер. Декодер осуществляет декодирование кодированных данных коэффициента и кода параметров квантования с целью генерирования данных коэффициента квантования и параметров квантования. Декодер затем выполняет обратное квантование и обратное ортогональное преобразование данных коэффициента квантования посредством использования параметров квантования, генерируя, тем самым, декодированное изображение.
[0005] Одиночный модуль обработки в стандартах MPEG-2 и H.264 называется макроблоком. Макроблоки представляют собой сетчатые блоки размером 16x16 пикселей, на которые делится изображение в сетчатой структуре. С точки зрения пикселей блоки, подлежащие ортогональному преобразованию в стандарте MPEG-2, имеют размер 8×8 пикселей, а в стандарте H.264 – размер 8×8 пикселей или 4×4 пикселя. То есть один макроблок включает в себя множество блоков ортогонального преобразования. Стандарты MPEG-2 и H.264 могут управлять (управление скоростью) параметрами квантования в модулях (единицах) макроблоков. Квантование блоков ортогонального преобразования, включенных в один и тот же самый макроблок, осуществляется с помощью одного и того же параметра квантования. В соответствии с улучшенной техникой стандарта H.264, изображение делится в сетчатой структуре на сетчатые блоки, называемые наибольшими блоками дерева кодирования (LCTB). Блок LCTB имеет размер 64×64 пикселя. Блоки LCTB делятся на блоки меньших размеров, называемые блоками дерева кодирования (CTB), посредством использования структуры дерева квадрантов, разбивающего пространство. Для осуществления поиска или ввода/вывода данных, структурированных по типу дерева, необходимо конкретизировать порядок сканирования. Блок CTB включает в себя блоки ортогонального преобразования, называемые модулями преобразования (TU). Модули TU также могут делиться на меньшие размеры посредством использования структуры дерева квадрантов, разбивающего пространство. Каждый модуль имеет флаг разделения. Блок, имеющий флаг разделения «истина», структурируется с возможностью включать в себя четыре разделительных блока, имеющих размер 1/2 по высоте и ширине. Блок, имеющий флаг разделения «ложь», не включает в себя ни одного разделительного блока и содержит вместо этого реальные данные по блоку. Иными словами, только неразделенные модули TU содержат данные коэффициента по блокам изображения. Блок LCTB (сетчатый блок) включает в себя множество иерархически структурированных блоков различных размеров ортогонального преобразования. Определение необходимости деления блока может определяться посредством различных способов. Один из способов определения описан в выложенной заявке на патент Японии № 2005-191706, включающей в себя использование множителей Лагранжа с целью вычисления стоимостей блока и выбора способа деления блока по более низкой стоимости.
[0006] Предположим, что способ кодирования изображения включает в себя кодирование изображения в модулях сетчатых блоков, на которые делится изображение в сетчатой структуре. Если данные сетчатые блоки являются большими по размеру, а управление качеством изображения выполняется в модулях сетчатых блоков, границы между блоками с разным качеством изображения могут становиться заметными.
[0007] Параметры качества изображения кодируются и передаются независимо от того, меняется ли параметр качества изображения. Если, для управления качеством изображения, сетчатые блоки подразделяются на меньшие модули, существует проблема непроизводительных затрат, вызываемых кодом параметра качества изображения.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0008] Настоящее изобретение направлено на устройство кодирования изображения, обеспечивающее возможность управления качеством изображения в модулях соответствующих блоков и способное уменьшать границы блоков с целью генерирования изображения, в котором данные границы являются менее заметными.
[0009] В соответствии с одним аспектом настоящего изобретения, устройство кодирования изображения, сконфигурированное с возможностью деления изображения на разделительные блоки множества размеров и выполнения кодирования упомянутого изображения при осуществлении управления качеством изображения в соответствии со значением параметра в модулях разделительных блоков, включает в себя модуль, сконфигурированный с возможностью получения размера блока для подлежащего кодированию целевого блока; модуль, сконфигурированный с возможностью получения минимального размера блока, используемого для управления упомянутым значением параметра; модуль, сконфигурированный с возможностью получения состояния разделения упомянутого целевого блока; модуль, сконфигурированный с возможностью получения значения параметра; модуль, сконфигурированный с возможностью определения, является ли целевой блок разделенным в соответствии с упомянутым состоянием разделения целевого блока; модуль, сконфигурированный с возможностью определения, является ли размер блока для целевого блока большим чем или равным минимальному размеру блока; модуль, сконфигурированный с возможностью определения, является ли размер блока для целевого блока равным минимальному размеру блока; и модуль, сконфигурированный с возможностью кодирования полученного значения параметра.
[0010] В соответствии с одним иллюстративным вариантом осуществления настоящего изобретения, возможно осуществлять управление качеством изображения в модулях соответствующих блоков и делать границы блоков меньше с целью генерирования изображения, где данные границы являются менее заметными. Поскольку нет необходимости вставлять код параметра управления качеством изображения во все ортогонально преобразованные блоки, объем кода параметров квантования не будет увеличиваться сверх необходимого.
[0011] Дополнительные признаки и аспекты настоящего изобретения станут очевидными из нижеследующего подробного описания иллюстративных вариантов осуществления со ссылкой на прилагаемые чертежи.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0012] Сопроводительные чертежи, включенные в и составляющие часть данной спецификации, иллюстрируют иллюстративные варианты осуществления, признаки, а также аспекты упомянутого изобретения и, вместе с описанием, служат для пояснения принципов упомянутого изобретения.
[0013] Фиг. 1 представляет собой блок-схему последовательности операций, иллюстрирующую способ кодирования параметра качества изображения в соответствии с первым иллюстративным вариантом осуществления настоящего изобретения.
Фиг. 2 представляет собой блок-схему последовательности операций, иллюстрирующую способ декодирования параметра качества изображения в соответствии со вторым иллюстративным вариантом осуществления настоящего изобретения.
Фиг. 3 представляет собой блок-схему последовательности операций, иллюстрирующую способ кодирования параметра качества изображения в соответствии с третьим иллюстративным вариантом осуществления настоящего изобретения.
Фиг. 4 представляет собой блок-схему последовательности операций, иллюстрирующую способ декодирования параметра качества изображения в соответствии с четвертым иллюстративным вариантом осуществления настоящего изобретения.
Фиг. 5 представляет собой блок-схему последовательности операций, иллюстрирующую способ кодирования параметра качества изображения в соответствии с пятым иллюстративным вариантом осуществления настоящего изобретения.
Фиг. 6 представляет собой блок-схему последовательности операций, иллюстрирующую способ декодирования параметра качества изображения в соответствии с шестым иллюстративным вариантом осуществления настоящего изобретения.
Фиг. 7 представляет собой диаграмму, иллюстрирующую пример разделенного сетчатого блока.
Фиг. 8A представляет собой диаграмму, иллюстрирующую пример разделения сетчатого блока и флаг разделения.
Фиг. 8B представляет собой диаграмму, иллюстрирующую пример разделения сетчатого блока и флаги разделения.
Фиг. 8C представляет собой диаграмму, иллюстрирующую пример разделения сетчатого блока и флаги разделения.
Фиг. 8D представляет собой диаграмму, иллюстрирующую пример разделения сетчатого блока и флаги разделения.
Фиг. 9 представляет собой диаграмму, иллюстрирующую пример конфигурации аппаратного оборудования для выполнения способа кодирования и способа декодирования в соответствии с одним иллюстративным вариантом осуществления настоящего изобретения.
Фиг. 10 представляет собой диаграмму, иллюстрирующую пример конфигурации аппаратного оборудования для выполнения способа кодирования в соответствии с одним иллюстративным вариантом осуществления настоящего изобретения.
Фиг. 11 представляет собой диаграмму, иллюстрирующую пример конфигурации аппаратного оборудования для выполнения способа декодирования в соответствии с одним иллюстративным вариантом осуществления настоящего изобретения.
Фиг. 12A представляет собой диаграмму, иллюстрирующую пример управления качеством изображения в разделительных блоках.
Фиг. 12B представляет собой диаграмму, иллюстрирующую пример управления качеством изображения в разделительных блоках.
Фиг. 12C представляет собой диаграмму, иллюстрирующую пример управления качеством изображения в разделительных блоках.
Фиг. 13 представляет собой блок-схему последовательности операций, иллюстрирующую способ обработки кодирования в кадре.
Фиг. 14 представляет собой блок-схему последовательности операций, иллюстрирующую способ обработки декодирования в кадре.
Фиг. 15 представляет собой диаграмму, иллюстрирующую структуру данных кодированного кадра.
Фиг. 16 представляет собой диаграмму, иллюстрирующую структуру данных для кодированных данных в сетчатом блоке.
Фиг. 17 представляет собой блок-схему последовательности операций, иллюстрирующую подробности способа кодирования разделительных блоков.
Фиг. 18 представляет собой блок-схему последовательности операций, иллюстрирующую подробности способа декодирования разделительных блоков.
Фиг. 19 представляет собой блок-схему последовательности операций, иллюстрирующую способ вычисления параметра качества изображения в соответствии с первым иллюстративным вариантом осуществления.
Фиг. 20 представляет собой диаграмму, иллюстрирующую разделительные блоки, подлежащие сопровождению посредством параметров квантования.
Фиг. 21A представляет собой диаграмму, иллюстрирующую отношение между профилем, уровнем и минимальным размером блока управления качеством изображения.
Фиг. 21B представляет собой диаграмму, иллюстрирующую отношение между профилем, уровнем и минимальным размером блока управления качеством изображения.
Фиг. 22 представляет собой блок-схему последовательности операций, иллюстрирующую процедуру для вычисления минимального размера блока управления качеством изображения.
Фиг. 23A представляет собой диаграмму, иллюстрирующую структуру кодированных данных последовательности.
Фиг. 23B представляет собой диаграмму, иллюстрирующую структуру кодированных данных последовательности.
Фиг. 24 представляет собой блок-схему последовательности операций, иллюстрирующую способ кодирования изображения в соответствии с седьмым иллюстративным вариантом осуществления настоящего изобретения.
Фиг. 25 представляет собой блок-схему последовательности операций, иллюстрирующую способ декодирования изображения в соответствии с восьмым иллюстративным вариантом осуществления настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0014] Ниже, со ссылкой на чертежи, будут подробно описаны различные иллюстративные варианты осуществления, признаки, а также аспекты настоящего изобретения.
[0015] Способ кодирования разделительных блоков в соответствии с первым иллюстративным вариантом осуществления настоящего изобретения будет описан со ссылкой на фиг. 1, фиг. 9, фиг. 13, фиг. 17 и фиг. 19.
[0016] Фиг. 9 иллюстрирует конфигурацию для выполнения программы кодирования, включающей в себя способ кодирования в соответствии с настоящим иллюстративным вариантом осуществления. Данная программа кодирования записана на накопителе 903 на жестком диске (далее в настоящем документе, сокращенно указываемом как HDD). При активации программа кодирования загружается в оперативное запоминающее устройство (ОЗУ, RAM) 902. Центральный обрабатывающий модуль 901 (CPU) выполняет этапы, которые будут описаны ниже, с целью выполнения обработки кодирования изображения. В настоящем иллюстративном варианте осуществления входные данные изображения сохраняются в и считываются из накопителя 903 HDD. Выходные данные записываются на накопителе 903 HDD.
[0017] Далее будет описана операция кодирования по вышеизложенной конфигурации. Фиг. 13 представляет собой блок-схему последовательности операций, иллюстрирующую процедуру для кодирования всего кадра. Настоящий иллюстративный вариант осуществления рассматривает случай, когда экраны каждый делятся в сетчатой структуре на сетчатые блоки размером 64x64 пикселей и последовательно обрабатываются в модулях сетчатых блоков. Сетчатые блоки внутри экрана обрабатываются в растровом порядке сканирования. Следует отметить, что размер сетчатых блоков не ограничивается до 64.
[0018] На этапе S1301 модуль 901 CPU устанавливает минимальный размер блока управления качеством изображения. На этапе S1302 модуль 901 CPU осуществляет кодирование минимального размера блока управления качеством изображения. На этапе S1303 модуль 901 CPU осуществляет кодирование информации заголовка кадра. На этапе S1304 модуль 901 CPU устанавливает в качестве целевого сетчатого блока первый сетчатый блок в верхней левой части экрана. На этапе S1305 модуль 901 CPU выполняет обработку предсказания в целевом сетчатом блоке с целью генерирования остаточных данных. На этапе S1306 модуль 901 CPU выполняет процедуру для кодирования остаточных данных в целевом сетчатом блоке. На этапе S1307 модуль 901 CPU определяет, все ли сетчатые блоки в кадре обработаны. На этапе S1308 модуль 901 CPU устанавливает следующий сетчатый блок в качестве целевого сетчатого блока.
[0019] Ниже будет описана процедура этапов. На этапе S1301 модуль 901 CPU устанавливает параметр, называемый минимальным размером блока управления качеством изображения. Настоящий иллюстративный вариант осуществления будет описан с допущением, что управление качеством изображения осуществляется посредством параметра квантования, используемого для квантования коэффициентов ортогонального преобразования. Минимальный размер блока управления качеством изображения составляет 16x16 пикселей, так что информация минимального размера блока управления качеством изображения имеет значение 16. Однако упомянутое значение не ограничивается до 16. Разработчик программы может встраивать в программу фиксированное значение. Пользователь может специфицировать значение через посредство интерфейса пользователя программы. Сама программа может вычислять и устанавливать оптимальное значение. Программа может вычислять оптимальные значения в зависимости от входных изображений. Например, если входное изображение составляет более 640×480 пикселей, программа может устанавливать минимальный размер блока управления качеством изображения на значение, такое большое как 16. Если разрешение является более низким, чем или равным 640×480 пикселей, программа может устанавливать минимальный размер блока управления качеством изображения на значение, такое малое как 8.
[0020] На этапе S1302 модуль 901 CPU осуществляет кодирование минимального размера блока управления качеством изображения, установленного на этапе S1301 с целью генерирования кода минимального размера блока управления качеством изображения. Например, модуль 901 CPU может обеспечивать индекс, выражающий информацию минимального размера блока управления качеством изображения 64 как «0», и, схожим образом, информацию 32, 16 и 8 как, соответственно, «1», «2» и «3». Затем модуль 901 CPU может генерировать код фиксированной длины, представляющий собой индекс.
[0021] На этапе S1303 модуль 901 CPU осуществляет генерирование и кодирование информации заголовка кадра. Модуль 901 CPU включает в себя код минимального размера блока управления качеством изображения, сгенерированный на этапе S1302, как часть информации заголовка кадра. Следует отметить, что, в то время как настоящий иллюстративный вариант осуществления рассматривает случай, в котором код минимального размера блока управления качеством изображения включен в заголовок кадра, это не является ограничением. Код минимального размера блока управления качеством изображения может быть включенным в последовательность, в картинку, срез или блок наиболее высокого иерархического уровня.
[0022] На этапе S1304 модуль 901 CPU устанавливает сетчатый блок в верхней левой части экрана в качестве первого целевого сетчатого блока, назначенного к обработке.
[0023] На этапе S1305 модуль 901 CPU генерирует предсказанное изображение посредством использования внутрикадрового предсказания и предсказания компенсации движения, а также генерирует остаточные данные из пикселей целевого сетчатого блока. Внутрикадровое предсказание включает в себя генерирование предсказанного изображения посредством обращения к зоне в окрестности целевого сетчатого блока. Предсказание компенсации движения включает в себя генерирование предсказанного изображения посредством обращения к пикселям в других кадрах. Примеры включают в себя внутреннее предсказание и предсказание компенсации движения, принятые в упомянутой ранее схеме кодирования стандарта H.264. Модуль 901 CPU осуществляет кодирование режима внутрикадрового предсказания, и/или сгенерированных векторов движения, и выдает результат на выходной буфер в качестве кода информации заголовка сетчатого блока.
[0024] На этапе S1306 модуль 901 CPU выполняет, в целевом сетчатом блоке, процедуру для кодирования остаточных данных в блоке, которая будет описана в совокупности с фиг. 17. Фиг. 17 будет подробно описана ниже.
[0025] На этапе S1307 модуль 901 CPU определяет, все ли сетчатые блоки в кадре обработаны. Если обработаны все сетчатые блоки («ДА» на этапе S1307), модуль 901 CPU заканчивает обработку кодирования во всем кадре. Если еще не все сетчатые блоки обработаны («НЕТ» на этапе S1307), модуль 901 CPU выполняет этап S1308.
[0026] На этапе S1308 модуль 901 CPU устанавливает следующий сетчатый блок в растровом порядке сканирования в качестве целевого сетчатого блока и возвращается к этапу S1305.
[0027] Фиг. 17 представляет собой подробную блок-схему последовательности операций этапа S1306. На этапе S1306 модуль 901 CPU осуществляет кодирование множества иерархически структурированных блоков ортогонального преобразования различных размеров с целью генерирования кодированных данных, включающих в себя код параметра управления качеством изображения. В конкретном плане модуль 901 CPU выполняет деление блока, ортогональное преобразование, а также квантование на основе минимального размера блока управления качеством изображения, данных размера блока, а также остаточных данных в блоках. Блок-схема последовательности операций также иллюстрирует обработку для кодирования разделительных блоков с целью генерирования кода флага разделения блока, кодированных данных коэффициента, а также кода QP_DELTA, относящегося к обновлению параметра качества изображения. Настоящий иллюстративный вариант осуществления использует, для иерархического структурирования, структуру дерева квадрантов, разбивающего пространство. Блоки на наиболее высоком иерархическом уровне представляют собой сетчатые блоки размером 64×64 пикселей. По мере того, как уровень снижается посредством обработки разделения, могут обрабатываться блоки размером 32×32 пикселей, 16×16 пикселей и такие малые, как блоки размером 8×8 пикселей. Структура деления блока на основе дерева квадрантов, разбивающего пространство, может передаваться на сторону декодера посредством флагов разделения блока, встраиваемых в поток.
[0028] На этапе S1700 модуль 901 CPU вычисляет стоимости, когда целевой блок является разделенным и когда - нет. На этапе S1701 модуль 901 CPU определяет, осуществлять ли деление целевого блока. На этапе S1702 модуль 901 CPU осуществляет кодирование флага разделения блока, установленного как «ложь», и выдает результат. На этапе S1703 модуль 901 CPU выполняет процедуру для вычисления параметра качества изображения. На этапе S1704 модуль 901 CPU выполняет ортогональное преобразование, квантование, а также кодирование переменной длины. На этапе S1705 модуль 901 CPU выполняет процедуру для кодирования параметра качества изображения. На этапе S1706 модуль 901 CPU сортирует кодированные данные и выдает результат на выходной буфер. На этапе S1707 модуль 901 CPU осуществляет кодирование флага разделения блока, установленного как «истина», и выдает результат. На этапе S1708 модуль 901 CPU выполняет процедуру для вычисления параметра качества изображения. На этапе S1709 модуль 901 CPU выполняет процедуру для кодирования параметра качества изображения. На этапе S1710 модуль 901 CPU осуществляет обработку включенных разделительных блоков.
[0029] Ниже будет описана процедура этапов. На этапе S1700 модуль 901 CPU вычисляет стоимости, когда целевой блок является разделенным и когда - нет. Данные стоимости могут вычисляться посредством использования упомянутых выше множителей Лагранжа, а также характеристик изображения, статистических данных и предсказанных длин кода.
[0030] На этапе S1701 модуль 901 CPU сравнивает стоимости с делением и без деления, вычисленные на этапе S1700. Если стоимость с делением блока является более низкой, чем стоимость без деления блока («ДА» на этапе S1701), модуль 901 CPU определяет сравнение как «истина». Если нет («НЕТ» на этапе S1701), модуль 901 CPU определяет сравнение как «ложь». Если результат определения на этапе S1701 составляет «ложь» («НЕТ» на этапе S1701), модуль 901 CPU выполняет этапы от S1702 по этап S1706. Если результат определения на этапе S1701 составляет «истина» («ДА» на этапе S1701), модуль 901 CPU выполняет этапы от S1707 по этап S1710.
[0031] Вначале будет дано описание случая, когда стоимость является более низкой без деления блока. На этапе S1702 модуль 901 CPU осуществляет кодирование флага разделения блока, установленного как «ложь». Модуль 901 CPU обычно назначает и кодирует, хотя неограниченно, однобитовое значение 0.
[0032] На этапе S1703 модуль 901 CPU выполняет процедуру вычисления параметра качества изображения, проиллюстрированную на фиг. 19, с целью вычисления параметра качества изображения. Фиг. 19 будет подробно описана ниже.
[0033] На этапе S1704 модуль 901 CPU выполняет ортогональное преобразование, квантование, а также кодирование переменной длины остаточных данных с целью генерирования кодированных данных коэффициента. Ортогональное преобразование осуществляется посредством дискретного косинусного преобразования (ДКП, DCT). Квантование выполняется посредством использования параметра качества изображения, вычисленного на этапе S1703. Модуль 901 CPU выполняет квантование посредством использования такого же самого значения параметра качества изображения, что и значение, использованное для предыдущего квантования, если, посредством процедуры вычисления параметра качества изображения, проиллюстрированной на фиг. 19, назначенной к описанию ниже, не является вычисленным никакой новый параметр качества изображения. Для кодирования переменной длины модуль 901 CPU может использовать кодирование по алгоритму Хаффмана и арифметическое кодирование. Такие методы кодирования могут осуществляться посредством использования способов, схожих со способами стандарта H.264, упомянутыми ранее.
[0034] На этапе S1705 модуль 901 CPU выполняет процедуру кодирования параметра качества изображения. Процедура кодирования параметра качества изображения будет подробно описана ниже со ссылкой на фиг. 1.
[0035] На этапе S1706 модуль 901 CPU осуществляет сортировку кода флага разделения блока, кода QP_DELTA, а также кодированных данных коэффициента, и выдает результат на выходной буфер в этом порядке. Если для выдачи в наличии не имеется кодированных данных, модуль 901 CPU осуществляет сортировку и выдает только существующие кодированные данные. Фиг. 16 иллюстрирует пример порядка кода.
[0036] Далее будет дано описание случая, когда стоимость является более низкой с делением блока. На этапе S1707 модуль 901 CPU осуществляет кодирование флага разделения блока, установленного как «истина». Модуль 901 CPU обычно назначает и кодирует, хотя не ограниченно, однобитовое значение 1.
[0037] На этапе S1708 модуль 901 CPU выполняет процедуру вычисления параметра качества изображения, проиллюстрированную на фиг. 19, назначенную к описанию ниже, вычисляя тем самым параметр качества изображения.
[0038] На этапе S1709 модуль 901 CPU выполняет процедуру кодирования параметра качества изображения как на этапе S1705. Процедура кодирования параметра качества изображения будет подробно описана ниже со ссылкой на фиг. 1.
[0039] На этапе S1710 модуль 901 CPU рекурсивно выполняет настоящую процедуру во всех включенных разделительных блоках, то есть в четырех разделительных блоках (верхнем слева, верхнем справа, нижнем слева и нижнем справа), включенных в иерархически последовательный уровень. Данные разделительные блоки каждый имеют размер 1/2 от размера исходного целевого блока как по высоте, так и по ширине. Размер целевого блока уменьшается от разделения к разделению. Рекурсивная обработка может выполняться вплоть до блока такого малого размера, как 8×8 пикселей. Посредством такой рекурсивной обработки сетчатый блок успешно делится на структуру дерева квадрантов, разбивающего пространство. Например, предположим, что сетчатый блок является разделенным как проиллюстрировано на фиг. 7. Флаг разделения для обозначения наличия или отсутствия деления блока будет обозначаться посредством 1, когда соответствующий блок является разделенным, и 0, когда нет. Флаги разделения в соответствующих разделительных блоках затем выражаются как проиллюстрировано на фиг. 8A, фиг. 8B, фиг. 8C и фиг. 8D. Фиг. 8A, фиг. 8B, фиг. 8C и фиг. 8D иллюстрируют уровни и блоки размером 64×64 пикселей, 32×32 пикселя, 16×16 пикселей и 8×8 пикселей, соответственно. Цифры обозначают флаги разделения. «-» обозначает, что нет необходимости ни в одном флаге. Цифры в скобках обозначают структурный порядок. В настоящем иллюстративном варианте осуществления структурным порядком именуется порядок верхнего слева, верхнего справа, нижнего слева и нижнего справа с точки зрения блоков. С точки зрения уровней, структурным порядком именуется порядок сканирования вперед структуры дерева квадрантов, разбивающего пространство. Наборы из кода флага разделения, кода QP_DELTA и кодированных данных коэффициента сохраняются в структурном порядке. В блоках размером 8×8 пикселей не устанавливается никакого флага разделения, поскольку такие блоки далее делиться не будут. Блок, имеющий флаг разделения 1, сам не содержит никаких данных коэффициента, поскольку такой блок подразделяется на разделительные блоки меньших размеров, содержащие данные коэффициента. Как проиллюстрировано на фиг. 16, назначенной к описанию ниже, поток имеет такую структуру данных, что части кодированной информации в соответствующих разделительных блоках располагаются в структурном порядке. Часть кодированной информации по каждому разделительному блоку включает в себя набор из кода флага разделения, кода QP_DELTA и/или данных коэффициента по разделительному блоку.
[0040] Фиг. 1 представляет собой подробную блок-схему последовательности операций процедуры кодирования параметра качества изображения, выполняемой на этапе S1705 и на этапе S1709. На этапе S101 модуль 901 CPU получает размер целевого блока. На этапе S102 модуль 901 CPU получает минимальный размер блока управления качеством изображения. На этапе S103 модуль 901 CPU получает состояние разделения блока. На этапе S104 модуль 901 CPU определяет, является ли целевой блок разделенным. На этапе S105 модуль 901 CPU определяет, является ли размер целевого блока большим, чем или равным минимальному размеру блока управления качеством изображения. На этапе S106 модуль 901 CPU определяет, является ли размер целевого блока равным минимальному размеру блока управления качеством изображения. На этапе S107 модуль 901 CPU получает параметр качества изображения. На этапе S108 модуль 901 CPU осуществляет кодирование параметра качества изображения.
[0041] Ниже будет описана процедура этапов. На этапе S101 модуль 901 CPU получает размер целевого блока. Сразу же после того, как настоящая процедура запускается от процедуры по фиг. 17, назначенный к обработке целевой блок сам по себе представляет собой сетчатый блок. Значение размера целевого блока, таким образом, составляет 64. По мере того, как уровень структуры дерева квадрантов, разбивающего пространство, последовательно снижается по причине рекурсивных вызовов, значение размера изменяется на 32, 16 и 8.
[0042] На этапе S102 модуль 901 CPU получает минимальный размер блока управления качеством изображения, установленный извне. В настоящем иллюстративном варианте осуществления значение минимального размера блока управления качеством изображения составляет 16. Является ли подлежащий кодированию целевой блок разделенным, было определено на этапе S1700 и на этапе S1701 по фиг. 17. На этапе S103 модуль 901 CPU получает информацию состояния разделения, обозначающую результат определения разделения.
[0043] На этапе S104 модуль 901 CPU обращается к полученному состоянию разделения целевого блока и определяет, является ли целевой блок разделенным. Если целевой блок является разделенным («ДА» на этапе S104), модуль 901 CPU выполняет этап S106. Если целевой блок не является разделенным («НЕТ» на этапе S104), модуль 901 CPU выполняет этап S105.
[0044] На этапе S105 модуль 901 CPU определяет, является ли размер целевого блока большим чем или равным минимальному размеру блока управления качеством изображения. Если размер целевого блока определяется как являющийся большим или равным («ДА» на этапе S105), модуль 901 CPU выполняет этап S107 и последующий этап. Если нет («НЕТ» на этапе S105), модуль 901 CPU заканчивает обработку кодирования параметра качества изображения.
[0045] На этапе S106 модуль 901 CPU определяет, является ли размер целевого блока равным минимальному размеру блока управления качеством изображения. Если размер целевого блока определяется как являющийся равным минимальному размеру блока управления качеством изображения («ДА» на этапе S106), модуль 901 CPU выполняет этап S107 и этап S108. Если нет («НЕТ» на этапе S108), модуль 901 CPU заканчивает обработку кодирования параметра качества изображения.
[0046] На этапе S107 модуль 901 CPU получает параметр качества изображения. Упомянутый параметр качества изображения представляет собой параметр, определенный на этапе S1703 или на этапе S1708 по фиг. 17. На этапе S108 модуль 901 CPU осуществляет кодирование параметра качества изображения. В настоящем иллюстративном варианте осуществления модуль 901 CPU определяет значение разности между параметром качества изображения, использованным для кодирования предыдущего блока, и параметром качества изображения, полученным на этапе S107, как значение QP_DELTA. Модуль 901 CPU осуществляет кодирование, посредством кодирования Голомба, определенного значения QP_DELTA в код QP_DELTA, представляющий собой код параметра качества изображения. В настоящем иллюстративном варианте осуществления кодирование QP_DELTA осуществляется посредством кодирования Голомба. Однако это не является ограничением. Кодирование QP_DELTA может осуществляться посредством арифметического кодирования или другого кодирования переменной длины. Параметр качества изображения используется для вычисления следующего значения QP_DELTA.
[0047] Фиг. 19 представляет собой подробную блок-схему последовательности операций процедуры вычисления параметра качества изображения, выполняемой на этапе S1703 и на этапе S1708.
[0048] На этапе S1901 модуль 901 CPU получает размер целевого блока. На этапе S1902 модуль 901 CPU получает минимальный размер блока управления качеством изображения. На этапе S1903 модуль 901 CPU получает состояние разделения блока. На этапе S1904 модуль 901 CPU определяет, является ли целевой блок разделенным. На этапе S1905 модуль 901 CPU определяет, является ли размер целевого блока большим, чем или равным минимальному размеру блока управления качеством изображения. На этапе S1906 модуль 901 CPU определяет, является ли размер целевого блока равным минимальному размеру блока управления качеством изображения. На этапе S1907 модуль 901 CPU вычисляет параметр качества изображения.
[0049] Ниже будет описана процедура этапов. На этапе S1901 модуль 901 CPU получает размер целевого блока. Сразу же после того, как настоящая процедура запускается от процедуры по фиг. 17, назначенный к обработке целевой блок сам по себе представляет собой сетчатый блок. Значение размера целевого блока, таким образом, составляет 64. По мере того, как уровень структуры дерева квадрантов, разбивающего пространство, последовательно снижается по причине рекурсивных вызовов, значение размера изменяется на 32, 16 и 8.
[0050] На этапе S1902 модуль 901 CPU получает минимальный размер блока управления