кодер изображения и декодер изображения, способ кодирования изображения и способ декодирования изображения
Классы МПК: | H04N7/32 включающие кодовое прогнозирование H04N11/04 с использованием импульсно-кодовой модуляции |
Автор(ы): | МОРИЯ Йосими (JP), СЕКИГУТИ Сунити (JP), СУГИМОТО Казуо (JP), ЯМАДА Йосихиса (JP), АСАИ Коутароу (JP), МУРАКАМИ Токумити (JP), ИДЕХАРА Юити (JP) |
Патентообладатель(и): | МИЦУБИСИ ЭЛЕКТРИК КОРПОРЕЙШН (JP) |
Приоритеты: |
подача заявки:
2010-09-17 публикация патента:
20.12.2013 |
Изобретение относится к кодеру/декодеру движущегося цветного изображения в формате, например, 4:2:0 и 4:2:2. Техническим результатом является повышение оптимальности кодирования движущегося изображения. Предложен кодер изображения, содержащий блок генерации прогнозируемого изображения, который генерирует прогнозируемое изображение согласно режимам прогнозирования; блок принятия решения относительно режима прогнозирования, который оценивает эффективность прогнозирования прогнозируемого изображения из блока генерации прогнозируемого изображения, для принятия решения относительно заранее определенного режима прогнозирования; и блок кодирования, который подвергает выходной сигнал блока принятия решения относительно режима прогнозирования кодированию с переменной длиной слова. Блок принятия решения на основании заранее определенного сигнала управления принимает решение, какой из общего режима прогнозирования и отдельного режима прогнозирования используется для соответствующих цветовых компонентов входного сигнала изображения, и мультиплексирует информацию о сигнале управления в битовый поток, мультиплексирует, когда используется общий режим прогнозирования, информацию общего режима прогнозирования и мультиплексирует, когда общий режим прогнозирования не используется, информацию режима прогнозирования для каждого из цветовых компонентов. 8 н.п. ф-лы, 86 ил.
Формула изобретения
1. Декодер изображения, который декодирует сигнал цветного изображения на основании входного битового потока, сгенерированного посредством сжатия-кодирования цветного изображения, которое сформировано множеством цветовых компонентов, причем цветное изображение подвергается сжатию-кодированию в единицах областей, полученных путем разделения цветного изображения на предопределенные области, при этом декодер изображения содержит
блок анализа заголовков, который извлекает идентификационную информацию общего кодирования/независимого кодирования из битового потока,
блок декодирования, который декодирует для каждой из областей режим взаимного прогнозирования, вектор движения и номер опорного изображения, включенный в битовый поток, и декодирует сигнал ошибки прогнозирования для каждой из областей,
блок генерации прогнозируемого изображения, который генерирует прогнозируемое изображение на основании декодированного режима взаимного прогнозирования, вектора движения и номера опорного изображения, которые были декодированы, и
блок сложения, который генерирует декодированное изображение при помощи сложения декодированною сигнала ошибки прогнозирования с прогнозируемым изображением,
причем блок декодирования декодирует режим взаимного прогнозирования, вектор движения и номер опорного изображения, общеупотребительные для всех цветовых компонентов, в случае, когда идентификационная информация общего кодирования/независимого кодирования указывает, что области, служащие единицами кодирования, закодированы общим способом прогнозирования в единицах областей для соответствующих цветовых компонентов, и декодирует режим взаимного прогнозирования, вектор движения и номер опорного изображения в единицах областей для соответствующих цветовых компонентов в случае, когда идентификационная информация общего кодирования/независимого кодирования указывает, что области, служащие единицами кодирования, соответственно закодированы способом отдельного прогнозирования для соответствующих цветовых компонентов, и
блок генерации прогнозируемого изображения генерирует прогнозируемое изображение, используя режим взаимного прогнозирования, вектор движения и номер опорного изображения, которые были декодированы, для соответствующих цветовых компонентов.
2. Кодер изображения, который генерирует битовый поток на основании входного цветного изображения, которое сформировано множеством цветовых компонентов, посредством сжатия-кодирования цветного изображения в единицах областей, полученных путем
разделения цветного изображения на предопределенные области, при этом кодер изображения содержит
блок мультиплексирования, который мультиплексирует идентификационную информацию общего кодирования/независимого кодирования, которая указывает, закодированы ли вместе области, служащие единицами кодирования, общим способом прогнозирования для всех цветовых компонентов, формирующих сигнал, или области, служащие единицами кодирования, соответственно закодированы способом отдельного прогнозирования для соответствующих цветовых компонентов, и
блок кодирования, который использует режим взаимного прогнозирования, вектор движения и номер опорного изображения, общеупотребительные для всех цветовых компонентов, в случае, когда идентификационная информация общего кодирования/независимого кодирования указывает, что области, служащие единицами кодирования, закодированы вместе общим способом прогнозирования для всех цветовых компонентов, формирующих сигнал, использует режим взаимного прогнозирования, вектор движения и номер опорного по отдельности для соответствующих цветовых компонентов, в случае, когда идентификационная информация общего кодирования/независимого кодирования указывает, что области, служащие единицами кодирования, соответственно закодированы способом отдельного прогнозирования для соответствующих цветовых компонентов, и сжимает и кодирует сигнал ошибки прогнозирования, полученный на основании режима взаимного прогнозирования, вектора движения и номера опорного изображения.
3. Декодер изображения, который декодирует сигнал цветного изображения на основании входного битового потока, сгенерированного посредством сжатия-кодирования цветного изображения, которое сформировано множеством цветовых компонентов, причем цветное изображение подвергается сжатию-кодированию в единицах областей, полученных путем разделения цветного изображения на предопределенные области, при этом декодер изображения содержит
блок анализа заголовков, который извлекает информацию указания формата дискретизации цвета и идентификационную информацию общего кодирования/независимого кодирования из битового потока,
блок декодирования, который декодирует для каждой из областей первый режим внутреннего прогнозирования для компонента светимости и второй режим внутреннего прогнозирования, используемый для других цветовых компонентов, причем первый режим внутреннего прогнозирования и второй режим внутреннего прогнозирования включены в битовый поток, в случае, когда информация указания формата дискретизации цвета указывает один из 4:2:0 и 4:2:2 форматов, и декодирует первый режим внутреннего прогнозирования, отвечающий соответствующим цветовым компонентам на основании идентификационной информации общего кодирования/независимого кодирования, в случае, когда информация указания формата дискретизации цвета указывает 4:4:4 формат, и декодирует сигнал ошибки прогнозирования для каждой из областей,
первый блок генерации прогнозируемого изображения, который генерирует прогнозируемое изображение на основании декодированного первого режима внутреннего прогнозирования, второй блок генерации прогнозируемого изображения, который генерирует прогнозируемое изображение на основании декодированного второго режима внутреннего прогнозирования, блок сложения, который складывает декодированный сигнал ошибки прогнозирования и прогнозируемое изображение, генерируя декодированное изображение,
причем блок декодирования декодирует первый режим внутреннего прогнозирования, общеупотребительный для всех цветовых компонентов, в случае, когда идентификационная информация общего кодирования/ независимого кодирования указывает, что области, служащие единицами кодирования, закодированы общим способом прогнозирования в единицах областей для соответствующих цветовых компонентов, и декодирует первый режим внутреннего прогнозирования в единицах областей для соответствующих цветовых компонентов в случае, когда идентификационная информация общего кодирования/независимого кодирования указывает, что области, служащие единицами кодирования, соответственно закодированы способом отдельного прогнозирования для соответствующих цветовых компонентов, и вводит в блок сложения прогнозируемое изображение, сгенерированное одним из первого блока генерации прогнозируемого изображения и второго блока генерации прогнозируемого изображения, на основании информации указания формата дискретизации цвета.
4. Способ декодирования изображения для декодирования сигнала цветного изображения на основании входного битового потока, сгенерированного посредством сжатия-кодирования цветного изображения, которое сформировано множеством цветовых компонентов, причем цветное изображение подвергается сжатию-кодированию в единицах областей, полученных путем разделения цветного изображения на предопределенные области, причем способ декодирования изображений содержит этапы, на которых извлекают идентификационную информацию общего кодирования/независимого кодирования из битового потока,
определяют па основании битового потока блок данных в срезе, который содержит закодированные данные одной или более областей, и
декодируют, в случае, когда идентификационная информация общего кодирования/независимого кодирования указывает, что области, служащие единицами кодирования, соответственно закодированы способом отдельного прогнозирования для соответствующих цветовых компонентов, причем в область-заголовок среза включен идентификатор цветового компонента, причем идентификатор цветового компонента указывает, какому из цветовых компонентов соответствует сигнал, представленный закодированными данными, включенными в срез, причем в случае, когда идентификационная информация общего кодирования/независимого кодирования указывает, что области, служащие единицами кодирования, соответственно закодированы способом отдельного прогнозирования для соответствующих цветовых компонентов, каждый из цветовых компонентов определяется на основании идентификатора цветового компонента, и генерируется декодированное изображение, сформированное из соответствующих цветовых компонентов.
5. Способ кодирования изображения для генерации битового потока на основании входного цветного изображения, которое сформировано множеством цветовых компонентов, посредством сжатия-кодирования цветного изображения в единицах областей, полученных путем разделения цветного изображения на предопределенные области, при этом способ кодирования изображений содержит этапы, на которых
мультиплексируют идентификационную информацию общего кодирования/ независимого кодирования, которая указывает, закодированы ли вместе области, служащие единицами кодирования, общим способом прогнозирования для всех цветовых компонентов, формирующих сигнал, или области, служащие единицами кодирования, соответственно закодированы способом отдельного прогнозирования для соответствующих цветовых компонентов, и в случае, когда идентификационная информация общего кодирования/независимого кодирования указывает, что области, служащие единицами кодирования, соответственно закодированы способом отдельного прогнозирования для соответствующих цветовых компонентов,
получают данные одной или более областей, чтобы сформировать блок данных в срезе, и
мультиплексируют в области-заголовке среза идентификатор цветового компонента, который указывает, какому из цветовых компонентов соответствуют данные, включенные в срез.
6. Способ декодирования изображения для декодирования сигнала цветного изображения на основании входного битового потока, сгенерированного посредством сжатия-кодирования цветного изображения, которое сформировано множеством цветовых компонентов, причем цветное изображение подвергается сжатию-кодированию в единицах областей, полученных путем разделения цветного изображения на предопределенные области, при этом способ декодирования изображений содержит этапы, на которых извлекают идентификационную информацию общего кодирования/независимого кодирования из битового потока,
декодируют для каждой из областей режим взаимного прогнозирования, вектор движения и номер опорного изображения, включенные в битовый поток, и декодируют сигнал ошибки прогнозирования для каждой из областей,
генерируют прогнозируемое изображение на основании декодированного режима взаимного прогнозирования, вектора движения и номера опорного изображения, которые были декодированы, и
генерируют декодированное изображение путем сложения декодированного сигнала ошибки прогнозирования и прогнозируемого изображения,
причем на этапе декодирования декодируют режим взаимного прогнозирования, вектор движения и номер опорного изображения, общеупотребительные для всех цветовых компонентов, в случае, когда идентификационная информация общего кодирования/независимого кодирования указывает, что области, служащие единицами кодирования, закодированы общим способом прогнозирования в единицах областей для соответствующих цветовых компонентов, и декодируют режим взаимного прогнозирования, вектор движения и номер опорного изображения в единицах областей для соответствующих цветовых компонентов в случае, когда идентификационная информация общего кодирования/независимого кодирования указывает, что области, служащие единицами кодирования, соответственно закодированы способом отдельного прогнозирования для соответствующих цветовых компонентов, и
на этапе генерации прогнозируемого изображения генерируют прогнозируемое изображение, используя режим взаимного прогнозирования, вектор движения и номер опорного изображения, которые были декодированы, для соответствующих цветовых компонентов.
7. Способ кодирования изображения для генерации битового потока на основании входного цветного изображения, которое сформировано множеством цветовых компонентов, посредством сжатия-кодирования цветного изображения в единицах областей, полученных путем разделения цветного изображения на предопределенные области, причем способ кодирования изображений содержит этапы, на которых
мультиплексируют идентификационную информацию общего кодирования/независимого кодирования, которая указывает, закодированы ли вместе области, служащие единицами кодирования, общим способом прогнозирования для всех цветовых компонентов, формирующих сигнал, или области, служащие единицами кодирования, соответственно закодированы способом отдельного прогнозирования для соответствующих цветовых компонентов, и
используют режим взаимного прогнозирования, вектор движения и номер опорного изображения, общеупотребительные для всех цветовых компонентов, в случае, когда идентификационная информация общего кодирования/независимого кодирования указывает, что области, служащие единицами кодирования, закодированы вместе общим способом прогнозирования для всех цветовых компонентов, формирующих сигнал, используют режим взаимного прогнозирования, вектор движения и номер опорного изображения по отдельности для соответствующих цветовых компонентов, в случае, когда идентификационная информация общего кодирования/независимого кодирования указывает, что области, служащие единицами кодирования, соответственно закодированы способом отдельного прогнозирования для соответствующих цветовых компонентов, и сжимают и кодируют сигнал ошибки прогнозирования, полученный на основании режима взаимного прогнозирования, вектора движения и номера опорного изображения.
8. Способ декодирования изображения для декодирования сигнала цветного изображения на основании входного битового потока, сгенерированного посредством сжатия-кодирования цветного изображения, которое сформировано множеством цветовых компонентов, причем цветное изображение подвергается сжатию-кодированию в единицах областей, полученных путем разделения цветного изображения на предопределенные области, при этом способ декодирования изображений содержит этапы, на которых
извлекают информацию указания формата дискретизации цвета и идентификационную информацию общего кодирования/независимого кодирования из битового потока,
декодируют для каждой из областей первый режим внутреннего прогнозирования для компонента светимости и второй режим внутреннего прогнозирования, используемый для других цветовых компонентов, причем первый режим внутреннего прогнозирования и второй режим внутреннего прогнозирования включены в битовый поток, в случае, когда информация указания формата дискретизации цвета указывает один из 4:2:0 и 4:2:2 форматов, и декодируют первый режим внутреннего прогнозирования, отвечающий соответствующим цветовым компонентам на основании идентификационной информации общего кодирования/независимого кодирования, в случае, когда информация указания формата дискретизации цвета указывает 4:4:4 формат, и декодируют сигнал ошибки прогнозирования для каждой из областей,
генерируют первое прогнозируемое изображение на основании декодированного первого режима внутреннего прогнозирования,
генерируют второе прогнозируемое изображение на основании декодированного второго режима внутреннего прогнозирования,
генерируют декодированное изображение путем сложения декодированного сигнала ошибки прогнозирования и прогнозируемого изображения,
причем на этапе декодирования декодируют первый режим внутреннего прогнозирования, общеупотребительный для всех цветовых компонентов, в случае, когда идентификационная информация общего кодирования/ независимого кодирования указывает, что области, служащие единицами кодирования, закодированы общим способом прогнозирования в единицах областей для соответствующих цветовых компонентов, и декодируют первый режим внутреннего прогнозирования в единицах областей для соответствующих цветовых компонентов в случае, когда идентификационная информация общего кодирования/независимого кодирования указывает, что области, служащие единицами кодирования, соответственно закодированы способом отдельного прогнозирования для соответствующих цветовых компонентов, и вводят на этапе сложения прогнозируемое изображение, сгенерированное одним из первого блока генерации прогнозируемого изображения и второго блока генерации прогнозируемого изображения, на основании информации указания формата дискретизации цвета.
Описание изобретения к патенту
ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится к кодеру цифрового сигнала изображения, декодеру цифрового сигнала изображения, способу кодирования цифрового сигнала изображения и способу декодирования цифрового сигнала изображения, которые используются для сжатия и кодирования изображения, передачи сжатых данных изображения и т.п.
УРОВЕНЬ ТЕХНИКИ
Традиционно, приняты системы кодирования видеосигнала на основе международных стандартов, например, MPEG и ITU-TH.26X, в основном при условии, что используется входной сигнал в стандартном формате, именуемом форматом "4:2:0". Формат 4:2:0 представляет формат для преобразования сигнала цветности движущегося изображения, например, RGB, в компонент яркости (Y) и два цветоразностных компонента (Cb и Cr) и сокращения количества выборок цветоразностных компонентов вдвое в горизонтальном и вертикальном направлениях в отношении количества выборок компонента яркости. Поскольку зрительное восприятие ухудшения цветоразностных компонентов мало по сравнению с ухудшением компонента яркости, принята традиционная система кодирования видеосигнала, отвечающая международному стандарту, при условии, что объем информации об объекте кодирования сокращается за счет осуществления вышеописанной понижающей дискретизации цветоразностных компонентов до осуществления кодирования. С другой стороны, в связи с повышением разрешения и повышением качества видеодисплеев в последние годы, испытывается система для кодирования изображения с выборками, идентичными компонентам яркости без понижающей дискретизации цветоразностных компонентов. Формат, в котором количество выборок компонентов яркости и количество выборок цветоразностных компонентов одинаковы, называется форматом 4:4:4. Согласно стандарту MPEG-4 AVC (ISO/IEC 14496-10)/ITU-T_H.264 (ниже именуемому AVC) принято решение вводить в систему кодирования формат 4:4:4, "высокий профиль 444". Хотя традиционный формат 4:2:0 принят при условии, что цветоразностные компоненты подвергаются понижающей дискретизации, и ограничивается определением цветовых пространств Y, Cb и Cr, в формате 4:4:4 нет различия в частоте дискретизации между цветовыми компонентами, что дает возможность непосредственно использовать R, G и B вместо Y, Cb и Cr и использовать многие другие определения цветовых пространств. В системе кодирования видеосигнала, где используется формат 4:2:0, поскольку цветовые пространства зафиксированы как Y, Cb и Cr, нет необходимости учитывать типы цветовых пространств при обработке кодирования. Однако, высокий профиль 4:4:4 AVC - это система, в которой определение цветовых пространств влияет на саму обработку кодирования. С другой стороны, в настоящем высоком профиле 4:4:4, учитывается совместимость с другими профилями для кодирования формата 4:2:0, заданного пространствами Y, Cb и Cr. Таким образом, нельзя сказать, что настоящий высокий профиль 4:4:4 призван оптимизировать ее эффективность сжатия.
Непатентный документ 1: стандарт MPEG-4 AVC (ISO/IEC 14496-10)/ITU-TH.264
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Задачи, решаемые изобретением
Например, в высоком профиле 4:2:0 для кодирования формата 4:2:0 AVC, в области макроблока, состоящей из компонентов яркости 16×16 пикселей, цветоразностные компоненты Cb и Cr соответствующие компонентам яркости, представляют собой блоки 8×8 пикселей. Пространственное прогнозирование (интрапрогнозирование), в котором используется значение периферийных выборок в идентичном изображении, принято для интракодирования макроблоков в высоком профиле 4:2:0. Отдельные режимы интрапрогнозирования используются для компонентов яркости и цветоразностных компонентов. Режим, имеющий наивысшую эффективность прогнозирования, выбирается из девяти типов, показанных на фиг.3, в качестве режима интрапрогнозирования для компонентов яркости, и режим, имеющий наивысшую эффективность прогнозирования, выбирается из четырех типов, показанных на фиг.9, в качестве режима интрапрогнозирования для цветовых компонентов Cb и Cr (невозможно использовать отдельные режимы прогнозирования для Cb и Cr). При прогнозировании компенсации движения в высоком профиле 4:2:0 информация размера блока, используемая как единица прогнозирования с компенсацией движения, информация опорного изображения, используемая для прогнозирования, и информация вектора движения для каждого блока мультиплексируются только для компонентов яркости. Прогнозирование с компенсацией движения осуществляется для цветоразностных компонентов с использованием информации, такой же, как информация, используемая для прогнозирования с компенсацией движения, для компонентов яркости. Вышеописанная система пригодна при условии, что вклад цветоразностных компонентов в определение цветовых пространств мал по сравнению с вкладом компонентов яркости, которые вносят существенный вклад в представление структуры (текстуру) изображения в формате 4:2:0. Однако настоящий высокий профиль 4:4:4 является только системой, полученной простым расширением режима интрапрогнозирования для цветоразностного сигнала в формате 4:2:0 даже в состоянии, когда размер блока цветоразностного сигнала на один макроблок увеличен до 16×16 пикселей. Как и в формате 4:2:0, в отношении одного компонента, например, компонента яркости, только информация об одном компоненте мультиплексируется для осуществления прогнозирования с компенсацией движения с использованием режима интерпрогнозирования, информации опорного изображения и информации вектора движения, общих для трех компонентов. Таким образом, нельзя сказать, что настоящий высокий формат 4:4:4 не всегда является оптимальным методом прогнозирования в формате 4:4:4, в котором соответствующие цветовые компоненты вносят равные вклады в структурное представление сигнала изображения.
Таким образом, задачей настоящего изобретения является обеспечение кодера, декодера, способа кодирования, способа декодирования, программ для выполнения этих способов и носителей записи, на которые эти программы записаны, с повышенной оптимальностью кодирования сигнала движущегося изображения, в которых не существует различия в частоте дискретизации между цветовыми компонентами, наподобие формата 4:4:4, описанного в соответствующем уровне техники.
СРЕДСТВА РЕШЕНИЯ ЗАДАЧ
Кодер изображения, согласно настоящему изобретению, включает в себя:
блок генерации прогнозируемого изображения, который генерирует прогнозируемое изображение в соответствии с совокупностью режимов прогнозирования, указывающих метод генерации прогнозируемого изображения;
блок принятия решения относительно режима прогнозирования, который оценивает эффективность прогнозирования прогнозируемого изображения, выводимого из блока генерации прогнозируемого изображения, для принятия решения относительно заранее определенного режима прогнозирования; и
блок кодирования, который подвергает выходной сигнал блока принятия решения относительно режима прогнозирования кодированию с переменной длиной слова, в котором
блок принятия решения относительно режима прогнозирования принимает решение, на основании заранее определенного сигнала управления, какой из общего режима прогнозирования и отдельного режима прогнозирования используется для соответствующих цветовых компонентов, образующих входной сигнал изображения, и мультиплексирует информацию о сигнале управления в битовый поток, мультиплексирует, когда используется общий режим прогнозирования, информацию общего режима прогнозирования в битовый поток, и мультиплексирует, когда общий режим прогнозирования не используется, информацию режима прогнозирования для каждого из цветовых компонентов в битовый поток.
ПРЕИМУЩЕСТВА ИЗОБРЕТЕНИЯ
Согласно кодеру изображения, декодеру изображения, способу кодирования изображения, способу декодирования изображения, программам для выполнения этих способов и носителям записи, на которые эти программы записаны, отвечающим изобретению, при осуществлении кодирования с использованием не только фиксированных цветовых пространств, например, Y, Cb и Cr, но также различных цветовых пространств, можно гибко выбирать информацию режима интрапрогнозирования и информацию режима интерпрогнозирования, используемые в соответствующих цветовых компонентах, и можно осуществлять оптимальную обработку кодирования даже при разнообразных определениях цветовых пространств.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 - схема, поясняющая структуру видеокодера согласно первому варианту осуществления.
Фиг.2 - схема, поясняющая структуру видеодекодера согласно первому варианту осуществления.
Фиг.3 - схема, поясняющая метод генерации прогнозируемого изображения в режиме интрапрогнозирования 4×4, оцененном блоком 2 пространственного прогнозирования, показанным на фиг.1.
Фиг.4 - схема, поясняющая метод генерации прогнозируемого изображения в режиме интрапрогнозирования 16×16, оцененном блоком 2 пространственного прогнозирования, показанным на фиг.1.
Фиг.5 - логическая блок-схема, поясняющая процедуру обработки принятия решения относительно режима интрапрогнозирования, осуществляемую в видеокодере, показанном на фиг.1.
Фиг.6 - схема, поясняющая массив данных битового потока видеосигнала, выводимого из видеокодера согласно первому варианту осуществления.
Фиг.7 - логическая блок-схема, поясняющая процедуру обработки декодирования интрапрогнозирования, осуществляемую в видеодекодере, показанном на фиг.2.
Фиг.8 - схема, поясняющая режим другого массива данных битового потока видеосигнала, выводимый из видеокодера, согласно первому варианту осуществления.
Фиг.9 - схема, поясняющая метод генерации прогнозируемого изображения в режиме интрапрогнозирования, адаптированный к цветоразностным компонентам согласно стандарту AVC.
Фиг.10 - схема, поясняющая традиционный и настоящий макроблоки.
Фиг.11 - схема, поясняющая структуру видеокодера согласно второму варианту осуществления.
Фиг.12 - схема, поясняющая структуру видеодекодера согласно второму варианту осуществления.
Фиг.13 - схема, поясняющая метод генерации прогнозируемого изображения в режиме интрапрогнозирования 8×8, оцененном блоком 2 пространственного прогнозирования, показанным на фиг.11.
Фиг.14 - логическая блок-схема, поясняющая процедуру обработки принятия решения относительно режима интракодирования, осуществляемую в видеокодере, показанном на фиг.11.
Фиг.15 - схема, поясняющая массив данных битового потока видеосигнала, выводимого из видеокодера, согласно второму варианту осуществления.
Фиг.16 - схема, поясняющая другой массив данных битового потока видеосигнала, выводимого из видеокодера, согласно второму варианту осуществления.
Фиг.17 - логическая блок-схема, поясняющая процедуру обработки декодирования интрапрогнозирования, осуществляемую в видеодекодере, показанном на фиг.12.
Фиг.18 - схема, поясняющая параметры обработки кодирования режима интрапрогнозирования компонента C0, согласно третьему варианту осуществления.
Фиг.19 - схема, поясняющая параметры обработки кодирования режима интрапрогнозирования компонента C1, согласно третьему варианту осуществления.
Фиг.20 - схема, поясняющая параметры обработки кодирования режима интрапрогнозирования компонента C2, согласно третьему варианту осуществления.
Фиг.21 - логическая блок-схема, демонстрирующая порядок обработки кодирования режима интрапрогнозирования согласно третьему варианту осуществления.
Фиг.22 - логическая блок-схема, демонстрирующая другой порядок обработки кодирования режима интрапрогнозирования согласно третьему варианту осуществления.
Фиг.23 - логическая блок-схема, демонстрирующая порядок обработки декодирования режима интрапрогнозирования согласно третьему варианту осуществления.
Фиг.24 - схема, поясняющая другой массив данных битового потока видеосигнала, выводимого из видеокодера, согласно четвертому варианту осуществления.
Фиг.25 - логическая блок-схема, демонстрирующая другой порядок обработки кодирования режима интрапрогнозирования согласно пятому варианту осуществления.
Фиг.26 - схема, поясняющая табулированные правила задания прогнозируемого значения согласно пятому варианту осуществления.
Фиг.27 - логическая блок-схема, демонстрирующая процедуру кодирования согласно шестому варианту осуществления.
Фиг.28 - схема, поясняющая структуру двоичной последовательности CurrIntraPredMode согласно шестому варианту осуществления.
Фиг.29 - схема, поясняющая другую структуру двоичной последовательности CurrIntraPredMode согласно шестому варианту осуществления.
Фиг.30 - схема, поясняющая структуру видеокодера согласно седьмому варианту осуществления.
Фиг.31 - схема, поясняющая структуру видеодекодера согласно седьмому варианту осуществления.
Фиг.32 - схема, поясняющая единицу макроблока.
Фиг.33 - логическая блок-схема, демонстрирующая порядок обработки принятия решения относительно режима интерпрогнозирования согласно седьмому варианту осуществления.
Фиг.34 - схема, поясняющая массив данных видеопотока, выводимого из видеокодера, согласно седьмому варианту осуществления.
Фиг.35 - логическая блок-схема, демонстрирующая ход обработки, осуществляемый блоком 25 декодирования с переменной длиной слова, согласно седьмому варианту осуществления.
Фиг.36 - схема, поясняющая другой массив данных видеопотока, выводимого из видеокодера, согласно седьмому варианту осуществления.
Фиг.37 - схема, поясняющая еще один массив данных видеопотока, выводимого из видеокодера, согласно седьмому варианту осуществления.
Фиг.38 - логическая блок-схема, демонстрирующая порядок обработки принятия решения относительно режима интерпрогнозирования согласно восьмому варианту осуществления.
Фиг.39 - схема, поясняющая массив данных битового потока на уровне макроблоков согласно восьмому варианту осуществления.
Фиг.40 - логическая блок-схема, демонстрирующая порядок обработки генерации интерпрогнозируемого изображения согласно восьмому варианту осуществления.
Фиг.41 - схема, поясняющая другой массив данных битового потока на уровне макроблока согласно восьмому варианту осуществления.
Фиг.42 - схема, поясняющая еще один массив данных битового потока на уровне макроблока согласно восьмому варианту осуществления.
Фиг.43 - логическая блок-схема, демонстрирующая порядок обработки принятия решения относительно режима интерпрогнозирования согласно девятому варианту осуществления.
Фиг.44 - логическая блок-схема, демонстрирующая порядок обработки генерации интерпрогнозируемого изображения согласно девятому варианту осуществления.
Фиг.45 - схема, поясняющая структуру блока кодирования вектора движения.
Фиг.46 - схема, поясняющая операции блока кодирования вектора движения.
Фиг.47 - схема, поясняющая структуру блока декодирования вектора движения.
Фиг.48 - схема, поясняющая состояние битового потока синтаксис.
Фиг.49 - схема, поясняющая структуру данных, кодированных в единицах макроблоков, согласно одиннадцатому варианту осуществления.
Фиг.50 - схема, поясняющая детальную структуру кодированных данных информации заголовка компонента Cn, показанных на фиг.49, согласно одиннадцатому варианту осуществления.
Фиг.51 - схема, поясняющая другую структуру данных, кодированных в единицах макроблоков, согласно одиннадцатому варианту осуществления.
Фиг.52 - схема, поясняющая структуру битового потока согласно одиннадцатому варианту осуществления.
Фиг.53 - схема, поясняющая структуру среза согласно одиннадцатому варианту осуществления.
Фиг.54 - схема, поясняющая внутреннюю структуру, относящуюся к обработке арифметического кодирования блока 11 кодирования с переменной длиной слова согласно двенадцатому варианту осуществления.
Фиг.55 - логическая блок-схема, демонстрирующая порядок обработки арифметического кодирования блока 11 кодирования с переменной длиной слова согласно двенадцатому варианту осуществления.
Фиг.56 - схема, поясняющая детальный ход обработки на этапе S162, показанном на фиг.55, согласно двенадцатому варианту осуществления.
Фиг.57 - схема, поясняющая концепцию контекстуальной модели (ctx).
Фиг.58 - схема, поясняющая пример контекстуальной модели, касающейся вектора движения макроблока.
Фиг.59 - схема, поясняющая внутреннюю структуру, относящуюся к обработке арифметического декодирования блока 25 декодирования с переменной длиной слова согласно двенадцатому варианту осуществления.
Фиг.60 - логическая блок-схема, демонстрирующая порядок обработки арифметического декодирования блока 25 декодирования с переменной длиной слова согласно двенадцатому варианту осуществления.
Фиг.61 - схема, поясняющая контекстуальную модель 11f согласно двенадцатому варианту осуществления.
Фиг.62 - схема, поясняющая различие в режиме текущего макроблока согласно двенадцатому варианту осуществления.
Фиг.63 - схема, поясняющая структуры кодера и декодера согласно тринадцатому варианту осуществления.
Фиг.64 - схема, поясняющая структуру видеокодера согласно тринадцатому варианту осуществления.
Фиг.65 - схема, поясняющая структуру видеодекодера согласно тринадцатому варианту осуществления.
Фиг.66 - схема, поясняющая общую обработку кодирования согласно четырнадцатому варианту осуществления.
Фиг.67 - схема, поясняющая независимую обработку кодирования согласно четырнадцатому варианту осуществления.
Фиг.68 - схема, поясняющая соотношение опорного прогнозирования движения во временном измерении между изображениями в кодере и декодере согласно четырнадцатому варианту осуществления.
Фиг.69 - схема, поясняющая пример структуры битового потока, сгенерированной кодером согласно четырнадцатому варианту осуществления и подвергаемой обработке ввода/декодирования декодером согласно четырнадцатому варианту осуществления.
Фиг.70 - схема, поясняющая структуры битового потока для данных среза в случаях общей обработки кодирования и независимой обработки кодирования, соответственно.
Фиг.71 - схема, поясняющая схематическую структуру кодера согласно четырнадцатому варианту осуществления.
Фиг.72 - схема, поясняющая состояние, в котором задержка обработки на стороне кодера снижена.
Фиг.73 - схема, поясняющая внутреннюю структуру первого блока кодирования изображения.
Фиг.74 - схема, поясняющая внутреннюю структуру второго блока кодирования изображения.
Фиг.75 - схема, поясняющая схематическую структуру декодера согласно четырнадцатому варианту осуществления.
Фиг.76 - схема, поясняющая внутреннюю структуру первого блока декодирования изображения.
Фиг.77 - схема, поясняющая внутреннюю структуру второго блока декодирования изображения.
Фиг.78 - схема, поясняющая внутреннюю структуру первого блока кодирования изображения, подвергнутого обработке преобразования цветового пространства.
Фиг.79 - схема, поясняющая внутреннюю структуру первого блока кодирования изображения, подвергнутого обработке преобразования цветового пространства.
Фиг.80 - схема, поясняющая внутреннюю структуру первого блока кодирования изображения, подвергнутого обработке обратного преобразования цветового пространства.
Фиг.81 - схема, поясняющая внутреннюю структуру первого блока кодирования изображения, подвергнутого обработке обратного преобразования цветового пространства.
Фиг.82 - схема, поясняющая структуру кодированных данных информации заголовка макроблока, включенной в битовый поток традиционного формата YUV 4:2:0.
Фиг.83 - схема, поясняющая внутреннюю структуру блока прогнозирования 461 первого блока декодирования изображения, которая обеспечивает совместимость традиционного формата YUV 4:2:0 с битовым потоком.
Фиг.84 - схема, поясняющая структуру битового потока кодированных данных, подлежащего мультиплексированию, согласно пятнадцатому варианту осуществления.
Фиг.85 - схема, поясняющая информацию о типе кодирования изображения во время кодирования данных изображения в блоке доступа? начиная с блока AUD NAL.
Фиг.86 - схема, поясняющая структуру битового потока кодированных данных, подлежащего мультиплексированию, согласно пятнадцатому варианту осуществления.
ОПИСАНИЕ СИМВОЛОВ
1 входной видеосигнал
2 блок пространственного прогнозирования
3 вычитатель
4 разностный сигнал прогнозирования
5 блок принятия решения относительно режима кодирования
6 режим кодирования
7 прогнозируемое изображение
8 блок преобразования
9 блок квантования
10 квантованный коэффициент преобразования
11 блок кодирования с переменной длиной слова
11a блок определения контекстуальной модели
11b блок преобразования к двоичному виду
11c блок генерации вероятности появления
11d блок кодирования
11e кодированное значение
11f контекстуальная модель
11g память для хранения информации вероятности появления
11h состояние вероятности появления
12 блок обратного квантования
13 блок обратного преобразования
14 разностный сигнал прогнозирования локального декодирования
15 локально декодированное изображение (внутренне декодированное изображение)
16 память
17 буфер передачи
18 сумматор
19 блок управления кодированием
20 весовой коэффициент
21 параметр квантования
22 видеопоток
23 флаг идентификации общего использования режима интрапрогнозирования
24 флаг управления разблокирующим фильтром
25 блок декодирования с переменной длиной слова
25a блок декодирования
25b восстановленное значение участка
26 разблокирующий фильтр
27 декодированное изображение
28 режим интракодирования
29 базовый режим интрапрогнозирования
30 расширенный режим интрапрогнозирования
31 флаг индикации таблицы расширенных режимов интрапрогнозирования
32 флаг идентификации размера блока преобразования
33 флаг идентификации общего использования режима интракодирования
34 режим интракодирования
35 режим интрапрогнозирования
36 флаг индикации режима интрапрогнозирования
102 блок прогнозирования с компенсацией движения
106 тип макроблока/тип субмакроблока
123 флаг идентификации общего использования режима интерпрогнозирования
123b флаг идентификации общего использования вектора движения
123c флаг идентификации общего использования заголовка макроблока
128 базовый тип макроблока
128b тип макроблока
129 базовый тип субмакроблока
129b тип субмакроблока
130 расширенный тип макроблока
131 расширенный тип субмакроблока
132 идентификационный номер базового опорного изображения
132b идентификационный номер опорного изображения
133 информация базового вектора движения
134 расширенный опорный идентификационный номер
135 информация расширенного вектора движения
136 информация профиля
137 вектор движения
138, 138a, 138b, 138c информация индикации пропуска
139a, 139b, 139c информация заголовка
140a, 140b, 140c данные коэффициентов преобразования
141 режим интрапрогнозирования
142 информация индикации эффективности/неэффективности коэффициентов преобразования
143 флаг идентификации общего использования параметра состояния вероятности появления
144 режим интрапрогнозирования цветоразностного сигнала
111 блок прогнозирования вектора движения
112 блок вычисления разностного вектора движения
113 разностный вектор движения блока кодирования с переменной длиной слова
250 блок декодирования вектора движения
251 блок декодирования разностного вектора движения с переменной длиной слова
252 блок прогнозирования вектора движения
253 блок вычисления вектора движения
301 блок преобразования цветового пространства
302 преобразованный видеосигнал
303 кодер
304 информация идентификации метода преобразования цветового пространства
305 битовый поток
306 декодер
307 декодированное изображение
308 блок обратного преобразования цветового пространства
310 блок преобразования
311 информация идентификации метода преобразования цветового пространства
312 блок обратного преобразования
422a, 422b0, 422b1, 422b2, 422c видеопоток
423 сигнал идентификации общего кодирования/независимого кодирования
427a, 427b декодированное изображение
461 блок прогнозирования
462 разблокирующий фильтр
463 прогнозируемая служебная информация
464 флаг указания преобразованного размера блока
465 блок преобразования цветового пространства
466 блок обратного преобразования цветового пространства
467 информация сигнализации
501, 601 переключатель
502 блок разделения цветовых компонентов
503a первый блок кодирования изображения
503b0, 503b1, 503b2 второй блок кодирования изображения
504 блок мультиплексирования
602 блок принятия решения относительно цветового компонента
603a первый блок декодирования изображения
603b0, 603b1, 603b2 второй блок декодирования изображения
610 блок анализа верхнего заголовка
4611a, 4611b, 4611c блок изменения
4612 блок интрапрогнозирования сигнала яркости
4613 блок интрапрогнозирования цветоразностного сигнала
4614 блок интерпрогнозирования сигнала яркости
4615 блок интерпрогнозирования цветоразностного сигнала
ПРЕДПОЧТИТЕЛЬНЫЕ ВАРИАНТЫ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
Первый вариант осуществления
Согласно первому варианту осуществления будут объяснены кодер, который осуществляет кодирование, заключенное в кадре, в единицах, полученных равным делением видеокадра, введенного в формате 4:4:4, на прямоугольные области (макроблоки) 16×16 пикселей, и декодер, соответствующий кодеру. Характеристики, отвечающие изобретению, сообщаются кодеру и декодеру на основании системы кодирования, принятой в стандарте MPEG-4 AVC(ISO/IEC 14496-10)/ITU-TH.264, который представляет собой непатентный документ 1.
Структура видеокодера согласно первому варианту осуществления показана на фиг.1. Структура видеодекодера согласно первому варианту осуществления показана на фиг.2. На фиг.2 компоненты, обозначенные позициями, идентичными позициям, обозначающим компоненты кодера, показанного на фиг.1, являются идентичными компонентами.
Операции кодера в целом и декодера в целом, обработка принятия решения относительно режима интрапрогнозирования и обработка декодирования интрапрогнозирования, которые являются характерными операциями согласно первому варианту осуществления, будут объяснены на основании этих фигур.
1. Описание работы кодера
В кодере, показанном на фиг.1, соответствующие видеокадры вводятся в качестве входного видеосигнала 1 в формате 4:4:4. Вводимые видеокадры вводятся в кодер в единицах макроблоков, полученных делением трех цветовых компонентов на блоки 16 пикселей × 16 пикселей идентичного размера и размещением блоков, как показано на фиг.10.
Прежде всего, блок пространственного прогнозирования 2 осуществляет обработку интрапрогнозирования для каждого из цветовых компонентов в единицах макроблоков с использованием локально декодированного изображения 15, хранящегося в памяти 16. Три блока памяти подготавливаются для соответствующих цветовых компонентов (хотя в объяснении этого варианта осуществления подготавливаются три блока памяти, количество блоков памяти можно соответственно изменять в зависимости от фактической реализации). Режимы интрапрогнозирования представляют собой режим интрапрогнозирования 4×4 для осуществления пространственного прогнозирования, в котором, в единицах блоков 4 пикселя × 4 линии, показанных на фиг.3, используются соседние пиксели блока, и режим интрапрогнозирования 16×16 для осуществления пространственного прогнозирования, в котором, в единицах макроблоков 16 пикселей × 16 линий, показанных на фиг.4, используются соседние пиксели макроблока.
(a) Режим интрапрогнозирования 4×4
Блок 16×16 пикселей сигнала яркости в макроблоке делится на шестнадцать блоков, образованных блоками 4×4 пикселя. Любой из девяти режимов, показанных на фиг.3, выбирается в единицах блоков 4×4 пикселя. Пиксели блоков (верхний левый, верхний, верхний правый и левый) вокруг блока уже закодированного, подвергнутого обработке локального декодирования, и сохраненного в памяти 16, используются для генерации прогнозируемого изображения.
Intra4×4_pred_mode=0: Соседний пиксель вверху используется в качестве прогнозируемого изображения как есть.
Intra4×4_pred_mode=1: Соседний пиксель слева используется в качестве прогнозируемого изображения как есть.
Intra4×4_pre_mode=2: Среднее значение соседних восьми пикселей используется в качестве прогнозируемого изображения.
Intra4×4_pred_mode=3: Взвешенное среднее вычисляется для каждых двух-трех пикселей из соседних пикселей и используется в качестве прогнозируемого изображения (соответствующего краю на 45 градусов вправо).
Intra4×4_pred_mode=4: Взвешенное среднее вычисляется для каждых двух-трех пикселей из соседних пикселей и используется в качестве прогнозируемого изображения (соответствующего краю на 45 градусов влево).
Intra4×4_pred_mode=5: Взвешенное среднее вычисляется для каждых двух-трех пикселей из соседних пикселей и используется в качестве прогнозируемого изображения (соответствующего краю на 22,5 градусов влево).
Intra4×4_pred_mode=6: Взвешенное среднее вычисляется для каждых двух-трех пикселей из соседних пикселей и используется в качестве прогнозируемого изображения (соответствующего краю на 67,5 градусов влево).
Intra4×4_pred_mode=7: Взвешенное среднее вычисляется для каждых двух-трех пикселей из соседних пикселей и используется в качестве прогнозируемого изображения (соответствующего краю на 22,5 градусов вправо).
Intra4×4_pred_mode=8: Взвешенное среднее вычисляется для каждых двух-трех пикселей из соседних пикселей и используется в качестве прогнозируемого изображения (соответствующего краю на 112,5 градусов влево).
При выборе режима интрапрогнозирования 4×4 шестнадцать фрагментов информации режима необходимы для каждого макроблока. Таким образом, для сокращения объема кодов самой информации режима, с учетом того факта, что информация режима имеет высокую корреляцию с соседствующим с ним блоком, кодирование прогнозирования осуществляется на основании информации режима на соседнем блоке.
(b) Режим интрапрогнозирования 16×16
Режим кодирования с интрапрогнозированием 16×16 - это режим для прогнозирования блоков 16×16 пикселей, эквивалентных по размеру макроблока в данный момент времени. Любой из четырех режимов, показанных на фиг.4, выбирается в единицах макроблоков. Таким же образом, как в режиме интрапрогнозирования 4×4, пиксели блоков (верхний левый, верхний и левый) вокруг блока уже закодированного, подвергнутого обработке локального декодирования, и сохраненного в памяти 16, используются для генерации прогнозируемого изображения.
Intra16×16_pred_mode=0: Шестнадцать пикселей на нижней стороне верхнего макроблока используются в качестве прогнозируемого изображения.
Intra16×16_pred_mode=1: Шестнадцать пикселей на правой стороне левого макроблока используются в качестве прогнозируемого изображения.
Intra16×16_pred_mode=2: Среднее значение тридцати двух пикселей, в совокупности, включающих в себя шестнадцать пикселей на нижней стороне верхнего макроблока (часть A на фиг.4) и шестнадцать пикселей на левой стороне левого макроблока (часть B на фиг.4), используется в качестве прогнозируемого изображения.
Intra16×16_pred_mode=3: Прогнозируемое изображение получается посредством заранее определенной обработки арифметической операции (обработка взвешенного суммирования, соответствующая используемому пикселю и прогнозируемой позиции пикселя) с использованием тридцати одного пикселя, в совокупности, включающих в себя пиксель на нижнем правом углу макроблока, над верхними левыми пятнадцатью пикселями на нижней стороне верхнего макроблока (часть, исключающая пустые пиксели) и пятнадцатью пикселями на правой стороне левого макроблока (часть, исключающая пустые пиксели).
Видеокодер согласно первому варианту осуществления характеризуется изменением метода обработки интрапрогнозирования для трех цветовых компонентов на основании флага 23 идентификации общего использования режима интрапрогнозирования. Этот момент будет подробно описан ниже в пункте 2.
Блок пространственного прогнозирования 2 выполняет обработку прогнозирования на всех режимах или подмножествах, показанных на фиг.3 и 4, для получения разностного сигнала прогнозирования 4 с использованием вычитателя 3. Эффективность прогнозирования разностного сигнала прогнозирования 4 оценивается блоком 5 принятия решения относительно режима кодирования. Режим прогнозирования, в котором оптимальная эффективность прогнозирования получается для макроблока, заданного как объект прогнозирования, выводится в качестве режима кодирования 6 из обработки прогнозирования, выполняемой блоком пространственного прогнозирования 2. Режим кодирования 6 включает в себя соответствующие разновидности информации режима прогнозирования (Intra4×4_pred_mode или Intra16×16_pred_mode), используемые для единичной области прогнозирования совместно с информацией принятия решения (эквивалентной режиму интракодирования, показанному на фиг.6), указывающей, используется ли режим интрапрогнозирования 4×4 или режим интрапрогнозирования 16×16. Единичная область прогнозирования эквивалентна блоку 4×4 пикселя в случае intra4×4_pred_mode и эквивалентна блоку 16×16 пикселей в случае режима интрапрогнозирования 16×16. При выборе режима кодирования 6 можно учитывать весовой коэффициент 20 для каждого режима кодирования, установленного посредством принятия решения блока 19 управления кодированием. Оптимальный разностный сигнал прогнозирования 4, полученный с использованием режима кодирования 6 на блоке 5 принятия решения относительно режима кодирования, выводится на блок преобразования 8. Блок преобразования 8 преобразует введенный разностный сигнал прогнозирования 4 в коэффициент преобразования и выводит коэффициент преобразования на блок квантования 9. Блок квантования 9 квантует введенный коэффициент преобразования на основании параметра квантования 21, заданного блоком 19 управления кодированием, и выводит коэффициент преобразования на блок 11 кодирования с переменной длиной слова в качестве квантованного коэффициента преобразования 10. Квантованный коэффициент преобразования 10 подвергается энтропийному кодированию посредством, например, кодирования Хаффмана или арифметического кодирования на блоке 11 кодирования с переменной длиной слова. Квантованный коэффициент преобразования 10 восстанавливается до разностного сигнала прогнозирования локального декодирования 14 посредством блока 12 обратного квантования и блока 13 обратного преобразования. Квантованный коэффициент преобразования 10 суммируется с прогнозируемым изображением 7, которое генерируется на основании режима кодирования 6, сумматором 18 для генерации локально декодированного изображения 15. Локально декодированное изображение 15 сохраняется в памяти 16 для дальнейшего использования при обработке интрапрогнозирования. Флаг 24 управления разблокирующим фильтром, указывающий, применяется ли разблокирующий фильтр к макроблоку, также вводится в блок 11 кодирования с переменной длиной слова (При обработке прогнозирования, выполняемой блоком пространственного прогнозирования 2, поскольку пиксельные данные, до обработки разблокирующим фильтром, сохраняются в памяти 16, обработка разблокирующего фильтра сама по себе не обязательна для обработки кодирования. Однако разблокирующий фильтр действует согласно указанию флага 24 управления разблокирующим фильтром на стороне декодера для получения окончательного декодированного изображения.).
Флаг 23 идентификации общего использования режима интрапрогнозирования, квантованный коэффициент преобразования 10, режим кодирования 6 и параметр квантования 21, введенные в блок 11 кодирования с переменной длиной слова, упорядочены и сформированы в виде битового потока в соответствии с заранее определенным правилом (синтаксисом) и выводятся в буфер передачи 17. Буфер передачи 17 сглаживает битовый поток согласно полосе линии передачи, к которой подключен кодер, и скорости чтения носителя записи и выводит битовый поток в качестве видеопотока 22. Буфер передачи 17 выводит информацию обратной связи на блок 19 управления кодированием согласно состоянию накопления битового потока в буфер передачи 17 и затем управляет объемом генерируемых кодов при кодировании видеокадров.
2. Обработка принятия решения относительно режима интрапрогнозирования в кодере
Ниже подробно описана обработка принятия решения относительно режима интрапрогнозирования, которая является характеристикой кодера согласно первому варианту осуществления. Эта обработка осуществляется в единицах макроблоков, в которых размещены три цветовых компонента. Обработка осуществляется, в основном, блоком пространственного прогнозирования 2 и блоком 5 принятия решения относительно режима кодирования в кодере, показанном на фиг.1. Логическая блок-схема, демонстрирующая ход обработки, показана на фиг.5. Данные изображения трех цветовых компонентов, образующих блок, обозначаются ниже C0, C1 и C2.
Прежде всего, блок 5 принятия решения относительно режима кодирования принимает флаг 23 идентификации общего использования режима интрапрогнозирования и принимает решение, на основании значения флага 23 идентификации общего использования режима интрапрогнозирования, используется ли режим интрапрогнозирования, общий для C0, C1 и C2 (этап S1 на фиг.5). При использовании общего режима интрапрогнозирования блок 5 принятия решения относительно режима кодирования переходит к этапу S2 и последующим этапам. В случае неиспользования общего режима интрапрогнозирования блок 5 принятия решения относительно режима кодирования переходит к этапу S5 и последующим этапам.
Когда режим интрапрогнозирования используется совместно для C0, C1 и C2, блок 5 принятия решения относительно режима кодирования извещает блок пространственного прогнозирования 2 обо всех режимах интрапрогнозирования 4×4, которые можно выбрать. Блок пространственного прогнозирования 2 оценивает эффективности прогнозирования для всех 4×4 режимов прогнозирования и выбирает оптимальный режим интрапрогнозирования 4×4, общий для C0, C1 и C2 (этап S2). Затем блок 5 принятия решения относительно режима кодирования извещает блок пространственного прогнозирования 2 обо всех режимах интрапрогнозирования 16×16, которые можно выбрать. Блок пространственного прогнозирования 2 оценивает эффективности прогнозирования всех режимов интрапрогнозирования 16×16 и выбирает оптимальный режим интрапрогнозирования 16×16, общий для C0, C1 и C2 (этап S3). Наконец, блок 5 принятия решения относительно режима кодирования выбирает оптимальный режим в отношении эффективности прогнозирования в режимах, полученных на этапах S2 и S3 (этап S4), и заканчивает обработку.
Когда режим интрапрогнозирования не используется совместно для C0, C1 и C2 и для C0, C1 и C2, соответственно выбираются наилучшие режимы, блок 5 принятия решения относительно режима кодирования извещает блок пространственного прогнозирования 2 обо всех режимах интрапрогнозирования 4×4, которые можно выбрать для компонентов Ci (i<=0<3). Блок пространственного прогнозирования 2 оценивает эффективности прогнозирования для всех режимов интрапрогнозирования 4×4 и выбирает оптимальный режим интрапрогнозирования 4×4 в компонентах Ci (i<=0<3) (этап S6). Аналогично, блок пространственного прогнозирования 2 выбирает оптимальный режим интрапрогнозирования 16×16 (этап S7). Наконец, на этапе S8 блок пространственного прогнозирования 2 принимает решение относительно оптимального режима интрапрогнозирования в компонентах Ci (i<=0<3).
В качестве стандарта для оценки эффективности прогнозирования для режима прогнозирования, осуществляемой в блоке пространственного прогнозирования 2, можно, например, использовать стоимость скорости/искажения, заданную как Jm=Dm+ Rm ( : положительное число). Dm - это величина искажения кодирования или ошибки прогнозирования в случае применения режима интрапрогнозирования m. Искажение кодирования получается с применением режима интрапрогнозирования m для вычисления ошибки прогнозирования и декодирования видеосигнала из результата, полученного путем преобразования и квантования ошибки прогнозирования для измерения ошибки относительно сигнала до кодирования. Величина ошибки прогнозирования получается путем вычисления разности между прогнозируемым изображением и сигналом до кодирования в случае, когда применяется режим интрапрогнозирования m и квантования уровня разности. Например, используется сумма абсолютных расстояний (SAD). Rm - это объем генерируемых кодов в случае, когда применяется режим интрапрогнозирования m. Иными словами, Jm - это значение, задающее компромисс между объемом кодов и степенью ухудшения в случае, когда применяется режим интрапрогнозирования m. Режим интрапрогнозирования m, дающий минимальное Jm, является оптимальным решением.
Когда кодер осуществляет обработку на этапе S2 и последующих этапах, один фрагмент информации о режиме интрапрогнозирования выделяется макроблоку, включающему в себя три цветовых компонента. С другой стороны, когда кодер осуществляет обработку на этапе S5 и последующих этапах, информация режима интрапрогнозирования выделяется цветовым компонентам, соответственно. Таким образом, поскольку фрагменты информации о режимах интрапрогнозирования, выделенные макроблоку, различаются, необходимо мультиплексировать флаг 23 идентификации общего использования режима интрапрогнозирования в битовый поток и дать возможность декодеру распознавать, осуществил ли кодер этапы обработки на этапе S2 и последующих этапах или осуществил этапы обработки на этапе S5 и последующих этапах. Массив данных такого битового потока показан на фиг.6.
На фиг.6 показан массив данных битового потока на уровне макроблоков. Режим интракодирования 28 указывает информацию, позволяющую различать intra 4×4 и intra 16×16, и базовый режим интрапрогнозирования 29 указывает информацию общего режима интрапрогнозирования в случае, когда флаг 23 идентификации общего использования режима интрапрогнозирования указывает "общий для C0, C1 и C2". Базовый режим интрапрогнозирования 29 указывает информацию режима интрапрогнозирования для C0, когда флаг 23 идентификации общего использования режима интрапрогнозирования указывает "не общий для C0, C1 и C2". Расширенный режим интрапрогнозирования 30 мультиплексируется только, когда флаг 23 идентификации общего использования режима интрапрогнозирования указывает "не общий для C0, C1 и C2". Расширенный режим интрапрогнозирования 30 указывает информацию режима интрапрогнозирования для C1 и C2. Затем, параметр квантования 21 и квантованный коэффициент преобразования 10 мультиплексируются. Режим кодирования 6, показанный на фиг.1, является общим членом режима интракодирования 28 и режимов интрапрогнозирования (базового и расширенного) (хотя флаг 24 управления разблокирующим фильтром, введенный в блок 11 кодирования с переменной длиной слова, показанный на фиг.1, не включен в фиг.6, флаг 24 управления разблокирующим фильтром опущен, поскольку флаг не является компонентом, необходимым для пояснения характеристик первого варианта осуществления).
В формате 4:2:0, принятом в традиционном стандарте кодирования видеосигнала, определение цветовых пространств зафиксировано на Y, Cb и Cr. В формате 4:4:4 определение цветовых пространств не ограничивается Y, Cb и Cr, но можно использовать различные цветовые пространства. Благодаря формированию информации режима интрапрогнозирования, как показано на фиг.6, можно осуществлять оптимальную обработку кодирования даже, когда определение цветовых пространств входного видеосигнала 1 разнообразно. Например, когда цветовые пространства определены как RGB, структура видеотекстуры одинаково остается в соответствующих компонентах R, G и B. Таким образом, с использованием информации общего режима интрапрогнозирования, можно сократить избыточность самой информации режима интрапрогнозирования и повысить эффективность кодирования. С другой стороны, когда цветовые пространства определены как Y, Cb и Cr, структура видеотекстуры интегрируется в Y. Таким образом, общий режим интрапрогнозирования не всегда дает оптимальный результат. Таким образом, можно получить оптимальную эффективность кодирования, адаптивно используя расширенный режим интрапрогнозирования 30.
3. Описание работы декодера
Декодер, показанный на фиг.2, принимает видеопоток 22, отвечающий массиву, показанному на фиг.6, выводимый из кодера, показанного на фиг.1, осуществляет обработку декодирования в единицах макроблоков, в которых три цветовых компонента имеют идентичный размер (формат 4:4:4), и восстанавливает соответствующие видеокадры.
Прежде всего, блок 25 декодирования с переменной длиной слова, на который поступает поток 22, декодирует поток 22 в соответствии с заранее определенным правилом (синтаксисом) и извлекает информацию, включающую в себя флаг 23 идентификации общего использования режима интрапрогнозирования, квантованный коэффициент преобразования 10, режим кодирования 6 и параметр квантования 21. Квантованный коэффициент преобразования 10 вводится в блок обратного квантования 12 совместно с параметром квантования 21, и осуществляется обработка обратного квантования. Затем выходной сигнал блока обратного квантования 12 вводится в блок обратного преобразования 13 и восстанавливается до разностного сигнала прогнозирования локального декодирования 14. С другой стороны, режим кодирования 6 и флаг 23 идентификации общего использования режима интрапрогнозирования вводятся в блок пространственного прогнозирования 2. Блок пространственного прогнозирования 2 получает прогнозируемое изображение 7 в соответствии с этими фрагментами информации. Ниже будет описана конкретная процедура для получения прогнозируемого изображения 7. Разностный сигнал прогнозирования локального декодирования 14 и прогнозируемое изображение 7 суммируются сумматором 18 для получения внутренне декодированного изображения 15 (это полностью такой же сигнал, как локально декодированное изображение 15 в кодере). Внутренне декодированное изображение 15 записывается обратно в память 16 для использования при дальнейшем интрапрогнозировании макроблока. Три блока памяти подготавливаются для соответствующих цветовых компонентов (хотя в объяснении этого варианта осуществления подготавливаются три блока памяти, количество блоков памяти можно соответственно изменять согласно конструкции). Разблокирующий фильтр 26 получает команду воздействовать на внутренне декодированное изображение 15 на основании указания флага 24 управления разблокирующим фильтром, декодированного блоком 25 декодирования с переменной длиной слова, для получения окончательного декодированного изображения 27.
4. Обработка декодирования интрапрогнозирования в декодере
Ниже подробно описана обработка генерации интрапрогнозируемого изображения, которая является характеристикой декодера согласно первому варианту осуществления. Эта обработка осуществляется в единицах макроблоков, в которых размещены три цветовых компонента. Обработка осуществляется, в основном, блоком 25 декодирования с переменной длиной слова и блоком пространственного прогнозирования 2 декодера, показанного на фиг.2. Логическая блок-схема, демонстрирующая ход обработки, показана на фиг.7.
Этапы S10-S14 в логической блок-схеме, показанной на фиг.7, осуществляются блоком 25 декодирования с переменной длиной слова. Видеопоток 22, поступающий в блок 25 декодирования с переменной длиной слова, согласуется с массивом данных, показанным на фиг.6. На этапе S10 блок 25 декодирования с переменной длиной слова сначала декодирует режим интракодирования 28 данных, показанный на фиг.6. Затем, блок 25 декодирования с переменной длиной слова декодирует флаг 23 идентификации общего использования режима интрапрогнозирования (этап S11). Кроме того, блок 25 декодирования с переменной длиной слова декодирует базовый режим интрапрогнозирования 29 (этап S12). На этапе S13 блок 25 декодирования с переменной длиной слова принимает решение, используется ли режим интрапрогнозирования совместно для C0, C1 и C2, с использованием результата флага 23 идентификации общего использования режима интрапрогнозирования. При использовании общего режима интрапрогнозирования блок 25 декодирования с переменной длиной слова использует базовый режим интрапрогнозирования 29 для всех из C0, C1 и C2. В случае неиспользования общего режима интрапрогнозирования блок 25 декодирования с переменной длиной слова использует базовый режим интрапрогнозирования 29 в качестве режима для C0 и декодирует расширенный режим интрапрогнозирования 30 (этап S14) для получения информации режима для C1 и C2. Поскольку режим кодирования 6 для соответствующих цветовых компонентов устанавливается на этапах обработки, блок 25 декодирования с переменной длиной слова выводит режим кодирования 6 на блок пространственного прогнозирования 2 и получает интрапрогнозируемые изображения соответствующих цветовых компонентов в соответствии с этапами S15-S17. Процесс для получения интрапрогнозируемых изображений согласуется с процедурами, показанными на фиг.3 и 4, и идентичен обработке, осуществляемой кодером, показанным на фиг.1.
Вариации массива данных битового потока, показанного на фиг.6, показаны на фиг.8. Согласно фиг.7 флаг 23 идентификации общего использования режима интрапрогнозирования мультиплексируется как флаг, расположенный на более высоком уровне данных, например, на уровне среза, изображения или последовательности, а не как флаг на уровне макроблоков. Флаг 31 индикации таблицы расширенных режимов интрапрогнозирования обеспечен для выбора кодовой таблицы, задающей кодовое слово расширенного режима интрапрогнозирования 30 из совокупности кодовых таблиц. Следовательно, когда возможно обеспечить достаточную эффективность прогнозирования согласно изменению на более высоком уровне, равном или более высоком, чем уровень среза, можно сократить бит служебной информации без мультиплексирования флага 23 идентификации общего использования режима интрапрогнозирования на уровне макроблоков каждый раз при осуществлении обработки. Что касается расширенного режима интрапрогнозирования 30, поскольку обеспечен флаг индикации таблицы расширенных режимов интрапрогнозирования 31, можно выбрать определение режима прогнозирования, заданного для компонентов C1 и C2, вместо определения идентичного определению базового режима интрапрогнозирования 29. Это дает возможность осуществлять обработку кодирования, адаптированную к определению цветовых пространств. Например, при кодировании формата 4:2:0 AVC, набор режимов интрапрогнозирования, отличный от яркости (Y), задается для цветоразностного компонента (Cb и Cr). В формате 4:2:0 цветоразностный сигнал в макроблоке - это сигнал 8 пикселей × 8 линий. Любой из четырех режимов, показанных на фиг.9, выбирается в единицах макроблоков для осуществления обработки декодирования. Хотя существует две разновидности Cb и Cr в качестве цветоразностных сигналов, используется один и тот же режим. За исключением DC прогнозирования intra_chroma_pred_mode=0, обработка прогнозирования такая же, как в режиме интрапрогнозирования 16×16, показанном на фиг.4. В DC прогнозировании блок 8×8 делится на четыре блока 4×4, и позиции пикселей, для каждого из которых вычисляется среднее значение, изменяются для каждого из блоков для осуществления обработки. В блоке, обозначенном на фигуре "a+x, a или x", среднее значение вычисляется с использованием восьми пикселей "a" и "x", когда можно использовать пиксель "a" и пиксель "x", с использованием четырех пикселей "a", когда можно использовать только пиксель "a", и с использованием только четырех пикселей "x", когда можно использовать только пиксель "x". Среднее значение используется в качестве прогнозируемого изображения 7. Значение 128 используется в качестве прогнозируемого изображения 7, когда невозможно использовать пиксели "a" и "x". В блоке, обозначенном "b или x", среднее значение вычисляется с использованием четырех пикселей "b", когда можно использовать изображение "b", и с использованием четырех пикселей "x", когда можно использовать только пиксель "x".
Таким образом, когда необходимо изменить набор режимов интрапрогнозирования согласно характеристикам цветовых компонентов, можно получить более оптимальную эффективность кодирования согласно структуре наподобие синтаксиса, показанного на фиг.8.
Второй вариант осуществления
Согласно второму варианту осуществления будет объяснен другой кодер, который осуществляет кодирование, заключенное в кадре в единицах, полученных равным делением видеокадра, введенного в формате 4:4:4, на прямоугольные области (макроблоки) 16×16 пикселей, и декодер, соответствующий кодеру. Как и в первом варианте осуществления, характеристики, отвечающие изобретению, сообщаются кодеру и декодеру на основании системы кодирования, принятой в стандарте MPEG-4 AVC(ISO/IEC 14496-10)/ITU-TH.264, который представляет собой непатентный документ 1.
Структура видеокодера согласно второму варианту осуществления показанна на фиг.11. Структура видеодекодера согласно второму варианту осуществления показана на фиг.12. На фиг.11 компоненты, обозначенные позициями, идентичными позициям, обозначающим компоненты кодера, показанные на фиг.1, являются идентичными компонентами. На фиг.12 компоненты, обозначенные позициями, идентичными позициям, обозначающим компоненты кодера, показанные на фиг.11, являются идентичными компонентами. На фиг.11 позиция 32 обозначает флаг идентификации размера блока преобразования, и 33 обозначает флаг идентификации общего использования режима интракодирования.
Операции кодера в целом и декодера в целом согласно второму варианту осуществления, обработка принятия решения относительно режима интра-кодирования/прогнозирования и обработка декодирования интрапрогнозирования, которые являются характерными операциями согласно второму варианту осуществления, будут объяснены на основании этих фигур.
1. Описание работы кодера
В кодере, показанном на фиг.11, соответствующие видеокадры вводятся в качестве входного видеосигнала 1 в формате 4:4:4. Вводимые видеокадры вводятся в кодер в единицах, полученных делением трех цветовых компонентов на макроблоки идентичного размера и размещением блоков, как показано на фиг.10.
Блок пространственного прогнозирования 2 осуществляет обработку интрапрогнозирования для каждого из цветовых компонентов в единицах макроблоков с использованием локально декодированного изображения 15, хранящегося в памяти 16. Режимы интрапрогнозирования представляют собой режим интрапрогнозирования 4×4 для осуществления пространственного прогнозирования, в котором, в единицах блоков 4 пикселя × 4 линии, показанных на фиг.3, используются соседние пиксели блока, режим интрапрогнозирования 8×8 для осуществления пространственного прогнозирования, в котором, в единицах блоков 8 пикселей × 8 линий, показанных на фиг.13, используются соседние пиксели блока, и режим интрапрогнозирования 16×16 для осуществления пространственного прогнозирования, в котором, в единицах макроблоков 16 пикселей × 16 линий, показанных на фиг.4, используются соседние пиксели макроблока. В кодере согласно второму варианту осуществления режим интрапрогнозирования 4×4 и режим интрапрогнозирования 8×8 сменяют друг друга и используются в соответствии с состоянием флага 32 идентификации размера блока преобразования. Можно представить, с использованием режима интракодирования, как показано на фиг.6, какой из режимов интрапрогнозирования для прогнозирования 4×4, прогнозирования 8×8 и прогнозирования 16×16 используется для кодирования определенного макроблока. В кодере согласно второму варианту осуществления, в качестве режимов интракодирования, предусмотрены две разновидности режимов кодирования, а именно, режим кодирования с интрапрогнозированием N×N (N равно 4 или 8) для осуществления кодирования с использованием режима интрапрогнозирования 4×4 или режима интрапрогнозирования 8×8 и режим кодирования с интрапрогнозированием 16×16 для осуществления кодирования с использованием режима интрапрогнозирования 16×16. Режимы интракодирования будут описаны ниже, соответственно.
(a) Режим кодирования с интрапрогнозированием N×N
Режим кодирования с интрапрогнозированием N×N - это режим для осуществления кодирования с избирательным изменением режима интрапрогнозирования 4×4 для деления блока 16×16 пикселей сигнала яркости в макроблоке на шестнадцать блоков, образованных блоками 4×4 пикселей, и выбора по отдельности режима прогнозирования для каждого из блоков 4×4 пикселя и режима интрапрогнозирования 8×8 для деления блока 16×16 пикселей сигнала яркости в макроблоке на четыре блока, образованные блоками 8×8 пикселей, и выбора по отдельности режима прогнозирования для каждого из блоков 8×8 пикселей. Изменение режима интрапрогнозирования 4×4 и режима интрапрогнозирования 8×8 связано с состоянием флага 32 идентификации размера блока преобразования. Этот момент будет описан ниже. Что касается режима интрапрогнозирования 4×4, как объяснено согласно первому варианту осуществления, любой из девяти режимов, показанных на фиг.3, выбирается в единицах блоков 4×4 пикселя. Пиксели блоков (верхний левый, верхний, верхний правый и левый) вокруг блока уже закодированного, подвергнутого обработке локального декодирования и сохраненного в памяти 16, используются для генерации прогнозируемого изображения.
С другой стороны, в режиме интрапрогнозирования 8×8, любой из девяти режимов, показанных на фиг.13, выбирается в единицах блоков 8×8 пикселей. Как следует из сравнения с фиг.3, режим интрапрогнозирования 8×8 получается путем изменения метода прогнозирования режима интрапрогнозирования 4×4, подлежащего адаптации к блоку 8×8 пикселей.
Intra8×8_pred_mode=0: Соседний пиксель вверху используется в качестве прогнозируемого изображения как есть.
Intra8×8_pred_mode=1: Соседний пиксель слева используется в качестве прогнозируемого изображения как есть.
Intra8×8_pre_mode=2: Среднее значение соседних восьми пикселей используется в качестве прогнозируемого изображения.
Intra8×8_pred_mode=3: Взвешенное среднее вычисляется для каждых двух-трех пикселей из соседних пикселей и используется в качестве прогнозируемого изображения (соответствующего краю на 45 градусов вправо).
Intra8×8_pred_mode=4: Взвешенное среднее вычисляется для каждых двух-трех пикселей из соседних пикселей и используется в качестве прогнозируемого изображения (соответствующего краю на 45 градусов влево).
Intra8×8_pred_mode=5: Взвешенное среднее вычисляется для каждых двух-трех пикселей из соседних пикселей и используется в качестве прогнозируемого изображения (соответствующего краю на 22,5 градусов влево).
Intra8×8_pred_mode=6: Взвешенное среднее вычисляется для каждых двух-трех пикселей из соседних пикселей и используется в качестве прогнозируемого изображения (соответствующего краю на 67,5 градусов влево).
Intra8×8_pred_mode=7: Взвешенное среднее вычисляется для каждых двух-трех пикселей из соседних пикселей и используется в качестве прогнозируемого изображения (соответствующего краю на 22,5 градусов вправо).
Intra8×8_pred_mode=8: Взвешенное среднее вычисляется для каждых двух-трех пикселей из соседних пикселей и используется в качестве прогнозируемого изображения (соответствующего краю на 112,5 градусов влево).
При выборе режима интрапрогнозирования 4×4 шестнадцать фрагментов информации режима необходимы для каждого макроблока. Таким образом, для сокращения объема кодов самой информации режима, с учетом того факта, что информация режима имеет высокую корреляцию с соседствующим с ним блоком, кодирование прогнозирования осуществляется на основании информации режима на соседнем блоке. Аналогично, при выборе режима интрапрогнозирования 8×8, с учетом того факта, что режим интрапрогнозирования имеет высокую корреляцию с соседним с ним блоком, кодирование прогнозирования осуществляется на основании информации режима на соседнем блоке.
(b) Режим кодирования с интрапрогнозированием 16×16
Режим кодирования с интрапрогнозированием 16×16 - это режим для прогнозирования блоков 16×16 пикселей, эквивалентных по размеру макроблока в данный момент времени. Любой из четырех режимов, показанных на фиг.4, выбирается в единицах макроблоков. Таким же образом, как в режиме интрапрогнозирования 4×4, пиксели блоков (верхний левый, верхний и левый) вокруг блока уже закодированного, подвергнутого обработке локального декодирования и сохраненного в памяти 16, используются для генерации прогнозируемого изображения. Типы режимов объяснены со ссылкой на фиг.4 согласно первому варианту осуществления. В режиме кодирования с интрапрогнозированием 16×16 переменный размер блока всегда равен 4×4. Однако собираются шестнадцать DC (DC компоненты, средние значения) в единицах блоков 4×4. Применяется преобразование в два этапа, т.е. сначала осуществляется преобразование в единицах блоков 4×4 и преобразование AC компонента, оставшегося после удаления DC компонентов для каждого блока 4×4.
Видеокодер согласно второму варианту осуществления отличается тем, что методы интрапрогнозирования/преобразования/кодирования для трех цветовых компонентов изменяются на основании флага 33 идентификации общего использования режима интракодирования. Этот момент будет подробно описан ниже в разделе 2.
Блок пространственного прогнозирования 2 осуществляет оценку режима интрапрогнозирования на основании указания флага 33 идентификации общего использования режима интракодирования для вводимых сигналов трех цветовых компонентов. Флаг 33 идентификации общего использования режима интракодирования указывает, что режим интракодирования вводится для каждого из трех цветовых компонентов, или один и тот же режим интракодирования выделяется по отдельности всем трем компонентам. Причина кроется в описанных ниже базовых сведеньях.
В формате 4:4:4 можно непосредственно использовать RGB для цветовых пространств, отличных от Y, Cb и Cr, цветовых пространств, традиционно используемых для кодирования. В цветовых пространствах Y, Cb и Cr компоненты, в зависимости от структуры текстуры видеосигнала, удаляются из сигналов Cb и Cr. Весьма вероятно, что оптимальный метод интракодирования изменяется между Y компонентом и двумя компонентами Cb и Cr. (Фактически, в системе кодирования для кодирования формата 4:2:0 AVC/H.264, например, высокого профиля 4:2:0, конструкции режимов интрапрогнозирования, используемые для компонента Y и компонентов Cb и Cr, различны). С другой стороны, когда кодирование осуществляется в цветовых пространствах RGB, а не в цветовых пространствах Y, Cb и Cr, удаление структуры текстуры среди цветовых компонентов не осуществляется, и корреляция между компонентами сигнала на идентичном пространстве высока. Таким образом, это дает возможность повышать эффективность кодирования благодаря возможности выбора общего режима интракодирования. Этот момент зависит от определения цветовых пространств и, кроме того, зависит от характеристик видеосигнала, даже если используются конкретные цветовые пространства. Желательно, чтобы система кодирования сама могла адаптивно справляться с такими характеристиками видеосигналов. Таким образом, в этом варианте осуществления флаг 33 идентификации общего использования режима интракодирования предусмотрен в устройстве кодирования, чтобы можно было осуществлять гибкое кодирование видеосигнала в формате 4:4:4.
Блок пространственного прогнозирования 2 выполняет обработку прогнозирования для соответствующих цветовых компонентов на всех режимах интрапрогнозирования, показанных на фиг.3, 4 и 13, или заранее определенном подмножестве согласно состоянию флага 33 идентификации общего использования режима интракодирования, установленного, как описано выше, и получает разностный сигнал прогнозирования 4 с использованием вычитателя 3. Эффективность прогнозирования для разностного сигнала прогнозирования 4 оценивается блоком 5 принятия решения относительно режима кодирования. Блок 5 принятия решения относительно режима кодирования выбирает режим интрапрогнозирования, при котором получается оптимальная эффективность прогнозирования для объектного макроблока из обработки прогнозирования, выполняемой блоком пространственного прогнозирования 2. При выборе интрапрогнозирования N×N блок 5 принятия решения относительно режима кодирования выводит режим кодирования с интрапрогнозированием N×N в качестве режима кодирования 6. Когда режим прогнозирования представляет собой интрапрогнозирование 4×4, блок 5 принятия решения относительно режима кодирования устанавливает флаг 32 идентификации размера блока преобразования в состояние "преобразование к размеру блока 4×4". Когда режим прогнозирования представляет собой интрапрогнозирование 8×8, блок 5 принятия решения относительно режима кодирования устанавливает флаг 32 идентификации размера блока преобразования в состояние "преобразование к размеру блока 8×8". В качестве метода определения флага 32 идентификации размера блока преобразования возможны различные методы. В устройстве кодирования согласно второму варианту осуществления, в качестве базового метода, для задания размера блока в преобразовании остатка, полученного интрапрогнозированием N×N, после того, как оптимальный режим интрапрогнозирования N×N задан блоком 5 принятия решения относительно режима кодирования, флаг 32 идентификации размера блока преобразования определяется согласно значению N режима. Например, размер блока преобразования задается как блок 8×8 пикселей, когда используется режим интрапрогнозирования 4×4. Тогда, весьма вероятно, что пространственная непрерывность сигнала прогнозирования нарушается в единицах блоков 4×4 в разностном сигнале прогнозирования 4, полученном в результате прогнозирования. Если не генерируются высокочастотные компоненты. Таким образом, эффект концентрации мощности сигнала за счет преобразования снижается. Если размер блока преобразования задан как блок 4×4 пикселей согласно режиму прогнозирования, такая проблема не возникает.
Когда блок 5 принятия решения относительно режима кодирования выбирает интрапрогнозирование 16×16, блок 5 принятия решения относительно режима кодирования выводит режим кодирования с интрапрогнозированием 16×16 в качестве режима кодирования 6. При выборе режима кодирования 6 можно учитывать весовой коэффициент 20 для каждого режима кодирования, установленного посредством принятия решения блока 19 управления кодированием.
Разностный сигнал прогнозирования 4, полученный режимом кодирования 6, выводится на блок преобразования 8. Блок преобразования 8 преобразует введенный разностный сигнал прогнозирования в коэффициент преобразования и выводит коэффициент преобразования на блок квантования 9. Блок квантования 9 квантует введенный коэффициент преобразования на основании параметра квантования 21, установленного блоком 19 управления кодированием, и выводит коэффициент преобразования на блок 11 кодирования с переменной длиной слова в качестве квантованного коэффициента преобразования 10.
Когда размер блока преобразования выражается в единицах блоков 4×4, разностный сигнал прогнозирования 4, вводимый в блок преобразования 8, делится в единицах блоков 4×4, подвергается преобразованию и квантуется блоком квантования 9. Когда размер блока преобразования выражается в единицах блоков 8×8, разностный сигнал прогнозирования 4, вводимый в блок преобразования 8, делится в единицах блоков 8×8, подвергается преобразованию и квантуется блоком квантования 9.
Квантованный коэффициент преобразования 10 подвергается энтропийному кодированию посредством, например, кодирования Хаффмана или арифметического кодирования на блоке 11 кодирования с переменной длиной слова. Квантованный коэффициент преобразования 10 восстанавливается до разностного сигнала 14 прогнозирования локального декодирования посредством блока 12 обратного квантования и блока 13 обратного преобразования в размере блока на основании флага 32 идентификации размера блока преобразования. Квантованный коэффициент преобразования 10 суммируется с прогнозируемым изображением 7, которое генерируется на основании режима кодирования 6, сумматором 18 для генерации локального декодированного изображения 15. Локально декодированное изображение 15 сохраняется в памяти 16 для дальнейшего использования при обработке интрапрогнозирования. Флаг 24 управления разблокирующим фильтром, указывающий, применяется ли разблокирующий фильтр к макроблоку, также вводится в блок 11 кодирования с переменной длиной слова (При обработке прогнозирования, выполняемой блоком пространственного прогнозирования 2, поскольку пиксельные данные, до обработки разблокирующим фильтром, сохраняются в памяти 16, обработка разблокирующего фильтра сама по себе не обязательна для обработки кодирования. Однако разблокирующий фильтр действует согласно указанию флага 24 управления разблокирующим фильтром на стороне декодера для получения окончательного декодированного изображения.).
Флаг 33 идентификации общего использования режима интракодирования, квантованный коэффициент преобразования 10, режим кодирования 6 и параметр квантования 21, введенные в блок 11 кодирования с переменной длиной слова, упорядочены и сформированы в виде битового потока в соответствии с заранее определенным правилом (синтаксисом) и выводятся в буфер передачи 17. Буфер передачи 17 сглаживает битовый поток согласно полосе линии передачи, к которой подключен кодер, и скорости чтения носителя записи и выводит битовый поток в качестве видеопотока 22. Буфер передачи 17 выводит информацию обратной связи на блок 19 управления кодированием согласно состоянию накопления битового потока в буфере передачи 17 и затем управляет объемом генерируемых кодов при кодировании видеокадров.
2. Обработка принятия решения относительно режима интра-кодирования/прогнозирования в кодере
Ниже подробно описаны режим интракодирования и обработка принятия решения относительно режима интра-кодирования/прогнозирования, которая является характеристикой кодера согласно второму варианту осуществления. Эта обработка осуществляется в единицах макроблоков, в которых размещены три цветовых компонента. Обработка осуществляется, в основном, блоком пространственного прогнозирования 2 и блоком 5 принятия решения относительно режима кодирования в кодере, показанном на фиг.11. Логическая блок-схема, демонстрирующая ход обработки, показана на фиг.14. Данные изображения трех цветовых компонентов, образующих блок, обозначаются ниже C0, C1 и C2.
Прежде всего, блок 5 принятия решения относительно режима кодирования принимает флаг 33 идентификации общего использования режима интракодирования и принимает решение, на основании значения флага 33 идентификации общего использования режима интракодирования, используется ли режим интракодирования, общий для C0, C1 и C2 (этап S20 на фиг.14). При использовании общего режима интрапрогнозирования блок 5 принятия решения относительно режима кодирования переходит к этапу S21 и последующим этапам. В случае не использования общего режима интрапрогнозирования блок 5 принятия решения относительно режима кодирования переходит к этапу S22 и последующим этапам.
Когда режим интракодирования используется совместно для C0, C1 и C2, блок 5 принятия решения относительно режима кодирования извещает блок пространственного прогнозирования 2 обо всех режимах интрапрогнозирования (интрапрогнозирование N×N и интрапрогнозирование 16×16), которые можно выбрать. Блок пространственного прогнозирования 2 оценивает эффективности прогнозирования для всех режимов прогнозирования и выбирает оптимальный режим интракодирования и режим интрапрогнозирования для всех компонентов (этап S21).
С другой стороны, когда оптимальные режимы интракодирования выбираются для C0, C1 и C2, соответственно, блок 5 принятия решения относительно режима кодирования извещает блок пространственного прогнозирования 2 обо всех режимах интрапрогнозирования (интрапрогнозирование N×N и интрапрогнозирование 16×16), которые можно выбрать для компонентов Ci (i<=0<3). Блок пространственного прогнозирования 2 оценивает эффективности прогнозирования для всех режимов интрапрогнозирования и выбирает оптимальный режим интрапрогнозирования 4×4 в компонентах Ci (i<=0<3) (этап S23).
Когда блок пространственного прогнозирования 2 выбирает режим интрапрогнозирования 4×4 в качестве режима, обеспечивающего оптимальную эффективность прогнозирования на вышеописанных этапах S21 и S23, флаг 32 идентификации размера блока преобразования задается в состоянии "преобразование к размеру блока 4×4". Когда блок пространственного прогнозирования 2 выбирает режим интрапрогнозирования 8×8 в качестве режима, обеспечивающего оптимальную эффективность прогнозирования, флаг 32 идентификации размера блока преобразования задается в состоянии "преобразование к размеру блока 8×8".
В качестве критериев для оценки эффективности прогнозирования для режима прогнозирования, осуществляемой в блоке пространственного прогнозирования 2, можно, например, использовать стоимость скорости/искажения, заданную как Jm=Dm+ Rm ( : положительное число). Dm - это величина искажения кодирования или ошибки прогнозирования в случае применения режима интрапрогнозирования m. Искажение кодирования получается с применением режима интрапрогнозирования m для вычисления ошибки прогнозирования и декодирования видеосигнала из результата, полученного путем преобразования и квантования ошибки прогнозирования для измерения ошибки относительно сигнала до кодирования. Величина ошибки прогнозирования получается путем вычисления разности между прогнозируемым изображением и сигналом до кодирования в случае, когда применяется режим интрапрогнозирования m, и квантования уровня разности. Например, используется сумма абсолютных расстояний (SAD). Rm - это объем генерируемых кодов в случае, когда применяется режим интрапрогнозирования m. Иными словами, Jm - это значение, задающее компромисс между объемом кодов и степенью ухудшения в случае, когда применяется режим интрапрогнозирования m. Режим интрапрогнозирования m, дающий минимальное Jm, является оптимальным решением.
Когда кодер осуществляет обработку на этапе S21 и последующих этапах, один фрагмент информации о режиме интракодирования выделяется макроблоку, включающему в себя три цветовых компонента. С другой стороны, когда кодер осуществляет обработку на этапе S22 и последующих этапах, информация режима интракодирования выделяется цветовым компонентам (трем в совокупности), соответственно. Таким образом, поскольку фрагменты информации о режимах интрапрогнозирования, выделенные макроблоку, различаются, необходимо мультиплексировать флаг идентификации общего использования режима интракодирования 23 в битовый поток и дать возможность декодеру распознавать, осуществил ли кодер этапы обработки на этапе S21 и последующих этапах или осуществил этапы обработки на этапе S23 и последующих этапах. Массив данных такого битового потока показан на фиг.15.
На фиг.15, режимы интракодирования 0(34a), 1(34b) и 2(34c), мультиплексируемые в битовый поток на уровне макроблоков, указывают режимы кодирования 6 для компонентов C0, C1 и C2, соответственно. Когда режим интракодирования представляет собой режим кодирования с интрапрогнозированием N×N, флаг 32 идентификации размера блока преобразования и информация о режиме интрапрогнозирования мультиплексируются в битовый поток. С другой стороны, когда режим интракодирования представляет собой режим кодирования с прогнозированием 16×16, информация о режиме интрапрогнозирования кодируется как часть информации режима интракодирования. Информация о флаге 32 идентификации размера блока преобразования и режиме интрапрогнозирования не мультиплексируются в битовый поток. Когда флаг 33 общего использования режима интракодирования имеет значение "общий для C0, C1 и C2", режимы интракодирования 1(34b) и 2(34c), флаги идентификации размера блока преобразования 1(32b) и 2(32c) и режимы интрапрогнозирования 1(35b) и 2(35c) не мультиплексируются в битовый поток (часть, обведенная пунктирным кружком на фиг.15 указывает ответвление битового потока). В этом случае, режим интракодирования 0(34a), флаг идентификации размера блока преобразования 0(32a) и режим интрапрогнозирования 0(35a) играют роль информации кодирования, общей для всех цветовых компонентов. В примере, показанном на фиг.15, флаг 33 идентификации общего использования режима интракодирования мультиплексируется как данные битового потока на уровне, более высоком, чем макроблок, например, на уровне среза, изображения или последовательности. В частности, когда флаг 33 идентификации общего использования режима интракодирования используется в порядке примера, описанного согласно второму варианту осуществления, поскольку цветовые пространства часто не изменяются на протяжении последовательности, можно достичь цели, мультиплексируя флаг 33 идентификации общего использования режима интракодирования на уровень последовательностей.
Согласно второму варианту осуществления флаг 33 идентификации общего использования режима интракодирования используется для указания "общий для всех компонентов". Однако флаг 33 идентификации общего использования режима интракодирования можно использовать для указания, согласно определению цветовых пространств входного видеосигнала 1, например, "общий для конкретных двух компонентов, например, C1 и C2" (в случае Y, Cb и Cr и т.п., весьма возможно использовать режим интрапрогнозирования совместно для Cb и Cr). Когда диапазон общего использования флага 33 идентификации общего использования режима интракодирования ограничивается только режимом интракодирования, и используется режим интрапрогнозирования N×N, размер блока преобразования и режим прогнозирования N×N можно независимо выбирать для каждого из цветовых компонентов (фиг.16). С помощью структуры синтаксиса, показанной на фиг.16, можно изменять метод прогнозирования для каждого из цветовых компонентов и повышать эффективность прогнозирования с использованием информации совместного режима кодирования видеосигнала со сложным шаблоном, для чего требуется прогнозирование N×N.
Если информация о флаге 33 идентификации общего использования режима интракодирования каким-то образом заранее известна кодеру и декодеру, информацию о флаге 33 идентификации общего использования режима интракодирования не требуется передавать в битовом потоке видеосигнала. В этом случае, например, в кодере, флаг 33 идентификации общего использования режима интракодирования может формироваться для осуществления устойчивого кодирования для некоторого значения или может передаваться по отдельности из битового потока видеосигнала.
3. Описание работы декодера
Декодер, показанный на фиг.12, принимает видеопоток 22, отвечающий массиву, показанному на фиг.15, выводимый из кодера, показанного на фиг.11, осуществляет обработку декодирования в единицах макроблоков, в которых три цветовых компонента имеют идентичный размер (формат 4:4:4), и восстанавливает соответствующие видеокадры.
Прежде всего, блок 25 декодирования с переменной длиной слова, на который поступает поток 22, декодирует поток 22 в соответствии с заранее определенным правилом (синтаксисом) и извлекает информацию, включающую в себя флаг 33 идентификации общего использования режима интракодирования, квантованный коэффициент преобразования 10, режим кодирования 6 и параметр квантования 21. Квантованный коэффициент преобразования 10 вводится в блок обратного квантования 12 совместно с параметром квантования 21, и осуществляется обработка обратного квантования. Затем выходной сигнал блока обратного квантования 12 вводится в блок обратного преобразования 13 и восстанавливается до разностного сигнала прогнозирования локального декодирования 14. С другой стороны, режим кодирования 6 и флаг 33 идентификации общего использования режима интракодирования вводятся в блок пространственного прогнозирования 2. Блок пространственного прогнозирования 2 получает прогнозируемое изображение 7 в соответствии с этими фрагментами информации. Ниже будет описана конкретная процедура для получения прогнозируемого изображения 7. Разностный сигнал прогнозирования локального декодирования 14 и прогнозируемое изображение 7 суммируются сумматором 18 для получения внутренне декодированного изображения 15 (это полностью такой же сигнал, как локально декодированное изображение 15 в кодере). Внутренне декодированное изображение 15 записывается обратно в память 16 для использования при дальнейшем интрапрогнозировании макроблока. Три блока памяти подготавливаются для соответствующих цветовых компонентов. Разблокирующий фильтр 26 получает команду воздействовать на внутренне декодированное изображение 15 на основании указания флага 24 управления разблокирующим фильтром, декодированного блоком 25 декодирования с переменной длиной слова, для получения окончательного декодированного изображения 27.
4. Обработка декодирования интрапрогнозирования в декодере
Ниже будет подробно описана обработка генерации интрапрогнозируемого изображения, которая является характеристикой декодера согласно второму варианту осуществления. Эта обработка осуществляется в единицах макроблоков, в которых размещены три цветовых компонента. Обработка осуществляется, в основном, блоком 25 декодирования с переменной длиной слова и блоком пространственного прогнозирования 2 декодера, показанного на фиг.12. Логическая блок-схема, демонстрирующая ход обработки, показана на фиг.17.
Этапы S25-S38 в логической блок-схеме, показанной на фиг.17, осуществляются блоком 25 декодирования с переменной длиной слова. Видеопоток 22, поступающий на блок 25 декодирования с переменной длиной слова, согласуется с массивом данных, показанным на фиг.15. На этапе S25, прежде всего, декодируются данные режима интракодирования 0(34a) (соответствующий компоненту C0), показанные на фиг.15. В результате, когда режим интракодирования 0(34a) представляет собой "интрапрогнозирование N×N", блок 25 декодирования с переменной длиной слова декодирует флаг идентификации размера блока преобразования 0(32a) и режим интрапрогнозирования 0(35a) (этапы S26 и S27). Затем, когда принято решение, что информация режима интракодирования/прогнозирования является общей для всех цветовых компонентов, на основании состояния флага 33 идентификации общего использования режима интракодирования, блок 25 декодирования с переменной длиной слова устанавливает режим интракодирования 0(34a), флаг идентификации размера блока преобразования 0(32a) и режим интрапрогнозирования 0(35a) в качестве информации кодирования, используемой для компонентов C1 и C2 (этапы S29 и S30). Обработка в единицах макроблоков показана на фиг.17. Флаг 33 идентификации общего использования режима интракодирования, используемый для принятия решения на этапе S29, считывается из битового потока 22 блоком 25 декодирования с переменной длиной слова на уровне, равном или более высоком, чем уровень среза, до того, как блок 25 декодирования с переменной длиной слова перейдет к НАЧАЛУ процесса, показанного на фиг.17.
Когда на этапе S29, показанном на фиг.17, принимается решение, что информация режима интракодирования/прогнозирования кодируется для каждого из цветовых компонентов, на следующих этапах S31-S38 блок 25 декодирования с переменной длиной слова декодирует информацию режима интракодирования/прогнозирования для компонентов C1 и C2. Режимы кодирования 6 для соответствующих цветовых компонентов устанавливаются на этапах обработки и выводятся на блок пространственного прогнозирования 2 для получения интрапрогнозируемых изображений для соответствующих цветовых компонентов в соответствии с этапами S39-S41. Процесс для получения интрапрогнозируемых изображений согласуется с процедурами, показанными на фиг.3, 4 и 13, и идентичен обработке, осуществляемой кодером, показанным на фиг.11.
Как описано выше, если информация о флаге 33 идентификации общего использования режима интракодирования некоторым образом заранее известна кодеру и декодеру, декодер может осуществлять декодирование, например, с заранее фиксированным значением, вместо того, чтобы анализировать значение флага 33 идентификации общего использования режима интракодирования из битового потока видеосигнала, или может передавать информацию по отдельности из битового потока видеосигнала.
В формате 4:2:0, принятом в традиционном стандарте кодирования видеосигнала, определение цветовых пространств зафиксировано на Y, Cb и Cr. В формате 4:4:4 определение цветовых пространств не ограничивается Y, Cb и Cr, но можно использовать различные цветовые пространства. Благодаря формированию информации кодирования на интра-макроблоке, как показано на фиг.15 и 16, можно осуществлять оптимальную обработку кодирования согласно определению цветовых пространств входного видеосигнала 1 и характеристик видеосигнала. Кроме того, можно уникально интерпретировать битовый поток, полученный в результате такой обработки кодирования для осуществления обработки декодирования и воспроизведения видеосигнала.
Третий вариант осуществления
Согласно третьему варианту осуществления описан другой пример структур кодера, показанного на фиг.11, и декодера, показанного на фиг.12. Как и в первом варианте осуществления, характеристики, отвечающие изобретению, сообщаются кодеру и декодеру на основании системы кодирования, принятой в стандарте MPEG-4 AVC(ISO/IEC 14496-10)/ITU-TH.264, который представляет собой непатентный документ 1. Видеокодер согласно третьему варианту осуществления отличается от кодера согласно второму варианту осуществления, описанного со ссылкой на фиг.11, только в отношении операций блока 11 кодирования с переменной длиной слова. Видеодекодер согласно третьему варианту осуществления отличается от декодера согласно второму варианту осуществления, описанного со ссылкой на фиг.12, только в отношении операций блока 25 декодирования с переменной длиной слова. В остальном, видеокодер и видеодекодер осуществляют такие же операции, как соответствующие устройства согласно второму варианту осуществления. Будут объяснены только различия.
1. Процедура кодирования информации режима интрапрогнозирования в кодере
В кодере согласно второму варианту осуществления блок 11 кодирования с переменной длиной слова указывает массив данных на битовом потоке для информации о режиме интрапрогнозирования N×N, но конкретно не указывает процедуру кодирования информации. В этом варианте осуществления описан конкретный способ осуществления процедуры кодирования. Этот вариант осуществления отличается тем, что, в частности, энтропийное кодирование, в котором используется корреляция значений между цветовыми компонентами, осуществляется для режимов интрапрогнозирования N×N, полученных в соответствующих цветовых компонентах, с учетом случая, когда значения режимов интрапрогнозирования N×N имеют высокую корреляцию между цветовыми компонентами.
Следующее объяснение опирается на условие, что принят массив битовых потоков в формате, показанном на фиг.16. Для упрощения объяснения, значение флага 33 идентификации общего использования режима интракодирования устанавливается на совместное использование для C0, C1 и C2, режим интракодирования является режимом интрапрогнозирования N×N, и размер блоков преобразования 0-2 равен 4×4 блока. В этом случае все режимы интрапрогнозирования 0-2 (35a-35c) являются режимами интрапрогнозирования 4×4. Согласно фиг.18-20 текущий макроблок, подлежащий кодированию, обозначен X. Макроблок слева от текущего макроблока - это макроблок A, и макроблок вправо и вверх от текущего макроблока - это макроблок B.
В качестве схем для объяснения процедуры кодирования для соответствующих цветовых компонентов C0, C1 и C2 используются фиг.18-20. Логические блок-схемы процедуры показаны на фиг.21 и 22.
Состояние компонента C0 макроблока X показано на фиг.18. Блок 4×4, подлежащий кодированию, обозначается как блок X, и блоки 4×4 слева и над блоком X обозначаются как блок A и блок B, соответственно. Существует два случая согласно позиции блока 4×4, подлежащего кодированию. В случае 1, блоки 4×4 слева и над блоком 4×4, подлежащим кодированию, находятся вне текущего макроблока X или принадлежат макроблоку A или макроблоку B. В случае 2, 4×4 блоки слева и над блоком 4×4, подлежащим кодированию, находятся внутри текущего макроблока X или принадлежат макроблоку X. В обоих случаях выделяется один режим интрапрогнозирования 4×4 для каждого блока X 4×4 в макроблоке X. Этот режим интрапрогнозирования 4×4 обозначается CurrIntraPredMode. Режим интрапрогнозирования 4×4 блока A обозначается IntraPredModeA, и режим интрапрогнозирования 4×4 блока B обозначается IntraPredModeB. IntraPredModeA и IntraPredModeB представляют собой информацию, уже закодированную на момент кодирования блока X. При кодировании режима интрапрогнозирования 4×4 определенного блока X блок 11 кодирования с переменной длиной слова сначала осуществляет выделение этих параметров (этап S50 на фиг.21).
Блок 11 кодирования с переменной длиной слова устанавливает прогнозируемое значение predCurrIntraPredMode для CurrIntraPredMode блока X согласно следующему уравнению (этап S51).
Блок 11 кодирования с переменной длиной слова осуществляет кодирование CurrIntraPredMode компонента C0. При этом, если CurrIntraPredMode=predCurrIntraPredMode, то блок 11 кодирования с переменной длиной слова кодирует 1-битовый флаг (prev_intra_pred_mode_flag), указывающий, что CurrIntraPredMode равен прогнозируемому значению. Если CurrIntraPredMode!=predCurrIntraPredMode, то блок 11 кодирования с переменной длиной слова сравнивает CurrIntraPredMode и predCurrIntraPredMode. Когда CurrIntraPredMode меньше, блок 11 кодирования с переменной длиной слова кодирует CurrIntraPredMode как есть. Когда CurrIntraPredMode больше, блок 11 кодирования с переменной длиной слова кодирует CurrIntraPredMode-1 (этап S52).
Процедура кодирования для компонента C1 будет описана со ссылкой на фиг.19. Сначала, таким же образом как в процедуре кодирования для компонента C0, блок 11 кодирования с переменной длиной слова устанавливает параметры ближнего кодирования, например, IntraPredModeA и IntraPredModeB, согласно позиции блока X (этап S53).
Блок 11 кодирования с переменной длиной слова устанавливает прогнозируемое значение-кандидат 1 predCurrIntraPredMode1 для CurrIntraPredMode блока X согласно следующему уравнению (этап S54).
Если prev_intra_pred_mode_flag=1 в компоненте C0, то блок 11 кодирования с переменной длиной слова принимает этот predCurrIntraPredMode1 как predCurrIntraPredMode в блоке X компонента C1 как есть. Причина состоит в следующем. Принятие prev_intra_pred_mode_flag=1 в идентичной позиции блока компонента C0 означает, что корреляция между режимами прогнозирования высока в ближней области изображения в компоненте C0. В этом случае, когда сигнал представляет собой RGB и т.п., из которого не полностью удалена корреляция структур текстуры между компонентом C0 и компонентом C1, весьма вероятно, что, также в компоненте C1, корреляция высока между областями вблизи изображения, как и в компоненте C0. Таким образом, блок 11 кодирования с переменной длиной слова принимает решение, что прогнозируемое значение компонента C1 не зависит от режима интрапрогнозирования компонента 4×4 C0.
С другой стороны, в компоненте C0, когда prev_intra_pred_mode_flag=0, или rem_intra_pred_mode закодирован (этап S55), блок 11 кодирования с переменной длиной слова устанавливает CurrIntraPredMode компонента C0 в качестве прогнозируемого значения-кандидата 2 (этап S56). Это означает, что
Это задается как прогнозируемое значение-кандидат ввиду следующих базовых сведений. Кодирование rem_intra_pred_mode в компоненте C0 означает, что корреляция интрапрогнозирования между областями вблизи изображения низка в компоненте C0. В этом случае предполагается, что корреляция между областями вблизи изображения также низка в компоненте C1. Вероятно, что режимы интрапрогнозирования в идентичной позиции блока в разных цветовых компонентах дают лучшие прогнозируемые значения.
Наконец, блок 11 кодирования с переменной длиной слова устанавливает прогнозируемое значение CurrIntraPredMode в блоке X компонента C1 в качестве значения одного из predCurrIntraPredMode1 и predCurrIntraPredMode2 (этап S57). Какое из значений используется, дополнительно кодируется 1-битовым флагом (pred_flag). Однако pred_flag кодируется только, когда CurrIntraPredMode совпадает с прогнозируемым значением. Когда CurrIntraPredMode не совпадает с прогнозируемым значением (когда кодируется rem_intra_pred_mode), predCurrIntraPredMode1 используется как прогнозируемое значение.
Вышеописанная процедура представлена в виде следующих выражений.
// Использовать прогнозируемое значение-кандидат 1
// Использовать прогнозируемое значение-кандидат 2
В результате, prev_intra_pred_mode_flag, pred_flag и rem_intra_pred_mode кодируются как кодированные данные (этап S58).
Процедура кодирования для компонента C2 будет описана со ссылкой на фиг.20. Прежде всего, таким же образом как в процедуре кодирования для компонентов C0 и C1, блок 11 кодирования с переменной длиной слова устанавливает параметры ближнего кодирования, например IntraPredModeA и IntraPredModeB, согласно позиции блока X (этап S59).
Блок 11 кодирования с переменной длиной слова устанавливаетпрогнозируемое значение-кандидат 1 predCurrIntraPredMode1 для CurrIntraPredMode блока X согласно следующему уравнению (этап S60).
Если prev_intra_pred_mode_flag=1 в обоих компонентах C0 и C1, блок 11 кодирования с переменной длиной слова принимает этот predCurrIntraPredMode1 как predCurrIntraPredMode в блоке X компонента C1 как есть. Причина состоит в следующем. Принятие prev_intra_pred_mode_flag=1 в идентичной позиции блока компонентов C0 и C1 означает, что корреляция между режимами прогнозирования высока в ближней области изображения в компонентах C0 и C1. В этом случае, когда сигнал представляет собой RGB и т.п., из которого не полностью удалена корреляция структур текстуры между компонентом C0, компонентом C1 и компонентом C2, весьма вероятно, что, также в компоненте C2, корреляция высока между областями вблизи изображения, как и в компонентах C0 и C1. Таким образом, блок 11 кодирования с переменной длиной слова принимает решение, что прогнозируемое значение компонента C2 не зависит от режима интрапрогнозирования 4×4 компонентов C0 и C1.
С другой стороны, в компонентах C0 или C1, когда prev_intra_pred_mode_flag=0, или rem_intra_pred_mode закодирован (этап S61), блок 11 кодирования с переменной длиной слова устанавливает CurrIntraPredMode компонентов C0 или C1 в качестве прогнозируемого значения-кандидата 2 (этап S62). Это означает, что
Это задается как прогнозируемое значение-кандидат ввиду следующих базовых сведений. Кодирование rem_intra_pred_mode в компонентах C0 или C1 означает, что корреляция интрапрогнозирования между областями вблизи изображения в компонентах C0 или C1. В этом случае предполагается, что корреляция между областями вблизи изображения также низка в компоненте C2. Вероятно, что режимы интрапрогнозирования в идентичной позиции блока в разных цветовых компонентах дают лучшие прогнозируемые значения. Согласно этой идее, когда кодируется rem_intra_pred_mode в обоих компонентах C0 и C1, текущие режимы интрапрогнозирования C0 и C1 могут быть кандидатами прогнозируемого значения. Однако текущий режим интрапрогнозирования компонента C1 принимается как прогнозируемое значение. Дело в том, что при вводе цветовых пространств YUV весьма вероятно, что C0 обрабатывается как сигнал яркости, и C1/C2 обрабатывается как цветоразностный сигнал, и, в этом случае, считается, что C1 ближе к режиму прогнозирования C2, чем C0. В случае ввода цветовых пространств RGB не столь важно, выбирается ли C0 или C1. В целом считается, что выгодно принимать C1 компонент в качестве прогнозируемого значения (компонент C2 можно принять как прогнозируемое значение в зависимости от конструкции).
Наконец, блок 11 кодирования с переменной длиной слова устанавливает прогнозируемое значение CurrIntraPredMode в блоке X компонента C2 в качестве значения одного из predCurrIntraPredMode1 и predCurrIntraPredMode2 (этап S63). Какое из значений используется, дополнительно кодируется 1-битовым флагом (pred_flag).
Вышеописанная процедура представлена в виде следующих выражений.
// Использовать прогнозируемое значение-кандидат 1
// Использовать прогнозируемое значение-кандидат 2
В результате, prev_intra_pred_mode_flag, pred_flag и rem_intra_pred_mode кодируются как кодированные данные (этап S64).
Таким же образом можно определить вышеописанную процедуру кодирования для режима интрапрогнозирования 8×8. Кодируя режим интрапрогнозирования N×N в такой процедуре, можно использовать корреляцию между режимом интрапрогнозирования N×N и режимом прогнозирования, выбранным в других цветовых компонентов, и можно сократить объем кодов самого режима прогнозирования и повысить эффективность кодирования.
Различие между фиг.21 и фиг.22 состоит в том, осуществляется ли обработка кодирования для режима интрапрогнозирования в единицах МБ по отдельности для каждого из цветовых компонентов или совместно. В случае фиг.21, блок 11 кодирования с переменной длиной слова осуществляет кодирование соответствующих цветовых компонентов в единицах блоков 4×4 и упорядочивает шестнадцать шаблонов блоков, собранных в битовом потоке (этап S65). В случае фиг.22, блок 11 кодирования с переменной длиной слова совместно кодирует шестнадцать блоков 4×4 соответствующих цветовых компонентов и упорядочивает блоки в битовом потоке для каждого из цветовых компонентов (этапы S66, S67 и S68).
В вышеописанной процедуре pred_flag является информацией, которая эффективна только, когда prev_intra_pred_mode_flag равен 1. Однако pred_flag также может быть эффективным, когда prev_intra_pred_mode_flag равен 0. Иными словами, например, с помощью компонента C1, можно осуществлять кодирование в процедуре, описанной ниже.
// Использовать прогнозируемое значение-кандидат 1
// Использовать прогнозируемое значение-кандидат 2
Согласно этому методу, когда кодируется rem_intra_pred_mode в режиме интрапрогнозирования в блоке в идентичной позиции компонента C0, pred_flag всегда кодируется. Однако, даже когда prev_intra_pred_mode_flag=0, можно использовать более точное прогнозируемое значение. Таким образом, можно ожидать повышения эффективности кодирования. Кроме того, pred_flag можно кодировать вне зависимости от того, кодируется ли rem_intra_pred_mode в режиме интрапрогнозирования в блоке в идентичной позиции компонента C0. В этом случае режим интрапрогнозирования компонента C0 всегда используется в качестве прогнозируемого значения-кандидата. Ниже приведены выражения, отвечающие этому случаю.
// Использовать прогнозируемое значение-кандидат 1
// Использовать прогнозируемое значение-кандидат 2
Флаг pred_flag можно задавать в единицах макроблоков или последовательностей, а не в единицах блоков 4×4. При задании pred_flag в единицах макроблоков прогнозируемое значение-кандидат 1 или прогнозируемое значение-кандидат 2 используется совместно для всех блоков 4×4 в макроблоке. Таким образом, можно дополнительно сократить служебную информацию, передаваемую как pred_flag. Поскольку устанавливается, согласно определению вводимых цветовых пространств, используется ли прогнозируемое значение-кандидат 1 или прогнозируемое значение-кандидат 2, pred_flag можно задавать в единицах последовательности. В этом случае, также нет необходимости передавать pred_flag для каждого макроблока. Таким образом, можно дополнительно сокртить служебную информацию.
2. Процедура декодирования информации режима интрапрогнозирования в декодере
В декодере согласно второму варианту осуществления блок кодирования с переменной длиной слова 25 указывает массив данных на битовом потоке для информации о режиме интрапрогнозирования N×N, но конкретно не указывает процедуру декодирования информации. Согласно третьему варианту осуществления описан конкретный способ осуществления процедуры декодирования. Третий вариант осуществления отличается тем, что, в частности, битовый поток, который подвергается энтропийному кодированию, в котором используется корреляция значений между цветовыми компонентами, декодируется для режимов интрапрогнозирования N×N, полученных в соответствующих цветовых компонентах, с учетом случая, когда значения режимов интрапрогнозирования N×N имеют высокую корреляцию между цветовыми компонентами.
Следующее объяснение опирается на условие, что принят массив битовых потоков в формате, показанном на фиг.16. Для ограничения объяснения процедурой декодирования для режима интрапрогнозирования значение флага 33 идентификации общего использования режима интракодирования в битовом потоке устанавливается на совместное использование для C0, C1 и C2. Режим интрапрогнозирования N×N обозначается как режим интракодирования. Блок 4×4 обозначается как размеры блока преобразования 0-2. В этом случае, все режимы интрапрогнозирования 0-2 (35a-35c) являются режимами интрапрогнозирования 4×4. Как и в кодере, соотношение, показанное на фиг.18-20, используется для декодера. В декодере текущий макроблок, подлежащий декодированию, обозначен X. Макроблок слева от текущего макроблока - это макроблок A, и макроблок вправо и вверх от текущего макроблока - это макроблок B. Логическая блок-схема процедуры декодирования показана на фиг.23. На фиг.23 этапы, обозначенные теми же позициями, которые показаны на фиг.21 и 22, указывают, что обработка идентична обработке при выполнении кодера.
Состояние компонента C0 макроблока X показано на фиг.18. Существует два случая согласно позиции блока 4×4, подлежащего декодированию. В случае 1, блоки 4×4 слева и над блоком 4×4, подлежащим декодированию, находятся вне текущего макроблока X или принадлежат макроблоку A и макроблоку B. В случае 2, 4×4 блоки слева и над блоком 4×4, подлежащим декодированию, находятся внутри текущего макроблока X или принадлежат макроблоку X. Блок 4×4, подлежащий декодированию, называется блоком X, и блоки 4×4 слева и над блоком X называются блоком A и блоком B, соответственно. В обоих случаях, один режим интрапрогнозирования 4×4 выделяется каждому блоку X 4×4 в макроблоке X. Этот режим интрапрогнозирования 4×4 является CurrIntraPredMode. Режим интрапрогнозирования 4×4 блока A является IntraPredModeA, и режим интрапрогнозирования 4×4 блока B является IntraPredModeB. Оба IntraPredModeA и IntraPredModeB представляют собой информацию, уже декодированную на момент кодирования блока X. При декодировании режима интрапрогнозирования 4×4 определенного блока X, прежде всего, блок 25 декодирования с переменной длиной слова осуществляет выделение этих параметров (этап S50).
Блок 25 декодирования с переменной длиной слова устанавливает прогнозируемое значение predCurrIntraPredMode для CurrIntraPredMode блока X согласно следующему уравнению (этап S51).
Блок 25 декодирования с переменной длиной слова декодирует 1-битовый флаг (prev_intra_pred_mode_flag), указывающий, CurrIntraPredMode=predCurrIntraPredMode. Prev_intra_pred_mode_flag=1 означает, что CurrIntraPredMode=predCurrIntraPredMode. В противном случае блок 25 декодирования с переменной длиной слова декодирует информацию о (prev_intra_pred_mode_flag=0) и rem_intra_pred_mode из битового потока. Когда, в результате сравнения rem_intra_pred_mode и predCurrIntraPredMode, оказывается, что rem_intra_pred_mode меньше, устанавливается CurrIntraPredMode=rem_intra_pred_mode. Когда CurrIntraPredMode больше, устанавливается CurrIntraPredMode=rem_intra_pred_mode+1 (этап S65).
Эти процедуры, в общем виде, можно представить следующим образом.
Процедура декодирования для компонента C1 будет описана со ссылкой на фиг.19. Сначала, таким же образом, как в процедуре декодирования для компонента C0, блок 25 декодирования с переменной длиной слова устанавливает параметры ближнего кодирования, например, IntraPredModeA и IntraPredModeB, согласно позиции блока X (этап S53).
Блок 25 декодирования с переменной длиной слова устанавливает прогнозируемое значение-кандидат 1 predCurrIntraPredMode1 для CurrIntraPredMode блока X согласно следующему уравнению (этап S54).
Если prev_intra_pred_mode_flag=1 в компоненте C0, этот predCurrIntraPredMode1 принимается как predCurrIntraPredMode в блоке X компонента C1 как есть. Это происходит по той же причине, что и в случае кодера.
С другой стороны, когда prev_intra_pred_mode_flag=0 в компоненте C0, или когда rem_intra_pred_mode декодируется (этап S55), блок 25 декодирования с переменной длиной слова устанавливает CurrIntraPredMode компонента C0 в качестве прогнозируемого значения-кандидата 2 (этап S56). Это означает, что
Это устанавливается в качестве прогнозируемого значения-кандидата ввиду тех же базовых сведений, что и в случае кодера.
Наконец, блок 25 декодирования с переменной длиной слова устанавливает прогнозируемое значение CurrIntraPredMode в блоке X C1 компонента в качестве значения одного из predCurrIntraPredMode1 и predCurrIntraPredMode2 (этап S57). Какое из значений используется, дополнительно декодируется 1-битовым флагом (pred_flag). Однако pred_flag декодируется только, когда CurrIntraPredMode совпадает с прогнозируемым значением. Когда CurrIntraPredMode не совпадает с прогнозируемым значением (когда декодируется rem_intra_pred_mode), predCurrIntraPredMode1 используется как прогнозируемое значение.
После задания прогнозируемого значения-кандидата 1, прогнозируемого значения-кандидата 2, prev_intra_pred_mode_flag, pred_flag и rem_intra_pred_mode посредством следующей процедуры блок 25 декодирования с переменной длиной слова декодирует CurrIntraPredMode (этап S66).
// В этом случае pred_flag не включается в битовый поток.
Процедура декодирования для компонента C2 будет описана со ссылкой на фиг.20. Сначала, таким же образом как в процедуре кодирования для компонентов C0 и C1, блок 25 декодирования с переменной длиной слова устанавливает параметры ближнего кодирования, например, IntraPredModeA и IntraPredModeB, согласно позиции блока X (этап S59).
Блок 25 декодирования с переменной длиной слова устанавливает прогнозируемое значение-кандидат 1 predCurrIntraPredMode1 для CurrIntraPredMode блока X согласно следующему уравнению (этап S60).
predCurrIntraPredMode1=Min(IntraPredModeA, IntraPredModeB).
Если prev_intra_pred_mode_flag=1 в обоих компонентах C0 и C1, этот predCurrIntraPredMode1 принимается как predCurrIntraPredMode в блоке X компонента C1 как есть. Это происходит по той же причине, что и в случае кодера.
С другой стороны, когда prev_intra_pred_mode_flag=0 в компонентах C0 или C1, или когда декодируется rem_intra_pred_mode (этап S61), блок 25 декодирования с переменной длиной слова устанавливает CurrIntraPredMode компонентов C0 или C1 в качестве прогнозируемого значения-кандидата 2 (этап S62).
Это означает, что
Это устанавливается в качестве прогнозируемого значения-кандидата ввиду тех же базовых сведений, что и в случае кодера.
Наконец, блок 25 декодирования с переменной длиной слова устанавливает прогнозируемое значение CurrIntraPredMode в блоке X компонента C2 в качестве значения одного из predCurrIntraPredMode1 и predCurrIntraPredMode2 (этап S63). Какое из значений используется, дополнительно декодируется 1-битовым флагом (pred_flag). Однако pred_flag декодируется только, когда CurrIntraPredMode совпадает с прогнозируемым значением. Когда CurrIntraPredMode не совпадает с прогнозируемым значением (когда декодируется rem_intra_pred_mode), predCurrIntraPredMode1 используется как прогнозируемое значение.
После задания прогнозируемого значения-кандидата 1, прогнозируемого значения-кандидата 2, prev_intra_pred_mode_flag, pred_flag и rem_intra_pred_mode посредством следующей процедуры блок 25 декодирования с переменной длиной слова декодирует CurrIntraPredMode (этап S71).
// В этом случае pred_flag не включается в битовый поток.
Таким же образом можно определить вышеописанную процедуру декодирования режима интрапрогнозирования 8×8. Благодаря декодированию режима интрапрогнозирования N×N в такой процедуре, можно сократить объем кодов самого режима прогнозирования и декодировать битовый поток с повышенной эффективностью кодирования с использованием корреляции между режимом интрапрогнозирования N×N и режимами прогнозирования, выбранными в других цветовых компонентах.
В вышеописанной процедуре pred_flag представляет собой информацию, декодируемую только, когда prev_intra_pred_mode_flag равен 1. Однако pred_flag также можно декодировать, когда prev_intra_pred_mode_flag равен 0.
Иными словами, например, с помощью компонента C1, можно осуществлять кодирование в процедуре, описанной ниже.
Эффект этого способа такой же, как описан в процедуре кодирования на соответствующей стороне кодера. Кроме того, pred_flag можно декодировать вне зависимости от того, декодируется ли rem_intra_pred_mode в режиме интрапрогнозирования в блоке в идентичной позиции компонента C0. В этом случае режим интрапрогнозирования компонента C0 всегда используется в качестве прогнозируемого значения-кандидата.
Ниже приведены выражения, отвечающие этому случаю.
Как описано в объяснении кодера, pred_flag можно включать в битовый поток в единицах макроблоков или последовательностей, а не в единицах блоков 4×4. При задании pred_flag в единицах макроблоков прогнозируемое значение-кандидат 1 или прогнозируемое значение-кандидат 2 используется совместно для всех блоков 4×4 в макроблоке. Таким образом, служебная информация pred_flag, подлежащая декодированию, сокращается. Поскольку устанавливается, согласно определению вводимых цветовых пространств, используется ли прогнозируемое значение-кандидат 1 или прогнозируемое значение-кандидат 2, можно задавать pred_flag в единицах последовательности. В этом случае также нет необходимости передавать pred_flag для каждого макроблока. Таким образом, служебная информация дополнительно сокращается.
Четвертый вариант осуществления
Рассмотрим битовый поток в формате, показанном на фиг.16, согласно второму варианту осуществления. В объяснении второго варианта осуществления, когда режим интракодирования указывает "интрапрогнозирование N×N", режимы интрапрогнозирования соответствующих цветовых компонентов C0, C1 и C2 распознаются как режим интрапрогнозирования 4×4 или режим интрапрогнозирования 8×8 согласно значениям флагов идентификации размера блока преобразования 0-2 (32a-32c). Согласно четвертому варианту осуществления, показанному на фиг.24, этот массив битовых потоков изменяется для передачи, для компонентов C1 и C2, флагов индикации режима интрапрогнозирования 1 и 2 (36a и 36b) на уровне последовательностей. Флаг индикации режима интрапрогнозирования эффективен, когда режим интрапрогнозирования N×N выбирается в режиме интракодирования, и флаг идентификации размера блока преобразования указывает преобразование 4×4, т.е. в случае режима интрапрогнозирования 4×4. Флаг индикации режима интрапрогнозирования позволяет переходить между следующими двумя состояниями согласно этому значению.
Состояние 1: для компонента C1 или C2, режим интрапрогнозирования 4×4, подлежащий использованию, по отдельности выбирается из девяти режимов, показанных на фиг.3, и кодируется.
Состояние 2: для компонента C1 или C2, режим интрапрогнозирования 4×4 ограничивается DC прогнозированием, т.е. intra4x4_pred_mode=2 согласно фиг.3, и информация режима интрапрогнозирования не кодируется.
Например, когда кодирование осуществляется в цветовых пространствах, например, Y, Cb и Cr, и в случае видеосигнала высокого разрешения, например, HDTV или видеосигналов еще более высокого разрешения, блок 4×4 соответствует чрезвычайно малой области изображения. В этом случае может оказаться более эффективным фиксировать саму информацию режима прогнозирования на одном фрагменте информации и не передавать информацию режима прогнозирования, которая образует служебную нагрузку, чем давать простор для выбора из девяти режимов прогнозирования компоненту, например, компонентам Cb и Cr, которые непосредственно не поддерживают структуру текстуры изображения. Благодаря осуществлению такого массива битовых потоков, можно осуществлять оптимальное кодирование, соответствующее характеристикам входных цветовых пространств и характеристикам видеосигнала.
Декодер, который принимает битовый поток в формате, показанном на фиг.24, декодирует флаги индикации режима интрапрогнозирования (36a и 36b) в блоке 25 декодирования с переменной длиной слова и различает, закодирован ли битовый поток в состоянии 1 или состоянии 2, согласно значениям флагов индикации режима интрапрогнозирования. Затем декодер принимает решение, для компонента C1 или C2, декодируется ли режим интрапрогнозирования 4×4 из битового потока или DC прогнозирования, т.е. intra4×4_pred_mode=2 на фиг.3 применяется постоянно.
Согласно четвертому варианту осуществления, в состоянии 2, для компонентов C1 или C2, режим интрапрогнозирования 4×4 ограничивается intra4×4_pred_mode=2. Однако только информацию режима прогнозирования нужно фиксировать на значении единица или она может быть другими режимами прогнозирования. Состояние 2 можно задавать для использования, для компонента C1 или C2, такого же режима интрапрогнозирования 4×4, как для C0. В этом случае, поскольку нет необходимости кодировать режим интрапрогнозирования 4×4 для компонента C1 или C2, можно сократить биты служебной информации.
Пятый вариант осуществления
Согласно пятому варианту осуществления описан другой пример структур кодера, показанного на фиг.11, и декодера, показанного на фиг.12. Как и в других вариантах осуществления, характеристики, отвечающие изобретению, сообщаются кодеру и декодеру согласно пятому варианту осуществления на основании системы кодирования, принятой в стандарте MPEG-4 AVC(ISO/IEC 14496-10)/ITU-TH.264, который представляет собой непатентный документ 1. Видеокодер согласно пятому варианту осуществления отличается от кодера, показанного на фиг.11, работа которого объяснена согласно второму и третьему вариантам осуществления, только в отношении операций блока 11 кодирования с переменной длиной слова. Видеодекодер согласно пятому варианту осуществления отличается от декодера, показанного на фиг.12, работа которого объяснена согласно второму и третьему вариантам осуществления, только в отношении операций блока 25 декодирования с переменной длиной слова. В остальном видеокодер и видеодекодер осуществляют те же операции, которые описаны согласно второму и третьему вариантам осуществления. Будут объяснены только отличия.
1. Процедура кодирования информации режима интрапрогнозирования в кодере
В кодере согласно третьему варианту осуществления описан конкретный способ кодирования информации режима интрапрогнозирования N×N в битовом потоке в формате, показанном на фиг.16, блоком 11 кодирования с переменной длиной слова. Согласно пятому варианту осуществления описан другой конкретный способ осуществления процедуры кодирования. Пятый вариант осуществления отличается тем, что, в частности, с учетом того факта, что значение режима интрапрогнозирования N×N отражает структуру текстуры, служащей шаблоном изображения, предусмотрен способ осуществления адаптивного прогнозирования в ближней пиксельной области в идентичном цветовом компоненте. Следующее объяснение опирается на условие, что принят массив битовых потоков в формате, показанном на фиг.16. Согласно пятому варианту осуществления информация режима интрапрогнозирования N×N для соответствующих компонентов C0, C1 и C2 независимо кодируется для каждого из цветовых компонентов. Способ кодирования для компонента C0 также применяется к C1 и C2. Для упрощения объяснения будет объяснен только способ кодирования для компонента C0. Значение флага 33 идентификации общего использования режима интракодирования задается для использования режима интракодирования совместно для C0, C1 и C2. Режим интракодирования - это режим интрапрогнозирования N×N, и флаги идентификации размера блока преобразования 0-2 (32a-32c) - это блок 4×4. В этом случае все режимы интрапрогнозирования 0-2 (35a-35c) являются режимами интрапрогнозирования 4×4. В качестве схемы, поясняющей процедуру кодирования для информации режима интрапрогнозирования N×N для компонента C0, используется фиг.18. На фиг.18 текущий блок, подлежащий кодированию, обозначен X. Макроблок слева от текущего блока - это макроблок A, и макроблок справа и вверху от текущего макроблока - это макроблок B. Логическая блок-схема процедуры кодирования показана на фиг.25.
Согласно третьему варианту осуществления меньшее из значений IntraPredModeA и IntraPredModeB уникальным образом выделяется в качестве прогнозируемого значения predCurrIntraPredMode для режима интрапрогнозирования 4×4 CurrIntraPredMode, выделенного блокам 4×4 X, соответственно, показанным на фиг.18. Это метод принят также в настоящем стандарте AVC/H.264. По мере возрастания значения режима интрапрогнозирования N×N, система генерации прогнозируемого изображения входит в более сложный режим, предусматривающий пиксельную интерполяцию, которая учитывает направленность шаблона изображения. Дело в том, что малое значение выделяется режиму с высокой адаптируемостью к общему шаблону изображения. При низкой битовой скорости, поскольку рост объема кодов режима прогнозирования в большей степени влияет на выбор режима, чем увеличение искажения, эта система полезна для эффективности кодирования кодера в целом. Напротив, когда битовая скорость сравнительно высока, поскольку увеличение искажения в большей степени влияет на выбор режима, чем рост объема кодов режима прогнозирования, не всегда справедливо утверждение, что меньшее из значений IntraPredModeA и IntraPredModeB является оптимальным. На основании такого наблюдения, согласно пятому варианту осуществления, точность прогнозируемого значения повышается за счет адаптации задания этого прогнозируемого значения согласно состояниям IntraPredModeA и IntraPredModeB, что объяснено ниже. В этой процедуре в качестве значения, при котором CurrIntraPredMode можно оценивать наиболее эффективно применительно к шаблону изображения, блок 11 кодирования с переменной длиной слова устанавливает predCurrIntraPredMode на основании состояния IntraPredModeA и IntraPredModeB (этапы S73, S74 и S75).
(1) Когда оба IntraPredModeA и IntraPredModeB находятся в диапазоне от 0 до 2, MIN(IntraPredModeA, IntraPredModeB) задается как predCurrIntraPredMode.
(2) Когда IntraPredModeA или IntraPredModeB равен 3 или более, и когда направления прогнозирования IntraPredModeA и IntraPredModeB полностью различны (например, IntraPredModeA равно 3, и IntraPredModeB равно 4), DC прогнозирование (intra4×4_pred_mode=2) задается как predCurrIntraPredMode.
(3) Когда IntraPredModeA или IntraPredModeB равно 3 или более, и когда направления прогнозирования одинаковы (например, IntraPredModeA равно 3, и IntraPredModeB равно 7 (прогнозирование от верхнего правого в обоих IntraPredModeA и IntraPredModeB)), режим прогнозирования, интерполирующий пиксель (в вышеупомянутом режиме 7), задается как predCurrIntraPredMode.
Как и в третьем варианте осуществления, блок 11 кодирования с переменной длиной слова осуществляет подготовительную обработку для предварительного кодирования, например, IntraPredModeA и IntraPredModeB (этапы S50, S53 и S59). В результате, predCurrIntraPredMode уникальным образом выводится из значений IntraPredModeA и IntraPredModeB. Табулированные правила этого задания прогнозируемого значения показаны на фиг.26. На фиг.26 заштрихованные части указывают случаи, когда традиционные правила MIN(IntraPredModeA, IntraPredModeB) неприменимы, и лучшее прогнозируемое значение выводится из непрерывности шаблона изображения. В процедуре (1) используется таблица класса 0. В процедурах (2) и (3) используется таблица класса 1.
После установления predCurrIntraPredMode в результате процедуры блок 11 кодирования с переменной длиной слова выполняет оставшуюся процедуру кодирования для компонента C0, описанную согласно третьему варианту осуществления, для завершения кодирования (этапы S52, S58 и S64).
Таким образом,
Таким же образом можно определить вышеописанную процедуру кодирования для режима интрапрогнозирования 8×8. Кодируя режим интрапрогнозирования N×N в такой процедуре, можно лучше использовать корреляцию режима прогнозирования в ближней пиксельной области в идентичном цветовом компоненте и можно сократить объем кодов самого режима прогнозирования и повысить эффективность кодирования.
2. Процедура декодирования информации режима интрапрогнозирования в декодере
В декодере согласно третьему варианту осуществления одна из конкретных процедур декодирования информации о режиме интрапрогнозирования N×N в блоке 25 декодирования с переменной длиной слова описана для битового потока в формате, показанном на фиг.16. Согласно пятому варианту осуществления описан другой конкретный способ осуществления процедуры декодирования. Пятый вариант осуществления отличается тем, что, в частности, с учетом того факта, что значение режима интрапрогнозирования N×N отражает структуру текстуры, служащей шаблоном изображения, адаптивное прогнозирование осуществляется в ближней пиксельной области в идентичном цветовом компоненте для декодирования кодированного битового потока.
Следующее объяснение опирается на условие, что принят массив битовых потоков в формате, показанном на фиг.16. Для упрощения объяснения значение флага 33 идентификации общего использования режима интракодирования в битовом потоке задается для использования режима интракодирования совместно для C0, C1 и C2. Режим интрапрогнозирования N×N обозначается как режим интракодирования, и блок 4×4 обозначается как флаги идентификации размера блока преобразования от 0 до 2 (32a-32c). В этом случае все режимы интрапрогнозирования 0-2 (35a-35c) являются режимами интрапрогнозирования 4×4. Как и в кодере, в декодере будет объяснен только компонент C0 с использованием соотношения, показанного на фиг.18 (C1 и C2 независимо декодируются в эквивалентной процедуре). В декодере текущий макроблок, подлежащий декодированию, обозначен X. Макроблок слева от текущего блока - это макроблок A, и макроблок справа и вверху от текущего макроблока - это макроблок B.
Согласно третьему варианту осуществления, как описано в объяснении кодера, меньшее из значений IntraPredModeA и IntraPredModeB уникальным образом выделяется в качестве прогнозируемого значения predCurrIntraPredMode для режима интрапрогнозирования 4×4 CurrIntraPredMode, выделенного блокам 4×4 X, соответственно, показанным на фиг.18. С другой стороны, в декодере согласно пятому варианту осуществления, predCurrIntraPredMode определяется с использованием таблицы, показанной на фиг.26, в процедуре полностью идентичной процедуре, описанной как процедура кодирования. Поскольку IntraPredModeA и IntraPredModeB уже декодированы и известны, можно осуществлять обработку полностью идентично процедуре кодирования.
Дальнейшая процедура эквивалентна процедуре декодирования для компонента C0, описанной согласно третьему варианту осуществления. Эти процедуры, в общем виде, можно представить следующим образом.
Таким же образом можно определить вышеописанную процедуру декодирования режима интрапрогнозирования 8×8. Благодаря декодированию режима интрапрогнозирования N×N в такой процедуре, можно более эффективно использовать корреляцию режимов прогнозирования в ближней пиксельной области идентичного цветового компонента для декодирования кодированного битового потока со сниженным объемом кодов самого режима прогнозирования.
В описанном выше примере predCurrIntraPredMode задается фиксированно с использованием таблицы, показанной на фиг.26, для осуществления кодирования и декодирования. Однако, режимы интрапрогнозирования, чаще всего появляющиеся для состояний IntraPredModeA и IntraPredModeB, можно кодировать и декодировать, обновляя их один за другим. Например, в комбинации "class=0, IntraPredModeA=0, IntraPredModeB=0, predCurrIntraPredMode=0", показанной на фиг.26, согласно вышеописанному варианту осуществления, predCurrIntraPredMode всегда равен 0, когда IntraPredModeA=0 и IntraPredModeB=0. Однако, поскольку видеосигнал сам по себе является нестационарным сигналом, нет никакой гарантии, что эта комбинация является наилучшей, в зависимости от содержимого видеосигнала. В наихудшем случае, не полностью невероятно, что predCurrIntraPredMode не совпадает с прогнозируемым значением в большинстве случаев на протяжении видеосигнала. Таким образом, например, частота, с которой CurrIntraPredMode появляется в случае IntraPredModeA=0 и IntraPredModeB=0, отсчитывается и, каждый раз при кодировании и декодировании CurrIntraPredMode и predCurrIntraPredMode, обновляется в режиме прогнозирования, имеющем наивысшую частоту появления в отношении состояния IntraPredModeA и IntraPredModeB. В такой конфигурации можно задать прогнозируемое значение, используемое для кодирования и декодирования CurrIntraPredMode, равное оптимальному значению в свете содержимого видеосигнала.
Шестой вариант осуществления
Согласно шестому варианту осуществления описан другой пример структур кодера, показанного на фиг.11, и декодера, показанного на фиг.12. Как и в других вариантах осуществления, характеристики, отвечающие изобретению, сообщаются кодеру и декодеру согласно шестому варианту осуществления на основании системы кодирования, принятой в стандарте MPEG-4 AVC(ISO/IEC 14496-10)/ITU-TH.264, который представляет собой непатентный документ 1. Видеокодер согласно шестому варианту осуществления отличается от кодера, показанного на фиг.11, объясняется согласно второму, третьему и пятому вариантам осуществления только в операциях блока 11 кодирования с переменной длиной слова. Видеодекодер согласно шестому варианту осуществления отличается от декодера, показанного на фиг.12, объясняется согласно второму, третьему и пятому вариантам осуществления только в операциях блока 25 декодирования с переменной длиной слова. В остальном видеокодер и видеодекодер осуществляют те же операции, как согласно второму, третьему и пятому вариантам осуществления. Будут объяснены только отличия.
1. Процедура кодирования информации режима интрапрогнозирования в кодере
В кодере согласно третьему и пятому вариантам осуществления описан конкретный способ кодирования информации режима интрапрогнозирования N×N в битовом потоке в формате, показанном на фиг.16, блоком 11 кодирования с переменной длиной слова. Согласно шестому варианту осуществления описан другой конкретный способ осуществления процедуры кодирования. Шестой вариант осуществления отличается тем, что, в частности, с учетом того факта, что значение режима интрапрогнозирования N×N отражает структуру текстуры, служащей шаблоном изображения, предусмотрен способ осуществления адаптивного арифметического кодирования в ближней пиксельной области в идентичном цветовом компоненте. Следующее объяснение опирается на условие, что принят массив битовых потоков в формате, показанном на фиг.16. Согласно шестому варианту осуществления информация режима интрапрогнозирования N×N для соответствующих компонентов C0, C1 и C2 независимо кодируется для каждого из цветовых компонентов. Способ кодирования для компонента C0 также применяется к C1 и C2. Для упрощения объяснения будет объяснен только способ кодирования для компонента C0. Значение флага 33 идентификации общего использования режима интракодирования задается для использования режима интракодирования совместно для C0, C1 и C2. Режим интракодирования - это режим интрапрогнозирования N×N, и флаги идентификации размера блока преобразования 0-2 (32a-32c) - это блок 4×4. В этом случае все режимы интрапрогнозирования 0-2 (35a-35c) являются режимами интрапрогнозирования 4×4. В качестве схемы, поясняющей процедуру кодирования для информации режима интрапрогнозирования N×N для компонента C0, используется фиг.18. На фиг.18 текущий блок, подлежащий кодированию, обозначен X. Макроблок слева от текущего блока - это макроблок A, и макроблок справа и вверху от текущего макроблока - это макроблок B. Логическая блок-схема процедуры кодирования показана на фиг.27.
Согласно третьему и пятому вариантам осуществления меньшее из значений IntraPredModeA и IntraPredModeB уникальным образом выделяется в качестве прогнозируемого значения predCurrIntraPredMode для режима интрапрогнозирования 4×4 CurrIntraPredMode, выделенного блокам 4×4 X, соответственно, показанным на фиг.18. Когда прогнозируемое значение равно указанному значению, prev_intra_pred_mode_flag задается равным 1, и кодирование в режиме интрапрогнозирования 4×4 для блока X заканчивается. Когда прогнозируемое значение отличается от указанного значения, код передается в rem_intra_pred_mode. В этом варианте осуществления CurrIntraPredMode непосредственно подвергается арифметическому кодированию с использованием состояний IntraPredModeA и IntraPredModeB. В этом случае используется процедура кодирования, согласующаяся с контекстно-адаптивным двоичным арифметическим кодированием, принятым в стандарте AVC/H.264.
Прежде всего, блок 11 кодирования с переменной длиной слова представляет CurrIntraPredMode объекта кодирования в двоичном виде в соответствии с форматом, показанным на фиг.28 (этап S76). Первый участок двоичной последовательности представляет собой код для классификации CurrIntraPredMode в качестве прогнозирования в вертикальном направлении или прогнозирования в горизонтальном направлении (см. фиг.3). В этом примере, DC прогнозирование (intra4×4_pred_mode=2) классифицируется как прогнозирование в горизонтальном направлении. Однако DC прогнозирование (intra4×4_pred_mode=2) можно классифицировать как прогнозирование в вертикальном направлении. Второй участок дает бит завершения значениям режима прогнозирования, которые, как считается, имеют наивысшую частоту появления в вертикальном направлении и горизонтальном направлении, соответственно. Третий и последующие участки подвергаются конфигурированию кода с последующим завершением от единицы с наивысшей частотой появления среди остальных значений режима прогнозирования (второй и последующие участки конфигурации двоичной последовательности, показанной на фиг.28, желательно задавать согласно вероятности появления символов в процессе кодирования фактических данных изображения).
Блок 11 кодирования с переменной длиной слова выполняет арифметическое кодирование, последовательно выбирая, для соответствующих участков двоичной последовательности, (0,1) таблицы вероятности появления, подлежащие использованию. При кодировании первого участка блок 11 кодирования с переменной длиной слова устанавливает контекст, используемый для арифметического кодирования, следующим образом (этап S78).
Контекст A(CA): Флаг intra_pred_direction_flag, представляющий в двоичной форме, является ли режим интрапрогнозирования прогнозированием в вертикальном направлении или прогнозированием в горизонтальном направлении, задается для IntraPredModeA и IntraPredModeB. Следующие четыре состояния задаются в качестве значений контекста.
Например, когда intra4×4_pred_mode принимает значения 0, 3, 5 и 7, показанные на фиг.3, intra_pred_direction_flag классифицируется как прогнозирование в вертикальном направлении (=0). Когда intra4×4_pred_mode принимает значения 1, 2, 4, 6 и 8, intra_pred_direction_flag классифицируется как прогнозирование в горизонтальном направлении (=1). Условные вероятности CurrIntraPredMode на основании состояний IntraPredModeA и IntraPredModeB вычисляются заранее, и начальные таблицы вероятности появления (0,1), заданные на основании условных вероятностей, выделяются четырем состояниям CA, соответственно. Формируя контекст таким образом, можно более точно оценивать условную вероятность появления первого участка и повышать эффективность арифметического кодирования. Блок 11 кодирования с переменной длиной слова выбирает таблицу вероятности появления первого участка согласно значению C A и выполняет арифметическое кодирование. Блок 11 кодирования с переменной длиной слова обновляет таблицу вероятности появления значением кодирования (этап S79).
Начальная таблица вероятности появления (0,1), заданная согласно вероятности появления соответствующего режима прогнозирования значения, заранее выделяется второму и последующим участкам. Затем, блок 25 декодирования с переменной длиной слова осуществляет двоичное арифметическое декодирование и обновление таблицы вероятности появления таким же образом, как для первого участка.
Таким же образом можно определить вышеописанную процедуру кодирования для режима интрапрогнозирования 8×8. Кодируя режим интрапрогнозирования N×N в такой процедуре, можно применять адаптивное арифметическое кодирование к кодированию информации режима прогнозирования с использованием корреляции режимов прогнозирования в ближней пиксельной области идентичного цветового компонента. Это позволяет повышать эффективность кодирования.
2. Процедура декодирования информации режима интрапрогнозирования в декодере
В декодере согласно третьему и пятому вариантам осуществления одна из конкретных процедур декодирования информации о режиме интрапрогнозирования N×N в блоке 25 декодирования с переменной длиной слова описана для битового потока в формате, показанном на фиг.16. Согласно шестому варианту осуществления описан другой конкретный способ осуществления процедуры декодирования. Шестой вариант осуществления отличается тем, что, в частности, с учетом того факта, что значение режима интрапрогнозирования N×N отражает структуру текстуры, служащей шаблоном изображения, адаптивное арифметическое кодирование осуществляется в ближней пиксельной области в идентичном цветовом компоненте для декодирования кодированного битового потока.
Следующее объяснение опирается на условие, что принят массив битовых потоков в формате, показанном на фиг.16. Для упрощения объяснения значение флага 33 идентификации общего использования режима интракодирования в битовом потоке задается для использования режима интракодирования совместно для C0, C1 и C2. Режим интрапрогнозирования N×N обозначается как режим интракодирования, и блок 4×4 обозначается как флаги идентификации размера блока преобразования от 0 до 2 (32a-32c). В этом случае все режимы интрапрогнозирования 0-2 (35a-35c) являются режимами интрапрогнозирования 4×4. Как и в кодере, в декодере будет объяснен только компонент C0 с использованием соотношения, показанного на фиг.18 (C1 и C2 независимо декодируются в эквивалентной процедуре). В декодере текущий макроблок, подлежащий декодированию, обозначен X. Макроблок слева от текущего блока - это макроблок A, и макроблок справа и вверху от текущего макроблока - это макроблок B.
Согласно третьему и пятому вариантам осуществления описанным в объяснении кодера, меньшее из значений IntraPredModeA и IntraPredModeB уникальным образом выделяется в качестве прогнозируемого значения predCurrIntraPredMode для режима интрапрогнозирования 4×4 CurrIntraPredMode, выделенного блокам 4×4 X, соответственно, показанным на фиг.18. Когда prev_intra_pred_mode_flag декодируется, и его значение равно 1, predCurrIntraPredMode принимается как CurrIntraPredMode. Когда prev_intra_pred_mode_flag равен нулю, rem_intra_pred_mode декодируется для восстановления режима интрапрогнозирования 4×4 блока X восстанавливается. С другой стороны, в этом варианте осуществления, CurrIntraPredMode непосредственно подвергается арифметическому декодированию с использованием состояний IntraPredModeA и IntraPredModeB. В этом случае используется процедура декодирования, согласующаяся с контекстно-адаптивным двоичным арифметическим декодированием, принятым в стандарте AVC/H.264.
CurrIntraPredMode, подлежащий декодированию, кодируется как двоичная последовательность в соответствии с форматом, показанным на фиг.28. Эта последовательность последовательно подвергается двоичному арифметическому декодированию с левого конца. Как объясняется в процедуре кодирования согласно шестому варианту осуществления, первый участок двоичной последовательности представляет собой код для классификации CurrIntraPredMode в качестве прогнозирования в вертикальном направлении или прогнозирования в горизонтальном направлении (см. фиг.3). Второй и последующие участки подвергаются конфигурированию кода с последующим завершением от единицы с наивысшей частотой появления среди значений режима прогнозирования. Причина такого конфигурирования кода описана в процедуре кодирования.
В процессе декодирования, прежде всего, при декодировании первого участка блок 25 декодирования с переменной длиной слова устанавливает CA таким же, как в контексте, используемом в процедуре кодирования. Блок 25 декодирования с переменной длиной слова выбирает таблицу вероятности появления согласно значению CA и выполняет арифметическое декодирование для восстановления первого участка. Блок 25 декодирования с переменной длиной слова обновляет таблицу вероятности появления значением декодирования.
Начальная таблица вероятности появления (0,1), заданная согласно вероятности появления соответствующего режима прогнозирования значения, заранее выделяется второму и последующим участкам. Затем, блок 25 декодирования с переменной длиной слова осуществляет двоичное арифметическое декодирование и обновление таблицы вероятности появления таким же образом, как для первого участка. Поскольку двоичная последовательность, показанная на фиг.28, сформирована так, чтобы можно было однозначно задавать соответствующий режим прогнозирования значения, CurrIntraPredMode декодируется, когда восстановлено заранее определенное количество участков.
Таким же образом можно определить вышеописанную процедуру декодирования режима интрапрогнозирования 8×8. Благодаря декодированию режима интрапрогнозирования N×N в такой процедуре, можно декодировать кодированный битовый поток со сниженным объемом кодов самого режима прогнозирования согласно арифметическому кодированию, что позволяет использовать корреляцию режимов прогнозирования в ближней пиксельной области идентичного цветового компонента.
В вышеописанном примере возможны другие варианты таблицы, показанной на фиг.28. Например, можно приять метод формирования двоичной последовательности, показанный на фиг.29. При этом контекст B, описанный ниже, используется для первого участка.
Контекст B(CB): Флаг intra_dc_pred_flag, представляющий в двоичной форме, является ли режим интрапрогнозирования вертикальным DC прогнозированием, задается для IntraPredModeA и IntraPredModeB. Следующие четыре состояния устанавливаются как значения контекста.
На фиг.3, когда intra4×4_pred_mode принимает значение 2, intra_dc_pred_flag задается равным 1. Когда intra4×4_pred_mode принимает другие значения, intra_dc_pred_flag задается равным 0. Условные вероятности CurrIntraPredMode на основании состояний IntraPredModeA и IntraPredModeB вычисляются заранее, и начальные таблицы вероятности появления значений (0,1) первого участка, заданные на основании условных вероятностей, выделяются четырем состояниям CB, соответственно. На фиг.29 первый участок призван принимать значение 0, когда CurrIntraPredMode представляет DC прогнозирование, и принимает значение 1, когда CurrIntraPredMode отличается от DC прогнозирования. Вышеописанный контекст A(CA) используется для второго участка. Формируя контекст таким образом, можно более точно оценивать условные вероятности появления для первого участка и второго участка и повышать эффективность арифметического кодирования.
Седьмой вариант осуществления
Согласно седьмому варианту осуществления будут объяснены кодер, который осуществляет кодирование с использованием межкадрового прогнозирования в единицах, полученных равным делением видеокадра, введенного в формате 4:4:4, на прямоугольные области (макроблоки) 16×16 пикселей, и декодер, соответствующий кодеру. Характеристики, отвечающие изобретению, сообщаются кодеру и декодеру на основании системы кодирования, принятой в стандарте MPEG-4 AVC(ISO/IEC 14496-10)/ITU-TH.264.
Структура видеокодера согласно седьмому варианту осуществления показана на фиг.30. Структура видеодекодера согласно седьмому варианту осуществления показана на фиг.31. На фиг.31 компоненты, обозначенные тем же позициями, что компоненты кодера на фиг.30, являются идентичными компонентами.
Операции кодера в целом и декодера в целом и обработка принятия решения относительно режима интерпрогнозирования и обработка декодирования прогнозирования с компенсацией движения, которые являются характерными операциями седьмого варианта осуществления, будут объяснены на основании этих фигур.
1. Описание работы кодера
В кодере, показанном на фиг.30, соответствующие видеокадры вводятся в качестве входного видеосигнала 1 в формате 4:4:4. Вводимые видеокадры вводятся в кодер в единицах блоков, полученных делением трех цветовых компонентов на макроблоки идентичного размера и размещением блоков, как показано на фиг.10.
Прежде всего, блок 102 прогнозирования компенсации движения выбирает опорное изображение одного кадра из данных опорного изображения для прогнозирования компенсации движения одного или нескольких кадров, хранящихся в памяти 16, и осуществляет обработку прогнозирования для компенсации движения для каждого из цветовых компонентов в единицах макроблоков. Три блока памяти подготавливаются для соответствующих цветовых компонентов (хотя в объяснении этого варианта осуществления подготавливаются три блока памяти, количество блоков памяти можно соответственно изменять согласно конструкции). В качестве размеров блока для осуществления прогнозирования с компенсацией движения подготавливаются семь типов. Сначала, в единицах макроблоков, как показано на фиг.32(a)-32(d), можно выбрать любой из размеров 16×16, 16×8, 8×16 и 8×8. При выборе 8×8, как показано на фиг.32(e)-(h), можно выбрать любой из размеров 8×8, 8×4, 4×8 и 4×4 для каждого блоков 8×8. Информация о выбранном размере выводится как тип макроблока, и информация размера в единицах блоков 8×8 выводится как тип субмакроблока. Выводятся идентификационный номер и информация вектора движения для выбранного опорного изображения для каждого блока.
Видеокодер согласно седьмому варианту осуществления отличается изменением метода обработки прогнозирования для компенсации движения для трех цветовых компонентов на основании флага 123 идентификации общего использования режима интерпрогнозирования. Этот момент будет подробно описан ниже в пункте 2.
Блок 102 прогнозирования компенсации движения выполняет обработку прогнозирования для компенсации движения для всех размеров блока или размеров подблока, показанных на фиг.32, всех векторов движения 137 в заранее определенном диапазоне поиска, и может выбирать одно или несколько опорных изображений для получения разностного сигнала прогнозирования 4 согласно векторам движения 137, одного опорного изображения и вычитателя 3. Блок 5 принятия решения относительно режима кодирования оценивает эффективность прогнозирования разностного сигнала прогнозирования 4 и выводит тип макроблока/тип субмакроблока 106, вектор движения 137 и идентификационный номер опорного изображения, при которых получается оптимальная эффективность прогнозирования, на макроблок, подлежащий прогнозированию из обработки прогнозирования, выполняемой блоком 102 прогнозирования компенсации движения. При выборе типа макроблока/типа субмакроблока 106 можно учитывать весовой коэффициент 20 для каждого типа, заданный путем принятия решения на блоке 19 управления кодированием. Блок 102 прогнозирования компенсации движения выводит разностный сигнал прогнозирования 4, полученный путем прогнозирования с компенсацией движения на основании типа, вектора движения 137 и выбранного опорного изображения, на блок преобразования 8. Блок преобразования 8 преобразует введенный разностный сигнал прогнозирования 4 в коэффициент преобразования и выводит коэффициент преобразования на блок квантования 9. Блок квантования 9 квантует введенный коэффициент преобразования на основании параметра квантования 21, заданного блоком 19 управления кодированием, и выводит коэффициент преобразования на блок 11 кодирования с переменной длиной слова в качестве квантованного коэффициента преобразования 10. Квантованный коэффициент преобразования 10 подвергается энтропийному кодированию посредством, например, кодирования Хаффмана или арифметического кодирования на блоке 11 кодирования с переменной длиной слова. Квантованный коэффициент преобразования 10 восстанавливается до разностного сигнала прогнозирования локального декодирования 14 посредством блока 12 обратного квантования и блока 13 обратного преобразования. Квантованный коэффициент преобразования 10 суммируется с прогнозируемым изображением 7, которое генерируется на основании типа макроблока/типа субмакроблока 106, вектора движения 137 и выбранного опорного изображения, сумматором 18 для генерации локально декодированного изображения 15. Локально декодированное изображение 15 сохраняется в памяти 16 для использования в дальнейшей обработке прогнозирования для компенсации движения. Флаг 24 управления разблокирующим фильтром, указывающий, применяется ли разблокирующий фильтр к макроблоку, также вводится в блок 11 кодирования с переменной длиной слова (При обработке прогнозирования, выполняемой блоком 102 прогнозирования компенсации движения, поскольку пиксельные данные, до обработки разблокирующим фильтром, сохраняются в памяти 16, обработка разблокирующего фильтра сама по себе не обязательна для обработки кодирования. Однако разблокирующий фильтр действует согласно указанию флага 24 управления разблокирующим фильтром на стороне декодера для получения окончательного декодированного изображения.).
Флаг 123 идентификации общего использования режима интерпрогнозирования, квантованный коэффициент преобразования 10, тип макроблока/тип субмакроблока 106, вектор движения 137, идентификационный номер опорного изображения и параметр квантования 21, введенные в блок 11 кодирования с переменной длиной слова, упорядочены и сформированы в виде битового потока в соответствии с заранее определенным правилом (синтаксисом) и выводятся в буфер передачи 17. Буфер передачи 17 сглаживает битовый поток согласно полосе линии передачи, к которой подключен кодер, и скорости чтения носителя записи и выводит битовый поток в качестве видеопотока 22. Буфер передачи 17 выводит информацию обратной связи на блок 19 управления кодированием согласно состоянию накопления битового потока в буфер передачи 17 и затем управляет объемом генерируемых кодов при кодировании видеокадров.
2. Обработка принятия решения относительно режима интерпрогнозирования в кодере
Ниже подробно описана обработка принятия решения относительно режима интерпрогнозирования, которая является характеристикой кодера согласно седьмому варианту осуществления. В нижеследующем описании режим интерпрогнозирования указывает размер блока, служащий входным сигналом для компенсации вектора движения, т.е. тип макроблока/тип субмакроблока. Обработка принятия решения относительно режима интерпрогнозирования означает обработку для выбора типа макроблока/типа субмакроблока, вектора движения и опорного изображения. Обработка осуществляется в единицах макроблоков, полученных размещением трех цветовых компонентов. Обработка осуществляется, в основном, блоком 102 прогнозирования компенсации движения и блоком 5 принятия решения относительно режима кодирования в кодере, показанном на фиг.30. Логическая блок-схема, демонстрирующая ход обработки, показана на фиг.33. Данные изображения трех цветовых компонентов, образующих блок, именуются ниже C0, C1 и C2.
Прежде всего, блок 5 принятия решения относительно режима кодирования принимает флаг 123 идентификации общего использования режима интерпрогнозирования и принимает решение, на основании значения флага 123 идентификации общего использования режима интерпрогнозирования, используются ли общий режим интерпрогнозирования, общий вектор движения 137 и общее опорное изображение для C0, C1 и C2 (этап S100 на фиг.33). Когда режим интерпрогнозирования, вектор движения 137 и опорное изображение используются совместно, блок 5 принятия решения относительно режима кодирования переходит к этапу S101 и последующим этапам. В противном случае, блок 5 принятия решения относительно режима кодирования переходит к этапу S102 и последующим этапам.
Когда режим интерпрогнозирования, вектор движения 137 и опорное изображение используются совместно для C0, C1 и C2, блок 5 принятия решения относительно режима кодирования извещает блок 102 прогнозирования компенсации движения обо всех режимах интерпрогнозирования, диапазонах поиска вектора движения и опорных изображениях, которые можно выбрать. Блок 102 прогнозирования компенсации движения оценивает эффективности прогнозирования для всех режимов интерпрогнозирования, диапазонов поиска вектора движения и опорных изображений и выбирает оптимальный режим интерпрогнозирования, оптимальный вектор движения 137 и оптимальные опорные изображения, общие для C0, C1 и C2 (этап S101).
Когда режим интерпрогнозирования, вектор движения 137 и опорное изображение не используются совместно для C0, C1 и C2, и для C0, C1 и C2, соответственно, выбираются наилучшие режимы, блок 5 принятия решения относительно режима кодирования извещает блок 102 прогнозирования компенсации движения обо всех режимах интерпрогнозирования, диапазонах поиска вектора движения и опорных изображениях, которые можно выбрать для компонентов Ci (i<=0<3). Блок 102 прогнозирования компенсации движения оценивает эффективности прогнозирования для всех режимов интерпрогнозирования, диапазонов поиска вектора движения и опорных изображений и выбирает оптимальный режим интерпрогнозирования, оптимальный вектор движения 137 и оптимальное опорное изображение в компонентах Ci (i<=0<3) (этапы S102, S103 и S104).
В качестве критериев для оценки эффективности прогнозирования для режима прогнозирования, осуществляемой в блоке 102 прогнозирования компенсации движения, можно, например, использовать стоимость скорости/искажения, заданную как Jm,v,r=Dm,v,r+ Rm,v,r ( : положительное число). Dm,v,r - это искажение кодирования или величина ошибки прогнозирования в случае, когда применяются режим интерпрогнозирования m, векторы движения v в заранее определенном диапазоне и опорное изображение r. Искажение кодирования получается с применением режима интерпрогнозирования m, векторов движения v и опорного изображения r для вычисления ошибки прогнозирования и декодирования видеосигнала из результата, полученного путем преобразования и квантования ошибки прогнозирования для измерения ошибки относительно сигнала до кодирования. Величина ошибки прогнозирования получается путем вычисления разности между прогнозируемым изображением и сигналом до кодирования в случае, когда применяются режим интерпрогнозирования m, векторы движения v и опорное изображение r, и квантования уровня разности. Например, используется сумма абсолютных расстояний (SAD). Rm,v,r - это объем генерируемых кодов в случае, когда применяются режим интерпрогнозирования m, векторы движения v и опорное изображение r. Иными словами, Jm,v,r - это значение, задающее компромисс между объемом кодов и степенью ухудшения в случае, когда применяются режим интерпрогнозирования m, векторы движения v и опорное изображение r. Режим интерпрогнозирования m, дающий минимальное Jm,v,r, векторы движения v и опорное изображение r дают оптимальное решение.
Когда кодер осуществляет обработку на этапе S101 и последующих этапах, пара фрагментов информации о режиме интерпрогнозирования, векторах движения 137 и опорном изображении выделяются макроблоку, включающему в себя три цветовых компонента. С другой стороны, когда кодер осуществляет обработку на этапе S102 и последующих этапах, информация режима интерпрогнозирования, векторы движения 137 и опорное изображение выделяются цветовым компонентам, соответственно. Таким образом, поскольку фрагменты информации о режимах интерпрогнозирования, векторах движения 137 и опорном изображении, выделенные макроблоку, отличаются, необходимо мультиплексировать флаг 123 идентификации общего использования режима интерпрогнозирования в битовый поток и дать возможность декодеру распознавать, осуществил ли кодер этапы обработки на этапе S101 и последующих этапах или осуществил этапы обработки на этапе S102 и последующих этапах. Массив данных такого битового потока показан на фиг.34.
Массив данных битового потока на уровне макроблоков показан на фиг.34. Тип макроблока указывает интра или интер и включает в себя информацию, служащую единицей компенсации движения во время режима интер. Тип субмакроблока мультиплексируется только, когда 8×8 размер блока выбран в качестве типа макроблока и включает в себя информацию размера блока для каждого из размеров блока 8×8. Базовый тип 128 макроблока и базовый тип 129 субмакроблока указывают общий тип макроблока и общий тип субмакроблока, когда флаг 123 идентификации общего использования режима интерпрогнозирования указывает "общий для C0, C1 и C2". В противном случае, базовый тип 128 макроблока и базовый тип 129 субмакроблока указывают тип макроблока и тип субмакроблока для C0. Расширенный тип 130 макроблока и расширенный тип 131 субмакроблока мультиплексируются для C1 и C2, соответственно, только когда флаг 123 идентификации общего использования режима интерпрогнозирования указывает "не общий для C0, C1 и C2". Тип 130 макроблока и расширенный тип 131 субмакроблока указывают тип макроблока и тип субмакроблока для C1 и C2.
Идентификационный номер опорного изображения - это информация для указания опорного изображения, выбранного для каждого блока, большего или равного размеру блока 8×8, служащего единицей компенсации движения. Во время интер-кадра, поскольку опорное изображение, которое можно выбрать, является одним кадром, один идентификационный номер опорного изображения мультиплексируется для каждого блок. Пара фрагментов информации вектора движения мультиплексируется на информацию вектора движения для каждого блока, служащего единицей компенсации движения. Количество идентификационных номеров опорного изображения и фрагментов информации вектора движения, которые нужно мультиплексировать, эквивалентно количеству блоков, служащих единицами компенсации движения, включенными в макроблок. Когда флаг 123 идентификации общего использования режима интерпрогнозирования указывает "общий для C0, C1 и C2", идентификационный номер 132 базового опорного изображения и информация 133 базового вектора движения указывают идентификационный номер общего опорного изображения и информацию общего вектора движения. В противном случае, идентификационный номер 132 базового опорного изображения и информация 133 базового вектора движения указывают идентификационный номер опорного изображения и информацию вектора движения для C0. Идентификационный номер 134 расширенного опорного изображения и информация 135 расширенного вектора движения мультиплексируются для C1 и C2, соответственно, только когда флаг 123 идентификации общего использования режима интерпрогнозирования указывает "не общий для C0, C1 и C2". Идентификационный номер 134 расширенного опорного изображения и информация 135 расширенного вектора движения указывают идентификационный номер опорного изображения и информацию вектора движения для C1 и C2.
Затем, параметр квантования 21 и квантованный коэффициент преобразования 10 мультиплексируются (Хотя флаг 24 управления разблокирующим фильтром, введенный в блок 11 кодирования с переменной длиной слова, показанный на фиг.30, не включен в фиг.34, флаг 24 управления разблокирующим фильтром опущен, поскольку флаг не является компонентом, необходимым для пояснения характеристик седьмого варианта осуществления.).
В формате 4:2:0, принятом в традиционном стандарте кодирования видеосигнала, определение цветовых пространств зафиксировано на Y, Cb и Cr. В формате 4:4:4 определение цветовых пространств не ограничивается Y, Cb и Cr, но можно использовать различные цветовые пространства. Формируя информацию режима интерпрогнозирования, как показано на фиг.34, можно осуществлять оптимальную обработку кодирования даже, когда определение цветовых пространств входного видеосигнала 1 различно. Например, когда цветовые пространства определены как RGB, в области, где структура видеотекстуры одинаково остается в соответствующих компонентах R, G и B, используя информацию общего режима интерпрогнозирования и информацию общего вектора движения, можно сократить избыточность информации режима интерпрогнозирования и самой информации вектора движения и повысить эффективность кодирования. С другой стороны, когда цветовые пространства определены как Y, Cb и Cr, структура видеотекстуры интегрируется в Y. Таким образом, общий режим интерпрогнозирования не всегда дает оптимальный результат. Таким образом, можно получить оптимальную эффективность кодирования, адаптивно используя расширенный режим интрапрогнозирования 30. С другой стороны, например, в области (компонент R равен 0) без оттенка красного, информация оптимального режима интерпрогнозирования и оптимального вектора для компонента R и информация оптимального режима интерпрогнозирования и оптимального вектора движения для компонентов G и B должны быть разными. Таким образом, можно получить оптимальную эффективность кодирования, адаптивно используя расширенный режим интерпрогнозирования, информацию идентификации расширенного опорного изображения и информацию расширенного вектора движения.
3. Описание работы декодера
Декодер, показанный на фиг.31, принимает видеопоток 22, отвечающий массиву, показанному на фиг.34, выводимый из кодера, показанного на фиг.30, осуществляет обработку декодирования в единицах макроблоков, в которых три цветовых компонента имеют идентичный размер (формат 4:4:4), и восстанавливает соответствующие видеокадры.
Сначала блок 25 декодирования с переменной длиной слова получает поток 22, декодирует видеопоток 22 в соответствии с заранее определенным правилом (синтаксисом) и извлекает информацию, включающую в себя флаг 123 идентификации общего использования режима интерпрогнозирования, квантованный коэффициент преобразования 10, тип макроблока/тип субмакроблока 106, идентификационный номер опорного изображения, информацию вектора движения и параметр квантования 21. Квантованный коэффициент преобразования 10 вводится в блок обратного квантования 12 совместно с параметром квантования 21, и осуществляется обработка обратного квантования. Затем выходной сигнал блока обратного квантования 12 вводится в блок обратного преобразования 13 и восстанавливается до разностного сигнала прогнозирования локального декодирования 14. С другой стороны, тип макроблока/тип субмакроблока 106 и флаг 123 идентификации общего использования режима интерпрогнозирования вводятся в блок 102 прогнозирования компенсации движения. Блок 102 прогнозирования компенсации движения получает прогнозируемое изображение 7 в соответствии с этими фрагментами информации. Ниже будет описана конкретная процедура для получения прогнозируемого изображения 7. Разностный сигнал прогнозирования локального декодирования 14 и прогнозируемое изображение 7 суммируются сумматором 18 для получения внутренне декодированного изображения 15 (это полностью такой же сигнал, как локально декодированное изображение 15 в кодере). Внутренне декодированное изображение 15 записывается обратно в память 16 для последующего использования при прогнозировании с компенсацией движения для макроблока. Три блока памяти подготавливаются для соответствующих цветовых компонентов (хотя в объяснении этого варианта осуществления подготавливаются три блока памяти, количество блоков памяти можно соответственно изменять согласно конструкции). Разблокирующий фильтр 26 получает команду воздействовать на внутренне декодированное изображение 15 на основании указания флага 24 управления разблокирующим фильтром, декодированного блоком 25 декодирования с переменной длиной слова, для получения окончательного декодированного изображения 27.
2. Обработка декодирования интерпрогнозирования в декодере
Декодер, показанный фиг.31, принимает видеопоток 22, отвечающий массиву, показанному на фиг.34, выводимый из кодера, показанного на фиг.30, осуществляет обработку декодирования в единицах макроблоков с идентичным размером (формат 4:4:4) для трех цветовых компонентов и восстанавливает соответствующие видеокадры.
Ниже подробно описана обработка генерации интерпрогнозируемого изображения, которая является характеристикой декодера согласно седьмому варианту осуществления. Эта обработка осуществляется в единицах макроблоков, в которых размещены три цветовых компонента. Обработка осуществляется, в основном, блоком 25 декодирования с переменной длиной слова и блоком 102 прогнозирования компенсации движения в декодере, показанном на фиг.31. Логическая блок-схема хода обработки, осуществляемой блоком 25 декодирования с переменной длиной слова, показана на фиг.35.
Видеопоток 22, вводимый в блок 25 декодирования с переменной длиной слова, согласуется с массивом данных, показанным на фиг.34. На этапе S110 блок 25 декодирования с переменной длиной слова декодирует флаг 123 идентификации общего использования режима интерпрогнозирования для данных, показанных на фиг.34 (этап S110). Блок 25 декодирования с переменной длиной слова дополнительно декодирует базовый тип 128 макроблока и базовый тип 129 субмакроблока (этап S111). На этапе S112 блок 25 декодирования с переменной длиной слова принимает решение, используется ли режим интерпрогнозирования совместно для C0, C1 и C2, на основании результата флага 123 идентификации общего использования режима интерпрогнозирования. Когда режим интерпрогнозирования используется совместно для C0, C1 и C2 (Да на этапе S112), блок 25 декодирования с переменной длиной слова использует базовый тип 128 макроблока и базовый тип 129 субмакроблока для всех C0, C1 и C2. В противном случае (Нет на этапе S112), блок 25 декодирования с переменной длиной слова использует базовый тип 128 макроблока и базовый тип 129 субмакроблока в качестве режима для C0. Блок 25 декодирования с переменной длиной слова декодирует расширенный тип 130 макроблока и расширенный тип 131 субмакроблока для C1 и C2, соответственно (этап S113), для получения информации режима интерпрогнозирования для C1 и C2. Блок 25 декодирования с переменной длиной слова декодирует идентификационный номер 132 базового опорного изображения и информацию 133 базового вектора движения (этап S114). Когда флаг 123 идентификации общего использования режима интерпрогнозирования указывает "используется совместно для C0, C1 и C2" (Да на этапе S115), блок 25 декодирования с переменной длиной слова использует идентификационный номер 132 базового опорного изображения и информацию 133 базового вектора движения для всех C0, C1 и C2. В противном случае (Нет на этапе S115), блок 25 декодирования с переменной длиной слова использует идентификационный номер 132 базового опорного изображения и информацию 133 базового вектора движения в качестве информации для C0. Блок 25 декодирования с переменной длиной слова декодирует идентификационный номер 134 расширенного опорного изображения и информацию 135 расширенного вектора движения для C1 и C2, соответственно (этап S116). Типы 106 макроблока, идентификационные номера опорного изображения и информация вектора движения для соответствующих цветовых компонентов устанавливаются на этапах обработки. Таким образом, блок 25 декодирования с переменной длиной слова выводит типы макроблока 106, идентификационные номера опорного изображения и информацию вектора движения на блок 102 прогнозирования компенсации движения для получения прогнозируемых изображений с компенсацией движения соответствующих цветовых компонентов.
Вариации массива данных битового потока, показанного на фиг.34, показаны на фиг.36. На фиг.36 флаг 123 идентификации общего использования режима интерпрогнозирования мультиплексируется как флаг, расположенный на более высоком уровне данных, например, на уровне среза, изображения или последовательности, а не как флаг на уровне макроблоков. Следовательно, когда возможно обеспечить достаточную эффективность прогнозирования согласно изменению на более высоком уровне, равном или более высоком, чем уровень среза, можно сократить бит служебной информации без мультиплексирования флага 123 идентификации общего использования режима прогнозирования на уровне макроблоков каждый раз при осуществлении обработки.
На фиг.34 и 36 флаг 123 идентификации общего использования режима интерпрогнозирования мультиплексируется на каждый макроблок или более высокий уровень данных, например, срез, изображение или последовательность. Когда кодирование осуществляется в формате 4:4:4 без мультиплексирования флага 123 идентификации общего использования режима интерпрогнозирования, всегда можно использовать разные режимы интерпрогнозирования и информацию вектора движения для соответствующих компонентов. Массив данных битового потока в этом случае показан на фиг.37. На фиг.37 флаг 123 идентификации общего использования режима интерпрогнозирования отсутствует, и информация 136 профиля, указывающая, что обрабатывается входное изображение в формате 4:4:4, мультиплексируется на данные более высокого уровня, например, последовательность. Расширенный тип 130 макроблока, расширенный тип 131 субмакроблока, идентификационный номер 134 расширенного опорного изображения и информация 135 расширенного вектора движения мультиплексируются согласно результату декодирования информации профиля.
Восьмой вариант осуществления
Согласно седьмому варианту осуществления тип макроблока/тип субмакроблока, вектор движения и опорное изображение можно варьировать для каждого из цветовых компонентов. Согласно восьмому варианту осуществления будут описаны видеокодер и видеодекодер, отличающиеся способностью задавать тип макроблока/тип субмакроблока, общий для соответствующих компонентов, и варьировать только вектор движения для каждого из компонентов. Структуры видеокодера и видеодекодера согласно восьмому варианту осуществления такие же, как на фиг.30 и 31 согласно седьмому варианту осуществления. Однако структуры отличаются тем, что вместо флага 123 идентификации общего использования режима интерпрогнозирования используется флаг 123b идентификации общего использования вектора движения.
1. Обработка принятия решения относительно режима интерпрогнозирования в кодере
Обработка принятия решения относительно режима интерпрогнозирования, которая является характеристикой кодера согласно восьмому варианту осуществления, будет подробно описана с упором на обработку, отличную от обработки согласно седьмому варианту осуществления.
2. Обработка принятия решения относительно режима интерпрогнозирования в кодере
Обработка осуществляется в единицах макроблоков, полученных размещением трех цветовых компонентов. Обработка осуществляется, в основном, блоком 102 прогнозирования компенсации движения и блоком 5 принятия решения относительно режима кодирования в кодере, показанном на фиг.30. Логическая блок-схема, демонстрирующая ход обработки, показана на фиг.38. Данные изображения трех цветовых компонентов, образующих блок, именуются ниже C0, C1 и C2.
Прежде всего, блок 5 принятия решения относительно режима кодирования принимает флаг 123b идентификации общего использования вектора движения и принимает решение, на основании значения флага 123b идентификации общего использования вектора движения, используется ли общий вектор движения 137 для C0, C1 и C2 (этап S120 на фиг.37). При использовании общего вектора движения 137 блок 5 принятия решения относительно режима кодирования переходит к этапу S121 и последующим этапам. В противном случае, блок 5 принятия решения относительно режима кодирования переходит к этапу S122 и последующим этапам.
Когда вектор движения 137 используется совместно для C0, C1 и C2, блок 5 принятия решения относительно режима кодирования извещает блок 102 прогнозирования компенсации движения обо всех режимах интерпрогнозирования, диапазонах поиска вектора движения и опорных изображениях, которые можно выбрать. Блок 102 прогнозирования компенсации движения оценивает эффективности прогнозирования для всех режимов интерпрогнозирования, диапазонов поиска вектора движения и опорных изображений и выбирает оптимальный режим интерпрогнозирования, оптимальный вектор движения 137 и оптимальные опорные изображения, общие для C0, C1 и C2 (этап S121).
Когда вектор движения 137 не используется совместно для C0, C1 и C2, и наилучшие векторы движения выбираются для C0, C1 и C2, соответственно, блок 5 принятия решения относительно режима кодирования извещает блок 102 прогнозирования компенсации движения обо всех режимах интерпрогнозирования, диапазонах поиска вектора движения и опорных изображениях, которые можно выбрать. Блок 102 прогнозирования компенсации движения оценивает эффективности прогнозирования для всех режимов интерпрогнозирования, диапазонов поиска вектора движения и опорных изображений и выбирает оптимальный режим интерпрогнозирования и оптимальное опорное изображение (этап 122) и, дополнительно, оптимальный вектор движения в компонентах Ci (i<=0<3) (этапы S123, S124 и S125).
Необходимо мультиплексировать флаг 123b идентификации общего использования вектора движения в битовый поток и обеспечить возможность распознавания флага 123b идентификации общего использования вектора движения на стороне декодера. Массив данных такого битового потока показан на фиг.39.
Массив данных битового потока на уровне макроблоков показан на фиг.39. Тип 128b макроблока, тип 129b субмакроблока и идентификационный номер 132b опорного изображения являются "общими для C0, C1 и C2". Когда флаг 123b идентификации общего использования вектора движения указывает "общий для C0, C1 и C2", информация 133 базового вектора движения указывает информацию общего вектора движения. В противном случае, информация 133 базового вектора движения указывает информацию вектора движения для C0. Только когда флаг 123b идентификации общего использования вектора движения указывает "не общий для C0, C1 и C2", информация 135 расширенного вектора движения мультиплексируется для C1 и C2, соответственно, и указывает информацию вектора движения для C1 и C2. Тип макроблока/тип субмакроблока 106, показанные на фиг.30 и 31, являются общим членом типа 128b макроблока и типа 129b субмакроблока, показанных на фиг.39.
2. Обработка декодирования интерпрогнозирования в декодере
Декодер согласно восьмому варианту осуществления принимает видеопоток 22, отвечающий массиву, показанному на фиг.39, выводимый из кодера согласно восьмому варианту осуществления, осуществляет обработку декодирования в единицах макроблоков с идентичным размером (формат 4:4:4) для трех цветовых компонентов и восстанавливает соответствующие видеокадры.
Обработка генерации интерпрогнозируемого изображения, которая является характеристикой декодера согласно восьмому варианту осуществления, будет подробно описана с упором на обработку, отличную от обработки согласно седьмому варианту осуществления. Эта обработка осуществляется в единицах макроблоков, в которых размещены три цветовых компонента. Обработка осуществляется, в основном, блоком 25 декодирования с переменной длиной слова и блоком 102 прогнозирования компенсации движения в декодере, показанном на фиг.31. Логическая блок-схема хода обработки, осуществляемой блоком 25 декодирования с переменной длиной слова, показана на фиг.40.
Видеопоток 22, вводимый в блок 25 декодирования с переменной длиной слова, согласуется с массивом данных, показанным на фиг.39. На этапе S126 блок 25 декодирования с переменной длиной слова декодирует тип 128b макроблока и тип 129b субмакроблока, общие для C0, C1 и C2. Размер блока, служащего единицей компенсации движения, зависит от декодированных типа 128b макроблока или типа 129b субмакроблока. Таким образом, блок 25 декодирования с переменной длиной слова декодирует идентификационный номер 132b опорного изображения, общий для C0, C1 и C2, для каждого блока, служащего единицей компенсации движения (этап S127). На этапе S128 блок 25 декодирования с переменной длиной слова декодирует флаг 123b идентификации общего использования вектора движения. Затем, блок 25 декодирования с переменной длиной слова декодирует информацию 133 базового вектора движения для каждого блока, служащего единицей компенсации движения (этап S129). На этапе S130 блок 25 декодирования с переменной длиной слова принимает решение, используется ли вектор движения 137 совместно для C0, C1 и C2, с использованием результата флага 123b идентификации общего использования вектора движения. Когда вектор движения 137 используется совместно (Да на этапе S130), блок 25 декодирования с переменной длиной слова использует информацию базового вектора движения для всех C0, C1 и C2. В противном случае (Нет на этапе S130), блок 25 декодирования с переменной длиной слова использует информацию 133 базового вектора движения в качестве режима для C0 и декодирует информацию 135 расширенного вектора движения для C1 и C2, соответственно (этап S131). Поскольку типы макроблока/типы субмакроблока 106, идентификационные номера опорных изображений и информация вектора движения для соответствующих цветовых компонентов устанавливаются на этапах обработки, блок 25 декодирования с переменной длиной слова выводит типы макроблока/типы субмакроблока 106, идентификационные номера опорных изображений и информацию вектора движения на блок 102 прогнозирования компенсации движения для получения прогнозируемого изображения с компенсацией движения для соответствующих цветовых компонентов.
Вариации массива данных битового потока, показанного на фиг.39, показаны на фиг.41. Согласно фиг.39 флаг 123b идентификации общего использования вектора движения мультиплексируется как флаг, расположенный на более высоком уровне данных, например, на уровне среза, изображения или последовательности, а не как флаг на уровне макроблоков. Следовательно, когда возможно обеспечить достаточную эффективность прогнозирования согласно изменению на более высоком уровне, равном или более высоком, чем уровень среза, можно сократить бит служебной информации без мультиплексирования флага 123b идентификации общего использования вектора движения на уровне макроблоков каждый раз при осуществлении обработки.
Согласно фиг.39 и 41 флаг 123b идентификации общего использования вектора движения мультиплексируется на каждый макроблок или более высокий уровень данных, например, срез, изображение или последовательность. Когда кодирование осуществляется в формате 4:4:4 без мультиплексирования, флаг 123b идентификации общего использования вектора движения, другую информацию вектора движения всегда можно использовать для соответствующих компонентов. Массив данных битового потока в этом случае показан на фиг.42. На фиг.42 флаг 123b идентификации общего использования вектора движения отсутствует, и информация 136 профиля, указывающая, что обрабатывается входное изображение в формате 4:4:4, мультиплексируется на данные более высокого уровня, например, последовательность. Информация 135 расширенного вектора движения мультиплексируется согласно результату декодирования информации профиля 136.
Согласно восьмому варианту осуществления тип макроблока/тип субмакроблока 106 и опорное изображение являются общими для соответствующих цветовых компонентов, и только вектор движения 137 может варьироваться для каждого из цветовых компонентов. Следовательно, когда достаточная эффективность прогнозирования получается путем адаптации только вектора движения 137 к соответствующим цветовым компонентам, можно сократить биты служебной информации без мультиплексирования типа макроблока/типа субмакроблока 106 и идентификационного номера опорного изображения для каждого из цветовых компонентов.
Девятый вариант осуществления
Согласно седьмому варианту осуществления можно принять решение, используются ли тип макроблока/тип субмакроблока 106, вектор движения 137 и опорное изображение совместно для трех компонентов или изменяются для каждого из цветовых компонентов согласно флагу 123 идентификации общего использования режима интерпрогнозирования или информации профиля 136. Однако, согласно девятому варианту осуществления, предполагая, что изображение в формате 4:4:4 отвечает формату Y, Cb, Cr, можно принять решение, используются ли разные режимы для компонента яркости (Y) и цветоразностного компонента (Cb, Cr) (в этом случае, общий режим используется для двух компонентов из цветоразностных компонентов). Будут объяснены видеокодер и видеодекодер, отличающиеся способностью принимать решение, используется ли общий режим для трех компонентов, используются ли разные режимы из соответствующих компонентов, или используются разные режимы для компонентов яркости и цветоразностных компонентов. Структуры видеокодера и видеодекодера согласно девятому варианту осуществления идентичны показанным на фиг.30 и 31 согласно седьмому варианту осуществления.
1. Обработка принятия решения относительно режима интерпрогнозирования в кодере
Обработка принятия решения относительно режима интерпрогнозирования, которая является характеристикой кодера согласно девятому варианту осуществления, будет подробно описана с упором на обработку, отличную от обработки согласно седьмому варианту осуществления.
Обработка осуществляется в единицах макроблоков, полученных размещением трех цветовых компонентов. Обработка осуществляется, в основном, блоком 102 прогнозирования компенсации движения и блоком 5 принятия решения относительно режима кодирования в кодере, показанном на фиг.30. Логическая блок-схема, демонстрирующая ход обработки, показана на фиг.43. Данные изображения трех цветовых компонентов, образующих блок, именуются ниже C0, C1 и C2.
Прежде всего, блок 5 принятия решения относительно режима кодирования принимает флаг 123 идентификации общего использования режима интерпрогнозирования и принимает решение, на основании значения флага 123 идентификации общего использования режима интерпрогнозирования, используются ли общий режим интерпрогнозирования, общий вектор движения 137 и общее опорное изображение для C0, C1 и C2 (этап S132 на фиг.43). Когда режим интерпрогнозирования, вектор движения 137 и опорное изображение используются совместно, блок 5 принятия решения относительно режима кодирования переходит к этапу S133 и последующим этапам. В противном случае, блок 5 принятия решения относительно режима кодирования переходит к этапу S134 и последующим этапам или к этапу 137 и последующим этапам.
Когда режим интерпрогнозирования, вектор движения 137 и опорное изображение используются совместно для C0, C1 и C2, блок 5 принятия решения относительно режима кодирования извещает блок 102 прогнозирования компенсации движения обо всех режимах интерпрогнозирования, диапазонах поиска вектора движения и опорных изображениях, которые можно выбрать. Блок 102 прогнозирования компенсации движения оценивает эффективности прогнозирования для всех режимов интерпрогнозирования, диапазонов поиска вектора движения и опорных изображений и выбирает оптимальный режим интерпрогнозирования, оптимальный вектор движения 137 и оптимальные опорные изображения, общие для C0, C1 и C2 (этап S133).
Когда режим интерпрогнозирования, вектор движения 137 и опорное изображение не используются совместно для C0, C1 и C2, и для C0, C1 и C2, соответственно, выбираются наилучшие режимы, блок 5 принятия решения относительно режима кодирования извещает блок 102 прогнозирования компенсации движения обо всех режимах интерпрогнозирования, диапазонах поиска вектора движения и опорных изображениях, которые можно выбрать для компонентов Ci (i<=0<3). Блок 102 прогнозирования компенсации движения оценивает эффективности прогнозирования для всех режимов интерпрогнозирования, диапазонов поиска вектора движения и опорных изображений и выбирает оптимальный режим интерпрогнозирования, оптимальный вектор движения 137 и оптимальные опорные изображения в компонентах Ci (i<=0<3) (этапы S134, S135 и S136).
Когда режим интерпрогнозирования, вектор движения 137 и опорное изображение используются совместно для C1 и C2, и наилучшие режимы выбираются для C0 (эквивалентного компоненту яркости) и C1 и C2 (эквивалентных цветоразностным компонентам), блок 5 принятия решения относительно режима кодирования извещает блок 102 прогнозирования компенсации движения обо всех режимах интерпрогнозирования, диапазонах поиска вектора движения и опорных изображениях, которые можно выбрать в компоненте C0. Блок 102 прогнозирования компенсации движения оценивает эффективности прогнозирования для всех режимов интерпрогнозирования, диапазонов поиска вектора движения и опорных изображений и выбирает оптимальный режим интерпрогнозирования, оптимальный вектор движения 137 и оптимальное опорное изображение в компоненте C0 (этап S137). Блок 5 принятия решения относительно режима кодирования извещает блок 102 прогнозирования компенсации движения обо всех режимах интерпрогнозирования, диапазонах поиска вектора движения и опорных изображениях, которые можно выбрать в компонентах C1 и C2. Блок 102 прогнозирования компенсации движения оценивает эффективности прогнозирования для всех режимов интерпрогнозирования, диапазонов поиска вектора движения и опорных изображений и выбирает оптимальный режим интерпрогнозирования, оптимальный вектор движения 137 и оптимальное опорное изображение, общие для C1 и C2 (этап S138).
Массив данных битового потока, выводимый кодером согласно девятому варианту осуществления, такой же, как показан на фиг.34. Когда флаг 123 идентификации общего использования режима интерпрогнозирования указывает "общий для C1 и C2", расширенный тип 130 макроблока, расширенный тип 131 субмакроблока, расширенный опорный идентификационный номер 134 и информация 135 расширенного вектора движения являются информацией, общей для C1 и C2.
2. Обработка декодирования интерпрогнозирования в декодере
Декодер согласно девятому варианту осуществления принимает видеопоток 22, отвечающий массиву, показанному на фиг.34, выводимый из кодера согласно девятому варианту осуществления, осуществляет обработку декодирования в единицах макроблоков с идентичным размером (формат 4:4:4) для трех цветовых компонентов и восстанавливает соответствующие видеокадры.
Обработка генерации интерпрогнозируемого изображения, которая является характеристикой декодера согласно девятому варианту осуществления, будет подробно описана с упором на обработку, отличную от обработки согласно седьмому варианту осуществления. Эта обработка осуществляется в единицах макроблоков, в которых размещены три цветовых компонента. Обработка осуществляется, в основном, блоком 25 декодирования с переменной длиной слова и блоком 102 прогнозирования компенсации движения в декодере, показанном на фиг.31. Логическая блок-схема хода обработки, осуществляемой блоком 25 декодирования с переменной длиной слова, показана на фиг.44.
Видеопоток 22, вводимый в блок 25 декодирования с переменной длиной слова, согласуется с массивом данных, показанным на фиг.34. На этапе S140 блок 25 декодирования с переменной длиной слова декодирует флаг 123 идентификации общего использования режима интерпрогнозирования для данных, показанных на фиг.34 (этап S140). Блок 25 декодирования с переменной длиной слова дополнительно декодирует базовый тип 128 макроблока и базовый тип 129 субмакроблока (этап S141). На этапе S142 блок 25 декодирования с переменной длиной слова принимает решение, используется ли режим интерпрогнозирования совместно для C0, C1 и C2, на основании результата флага 123 идентификации общего использования режима интерпрогнозирования. Когда режим интерпрогнозирования используется совместно для C0, C1 и C2, блок 25 декодирования с переменной длиной слова использует базовый тип 128 макроблока и базовый тип 129 субмакроблока для всех C0, C1 и C2. В противном случае, блок 25 декодирования с переменной длиной слова использует базовый тип 128 макроблока и базовый тип 129 субмакроблока в качестве режима для C0. Кроме того, когда общий режим используется для C1 и C2, блок 25 декодирования с переменной длиной слова декодирует расширенный тип 130 макроблока и расширенный тип 131 субмакроблока, общие для компонентов C1 и C2 (этап S143). Когда разные режимы используются для C0, C1 и C2, блок 25 декодирования с переменной длиной слова декодирует расширенный тип 130 макроблока и расширенный тип 131 субмакроблока для C1 и C2, соответственно (этапы S144, S145 и S146), для получения информации режима для C1 и C2. Блок 25 декодирования с переменной длиной слова декодирует идентификационный номер 132 базового опорного изображения и информацию 133 базового вектора движения (этап S147). Когда флаг 123 идентификации общего использования режима интерпрогнозирования указывает "используется совместно для C0, C1 и C2", блок 25 декодирования с переменной длиной слова использует идентификационный номер 132 базового опорного изображения и информацию 133 базового вектора движения для всех C0, C1 и C2. В противном случае, блок 25 декодирования с переменной длиной слова использует идентификационный номер 132 базового опорного изображения и информацию 133 базового вектора движения в качестве информации для C0. Кроме того, когда общий режим используется для C1 и C2, блок 25 декодирования с переменной длиной слова декодирует идентификационный номер 134 расширенного опорного изображения и информацию 135 расширенного вектора движения, общие для компонентов C1 и C2 (этап 149). Когда разные режимы используются для C0, C1 и C2, блок 25 декодирования с переменной длиной слова декодирует идентификационный номер 134 расширенного опорного изображения и информацию 135 расширенного вектора движения для C1 и C2, соответственно (этапы S150, S151 и S152). Типы макроблока 106, идентификационные номера опорного изображения и информацию вектора движения для соответствующих цветовых компонентов устанавливают на этапах обработки. Таким образом, блок 25 декодирования с переменной длиной слова выводит типы макроблока 106, идентификационные номера опорного изображения и информацию вектора движения на блок 102 прогнозирования компенсации движения для получения прогнозируемых изображений с компенсацией движения соответствующих цветовых компонентов.
Аналогично, в случае массива данных битового потока, показанного на фиг.36, когда флаг 123 идентификации общего использования режима интерпрогнозирования указывает "общий для C1 и C2", расширенный тип 130 макроблока, расширенный тип 131 субмакроблока, расширенный опорный идентификационный номер 134 и информация 135 расширенного вектора движения являются информацией, общей для C1 и C2. Операции видеокодера и видеодекодера, в которые вводится видеопоток, отвечающий массиву данных, показанному на фиг.36, и из которого видеопоток выводится, такие же, как в случае, показанном на фиг.34.
Согласно девятому варианту осуществления тип макроблока/тип субмакроблока 106, вектор движения 137 и опорное изображение могут варьироваться для каждого из цветовых компонентов. Тип макроблока/тип субмакроблока 106 и опорное изображение также могут быть общими для соответствующих компонентов, и только вектор движения 137 является общим для трех компонентов, изменяться для каждого компонентов, или быть общими для C1 и C2, и оптимальные выбираются для C0, C1 и C2, соответственно. Массив данных битового потока в этом случае согласуется с фиг.39 или фиг.41. В этом случае, как в вышеописанном случае, когда флаг 123 идентификации общего использования режима интерпрогнозирования указывает "общий для C1 и C2", информация 135 расширенного вектора движения является информацией, общей для C1 и C2.
Десятый вариант осуществления
Согласно десятому варианту осуществления будут описаны способ кодирования вводимого вектора движения 137 и мультиплексирования вектора движения 137 в битовый поток в блоке 11 кодирования с переменной длиной слова кодера, описанном согласно седьмому варианту осуществления, и способ декодирования вектора движения 137 из битового потока в блоке 25 декодирования с переменной длиной слова декодера, соответствующего кодеру.
На фиг.45 показана схема структуры части блока 11 кодирования с переменной длиной слова кодера, показанного на фиг.30, который является блоком кодирования вектора движения, который кодирует вектор движения 137.
Будет описан способ мультиплексирования векторов движения 137 трех цветовых компонентов (C0, C1 и C2) в битовый поток в порядке C0, C1 и C2.
Вектор движения 137 для C0 обозначен mv0. В блоке 111 прогнозирования вектора движения определяется прогнозируемый вектор (mvp0) вектора движения 137 для C0. Как показано на фиг.46, векторы движения (mvA0, mvB0 и mvC0) блока (A, B и C на фиг.46), соседствующего с блоком, где находится вектор движения, подлежащий кодированию (mv0), извлекаются из памяти. Векторы движения 137 для A, B и C уже мультиплексированы в битовый поток. Медиана mvA0, mvB0 и mvC0 вычисляется как mvp0. Вычисленный прогнозируемый вектор mvp0 и вектор движения mv0, подлежащий кодированию, вводятся в блок 112 вычисления разностного вектора движения. В блоке 112 вычисления разностного вектора движения вычисляется разностный вектор движения (mvd0) между mv0 и mvp0. Вычисленный разностный вектор движения mvd0 вводится в блок 113 кодирования разностного вектора движения с переменной длиной слова и подвергается энтропийному кодированию посредством, например, кодирования Хаффмана или арифметического кодирования.
Вектор движения (mv1) для C1 кодируется. В блоке 111 прогнозирования вектора движения определяется прогнозируемый вектор (mvp1) вектора движения 137 для C1. Как показано на фиг.46, векторы движения (mvA1, mvB1 и mvC1) блока, соседствующего с блоком, где находится вектор движения (mv1), подлежащий кодированию, и вектор движения (mv0) для C0 в той же позиции, как в блоке, где находится mv1, извлекаются из памяти 16. Векторы движения 137 для A, B и C уже мультиплексированы в битовый поток. Медиана mvA1, mvB1, mvC1 и mv0 вычисляется как mvp1. Вычисленный прогнозируемый вектор mvp1 и вектор движения mv1, подлежащий кодированию, вводятся в блок 112 вычисления разностного вектора движения для вычисления разностного вектора движения (mvd1=mv1-mvp1) между mv1 и mvp1. Вычисленный разностный вектор движения mvd1 вводится в блок 113 кодирования разностного вектора движения с переменной длиной слова и подвергается энтропийному кодированию посредством, например, кодирования Хаффмана или арифметического кодирования.
Вектор движения (mv2) для C1 кодируется. В блоке 111 прогнозирования вектора движения определяется прогнозируемый вектор (mvp2) вектора движения 137 для C1. Как показано на фиг.46, векторы движения (mvA2, mvB2 и mvC2) блока, соседствующего с блоком, где находится вектор движения (mv2), подлежащий кодированию, и векторы движения (mv1 и mv2) для C0 и C1 в той же позиции, как в блоке, где находится mv2, извлекаются из памяти. Медиана mvA2, mvB2, mvC2, mv0 и mv1 вычисляется как mvp2. Вычисленный прогнозируемый вектор mvp2 и вектор движения mv2, подлежащий кодированию, вводятся в блок 112 вычисления разностного вектора движения для вычисления разностного вектора движения (mvd2=mv2-mvp2) между mv2 и mvp2. Вычисленный разностный вектор движения mvd2 вводится в блок 113 кодирования разностного вектора движения с переменной длиной слова и подвергается энтропийному кодированию посредством, например, кодирования Хаффмана или арифметического кодирования.
На фиг.47 показана схема структуры части блока 25 декодирования с переменной длиной слова кодера, показанного на фиг.31, который представляет собой блок 250 декодирования вектора движения, который декодирует вектор движения 137.
В блоке 250 декодирования вектора движения векторы движения 137 трех цветовых компонентов, мультиплексированные на видеопоток 22, декодируются в порядке C0, C1 и C2.
В блоке 251 декодирования разностного вектора движения с переменной длиной слова разностные векторы движения (mvd0, mvd1 и mvd2) трех цветовых компонентов (C0, C1 и C2), мультиплексированные на видеопоток 22, извлекаются и подвергаются декодированию с переменой длиной слова.
В блоке 252 прогнозирования вектора движения вычисляются прогнозируемые векторы (mvp0, mvp1 и mvp2) векторов движения 137 для C0, C1 и C2. Метод вычисления прогнозируемых векторов такой же, как используется в блоке 111 прогнозирования вектора движения кодера.
В блоке 253 вычисления вектора движения разностные векторы движения и прогнозируемые векторы суммируются для вычисления векторов движения (mvi=mvdi+mvpi (i=0, 1, 2)). Вычисленные векторы движения 137 хранятся в памяти 16 для использования в качестве прогнозируемых векторов-кандидатов.
Согласно десятому варианту осуществления, при кодировании и декодировании векторов движения, вектор движения идентичного блока цветового компонента, соседствующего с блоком, где находится вектор движения, подлежащий кодированию, и векторы движения других блоков цветового компонента в той же позиции, как в блоке, где находится вектор движения, подлежащий кодированию, используются как прогнозируемые векторы-кандидаты. Таким образом, например, в отсутствие непрерывности вектора движения соседнего блока в идентичном цветовом компоненте в граничной области объекта и т.п., векторы движения блоков в одной и той же позиции разных цветовых компонентов используются в качестве прогнозируемых векторов-кандидатов. Это позволяет повысить эффективность прогнозирования вектора движения и сократить объем кодов вектора движения.
Одиннадцатый вариант осуществления
Согласно одиннадцатому варианту осуществления будут описаны примеры другого кодера и другого декодера, выведенных из кодера и декодера, описанных согласно седьмому варианту осуществления. Кодер и декодер согласно одиннадцатому варианту осуществления принимают решение, согласно заранее определенному сигналу управления, кодируются ли компоненты C0, C1 и C2 в макроблоке в соответствии с отдельными фрагментами информации заголовка, и мультиплексируют информацию о сигнале управления на видеопоток 22. Кодер и декодер отличаются обеспечением средства мультиплексирования информации заголовка, необходимой для декодирования компонентов C0, C1 и C2, на видеопоток 22 согласно сигналу управления и эффективного кодирования пропущенного (или некодированного) макроблока во время отсутствия информации о векторе движения, которую следует передавать согласно сигналу управления и коэффициенту преобразования.
В традиционной системе кодирования видеосигнала MPEG, включающей в себя AVC, случай, когда информация кодирования, которую следует передавать, отсутствует для макроблока, подлежащего кодированию, специально подвергается сигнализации для реализации высокоэффективного кодирования с минимальным объемом кодов макроблока. Например, при попытке кодирования определенного макроблока, данные изображения в полностью одинаковой позиции в опорном изображении, используемые для прогнозирования с компенсацией движения, используются в качестве прогнозируемого изображения (т.е. вектор движения равен нулю), и полученный сигнал ошибки прогнозирования преобразуется и квантуется. В результате, когда все коэффициенты преобразования после квантования равны нулю, амплитуда полученного сигнала ошибки прогнозирования равна нулю на стороне декодирования, даже если осуществляется обратное квантование. Не существует данных коэффициентов преобразования, которые следует передавать на сторону декодера. Кроме того, когда предполагается, что вектор движения равен нулю, можно определить особый тип макроблока "нулевой вектор движения и отсутствие данных коэффициентов преобразования". Такой макроблок традиционно именуется пропущенным макроблоком или некодированным макроблоком и приспособлен не передавать ненужную информацию путем осуществления особой сигнализации. В AVC, предположение относительно векторов движения является условием "когда осуществляется прогнозирование 16×16, показанное на фиг.32(a), и когда прогнозируемые значения (прогнозируемые векторы mvp0, mvp1 и mvp2), используемые для кодирования вектора движения, равны фактическим векторам движения". В отсутствие данных коэффициентов преобразования, которые отвечают условию и которые следует передавать, макроблок считается пропущенным макроблоком. В традиционном AVC, при кодировании этого пропущенного макроблока, любой из следующих двух методов выбирается согласно используемой системе кодирования с переменой длиной слова.
Метод 1: Подсчитывается количество (длина слова) пропущенных макроблоков, продолжающихся в срезе, и длина слова подвергается кодированию с переменной длиной слова.
Метод 2: Кодируется флаг, указывающий, является ли каждый макроблок пропущенным макроблоком.
Синтаксисы битового потока согласно соответствующим методам показаны на фиг.48. На фиг.48(a) показан случай, когда адаптивное кодирование Хаффмана используется как система кодирования с переменой длиной слова (метод 1). На фиг.48(b) показан случай, когда используется адаптивное арифметическое кодирование (метод 2). В случае метода 1 сигнализация для пропущенного макроблока осуществляется посредством mb_skip_run. В случае метода 2 сигнализация для пропущенного макроблока осуществляется посредством mb_skip_flag. MB(n) указывает кодированные данные n-го макроблока (который не является пропущенным макроблоком). Заметим, что mb_skip_run и mb_skip_flag выделяются в единицах макроблоков, в которых собираются компоненты C0, C1 и C2.
С другой стороны, в кодере и декодере согласно одиннадцатому варианту осуществления предусмотрен способ изменения информации заголовка, включающей в себя вектор движения и т.п. для каждого из компонентов C0, C1 и C2, согласно состоянию сигнала управления, т.е. сигнала, эквивалентного флагу 123 идентификации общего использования режима интерпрогнозирования, описанному согласно седьмому варианту осуществления, и осуществления сигнализации пропущенного макроблока для каждого из компонентов C0, C1 и C2. Конкретные примеры синтаксиса битового потока показаны на фиг.49 и 50.
Структура данных, кодированных в единицах макроблоков, выводимых кодером согласно одиннадцатому варианту осуществления и вводимых в декодер согласно одиннадцатому варианту осуществления, показана на фиг.49. Подробная структура кодированных данных информации заголовка компонента Cn на фиг.49 показана на фиг.50. В нижеследующем описании, для пояснения преимуществ этой структуры битового потока, будут, в основном, описаны операции на декодере, который принимает битовый поток и восстанавливает видеосигнал. Объяснение операций декодера приведено со ссылкой на фиг.31.
Флаг 123 идентификации общего использования режима интерпрогнозирования согласно седьмому варианту осуществления выражается как флаг 123c идентификации общего использования заголовка макроблока путем объяснения его определения. Флаг 123c идентификации общего использования заголовка макроблока - это флаг, который выражает информацию 139a заголовка компонента C0 как базовую информацию заголовка макроблока и указывает, только ли информация 139a заголовка компонента C0 мультиплексируется как информация заголовка, используемая совместно для компонентов C1 и C2, или информация 139b заголовка компонента C1 и информация 139c заголовка компонента C2 по отдельности мультиплексируются как информация расширенного заголовка, соответственно. Флаг 123c идентификации общего использования заголовка макроблока извлекается из видеопотока 22 и декодируется блоком 25 декодирования с переменной длиной слова. Когда флаг указывает, что только информация 139a заголовка компонента C0 мультиплексируется как информация заголовка, используемая совместно для компонентов C1 и C2, декодирование, в котором используется информация 139a заголовка компонента C0, применяется ко всем компонентам C0, C1 и C2 в макроблоке. Когда флаг указывает, что информация 139b заголовка компонента C1 и информация 139c заголовка компонента C2 по отдельности мультиплексируются как информация расширенного заголовка, декодирование, в котором фрагменты 139a-139c информации заголовка, относящиеся к соответствующим компонентам C0, C1 и C2 в макроблоке, применяется к компоненту. Этот момент будет подробнее объяснен ниже как обработка в единицах макроблоков.
1.Когда мультиплексируется только информация заголовка компонента C0
Когда флаг 123c идентификации общего использования заголовка макроблока указывает, что только информация 139a заголовка компонента C0 мультиплексируется как информация заголовка, используемая совместно для компонентов C1 и C2, декодирование макроблока применяется ко всем компонентам C0, C1 и C2 на основании различных разновидностей информации заголовка макроблока, включенной в информацию 139a заголовка компонента C0. В этом случае, информация 138a индикации пропуска компонента C0 и информация 139a заголовка компонента C0 применяются совместно для обоих компонентов C1 и C2, информация (138b и 138c) индикации пропуска и информация (139b и 139c) заголовка для компонентов C1 и C2 не мультиплексируются в битовый поток.
Сначала блок 25 декодирования с переменной длиной слова декодирует и оценивает информацию 138a индикации пропуска компонента C0. Когда информация 138a индикации пропуска компонента C0 указывает "пропустить", блок 25 декодирования с переменной длиной слова считает, что информация 139a заголовка компонента C0 не кодируется, и информация 142 индикации эффективности/неэффективности коэффициентов преобразования информации 139a заголовка компонента C0 равна нулю (нет кодированных коэффициентов преобразования). Поэтому считается, что данные коэффициентов преобразования компонентов C0-C2 (140a-140c) не кодируются, и все квантованные коэффициенты преобразования 10 в макроблоках задаются равными нулю для вывода. Кроме того, блок 25 декодирования с переменной длиной слова устанавливает векторы движения 137 всех компонентов C0, C1 и C2 с идентичным значением в соответствии с определением пропущенного макроблока и выводит вектор движения 137.
Когда информация 138a индикации пропуска компонента C0 указывает "не пропускать", блок 25 декодирования с переменной длиной слова считает, что информация 139a заголовка компонента C0 присутствует, и осуществляет декодирование информации 139a заголовка компонента C0. Когда тип 128b макроблока в информации 139a заголовка компонента C0 указывает интракодирование, блок 25 декодирования с переменной длиной слова декодирует режим интрапрогнозирования 141, информацию 142 индикации эффективности/неэффективности коэффициентов преобразования и параметр квантования (если информация 142 индикации эффективности/неэффективности коэффициентов преобразования не равна 0). Если информация 142 индикации эффективности/неэффективности коэффициентов преобразования не равна нулю, блок 25 декодирования с переменной длиной слова декодирует данные коэффициентов преобразования компонентов C0-C2 (140a-140c) и выводит данные коэффициентов преобразования компонента C0 в виде квантованного коэффициента преобразования 10. Когда информация 142 индикации эффективности/неэффективности коэффициентов преобразования равна нулю, блок 25 декодирования с переменной длиной слова считает, что все данные коэффициентов преобразования компонентов C0-C2 (140a-140c) равны нулю, и все квантованные коэффициенты преобразования 10 в макроблоках задаются равными нулю для вывода. Когда тип 128b макроблока указывает интеркодирование, блок 25 декодирования с переменной длиной слова декодирует необходимый тип 129b субмакроблока и дополнительно декодирует идентификационный номер опорного изображения 132b, информацию вектора движения 133b, информацию 142 индикации эффективности/неэффективности коэффициентов преобразования и параметр квантования 21 (если информация 142 индикации эффективности/неэффективности коэффициентов преобразования не равна 0). Если информация 142 индикации эффективности/неэффективности коэффициентов преобразования не равна нулю, блок 25 декодирования с переменной длиной слова декодирует данные коэффициентов преобразования компонентов C0-C2 (140a-140c) и выводит данные коэффициентов преобразования компонента C0 в виде квантованного коэффициента преобразования 10. Когда информация 142 индикации эффективности/неэффективности коэффициентов преобразования равна нулю, блок 25 декодирования с переменной длиной слова считает, что все данные коэффициентов преобразования компонентов C0-C2 (140a-140c) равны нулю, и все квантованные коэффициенты преобразования 10 в макроблоках задаются равными нулю для вывода. Как и в седьмом варианте осуществления, декодирование макроблока осуществляется в соответствии с заранее определенной процедурой обработки с использованием выходного сигнала блока 25 декодирования с переменной длиной слова согласно вышеописанной операции.
2. Когда мультиплексируется информация заголовка для компонентов C0, C1 и C2, соответственно
Когда флаг 123c идентификации общего использования заголовка макроблока указывает, что информация 139b заголовка компонента C1 и информация 139c заголовка компонента C2 мультиплексируются как информация расширенного заголовка отдельно от информации 139a заголовка компонента C0, декодирование макроблока применяется к каждому из компонентов C0, C1 и C2 на основании различных разновидностей информации заголовка макроблока, включенной в информацию заголовка компонента C0 (139a-139c), соответственно. В этом случае информация индикации пропуска (138b и 138c) и информация заголовка (139b и 139c) для компонентов C1 и C2 мультиплексируются в битовый поток.
Сначала блок 25 декодирования с переменной длиной слова декодирует и оценивает информацию 138a индикации пропуска компонента C0. Когда информация 138a индикации пропуска компонента C0 указывает "пропустить", блок 25 декодирования с переменной длиной слова считает, что информация 139a заголовка компонента C0 не кодируется, и информация 142 индикации эффективности/неэффективности коэффициентов преобразования информации 139a заголовка компонента C0 равна нулю (нет кодированных коэффициентов преобразования). Поэтому считается, что данные 140a коэффициентов преобразования компонента C0 не кодируются, и все квантованные коэффициенты преобразования в компонентах C0 задаются равными нулю (т.е. соотношение между информацией 138a индикации пропуска компонента C0 и информацией 142 индикации эффективности/неэффективности коэффициентов преобразования изменяется согласно значению флага 123c идентификации общего использования заголовка макроблока). Кроме того, блок 25 декодирования с переменной длиной слова устанавливает вектор движения 137 компонента C0 в соответствии с определением в случае пропуска компонента C0 и выводит вектор движения 137.
Когда информация 138a индикации пропуска компонента C0 указывает "не пропускать", блок 25 декодирования с переменной длиной слова считает, что информация 139a заголовка компонента C0 присутствует, и осуществляет декодирование информации 139a заголовка компонента C0. Когда тип макроблока 128b в информации 139a заголовка компонента C0 указывает интракодирование, блок 25 декодирования с переменной длиной слова декодирует режим интрапрогнозирования 141 (режим пространственного прогнозирования, в котором пиксель, ближний к пикселю объекта прогнозирования в кадре, используется как прогнозируемое значение), информацию 142 индикации эффективности/неэффективности коэффициентов преобразования и параметр квантования 21 (если информация 142 индикации эффективности/неэффективности коэффициентов преобразования не равна 0). Если информация 142 индикации эффективности/неэффективности коэффициентов преобразования не равна нулю, блок 25 декодирования с переменной длиной слова декодирует данные коэффициентов преобразования компонента C0 и выводит данные коэффициентов преобразования компонента C0 в виде квантованного коэффициента преобразования 10. Когда информация индикации эффективности/неэффективности коэффициентов преобразования равна нулю, блок 25 декодирования с переменной длиной слова считает, что все данные коэффициентов преобразования компонента C0 равны нулю. Когда тип макроблока указывает интеркодирование, блок 25 декодирования с переменной длиной слова декодирует необходимый тип субмакроблока и дополнительно декодирует идентификационный номер опорного изображения, информацию вектора движения, информацию индикации эффективности/неэффективности коэффициентов преобразования и параметр квантования (если информация индикации эффективности/неэффективности коэффициентов преобразования не равна 0). Если информация индикации эффективности/неэффективности коэффициентов преобразования не равна нулю, блок 25 декодирования с переменной длиной слова декодирует данные коэффициентов преобразования компонента C0 и выводит данные коэффициентов преобразования компонента C0 в виде квантованного коэффициента преобразования 10. Когда информация эффективности/неэффективности коэффициентов преобразования равна нулю, блок 25 декодирования с переменной длиной слова считает, что все данные коэффициентов преобразования компонента C0 равны нулю. Блок 25 декодирования с переменной длиной слова осуществляет процедуру обработки для C1 и C2 таким же образом.
Как и в седьмом варианте осуществления, декодирование соответствующих компонентов C0, C1 и C2 в макроблоке осуществляется в соответствии с заранее определенной процедурой обработки с использованием выходного сигнала блока 25 декодирования с переменной длиной слова согласно вышеописанным операциям.
Операции на стороне декодера, в основном, описаны выше. Благодаря такому формированию битового потока, получаются следующие эффекты. Прежде всего, в традиционном AVC имеется только один набор используемой информации заголовка (фиг.50) в расчете на один макроблок. Необходимо совместно осуществлять принятие решения интра/интер для всех компонентов C0-C2 и осуществлять кодирование в соответствии с этой информацией заголовка. Когда компонент сигнала, эквивалентный сигналу яркости, который передает содержимое сигнала изображения, эквивалентно включен в три цветовых компонента, как в формате 4:4:4, может возникать флуктуация характеристик сигнала в силу характера включения шума и т.п. во входных видеосигналах в соответствующие компоненты. Не всегда оптимально кодировать все компоненты C0-C2 совместно. При условии задания структур битового потока, показанных на фиг.49 и 50 согласно одиннадцатому варианту осуществления, кодер может выбирать, посредством флага 123c идентификации общего использования заголовка макроблока, оптимальный режим кодирования (тип макроблока, включающий в себя типы интра/интер-кодирования), оптимальный вектор движения и т.п., соответствующие характеристике сигнала, и осуществлять кодирование для каждого из компонентов C0-C2 и может повышать эффективность кодирования. Традиционно, поскольку осуществляется кодирование в единицах макроблоков, в которых собираются все компоненты C0-C2, принимается решение на пропуск макроблока при условии отсутствия информации кодирования для всех компонентов. Однако, согласно одиннадцатому варианту осуществления, поскольку можно принимать решение относительно наличия или отсутствия информации кодирования для каждого из компонентов согласно информации 138 индикации пропуска, когда пропущен только определенный компонент, а другие компоненты не пропущены, нет необходимости для принятия решения относительно того, что ни один компонент не пропущен. Это позволяет более эффективно осуществлять выделение объема кодов. В кодере значение информации 138 индикации пропуска определяется блоком 11 кодирования с переменной длиной слова на основании данных 10 квантованного коэффициента преобразования, вектора движения 137, идентификационного номера 132b опорного изображения и типа макроблока/типа субмакроблока 106 в соответствии с определением пропущенного макроблока, однородно заданного в кодере и декодере.
Структура битового потока, обрабатываемого кодером и декодером согласно одиннадцатому варианту осуществления, может быть такой, как показано на фиг.51. В этом примере информация индикации пропуска (138), информация заголовка (139a-139c) и данные коэффициентов преобразования (140a-140c) соответствующих компонентов C0, C1 и C2 совместно размещаются, соответственно. В этом случае, в информации индикации пропуска, соответствующие состояния C0, C1 и C2 могут размещаться в 1-битовых символах кода, или восемь состояний можно совместно размещать в одном символе кода. Когда корреляция с состоянием пропуска высока среди цветовых компонентов, можно повысить эффективность кодирования самой информации индикации пропуска 138 путем сбора символов кода для надлежащего задания контекстуальных моделей арифметического кодирования (описанных ниже в двенадцатом варианте осуществления).
Флаг 123c идентификации общего использования заголовка макроблока можно мультиплексировать в битовый поток в единицах данных произвольного уровня, например, макроблока, среза, изображения или последовательности. При постоянном наличии различия в характеристике сигнала между цветовыми компонентами во входном сигнале, если флаг 123c идентификации общего использования заголовка макроблока мультиплексируется в единицах последовательности, можно осуществлять эффективное кодирование с меньшим объемом служебной информации. Если флаг 123c идентификации общего использования заголовка макроблока мультиплексируется на уровне изображения, можно ожидать эффект, например, улучшения баланса эффективности кодирования и объема арифметических операций с использованием общего заголовка в I изображении, имеющем небольшое количество вариаций типа макроблока, и с использованием отдельного заголовка для каждого из цветовых компонентов в изображениях P и B с большим количеством вариаций типа макроблока. Кроме того, можно сказать, что изменение на уровне изображения также желательно в отношении управления кодированием для видеосигнала, характеристика которого изменяется для каждого изображение, например, смена сцены. Когда флаг 123c идентификации общего использования заголовка макроблока мультиплексируется в единицах макроблоков, объем кодов в расчете на один макроблок возрастает. С другой стороны, можно управлять, используется ли информация заголовка совместно, на основании состояний соответствующих цветовых компонентов сигнала в единицах макроблоков. Это позволяет построить кодер более удовлетворительно, который повышает эффективность сжатия, следуя локальной флуктуации сигнала изображения.
Возможен следующий метод. Когда тип кодирования, эквивалентный типу изображения, изменяется на уровне среза, как в AVC, флаг 123c идентификации общего использования заголовка макроблока мультиплексируется для каждого среза. Когда флаг указывает "общий для C0, C1 и C2", битовый поток формируется так, что срез включает в себя все фрагменты информации кодирования для трех цветовых компонентов. Когда флаг указывает "не общий для C0, C1 и C2", битовый поток формируется так, что один срез включает в себя информацию об одном цветовом компоненте. Состояние этого метода показано на фиг.52. На фиг.52 смысл информации идентификации конфигурации срезов, указывающей, что "текущий срез включает в себя все фрагменты информации кодирования для трех цветовых компонентов" или "текущий срез включает в себя информацию кодирования для конкретного цветового компонента", придается флагу 123c идентификации общего использования заголовка макроблока. Само собой разумеется, что такую информацию идентификации конфигурации срезов можно подготавливать по отдельности из флага 123c идентификации общего использования заголовка макроблока. Когда срез идентифицируется как "текущий срез включает в себя информацию кодирования для конкретного цветового компонента", идентификация включает в себя идентификацию, указывающую "какой это из цветовых компонентов C0, C1 и C2". Когда, таким образом, принимается решение, используется ли один заголовок макроблока совместно для компонентов C0, C1 и C2 (срез смешанных C0, C1 и C2) или заголовок макроблока по отдельности мультиплексируется для каждого из компонентов C0, C1 и C2 (срез C0, срез C1 и срез C2) в единицах срезов, если эти две разновидности срезов смешиваются в одном изображении, срез C0, срез C1 и срез C2 всегда мультиплексируются в битовый поток в наборе в виде данных, полученных кодированием макроблоков в идентичной позиции на экране. Иными словами, значение first_mb_in_slice, включенное в заголовок среза и указывающее позицию в изображении переднего макроблока среза, всегда принимает идентичное значение в одном наборе среза C0, среза C1 и среза C2. Количества макроблоков, включенных в набор среза C0, среза C1 и среза C2, одинаковы. Это состояние показано на фиг.53. Обеспечивая такое ограничение для структуры битового потока, кодер может кодировать битовый поток путем адаптивного выбора метода кодирования, имеющего наибольшую эффективность кодирования между смешанным срезом C0, C1 и C2 и набором среза C0, среза C1 и среза C2 согласно характеристике локального сигнала в изображении. Декодер может принимать битовый поток, эффективно закодированный таким образом, и воспроизводить видеосигнал. Например, если битовый поток 22, введенный в декодер, показанный на фиг.31, имеет такую конфигурацию, блок 25 декодирования с переменной длиной слова декодирует информацию идентификации конфигурации срезов из битового потока каждый раз при вводе данных среза и устанавливает, какой из срезов, показанных на фиг.52, нужно декодировать. Когда, на основании информации идентификации конфигурации срезов, принимается решение, что кодированные данные сформированы в виде набора среза C0, среза C1 и среза C2, блок 25 декодирования с переменной длиной слова должен только осуществлять операцию декодирования, устанавливая, что состояние флага 123 идентификации общего использования режима интерпрогнозирования (или флага 123c идентификации общего использования заголовка макроблока) является "использовать отдельные режимы интерпрогнозирования или (заголовок макроблока) в C0, C1 и C2". Поскольку гарантируется, что значение first_mb_in_slice каждого среза и количество макроблоков в срезе одинаково, можно осуществлять обработку декодирования, не вызывая перекрытия и зазора на смешанном срезе C0, C1 и C2 и изображении на основании значения.
Когда характеристики сигналов соответствующих срезов C0, C1 и C2 существенно различаются, во избежание снижения эффективности кодирования за счет обеспечения такого ограничения, может быть предоставлена информация идентификации, позволяющая выбирать на уровне изображений или уровне последовательностей, можно ли допустить примешивание среза, имеющего другое значение информации идентификации конфигурации срезов в изображении.
Двенадцатый вариант осуществления
Согласно двенадцатому варианту осуществления будут описаны примеры другого кодера и другого декодера, выведенных из кодера и декодера, описанных согласно одиннадцатому варианту осуществления. Кодер и декодер согласно двенадцатому варианту осуществления, отличаются адаптивным заданием, при осуществлении кодирования соответствующих компонентов C0, C1 и C2 в макроблоке с использованием адаптивной системы арифметического кодирования, используются ли вероятность появления символа, используемая для арифметического кодирования, и процесс изучения для вероятности появления символа совместно всеми компонентами или отдельно каждым из компонентов согласно информации указания, мультиплексированной в битовый поток.
Согласно двенадцатому варианту осуществления в кодере, только обработка в блоке 11 кодирования с переменной длиной слова, показанном на фиг.30, отличается от обработки согласно одиннадцатому варианту осуществления. В декодере только обработка в блоке 25 декодирования с переменной длиной слова на фиг.31 отличается от обработки согласно одиннадцатому варианту осуществления. Другие операции идентичны операциям согласно одиннадцатому варианту осуществления. В нижеследующем описании будут подробно объяснены обработки арифметического кодирования и декодирования, которые являются отличительными чертами двенадцатого варианта осуществления.
1. Обработка кодирования
Внутренняя структура, относящаяся к обработке арифметического кодирования в блоке 11 кодирования с переменной длиной слова, показана на фиг.54. Последовательность операций обработки арифметического кодирования показана на фиг.55 и 56.
Блок 11 кодирования с переменной длиной слова согласно двенадцатому варианту осуществления включает в себя блок определения контекстуальной модели 11a, который устанавливает контекстуальные модели (описанные ниже), определенные для соответствующих типов данных, например, вектора движения 137, служащего данными объекта кодирования, идентификационного номера 132b опорного изображения, типа макроблока/типа субмакроблока 106, режима интрапрогнозирования 141 и квантованного коэффициента преобразования 10, блок 11b преобразования к двоичному виду, который преобразует многозначные данные в двоичные данные в соответствии с правилами преобразования к двоичному виду, установленными для соответствующих типов данных объекта кодирования, блок 11c генерации вероятности появления, который дает вероятности появления значений (0 или 1) соответствующих участков после преобразования к двоичному виду, блок кодирования 11d, который выполняет арифметическое кодирование на основании сгенерированных вероятностей появления, и память 11g, в которой хранится информация вероятности появления. На блок определения контекстуального режима 11a поступают различные данные, введенные в блок 11 кодирования с переменной длиной слова, в качестве данных объекта кодирования, например, вектор движения 137, идентификационный номер 132b опорного изображения, тип макроблока/тип субмакроблока 106, режим интрапрогнозирования 141 и квантованный коэффициент преобразования 10. Выходные сигналы блока кодирования 11d эквивалентны информации, связанной с макроблоком видеопотока 22.
(1) Обработка определения контекстуальной модели (этап S160 на фиг.55)
Контекстуальная модель - это модель причинно-следственной связи вероятности появления символа источника информации с другой информацией, которая приводит к флуктуации вероятности появления. Можно осуществлять кодирование, более адаптированное к фактической вероятности появления символа, путем изменения состояния вероятности появления в соответствии с этой причинно-следственной связью. Концепция контекстуальной модели (ctx) показана на фиг.57. Хотя, согласно фиг.57, символ источника информации является двоичным, символ источника информации может быть многозначным. Варианты от 0 до 2 для ctx на фиг.57 определяются, исходя из предположения, что состояние вероятности появления символа источника информации, который использует этот ctx, изменяется согласно ситуации. При кодировании видеосигнала согласно двенадцатому варианту осуществления значение ctx изменяется согласно причинно-следственной связи между кодированными данными в определенном макроблоке и кодированными данными макроблоков вокруг макроблока. Пример контекстуальной модели, относящейся к вектору движения макроблока, раскрытой в D. Marpe и др. "Video Compression Using Context-Based Adaptive Arithmetic Coding", International Conference on Image Processing 2001, показан на фиг.58. Согласно фиг.58 вектор движения блока C представляет собой объект кодирования (точнее, кодируется прогнозируемое значение разности mvdk(C), полученное прогнозированием вектора движения блока C из его окружения), и ctx_mvd(C,k) указывает контекстуальную модель. mvdk(A) указывает прогнозируемое значение разности векторов движения в блоке A, и mvdk (B) указывает прогнозируемое значение разности векторов движения в блоке B. Значения mvdk(A) и mvdk(B) используются для определения оценочного значения ek(C) изменения контекстуальной модели. Оценочное значение ek(C) указывает степень флуктуации вектора движения в окружении. В целом, когда эта флуктуация мала, mvdk(C) мала. Напротив, когда ek(C) велико, mvdk(C) также увеличивается. Таким образом, желательно адаптировать вероятность появления символа для mvdk(C) на основании ek(C). Набором вариаций этой вероятности появления является контекстуальная модель. В этом случае можно сказать, что существует три разновидности вариаций вероятности появления.
Кроме того, контекстуальные модели определяются заранее для данных объекта кодирования, например, типа макроблока/типа субмакроблока 106, режима интрапрогнозирования 141 и квантованного коэффициента преобразования 10, соответственно, и совместно используются кодером и декодером. Блок 11a определения контекстуальной модели осуществляет обработку для выбора модели, заданной заранее на основании типа таких данных объекта кодирования (решение относительно того, какая вариация вероятности появления среди контекстуальных моделей соответствует обработке генерации вероятности появления в нижеследующем пункте (3)).
(2) Обработка преобразования к двоичному виду (этап S161 на фиг.55)
Данные объекта кодирования преобразуются в двоичную последовательность блоком 11b преобразования к двоичному виду. Контекстуальные модели устанавливаются согласно соответствующим участкам (двоичным позициям) двоичной последовательности. Согласно правилу преобразования к двоичному виду данные объекта кодирования преобразуются в двоичную последовательность с переменой длиной слова в соответствии с грубым распределением значений, которые могут принимать соответствующие двоичные данные. Преобразование к двоичному виду имеет преимущество, позволяющее, например, сократить количество делений числовой шкалы вероятности путем кодирования данных объекта кодирования, которые первоначально могут принимать множественные значения, в единицах участков вместо непосредственного арифметического кодирования данных объекта кодирования и упростить арифметическую операцию, что дает возможность уменьшить контекстуальные модели.
(3) Обработка генерации вероятности появления (этап S162 на фиг.55 (детали этапа S162 показаны на фиг.56))
В процессах, описанных выше в пунктах (1) и (2), преобразование к двоичному виду многозначных данных объекта кодирования и задание контекстуальных моделей, применяемых к соответствующим участкам, завершается, и подготовка к кодированию заканчивается. Затем блок 11c генерации вероятности появления осуществляет обработку генерации для состояния вероятности появления, используемого для арифметического кодирования. Поскольку вариации вероятности появления для соответствующих значений 0/1 включены в соответствующие контекстуальные модели, показанные на фиг.54, блок 11c генерации вероятности появления осуществляет обработку со ссылкой на контекстуальную модель 11f, определенную на этапе S160. Блок 11c генерации вероятности появления устанавливает оценочное значение для выбора вероятности появления, обозначенное ek(C) на фиг.58, и определяет, в соответствии с оценочным значением, какая вариация вероятности появления используется для данного кодирования из вариантов, к которым относятся контекстуальные модели (этап S162a на фиг.56). Блок 11 кодирования с переменной длиной слова согласно двенадцатому варианту осуществления включает в себя память для хранения информации 11g вероятности появления и включает в себя механизм для сохранения состояния 11h вероятности появления, которое последовательно обновляется в процессе кодирования, для каждого из цветовых компонентов. Блок 11c генерации вероятности появления выбирает, согласно значению флага 143 идентификации общего использования параметра состояния вероятности появления, выбирается ли состояние 11h вероятности появления, используемое для данного кодирования, из состояний вероятности появления, поддерживаемых для каждого из цветовых компонентов C0-C2, или же состояние вероятности появления для компонента C0 совместно используется компонентами C1 и C2, и определяет состояние 11h вероятности появления, фактически используемое для кодирования (этапы S162b-S162d на фиг.56).
Необходимо мультиплексировать флаг 143 идентификации общего использования параметра состояния вероятности появления в битовый поток, чтобы декодер мог осуществлять такой же выбор. В такой конфигурации реализуются следующие эффекты. Например, в случае, показанном на фиг.58, когда флаг 123c идентификации общего использования заголовка макроблока указывает, что информация 139a заголовка компонента C0 используется для других компонентов, если тип макроблока 128b указывает режим прогнозирования 16×16, для одного макроблока задается только один ek(C) согласно фиг.58. В этом случае состояние вероятности появления, подготовленное для компонента C0, всегда используется. С другой стороны, когда флаг 123c идентификации общего использования заголовка макроблока указывает, что используется информация заголовка (139a-139c), соответствующая соответствующим компонентам, если тип макроблока 128b указывает режим прогнозирования 16×16 во всех C0, C1 и C2, может существовать три вариации ek(C) согласно фиг.58 для одного макроблока. Блок кодирования 11d на более поздней стадии может брать два варианта, т.е., совместно ли состояние 11b вероятности появления, подготовленное для компонентов C0, используется и обновляется для соответствующих вариаций, или же состояния 11h вероятности появления, подготовленные для соответствующих цветовых компонентов, по отдельности используются и обновляются. В первом варианте, когда соответствующие компоненты C0, C1 и C2 имеют, по существу, одинаковые распределения векторов движения, кратность изучения увеличивается благодаря использованию и обновлению общего состояния 11h вероятности появления. Это дает возможность более удовлетворительно изучать вероятность появления вектора движения. В последнем варианте, наоборот, когда соответствующие компоненты C0, C1 и C2 имеют разные распределения векторов движения, можно сократить несоответствия из-за изучения посредством раздельного использования и обновления состояний 11h вероятности появления. Это дает возможность более удовлетворительно изучать вероятность появления вектора движения. Поскольку видеосигнал является нестационарным, когда такое адаптивное управление возможно, можно повысить эффективность арифметического кодирования.
(4) Обработка кодирования
Поскольку вероятности появления соответствующих значений 0/1 на числовой шкале вероятности, необходимые для процесса арифметического кодирования, получаются согласно (3), блок кодирования 11d осуществляет арифметическое кодирование в соответствии с процессом, описанным в традиционном примере (этап S163 на фиг.55). Фактическое кодированное значение (0 или 1) 11e поступает обратно на блок 11c генерации вероятности появления. Блок 11c генерации вероятности появления отсчитывает частоты появления 0/1 для обновления используемого состояния 11h вероятности появления (этап S164). Например, предполагается, что, в момент, когда обработка кодирования для 100 участков осуществляется с использованием конкретного состояния 11h вероятности появления, вероятности появления 0/1 при вариации вероятности появления составляют 0,25 и 0,75. Когда 1 кодируется с использованием одной и той же вариации вероятности появления, частота появления 1 обновляется, и вероятности появления 0/1 меняются на 0,247 и 0,752. Этот механизм позволяет осуществлять эффективное кодирование, адаптированное к фактическим вероятностям появления. Кодированное значение 11e меняется на выходной сигнал блока 11 кодирования с переменной длиной слова и выводится из кодера в качестве видеопотока 22.
Внутренняя структура, связанная с обработкой арифметического декодирования в блоке 25 декодирования с переменной длиной слова показана на фиг.59. Последовательность операций обработки арифметического декодирования показана на фиг.60.
Блок 25 декодирования с переменной длиной слова согласно двенадцатому варианту осуществления включает в себя блок 11a определения контекстуальной модели, который указывает типы соответствующих данных объекта декодирования, например, вектор движения 137, идентификационный номер 132b опорного изображения, тип макроблока/тип субмакроблока 106, режим интрапрогнозирования 141 и квантованный коэффициент преобразования 10, и устанавливает контекстуальные модели, заданные совместно для кодера для соответствующих типов, блок 11b преобразования к двоичному виду, который генерирует правила преобразования к двоичному виду, установленные на основании типов данных объекта декодирования, блок 11c генерации вероятности появления, который дает вероятности появления соответствующих участков (0 или 1) в соответствии с правилами преобразования к двоичному виду и контекстуальными моделями, блок декодирования 25a, который выполняет арифметическое декодирование на основании сгенерированной вероятности появления и декодирует данные, например, вектор движения 137, идентификационный номер 132b опорного изображения, тип макроблока/тип субмакроблока 106, режим интрапрогнозирования 141 и квантованный коэффициент преобразования 10 согласно двоичной последовательности, полученной в результате арифметического декодирования, и правил преобразования к двоичному виду, и память 11g, в которой храниться информация вероятности появления. Компоненты 11a-11c и 11g идентичны внутренним компонентам блока 11 кодирования с переменной длиной слова, показанного на фиг.54.
(5) Обработка определения контекстуальной модели, обработка преобразования к двоичному виду и обработка генерации вероятности появления
Эти процессы соответствуют процессам (1)-(3) на стороне кодера. Хотя это и не показано на фигурах, флаг 143 идентификации общего использования параметра состояния вероятности появления заранее извлекается из видеопотока 22.
(6) Обработка арифметического декодирования
Поскольку вероятность появления участка, предназначенного для декодирования, задается в процессах до (6), блок декодирования 25a декодирует значение участка в соответствии с заранее определенной обработкой арифметического декодирования (этап S166 на фиг.60). Восстановленное значение 25b участка поступает обратно на блок 11c генерации вероятности появления. Блок 11c генерации вероятности появления отсчитывает частоты появления 0/1 для обновления используемого состояния 11h вероятности появления (этап S164). Блок декодирования 25a проверяет, каждый раз при задании восстановленного значения каждого участка, согласование восстановленного значения и шаблонов двоичной последовательности, заданных правилами преобразования к двоичному виду, и выводит значение данных, указанное согласованным шаблоном, в качестве значения данных декодирования (этап S167). Пока данные декодирования не заданы, блок декодирования 25a возвращается к этапу S166 и продолжает обработку декодирования.
Согласно кодеру и декодеру, включающим в себя обработку арифметического кодирования и обработку арифметического декодирования согласно вышеописанным конфигурациям, можно осуществлять более эффективное кодирование, когда кодируемая информация для каждого из цветовых компонентов адаптивно подвергается арифметическому кодированию согласно флагу 123c идентификации общего использования заголовка макроблока.
Хотя это конкретно не показано на фигурах, единицей мультиплексирования флага 143 идентификации общего использования параметра состояния вероятности появления может быть единица макроблока, единица среза, единица изображения или единица последовательности. Когда возможно обеспечить достаточную эффективность кодирования с изменением на более высоком уровне, равном или более высоком, чем уровень среза, путем мультиплексирования флага 143 идентификации общего использования параметра состояния вероятности появления как флага, расположенного на более высоком уровне данных, например, на уровне среза, изображения или последовательности, можно сократить биты служебной информации без мультиплексирования флага 143 идентификации общего использования параметра состояния вероятности появления на уровне макроблоков каждый раз при осуществлении обработки.
Флагом 143 идентификации общего использования параметра состояния вероятности появления может быть информация, заданная внутри декодера, на основании соответствующей информации, включенной в битовый поток, отдельной от флага 143 идентификации общего использования параметра состояния вероятности появления.
Согласно двенадцатому варианту осуществления арифметическое кодирование флага 123c идентификации общего использования заголовка макроблока в единицах макроблоков, модель, показанная на фиг.61, используется для контекстуальной модели 11f. На фиг.61 значение флага 123c идентификации общего использования заголовка макроблока в макроблоке X обозначено IDCX. При осуществлении кодирования флага 123c идентификации общего использования заголовка макроблока в макроблоке C макроблоки принимают следующие три состояния на основании значения IDCA флага 123c идентификации общего использования заголовка макроблока для макроблока A и значения IDCB флага 123c идентификации общего использования заголовка макроблока для макроблока B согласно уравнению на фигуре.
Значение 0: A и B находятся в режиме "использования общего заголовка макроблока для C0, C1 и C2".
Значение 1: один из A и B находится в режиме "использования общего заголовка макроблока для C0, C1 и C2", а другой находится в режиме "использования отдельных заголовков макроблоков для C0, C1 и C2".
Значение 2: A и B находятся в режиме "использования отдельных заголовков макроблоков для C0, C1 и C2".
Кодирование флага 123c идентификации общего использования заголовка макроблока таким образом позволяет осуществлять арифметическое кодирование согласно состоянию кодирования макроблоков в окружении и повышать эффективность кодирования. Из объяснения операций декодера, согласно двенадцатому варианту осуществления, очевидно, что контекстуальные модели задаются посредством одной и той же процедуры на стороне кодирования и на стороне декодирования для осуществления арифметического декодирования.
Согласно двенадцатому варианту осуществления в отношении информации заголовка, показанной на фиг.50, включенной в заголовок макроблока (тип макроблока, тип субмакроблока, режим интрапрогнозирования, идентификационный номер опорного изображения, вектор движения, информация индикации эффективности/неэффективности коэффициентов преобразования и параметр квантования), арифметическое кодирование осуществляется в контекстуальных моделях, заданных для соответствующих типов информации. Как показано на фиг.62, все контекстуальные модели задаются для текущего макроблока C со ссылкой на соответствующую информацию о макроблоках A и B. Здесь, как показано на фиг.62(a), когда макроблок C находится в режиме "использования общего заголовка макроблока для C0, C1 и C2", и макроблок B находится в режиме "использования отдельных заголовков макроблоков для C0, C1 и C2", информация о конкретном цветовом компоненте среди C0, C1 и C2 используется как опорная информация при задании контекстуальных моделей.
Например, можно принять метод выбора, когда C0, C1 и C2 соответствуют цветовым компонентам R, G и B, причем компонент G имеет компонент, ближайший к сигналу яркости, традиционно используемому для кодирования в качестве сигнала, хорошо представляющего структуру изображения. Дело в том, что, даже в режиме "использования общего заголовка макроблока для C0, C1 и C2", информация о заголовке макроблока часто задается на основании компонента G для осуществления кодирования.
С другой стороны, в противном случае, как показано на фиг.62(b), когда макроблок C находится в режиме "использования отдельных заголовков макроблоков для C0, C1 и C2", и макроблок B находится в режиме "использования общего заголовка макроблока для C0, C1 и C2", необходимо кодировать и декодировать информацию заголовка о трех цветовых компонентах в макроблоке C. В этом случае информация заголовка о соответствующих цветовых компонентах используется в качестве опорной информации при задании контекстуальных моделей. Что касается макроблока B, информация заголовка, общая для трех компонентов, используется в качестве значения, которое одинаково для трех компонентов. Хотя это очевидно, когда флаг 123c идентификации общего использования заголовка макроблока указывает одно и то же значение для всех макроблоков A, B и C, фрагменты опорной информации, соответствующие макроблокам, всегда присутствуют. Таким образом, используются фрагменты опорной информации.
Из объяснения операций декодера, согласно двенадцатому варианту осуществления, очевидно, что контекстуальные модели задаются посредством одной и той же процедуры на стороне кодирования и на стороне декодирования для осуществления арифметического декодирования. После определения, к информации какого компонента относится контекстуальная модель, подлежащая использованию, обновление состояния вероятности появления, связанного с контекстуальной моделью, выполняется на основании состояния флага 143 идентификации общего использования параметра состояния вероятности появления.
Согласно двенадцатому варианту осуществления арифметическое кодирование, соответствующее распределениям вероятности появления для соответствующих данных объекта кодирования, также осуществляется для соответствующих данных коэффициентов преобразования компонентов C0, C1 и C2. В качестве этих данных, кодированные данные для трех компонентов всегда включаются в битовый поток независимо от того, используется ли заголовок макроблока совместно. Согласно двенадцатому варианту осуществления, поскольку интрапрогнозирование и интерпрогнозирование осуществляются на цветовых пространствах кодированного входного сигнала и получается разностный сигнал прогнозирования, считается, что распределение данных коэффициентов преобразования, полученное целочисленным преобразованием разностного сигнала прогнозирования, - это то же самое распределение вероятности появления независимо от периферийного состояния, например, используется ли заголовок макроблока, показанный на фиг.62, совместно. Таким образом, согласно двенадцатому варианту осуществления, общая контекстуальная модель задается и используется для кодирования и декодирования независимо от того, используется ли заголовок макроблока совместно для соответствующих компонентов C0, C1 и C2.
Из объяснения операций декодера, согласно двенадцатому варианту осуществления, очевидно, что контекстуальные модели задаются посредством одной и той же процедуры на стороне кодирования и на стороне декодирования для осуществления арифметического декодирования. После определения, к информации какого компонента относится контекстуальная модель, подлежащая использованию, обновление состояния вероятности появления, связанного с контекстуальной моделью, выполняется на основании состояния флага 143 идентификации общего использования параметра состояния вероятности появления.
Тринадцатый вариант осуществления
Согласно тринадцатому варианту осуществления будут описаны варианты осуществления другого кодера и другого декодера, выведенных из кодера и декодера, описанных согласно вариантам осуществления с седьмого по двенадцатый. Кодер и декодер согласно тринадцатому варианту осуществления отличаются тем, что кодер, который осуществляет обработку преобразования цветового пространства на входном каскаде кодера, описанного согласно вариантам осуществления с седьмого по двенадцатый, преобразует цветовые пространства видеосигнала, введенного в кодер после преобразования изображения к произвольным цветовым пространствам, пригодным для кодирования, и мультиплексирует в битовый поток информацию, указывающую обработку обратного преобразования для возвращения цветовых пространств к цветовым пространствам на момент преобразования изображения на стороне декодирования, и, посредством конфигурации для извлечения информации, указывающей обработку обратного преобразования из битового потока, получает декодированное изображение с помощью декодера, описанного согласно вариантам осуществления с седьмого по двенадцатый, и затем осуществляет обратное пространственное
преобразование на основании информации, указывающей обработку обратного преобразования.
Структуры кодера и декодера согласно тринадцатому варианту осуществления показаны на фиг.63. Кодер и декодер согласно тринадцатому варианту осуществления будут объяснены со ссылкой на фиг.63.
Кодер согласно тринадцатому варианту осуществления включает в себя, помимо кодера 303 согласно вариантам осуществления с седьмого по двенадцатый, блок 301 преобразования цветового пространства на предварительном каскаде кодера 303. Блок 301 преобразования цветового пространства включает в себя одну или совокупность разновидностей обработки преобразования цветового пространства. Блок 301 преобразования цветового пространства выбирает обработку преобразования цветового пространства, подлежащую использованию, согласно характеристикам входного видеосигнала, системных настроек и т.п. для осуществления обработки преобразования цветового пространства на входном видеосигнале и передает преобразованный видеосигнал 302, полученный в результате обработки преобразования цветового пространства, на кодер 303. Одновременно, блок 301 преобразования цветового пространства выводит информацию для идентификации используемой обработки преобразования цветового пространства на кодер 303 в качестве информации 304 идентификации метода преобразования цветового пространства. Кодер 303 мультиплексирует информацию 304 идентификации метода преобразования цветового пространства в битовый поток 305, в котором преобразованный видеосигнал 302 кодирован со сжатием согласно методу, описанному согласно вариантам осуществления с седьмого по двенадцатый, в качестве сигнала объекта кодирования и передает информацию 304 идентификации метода преобразования цветового пространства по линии передачи или выводит информацию 304 идентификации метода преобразования цветового пространства на записывающее устройство, которое осуществляет запись на носитель записи.
В качестве подготовленного метода преобразования цветового пространства, например, существуют преобразования, например, преобразование из RGB в YUV, традиционно используемое в качестве стандарта
прогнозирование между цветовыми компонентами
C0=G'=G
C1=B'=B f(G) (f(G): результат обработки фильтрации для компонента G)
C2=R'=R f(G) и
преобразование из RGB в YCoGg
C0=Y=R/2+G/2+B/4
C1=Co=R/2 B/2
C2=Cg=-R/4+G/2 B/4.
Нет необходимости ограничивать входной сигнал блока 301 преобразования цветового пространства сигналом RGB. Обработка преобразования не ограничивается вышеописанными тремя разновидностями обработки.
Декодер согласно тринадцатому варианту осуществления включает в себя, помимо декодера 306 согласно вариантам осуществления с седьмого по двенадцатый, блок 308 обратного преобразования цветового пространства на последнем каскаде декодера 306. Декодер 306 принимает битовый поток 305 и извлекает информацию 304 идентификации метода преобразования цветового пространства из битового потока 305 и выводит информацию 304 идентификации метода преобразования цветового пространства. Кроме того, декодер 306 выводит декодированное изображение 307, полученное посредством операций декодера, описанного согласно вариантам осуществления с седьмого по двенадцатый. Блок 308 обратного преобразования цветового пространства включает в себя обработку обратного преобразования, соответствующую соответствующему методу преобразования цветовых пространств, выбираемых блоком 301 преобразования цветового пространства. Блок 308 обратного преобразования цветового пространства осуществляет обработку для указания преобразования, выполняемого блоком 301 преобразования цветового пространства, на основании информации 304 идентификации метода преобразования цветового пространства, выводимой декодером 306, применения обработки обратного преобразования к декодированному изображению 307 и возвращения декодированного изображения 307 к цветовым пространствам видеосигнала, введенным в кодер согласно тринадцатому варианту осуществления.
Согласно кодеру и декодеру, согласно тринадцатому варианту осуществления, оптимальная обработка преобразования для цветовых пространств применяется к видеосигналу, подлежащему кодированию на предварительном каскаде кодирования и последнем каскаде обработки декодирования для удаления корреляции, включенной в сигнал изображения, включающий в себя три цветовых компонента, до кодирования. Таким образом, можно осуществлять кодирование в состоянии сниженной избыточности и повышать эффективность сжатия. В традиционной стандартной системе кодирования, например, MPEG, цветовые пространства сигнала, подлежащего кодированию, ограничиваются только YUV. Однако, поскольку кодер и декодер включают в себя блок 301 преобразования цветового пространства и блок 308 обратного преобразования цветового пространства, и информация 304 идентификации метода преобразования цветового пространства включена в битовый поток 305, можно исключить ограничение на цветовые пространства видеосигнала, введенного для кодирования. Кроме того, можно кодировать видеосигнал с использованием оптимального преобразования, выбранного из совокупности разновидностей средств удаления корреляции между цветовыми компонентами.
Тринадцатый вариант осуществления описан при условии, что блок 301 преобразования цветового пространства и блок 308 обратного преобразования цветового пространства всегда активированы. Однако, без активации этих блоков обработки, можно также принять конфигурацию для кодирования на более высоком уровне, например, последовательности, информации, указывающей обеспечение совместимости с традиционным стандартом.
Можно также построить блок 301 преобразования цветового пространства и блок 308 обратного преобразования цветового пространства согласно тринадцатому варианту осуществления в кодере и декодере согласно вариантам осуществления с седьмого по двенадцатый для осуществления преобразования цветового пространства на уровне разностного сигнала прогнозирования. Построенные таким образом кодер и декодер показаны на фиг.64 и фиг.65, соответственно. В кодере, показанном на фиг.64, вместо блока преобразования 8 обеспечен блок преобразования 310, и вместо блока обратного преобразования 13 обеспечен блок обратного преобразования 312. В декодере, показанном на фиг.65, вместо блока обратного преобразования 13 обеспечен блок обратного преобразования 312.
Прежде всего, как указано в виде обработки блока 301 преобразования цветового пространства, блок преобразования 310 выбирает оптимальную обработку преобразования из совокупности разновидностей обработки преобразования цветового пространства и выполняет преобразование цветового пространства на разностном сигнале прогнозирования 4 компонентов C0, C1 и C2, выводимом из блока 5 принятия решения относительно режима кодирования. После этого блок преобразования 310 выполняет преобразование, эквивалентное тому, которое выполняет блок преобразования 8, на результат преобразования цветового пространства. Блок преобразования 310 передает информацию идентификации метода преобразования цветового пространства 311, указывающую, какое преобразование выбрано, на блок 11 кодирования с переменной длиной слова, мультиплексирует информацию идентификации метода преобразования цветового пространства 311 в битовый поток и выводит битовый поток как видеопоток 22. Блок обратного преобразования 312 осуществляет обратное преобразование, эквивалентное тому, которое выполняет блок обратного ортогонального преобразования 13, и, затем, выполняет обработку обратного преобразования цветового пространства с использованием обработки преобразования цветового пространства, обозначенной информацией 311 идентификации метода преобразования цветового пространства.
В декодере блок 25 декодирования с переменной длиной слова извлекает информацию 311 идентификации метода преобразования цветового пространства из битового потока и передает результат извлечения на блок обратного преобразования 312 для осуществления такой же обработки, как обработка блока обратного преобразования 312 в кодере. При такой конфигурации, когда можно в достаточной степени удалить, в области прогнозируемой разности, оставшуюся корреляцию между цветовыми компонентами, можно выполнять удаление как часть обработки кодирования. Таким образом, достигается повышение эффективности кодирования. Однако когда отдельные заголовки макроблоков используются для компонентов C0, C1 и C2, прежде всего, метод прогнозирования меняется для каждого из компонентов, например, интрапрогнозирование для компонента C0 и интерпрогнозирование для компонента C1. Таким образом, корреляция может менее легко поддерживаться в области разностного сигнала прогнозирования 4. Таким образом, когда отдельные заголовки макроблоков используются для компонентов C0, C1 и C2, блоку преобразования 310 и блоку обратного преобразования 312 можно предписывать не выполнять преобразование цветового пространства. Указание, выполняется ли преобразование цветового пространства в области разностного сигнала прогнозирования 4, может мультиплексироваться в битовый поток в качестве информации идентификации. Информацию 311 идентификации метода преобразования цветового пространства можно изменять в единицах последовательности, изображения, среза и макроблока.
В структурах кодера и декодера, показанных на фиг.64 и 65, соответствующие данные коэффициентов преобразования компонентов C0, C1 и C2 имеют разные области определения сигнала для сигнала объекта кодирования согласно информации 311 идентификации метода преобразования цветового пространства. Таким образом, считается, что, в общем случае, распределение данных коэффициентов преобразования является другим распределением вероятности появления согласно информации 311 идентификации метода преобразования цветового пространства. Таким образом, когда кодер и декодер построены, как показано на фиг.64 и 65, кодер и декодер осуществляют кодирование и декодирование с использованием контекстуальных моделей, с которыми связано отдельное состояние вероятности появления для каждого из компонентов C0, C1 и C2 и для каждого из состояний информации 311 идентификации метода преобразования цветового пространства.
Из объяснения операций декодера, согласно двенадцатому варианту осуществления, очевидно, что контекстуальные модели задаются посредством одной и той же процедуры на стороне кодирования и на стороне декодирования для осуществления арифметического декодирования. После определения, к информации какого компонента относится контекстуальная модель, подлежащая использованию, обновление состояния вероятности появления, связанного с контекстуальной моделью, выполняется на основании состояния флага 143 идентификации общего использования параметра состояния вероятности появления.
Четырнадцатый вариант осуществления
Согласно четырнадцатому варианту осуществления будут описаны более конкретные структуры устройства, касающиеся кодера и декодера, описанных в вариантах осуществления.
Согласно вариантам осуществления операции кодера и декодера объясняются с использованием чертежей на основании, например, фиг.1, 2, 30 и 31. В этих чертежах, объясняются операции совместного ввода входного видеосигнала, включающего в себя три цветовых компонента, в кодер, осуществления в кодере кодирования и, одновременно, выбора, кодируются ли три цветовых компонента на основании общего режима прогнозирования или заголовка макроблока или кодируются на основании отдельных режимов прогнозирования или заголовков макроблока, ввода битового потока, полученного в результате кодирования, в декодер, и осуществления в декодере обработки декодирования и, одновременно, выбора на основании флага (например, флага 23 идентификации общего использования режима интрапрогнозирования или флага 123 идентификации общего использования режима интерпрогнозирования), декодированного или извлеченного из битового потока, кодируются ли три цветовых компонента на основании режима прогнозирования или заголовка макроблока или кодируются на основании отдельных режимов прогнозирования или заголовков макроблока для получения воспроизведенного видеосигнала. Ранее подробно описано, что флаг можно кодировать и декодировать в единицах данных произвольного уровня, например, макроблока, среза, изображения или последовательности. Согласно четырнадцатому варианту осуществления настоящего изобретения, в частности, структура и принцип работы устройства для осуществления кодирования и декодирования с одновременным изменением кодирования трех сигналов цветовых компонентов посредством общего заголовка макроблока и кодирования трех сигналов цветовых компонентов посредством отдельных заголовков макроблоков в единицах одного кадра (или одного поля) будут объяснены на основании конкретных чертежей. В нижеследующем объяснении, если явно не указано обратное, описание "один кадр" относится к блоку данных одного кадра или одного поля.
Предполагается, что заголовок макроблока согласно четырнадцатому варианту осуществления включает в себя: флаг идентификации размера блока преобразования, показанный на фиг.15; информацию режима кодирования и прогнозирования, показанную на фиг.50, например, тип макроблока, тип субмакроблока и режим интрапрогнозирования; информацию прогнозирования движения, например, идентификационный номер опорного изображения и вектор движения; информацию индикации эффективности/неэффективности коэффициентов преобразования; и служебную информацию макроблока, отличную от данных коэффициентов преобразования, например, параметр квантования для коэффициента преобразования.
В нижеследующем объяснении обработка кодирования трех сигналов цветовых компонентов одного кадра с общим заголовком макроблока именуется "общей обработкой кодирования", и обработка кодирования трех сигналов цветовых компонентов одного кадра с отдельными независимыми заголовками макроблока именуется "независимой обработкой кодирования". Аналогично, обработка декодирования данных изображения кадра из битового потока, в котором три сигнала цветовых компонентов одного кадра закодированы посредством общего заголовка макроблока, именуется "общей обработкой декодирования", и обработка декодирования данных изображения кадра из битового потока, в котором три сигнала цветовых компонентов одного кадра закодированы посредством отдельных независимых заголовков макроблока, именуется "независимая обработка декодирования". В общей обработке кодирования согласно четырнадцатому варианту осуществления, как показано на фиг.66, входной видеосигнал для одного кадра делится на макроблоки в группе из трех цветовых компонентов. С другой стороны, в независимой обработке кодирования, как показано на фиг.67, входной видеосигнал для одного кадра делится на три цветовых компонента, и три цветовых компонента делятся на макроблоки, состоящие из единичных цветовых компонентов. Таким образом, соответствующие макроблоки подлежат независимой обработке кодирования для соответствующих компонента C0, компонента C1 и компонента C2. Макроблоки, подлежащие общей обработке кодирования, включают в себя выборки трех цветовых компонентов из C0, C1 и C2. Макроблоки, подлежащие независимой обработке кодирования, включают в себя выборки любого из компонентов C0, C1 и C2.
На фиг.68 показана схема, поясняющая соотношение опорного прогнозирования движения во временном измерении между изображениями в кодере и декодере согласно четырнадцатому варианту осуществления. В этом примере блок данных, обозначенный толстой вертикальной линией, задается как изображение, и соотношение между изображением и блоком доступа обозначено окружающей пунктирной линией. В случае общей обработки кодирования и декодирования одно изображение является данными, представляющими видеосигнал для одного кадра, в котором смешаны три цветовых компонента. В случае независимой обработки кодирования и декодирования одно изображение является видеосигналом для одного кадра любого из цветовых компонентов. Блок доступа - это минимальный блок данных, обеспечивающий метку времени для синхронизации с аудио/звуковой информацией и т.п. для видеосигнала. В случае общей обработки кодирования и декодирования данные для одного изображения включаются в один блок доступа (427a на фиг.68). С другой стороны, в случае независимой обработки кодирования и декодирования, три изображения включаются в один блок доступа (427b на фиг.68). Дело в том, что, в случае независимой обработки кодирования и декодирования, видеосигнал воспроизведения для одного кадра не получается, пока не будут собраны изображения в идентичное время отображения для всех трех цветовых компонентов. Номера, указанные над соответствующими изображениями, указывают порядок обработки кодирования и декодирования во временном измерении изображения (frame_num для AVC). На фиг.68 стрелки между изображениями указывают опорное направление прогнозирования движения. В случае независимой обработки кодирования и декодирования опорное прогнозирование движения между изображениями, включенными в идентичный блок доступа, и опорное прогнозирование движения между разными цветовыми компонентами не осуществляется. Изображения соответствующих цветовых компонентов C0, C1 и C2 кодируются и декодируются с прогнозированием и опорой на движение только для сигналов идентичных цветовых компонентов. При такой структуре, в случае независимой обработки кодирования и декодирования согласно четырнадцатому варианту осуществления, можно выполнять кодирование и декодирование соответствующих цветовых компонентов, вовсе не опираясь на обработку кодирования и декодирования других цветовых компонентов. Таким образом, легко осуществлять параллельную обработку.
В AVC определено изображение IDR (мгновенное обновление декодера), которое само осуществляет интракодирование и сбрасывает содержимое памяти опорного изображения, используемое для прогнозирования с компенсацией движения. Поскольку изображение IDR декодируемо без опоры на любые другие изображения, изображение IDR используется как точка произвольного доступа. В блоке доступа в случае общей обработки кодирования один блок доступа представляет собой одно изображение. Однако в блоке доступа в случае независимой обработки кодирования один блок доступа образован совокупностью изображений. Таким образом, когда определенное изображение цветового компонента представляет собой изображение IDR, исходя из того, что все остальные изображения цветового компонента также являются изображениями IDR, блок доступа IDR задается для обеспечения функции произвольного доступа.
В нижеследующем объяснении информация идентификации, указывающая, осуществляется ли кодирование посредством общей обработки кодирования или посредством независимой обработки кодирования, называется сигналом идентификации общего кодирования/независимого кодирования.
На фиг.69 показана схема, поясняющая структуру битового потока, который генерируется кодером согласно четырнадцатому варианту осуществления и поступает на вход декодера согласно четырнадцатому варианту осуществления для обработки декодирования. На фиг.69 показана структура битового потока от уровня последовательностей до уровня кадров. Прежде всего, сигнал 423 идентификации общего кодирования/независимого кодирования мультиплексируется с верхним заголовком уровня последовательностей (в случае AVC, набором параметров последовательности и т.д.). Соответствующие кадры кодируются в единицах блоков доступа. AUD указывает блок NAL разделителя блоков доступа, который является уникальным блоком NAL для идентификации разрыва блока доступа в AVC. Когда сигнал 423 идентификации общего кодирования/независимого кодирования указывает "кодирование изображения посредством общей обработки кодирования", кодированные данные для одного изображения включены в блок доступа. Предполагается, что изображение в этом случае является вышеописанными данными, представляющими видеосигнал для одного кадра, в котором смешаны три цветовых компонента. В этом случае кодированные данные i-го блока доступа образуют набор данных среза Slice(i,j), и "j" - это индекс данных среза в одном изображении.
С другой стороны, когда сигнал 423 идентификации общего кодирования/независимого кодирования указывает "кодирование изображения посредством независимой обработки кодирования", одно изображение представляет собой видеосигнал для одного кадра любого из цветовых компонентов. В этом случае кодированные данные p-го блока доступа образуют набор данных среза Slice(p,q,r) q-го изображения в блоке доступа, и "r" - это индекс данных среза в одном изображении. В случае видеосигнала, образованного тремя цветовыми компонентами, например, RGB, количество значений, которые может принимать "q", равно трем. В случае, например, когда дополнительные данные, например, информация проницаемости для альфа-смешивания, кодируются и декодируются как идентичный блок доступа помимо видеосигнала, включающего в себя три главных цвета, или в случае кодиравания и декодирования видеосигнала, образованного цветовыми компонентами (например, YMCK, используемыми в цветной печати), в количестве большем или равном четырем, количество значений, которые может принимать "q", задается равным четырем или более. При выборе независимой обработки кодирования кодер и декодер согласно четырнадцатому варианту осуществления кодируют соответствующие цветовые компоненты, образующие видеосигнал, полностью независимо друг от друга. Таким образом, можно свободно изменять количество фрагментов цветовых компонентов, в принципе, не изменяя обработку кодирования и декодирования. Это приводит к тому, что, даже когда формат сигнала для осуществления цветового представления видеосигнала изменится в будущем, это изменение можно будет согласовать с независимой обработкой кодирования согласно четырнадцатому варианту осуществления.
Для реализации структуры, согласно четырнадцатому варианту осуществления, сигнал 423 идентификации общего кодирования/независимого кодирования представляется в виде "количества изображений, включенных в один блок доступа и независимо кодируемых без подвергания друг друга опорному прогнозированию движения". В этом случае сигнал 423 идентификации общего кодирования/независимого кодирования можно представить количеством значений, которые может принимать параметр q, и количество значений, которые может принимать параметр, обозначается ниже как num_pictures_in_au. Иными словами, num_pictures_in_au=1 указывает "общую обработку кодирования", и num_pictures_in_au=3 указывает "независимую обработку кодирования" согласно четырнадцатому варианту осуществления. При наличии четырех или более цветовых компонентов num_pictures_in_au обязано иметь значение, большее 3. Благодаря осуществлению такой сигнализации, если декодер декодирует и обращается к num_pictures_in_au, декодер может не только различать данные, кодированные посредством общей обработки кодирования, и данные, кодированные посредством независимой обработки кодирования, но также одновременно изучать, сколько изображений одного цветового компонента присутствует в одном блоке доступа. Таким образом, можно осуществлять общую обработку кодирования и независимую обработка кодирования гладко в битовом потоке, что позволяет обеспечить совместимость с расширением цветового представления видеосигнала в будущем.
На фиг.70 показана схема, поясняющая структуры битового потока данных среза в случае общей обработки кодирования и независимой обработки кодирования. В битовом потоке, закодированном посредством независимой обработки кодирования, для достижения описанных ниже эффектов флаг идентификации цветового компонента (color_channel_idc) сообщается области заголовка в верхней части данных среза, принятых декодером, что позволяет определить, какому изображению цветового компонента в блоке доступа принадлежат данные среза. Color_channel_idc группирует срезы, имеющие одинаковое значение color_channel_idc. Иными словами, между срезами, имеющими разные значения color_channel_idc, не возникает никакой зависимости кодирования и декодирования (например, опорное прогнозирование движения, контекстуальное моделирование/изучение вероятности появления и т.д.) от CABAC. При таком предписании обеспечивается независимость соответствующих изображений в блоке доступа в случае независимой обработки кодирования. Frame_num (порядок обработки кодирования и декодирования изображения, которому принадлежит срез), мультиплексированный с соответствующим заголовком среза, задается равным идентичному значению во всех изображениях цветового компонента в одном блоке доступа.
На фиг.71 показана схема, поясняющая схематическую структуру кодера согласно четырнадцатому варианту осуществления. Согласно фиг.71 общая обработка кодирования выполняется в первом блоке 503a кодирования изображения, и независимая обработка кодирования выполняется во вторых блоках 503b0, 503b1 и 503b2 кодирования изображения (подготовленных для трех цветовых компонентов). Видеосигнал 1 поступает на первый блок 503a кодирования изображения или блок 502 разделения цветовых компонентов и любой из вторых блоков 503b0-503b2 кодирования изображения для каждого цветового компонента посредством переключателя (SW) 501. Переключатель 501 активируется сигналом 423 идентификации общего кодирования/независимого кодирования и подает входной видеосигнал 1 на указанный путь. Далее следует описание случая, когда сигнал идентификации общего кодирования/независимого кодирования (num_pictures_in_au) 423 представляет собой сигнал, мультиплексированный с набором параметров последовательности, когда входной видеосигнал является сигналом в формате 4:4:4 и используется для выбора общей обработки кодирования и независимой обработки кодирования в единицах последовательностей. Этот случай отражает ту же концепцию, что и случаи флага 123 идентификации общего использования режима интерпрогнозирования, описанного согласно седьмому варианту осуществления, и флага 123c идентификации общего использования заголовка макроблока, описанного согласно одиннадцатому варианту осуществления. Когда используется общая обработка кодирования, необходимо выполнять общую обработку декодирования на стороне декодера. Когда используется независимая обработка кодирования, необходимо выполнять независимую обработку декодирования на стороне декодера. Таким образом, необходимо мультиплексировать сигнал 423 идентификации общего кодирования/независимого кодирования с битовым потоком в качестве информации, указывающей обработку. Таким образом, сигнал 423 идентификации общего кодирования/независимого кодирования вводится в блок мультиплексирования 504. Единицей мультиплексирования сигнала 423 идентификации общего кодирования/независимого кодирования может быть любая единица, например, единица GOP (группы изображений), состоящая из нескольких групп изображений в последовательности, т.е. единица находится на более высоком уровне, чем уровень изображений.
Для выполнения общей обработки кодирования первый блок 503a кодирования изображения делит входной видеосигнал 1 на макроблоки в группе выборок трех цветовых компонентов, как показано на фиг.66, и продвигает обработку кодирования в этой единице. Обработка кодирования в первом блоке 503a кодирования изображения будет описана ниже. При выборе независимой обработки кодирования входной видеосигнал 1 делится на данные для одного кадра C0, C1 и C2 в блоке 502 разделения цветовых компонентов и поступает на соответствующие вторые блоки 503b0-503b2 кодирования изображения, соответственно. Вторые блоки 503b0-503b2 кодирования изображения делят сигнал для одного кадра, разделенного для каждого цветового компонента, на макроблоки в формате, показанном на фиг.67, и продвигают обработку кодирования в этой единице. Обработка кодирования во вторых блоках кодирования изображения будет описана ниже.
Видеосигнал для одного изображения, состоящий из трех цветовых компонентов, вводится в первый блок 503a кодирования изображения. Кодированные данные выводятся как видеопоток 422a. Видеосигнал для одного изображения, состоящий из одного цветового компонента, вводится во вторые блоки 503b0-503b2 кодирования изображения. Кодированные данные выводятся как видеопотоки 420b0-422b2. Эти видеопотоки мультиплексируются в формат видеопотока 422c в блоке мультиплексирования 504 на основании состояния сигнала 423 идентификации общего кодирования/независимого кодирования и выводятся.
При мультиплексировании видеопотока 422c в блоке доступа в случае, когда осуществляется независимая обработка кодирования, можно перемежать данные среза, мультиплексируемые и передаваемые в битовом потоке между изображениями (соответствующими цветовыми компонентами) в блоке доступа (фиг.72). В этом случае, на стороне декодера, необходимо решать, какому цветовому компоненту в блоке доступа принадлежат принятые данные среза. Таким образом, используется флаг идентификации цветового компонента, мультиплексированный с областью заголовка в верхней части данных среза, как показано на фиг.70.
Благодаря структуре наподобие структуры кодера, показанного на фиг.71, когда кодер кодирует изображения трех цветовых компонентов согласно параллельной обработке с использованием трех наборов каждого из вторых блоков 503b0-503b2 кодирования изображения, независимых друг от друга, можно передавать кодированные данные, не ожидая завершения кодированных данных других изображений цветового компонента, как только данные среза собственного изображения. В AVC можно делить одно изображение на совокупность данных среза и кодировать данные среза. Можно гибко изменять длину данных среза и количество макроблоков, включенных в срез, согласно условиям кодирования. Между срезами, соседствующими друг с другом в пространстве изображения, поскольку обеспечена независимость обработки декодирования для срезов, невозможно использовать близкие контексты, например, интрапрогнозирование и арифметическое кодирование. Таким образом, чем больше длина данных среза, тем выше эффективность кодирования. С другой стороны, когда ошибка примешивается в битовый поток в ходе передачи и записи, возврат из ошибки происходит тем раньше, чем меньше длина данных среза, и тем легче подавлять снижение качества. Когда длина и структура среза, порядок цветовых компонентов и т.п. фиксированы без мультиплексирования флага идентификации цветового компонента, условия генерации битового потока фиксируются в кодере. Таким образом, можно гибко приспосабливаться к различным условиям, необходимым для кодирования.
Если можно формировать битовый поток, как показано на фиг.72, в кодере, можно сократить размер буфера передачи, необходимого для передачи, т.е. задержку обработки на стороне кодера. Состояние снижения задержки обработки показано на фиг.71. Если мультиплексирование данных среза между изображениями не разрешено, пока не завершено кодирование изображения определенного цветового компонента, кодеру приходится буферизовать кодированные данные других изображений. Это означает, что происходит задержка на уровне изображений. С другой стороны, как показанный в самой нижней части фиг.72, если можно осуществлять перемежение на уровне срезов, блок кодирования изображения определенного цветового компонента может выводить кодированные данные на блок мультиплексирования в единицах данных среза и может подавлять задержку.
В одном изображении цветового компонента данные среза, включенные в изображение, можно передавать в порядке развертки макроблоков или можно строить так, чтобы иметь возможность осуществлять перемежающуюся передачу даже в одном изображении.
Операции первого и вторых блоков кодирования изображения будут подробно описаны ниже.
Описание работы первого блока кодирования изображения
Внутренняя структура первого блока кодирования изображения 503a показана на фиг.73. Согласно фиг.73 входной видеосигнал 1 вводится в формате 4:4:4 и в единицах макроблоков в группе трех цветовых компонентов в формате, показанном на фиг.66.
Прежде всего, блок прогнозирования 461 выбирает опорное изображение из данных опорного изображения для прогнозирования компенсации движения, хранящихся в памяти 16a, и осуществляет обработку прогнозирования для компенсации движения в единицах макроблоков. В памяти 16a хранится совокупность фрагментов данных опорного изображения, образованных тремя цветовыми компонентами на протяжении совокупности интервалов времени. Блок прогнозирования 461 выбирает оптимальное опорное изображение в единицах макроблоков из данных опорного изображения и осуществляет прогнозирование движения. В порядке размещения данных опорного изображения в памяти 16a, данные опорного изображения можно по отдельности сохранять для каждого из цветовых компонентов в режиме последовательных плоскостей, или выборки соответствующих цветовых компонентов можно сохранять в режиме последовательных точек. Семь типов подготавливаются в качестве размеров блока для осуществления прогнозирования с компенсацией движения. Сначала можно выбрать любой размер из 16×16, 16×8, 8×16 и 8×8 в единицах макроблоков, как показано на фиг.32A-фиг.32D. Кроме того, при выборе 8×8, можно выбрать любой размер из 8×8, 8×4, 4×8 и 4×4 для каждого блока 8×8, как показано на фиг.32E-фиг.32H.
Блок прогнозирования 461 выполняет, для каждого размера макроблока, обработку прогнозирования для компенсации движения на всех или части размеров блока, размеров подблока, векторов движения в заранее определенном диапазоне поиска, и одном или нескольких используемых опорных изображений. Блок прогнозирования 461 получает дифференциальный сигнал прогнозирования для каждого блока, служащего блоком прогнозирования компенсации движения с использованием векторов движения, и идентификационный номер опорного изображения 463 и вычитатель 3, используемый для прогнозирования. Эффективность прогнозирования дифференциального сигнала прогнозирования 4 оценивается в блоке 5 принятия решения относительно режима кодирования. Блок 5 принятия решения относительно режима кодирования выводит тип макроблока/тип субмакроблока 106 и вектор движения/информацию 463 идентификации опорного изображения, при которых достигается оптимальная эффективность прогнозирования для макроблока, подлежащего прогнозированию, из обработки прогнозирования, выполняемой в блоке прогнозирования 461. Все фрагменты информации заголовка макроблока, например, типы макроблока, типы субмакроблока, индексы опорного изображения и векторы движения, определяются как информация заголовка, общая для трех цветовых компонентов, используемая для кодирования, и мультиплексируются с битовым потоком. При оценке оптимальности эффективности прогнозирования, в целях управления объемом арифметической операции, можно оценивать величину ошибки прогнозирования для заранее определенного цветового компонента (например, компонента G сигнала RGB или Y компонента сигнала YUV). Альтернативно, хотя объем арифметической операции возрастает, для получения оптимальной производительности прогнозирования, величину ошибки прогнозирования для всех цветовых компонентов можно полностью оценить. При окончательном выборе типа макроблока/типа субмакроблока 106 можно учитывать весовой коэффициент 20 для каждого типа, определенного при принятии решения блоком 19 управления кодированием.
Аналогично, блок прогнозирования 461 также выполняет интрапрогнозирование. При выполнении интрапрогнозирования информация режима интрапрогнозирования выводится в виде выходного сигнала 463. В нижеследующем объяснении, когда интрапрогнозирование и прогнозирование с компенсацией движения конкретно не различаются, в качестве выходного сигнала 463, информация режима интрапрогнозирования, информация вектора движения, идентификационный номер опорного изображения совместно называются служебной информацией прогнозирования. Что касается интрапрогнозирования, можно оценить величину ошибки прогнозирования только для заранее определенного цветового компонента или можно полностью оценить величину ошибки прогнозирования для всех цветовых компонентов. Наконец, блок прогнозирования 461 выбирает интрапрогнозирование или интерпрогнозирование типа макроблока, оценивая тип макроблока согласно эффективности прогнозирования или эффективности кодирования в блоке 5 принятия решения относительно режима кодирования.
Блок прогнозирования 461 выводит выбранный тип макроблока/тип субмакроблока 106 и дифференциальный сигнал прогнозирования 4, полученный путем интрапрогнозирования и прогнозирования с компенсацией движения на основании служебной информации прогнозирования 463, на блок преобразования 310. Блок преобразования 310 преобразует введенный дифференциальный сигнал прогнозирования 4 и выводит дифференциальный сигнал прогнозирования 4 на блок квантования 9 как коэффициент преобразования. В этом случае размер блока, служащего входным сигналом для преобразования, можно выбирать из 4×4 и 8×8. Когда имеется возможность выбирать размер блока преобразования, размер блока, выбранный во время кодирования, отражается в значении флага 464 указания размера блока преобразования, и флаг мультиплексируется с битовым потоком. Блок квантования 9 квантует коэффициент преобразования, введенный на основании параметра квантования 21, определенного блоком 19 управления кодированием, и выводит коэффициент преобразования на блок 11 кодирования с переменной длиной слова в качестве квантованного коэффициента преобразования 10. Квантованный коэффициент преобразования 10 включает в себя информацию для трех цветовых компонентов и энтропийно кодируется посредством кодирования Хаффмана, арифметического кодирования и т.п. в блоке 11 кодирования с переменной длиной слова. Квантованный коэффициент преобразования 10 восстанавливается до дифференциального сигнала прогнозирования локального декодирования 14 посредством блока обратного квантования 12 и блока обратного преобразования 312. Квантованный коэффициент преобразования 10 суммируется с прогнозируемым изображением 7, генерируемым на основании выбранного типа макроблока/типа субмакроблока 106 и служебной информации прогнозирования 463, сумматором 18. Таким образом, генерируется локально декодированное изображение 15. Будучи подвергнуто обработке удаления блочного искажения в разблокирующем фильтре 462, локально декодированное изображение 15 сохраняется в памяти 16a для использования в следующей обработке прогнозирования для компенсации движения. Флаг 24 управления разблокирующим фильтром, указывающий, применяется ли разблокирующий фильтр к макроблоку, также вводится в блок 11 кодирования с переменной длиной слова.
Квантованный коэффициент преобразования 10, тип макроблока/тип субмакроблока 106, служебная информация прогнозирования 463 и параметр квантования 21, введенные в блок 11 кодирования с переменной длиной слова, упорядочиваются и формируются в виде битового потока в соответствии с заранее определенным правилом (синтаксисом) и выводятся в буфер передачи 17 в качестве кодированных данных блока NAL в единицах данных среза в одной или группе из совокупности макроблоков в формате, показанном на фиг.66. Буфер передачи 17 сглаживает битовый поток согласно полосе линии передачи, к которой подключен кодер, и скорости чтения носителя записи и выводит битовый поток в качестве видеопотока 422a. Буфер передачи 17 применяет обратную связь к блоку 19 управления кодированием согласно состоянию накопления битовых потоков в буфере передачи 17 и регулирует объем генерируемых кодов при следующем кодировании видеокадров.
Выходной сигнал первого блока 503a кодирования изображения представляет собой срез единицы трех компонентов и эквивалентен объему кодов в единицах группы блоков доступа. Таким образом, буфер передачи 17 можно размещать в блоке мультиплексирования 504 как есть.
В первом блоке 503a кодирования изображения согласно четырнадцатому варианту осуществления можно принимать решение, что все данные среза в последовательности представляют собой срез, в котором C0, C1 и C2 смешаны (т.е. срез, в котором фрагменты информации трех цветовых компонентов смешаны) согласно сигналу 423 идентификации общего кодирования/независимого кодирования. Таким образом, флаг идентификации цветового компонента не мультиплексируется с заголовком среза.
Описание работы второго блока кодирования изображения
Внутренняя структура второго блока кодирования изображения 503b0 (503b1, 503b2) показана на фиг.74. Согласно фиг.74 предполагается, что входной видеосигнал 1a вводится в единицах макроблоков, состоящих из выборки одного цветового компонента в формате, показанном на фиг.67.
Прежде всего, блок прогнозирования 461 выбирает опорное изображение из данных опорного изображения для прогнозирования компенсации движения, хранящихся в памяти 16b, и осуществляет обработку прогнозирования для компенсации движения в единицах макроблоков. В памяти 16 может храниться совокупность фрагментов данных опорного изображения, образованных одним цветовым компонентом, в течение совокупности интервалов времени. Блок прогнозирования 461 выбирает оптимальное опорное изображение в единицах макроблоков из данных опорного изображения и осуществляет прогнозирование движения. Память 16b в единицах группы из трех цветовых компонентов можно использовать совместно с памятью 16a. Семь типов подготавливаются в качестве размеров блока для осуществления прогнозирования с компенсацией движения. Сначала можно выбрать любой размер из 16×16, 16×8, 8×16 и 8×8 в единицах макроблоков, как показано на фиг.32A-фиг.32D. Кроме того, при выборе 8×8, можно выбрать любой размер из 8×8, 8×4, 4×8 и 4×4 для каждого блока 8×8, как показано на фиг.32E-фиг.32H.
Блок прогнозирования 461 выполняет, для каждого размера макроблока, обработку прогнозирования для компенсации движения на всех или части размеров блока, размеров подблока, векторов движения в заранее определенном диапазоне поиска, и одном или нескольких используемых опорных изображений. Блок прогнозирования 461 получает дифференциальный сигнал прогнозирования 4 для каждого блока, служащего блоком прогнозирования компенсации движения с использованием векторов движения, и идентификационный номер опорного изображения 463 и вычитатель 3, используемый для прогнозирования. Эффективность прогнозирования дифференциального сигнала прогнозирования 4 оценивается в блоке 5 принятия решения относительно режима кодирования. Блок 5 принятия решения относительно режима кодирования выводит тип макроблока/тип субмакроблока 106 и информацию вектора движения/идентификационный номер 463 опорного изображения, при которых достигается оптимальная эффективность прогнозирования для макроблока, подлежащего прогнозированию, из обработки прогнозирования, выполняемой в блоке прогнозирования 461. Все фрагменты информации заголовка макроблока, например, типы макроблока, типы субмакроблока, индексы опорного изображения и векторы движения, определяются как информация заголовка в отношении одного цветового компонента входного видеосигнала 1, используемая для кодирования, и мультиплексируются с битовым потоком. При оценке оптимальности эффективности прогнозирования оценивается только величина ошибки прогнозирования для одного цветового компонента, подлежащего обработке кодирования. При окончательном выборе типа макроблока/типа субмакроблока 106 можно учитывать весовой коэффициент 20 для каждого типа, определенного при принятии решения блоком 19 управления кодированием.
Аналогично, блок прогнозирования 461 также выполняет интрапрогнозирование. Во время выполнения интрапрогнозирования информация режима интрапрогнозирования выводится в виде выходного сигнала 463. В нижеследующем объяснении, когда интрапрогнозирование и прогнозирование с компенсацией движения конкретно не различаются, выходной сигнал 463 называется служебной информацией прогнозирования, включающей в себя информацию режима интрапрогнозирования, векторы движения и идентификационный номер опорного изображения. Кроме того, в отношении интрапрогнозирования, оценивается только величина ошибки прогнозирования для одного цветового компонента, подлежащего обработке кодирования. Наконец, блок прогнозирования 461 выбирает интрапрогнозирование или интерпрогнозирование типа макроблока, оценивая тип макроблока согласно эффективности прогнозирования или эффективности кодирования.
Блок прогнозирования 461 выводит выбранный тип макроблока/тип субмакроблока 106 и дифференциальный сигнал прогнозирования 4, полученный посредством служебной информации прогнозирования 463, на блок преобразования 310. Блок преобразования 310 преобразует введенный дифференциальный сигнал прогнозирования 4 одного цветового компонента и выводит дифференциальный сигнал прогнозирования 4 на блок квантования 9 как коэффициент преобразования. В этом случае размер блока, служащего входным сигналом для преобразования, можно выбирать из 4×4 и 8×8. Когда возможен выбор, размер блока, выбранный во время кодирования, отражается в значении флага 464 указания размера блока преобразования, и флаг мультиплексируется с битовым потоком. Блок квантования 9 квантует коэффициент преобразования, введенный на основании параметра квантования 21, определенного блоком 19 управления кодированием, и выводит коэффициент преобразования на блок 11 кодирования с переменной длиной слова в качестве квантованного коэффициента преобразования 10. Квантованный коэффициент преобразования 10 включает в себя информацию для одного цветового компонента и энтропийно кодируется посредством кодирования Хаффмана, арифметического кодирования и т.п. в блоке 11 кодирования с переменной длиной слова. Квантованный коэффициент преобразования 10 восстанавливается до дифференциального сигнала прогнозирования локального декодирования 14 посредством блока обратного квантования 12 и блока обратного преобразования 312. Квантованный коэффициент преобразования 10 суммируется с прогнозируемым изображением 7, генерируемым на основании выбранного типа макроблока/типа субмакроблока 106 и служебной информации прогнозирования 463, сумматором 18. Таким образом, генерируется локально декодированное изображение 15. Будучи подвергнуто обработке удаления блочного искажения в разблокирующем фильтре 462, локально декодированное изображение 15 сохраняется в памяти 16b для использования в следующей обработке прогнозирования для компенсации движения. Флаг 24 управления разблокирующим фильтром, указывающий, применяется ли разблокирующий фильтр к макроблоку, также вводится в блок 11 кодирования с переменной длиной слова.
Квантованный коэффициент преобразования 10, тип макроблока/тип субмакроблока 106, служебная информация прогнозирования 463 и параметр квантования 21, введенные в блок 11 кодирования с переменной длиной слова, упорядочиваются и формируются в виде битового потока в соответствии с заранее определенным правилом (синтаксисом) и выводятся в буфер передачи 17 в качестве кодированных данных блока NAL в единицах данных среза в одной или группе из совокупности макроблоков в формате, показанном на фиг.67. Буфер передачи 17 сглаживает битовый поток согласно полосе линии передачи, к которой подключен кодер, и скорости чтения носителя записи и выводит битовый поток в качестве видеопотока 422b0 (422b1, 422b2). Буфер передачи 17 применяет обратную связь к блоку 19 управления кодированием согласно состоянию накопления битовых потоков в буфере передачи 17 и регулирует объем генерируемых кодов при следующем кодировании видеокадров.
Выход каждого из вторых блоков 503b0-503b2 кодирования изображения представляет собой срез, состоящий только из данных одного цветового компонента. Когда необходима регулировка объема кодов в единицах группы блоков доступа, общий буфер передачи в единицах мультиплексированных срезов всех цветовых компонентов можно обеспечить в блоке 504 мультиплексирования для подачи обратной связи на блок 19 управления кодированием соответствующих цветовых компонентов на основании занятого объема буфера. В этом случае управление кодированием можно осуществлять с использованием только объема информации о генерации всех цветовых компонентов, а также можно осуществлять с учетом состояния буфера передачи 17 каждого из цветовых компонентов. Когда управление кодированием осуществляется с использованием только объема информации о генерации всех цветовых компонентов, также можно реализовать функцию, эквивалентную буферу передачи 17 с общим буфером передачи в блоке мультиплексирования 504 и упразднить буфер передачи 17.
Во вторых блоках 503b0-503b2 кодирования изображения согласно четырнадцатому варианту осуществления можно принимать решение, что все данные среза в последовательности представляют собой срез одного цветового компонента (т.е. срез C0, срез C1 или срез C2) согласно сигналу 423 идентификации общего кодирования/независимого кодирования. Таким образом, флаг идентификации цветового компонента всегда мультиплексируется с заголовком среза, чтобы можно было принимать решение на стороне декодера, какой срез соответствует каким данным изображения в блоке доступа. Таким образом, соответствующие вторые блоки 503b0-503b2 кодирования изображения могут передавать выходные сигналы из соответствующих буферов передачи 17 в момент, когда накоплены данные для одного среза, не накапливая выходные сигналы для одного изображения.
Сигнал идентификации общего кодирования/независимого кодирования (num_pictures_in_au) может одновременно представлять информацию для отличения данных, кодированных посредством общей обработки кодирования, от данных, кодированных посредством независимой обработки кодирования (информацию идентификации общего кодирования), и информацию, указывающую, сколько изображений одного цветового компонента присутствует в одном блоке доступа (количество цветовых компонентов). Однако две разновидности информации можно кодировать как независимые фрагменты информации.
Первый блок 503a кодирования изображения и вторые блоки 503b0-503b2 кодирования изображения отличаются только тем, обрабатывается ли информация макрозаголовка как информация, общая для трех компонентов, или как информация одного цветового компонента, и структурой битового потока данных среза. Можно реализовать большинство основных блоков обработки, например, блоки прогнозирования, блоки преобразования и блоки обратного преобразования, блоки квантования и блоки обратного квантования, и разблокирующие фильтры, показанные на фиг.73 и 74, можно реализовать в функциональных блоках, общих для первого блока кодирования изображения 503a и вторых блоков 503b0-503b2 кодирования изображения, с одной лишь разницей, обрабатывается ли информация трех цветовых компонентов совместно или обрабатывается только информация одного цветового компонента. Таким образом, можно реализовать не только полностью независимый блок обработки кодирования, показанный на фиг.71, но и различные кодеры, надлежащим образом комбинируя основные компоненты, показанные на фиг.73 и 74. Если конфигурация памяти 16a в первом блоке 503a кодирования изображения обеспечена в режиме последовательных плоскостей, можно совместно использовать структуру памяти для хранения опорного изображения между первым блоком 503a кодирования изображения и вторыми блоками 503b0-503b2 кодирования изображения.
Хотя на фигуре это не показано, в кодере согласно четырнадцатому варианту осуществления, предполагая наличие буфера мнимого потока (буфера изображения для кодирования), который буферизует видеопоток 422c, согласующийся с массивами, показанными на фиг.69 и 70, и памяти мнимых кадров (буфера изображения для декодирования), которая буферизует декодированные изображения 427a и 427b, видеопоток 422c генерируется во избежание переполнения или недонаполнения буфера изображения для кодирования и отказа буфера изображения для декодирования. Это управление, в основном, осуществляется блоком 19 управления кодированием. Следовательно, когда видеопоток 422c декодируется в соответствии с операциями (моделями мнимого буфера) буфера изображения для кодирования и буфера изображения для декодирования в декодере, гарантируется, что в декодере не произойдет сбой. Модели мнимого буфера определены ниже.
Операции буфера изображения для кодирования осуществляются в единицах блоков доступа. Как описано выше, при осуществлении общей обработки декодирования кодированные данные одного изображения включаются в один блок доступа. При осуществлении независимой обработки декодирования кодированные данные изображения для количества цветовых компонентов (для трех изображений в случае трех компонентов) включаются в один блок доступа. Операции, заданные для буфера изображения для кодирования, - это время, когда первый бит и последний бит блока доступа вводятся в буфер изображения для кодирования, и время, когда бит блока доступа считывается из буфера изображения для кодирования. По определению, считывание из буфера изображения для кодирования осуществляется мгновенно. Предполагается, что все биты блока доступа считываются из буфера изображения для кодирования одновременно. Когда бит блока доступа считывается из буфера изображения для кодирования, бит вводится в блок анализа верхнего заголовка. Как описано выше, бит подвергается обработке декодирования в первом блоке декодирования изображения или втором блоке декодирования изображения и выводится как цветовой видеокадр, связанный в единицах блока доступа. Обработка от считывания бита из буфера изображения для кодирования и вывода изображения в качестве цветового видеокадра в единицах блоков доступа осуществляется мгновенно согласно определению модели мнимого буфера. Цветовой видеокадр, построенный в единицах блоков доступа, вводится в буфер изображения для декодирования, и вычисляется время вывода цветового видеокадра из буфера изображения для декодирования. Время вывода из буфера изображения для декодирования - это значение, вычисленное путем сложения заранее определенного времени задержки со временем чтения из буфера изображения для кодирования. Это время задержки можно мультиплексировать с битовым потоком для управления декодером. Когда время задержки равно 0, т.е. когда время вывода из буфера изображения для декодирования равно времени чтения из буфера изображения для кодирования, цветовой видеокадр вводится в буфер изображения для декодирования и одновременно выводится из буфера изображения для декодирования. В других случаях, т.е. когда время вывода из буфера изображения для декодирования больше времени чтения из буфера изображения для кодирования, цветовой видеокадр сохраняется в буфере изображения для декодирования, пока не наступит время вывода из буфера изображения для декодирования. Как описано выше, операции из буфера изображения для декодирования заданы в единицах блоков доступа.
На фиг.75 показана схема, поясняющая схематическую структуру декодера согласно четырнадцатому варианту осуществления. Согласно фиг.75 общая обработка декодирования выполняется в первом блоке 603a декодирования изображения. Независимая обработка декодирования выполняется в блоке 602 принятия решения относительно цветового компонента и вторых блоках 603b0 декодирования изображения (подготовленных для трех цветовых компонентов).
Видеопоток 422c делится на единицы блоков NAL в блоке 610 анализа верхнего заголовка. Информация верхнего заголовка, например, набор параметров последовательности и набор параметров изображения, декодируется как есть и сохраняется в заранее определенной области памяти, к которой первый блок 603a декодирования изображения, блок 602 принятия решения относительно цветового компонента и вторые блоки 603b0-603b2 декодирования изображения способны обращаться за информацией верхнего заголовка. Сигнал 423 идентификации общего кодирования/независимого кодирования (num_pictures_in_au), мультиплексированный в единицах последовательностей, декодируется и поддерживается как часть информации верхнего заголовка.
Декодированный num_pictures_in_au поступает на переключатель (SW) 601. Если num_pictures_in_au=1, переключатель 601 подает блок NAL среза для каждого изображения на первый блок 603a декодирования изображения. Если num_pictures_in_au=3, переключатель 601 подает блок NAL среза на блок 602 принятия решения относительно цветового компонента. Иными словами, если num_pictures_in_au=1, первый блок 603a декодирования изображения осуществляет общую обработку декодирования. Если num_pictures_in_au=3, три вторых блока 603b0-603b2 декодирования изображения осуществляют независимую обработку декодирования. Подробное описание операций первого и вторых блоков декодирования изображения приведено ниже.
Блок 602 принятия решения относительно цветового компонента принимает решение, какому изображению цветового компонента в текущем блоке доступа соответствует блок NAL среза, согласно значению флага идентификации цветового компонента, показанного на фиг.70, и распределяет и подает блок NAL среза на соответствующие вторые блоки 603b0-603b2 декодирования изображения. При такой структуре декодера получается, что, даже если принимается битовый поток, полученный перемежением и кодированием среза в блоке доступа, как показано на фиг.72, можно легко принять решение, какой срез принадлежит какому изображению цветового компонента, и правильно декодировать битовый поток.
Описание работы первого блока декодирования изображения
Внутренняя структура первого блока 603a декодирования изображения показана на фиг.76. Первый блок 603a декодирования изображения принимает видеопоток 442c, согласующийся с массивами, показанными на фиг.69 и 70, который выводится из кодера, показанного на фиг.71, в единицах смешанного среза C0, C1 и C2, после деления видеопотока в единицах блока NAL. Первый блок декодирования изображения 603a осуществляет обработку декодирования, когда макроблок состоит из выборок трех цветовых компонентов, показанных на фиг.66, и восстанавливает выходной видеокадр.
Видеопоток 442c вводится в блок 25 декодирования с переменной длиной слова. Блок 25 декодирования с переменной длиной слова интерпретирует видеопоток 442c в соответствии с заранее определенным правилом (синтаксисом) и извлекает квантованный коэффициент преобразования 10 для трех компонентов и информацию заголовка макроблока (тип макроблока/тип субмакроблока 106, служебную информацию прогнозирования 463, флаг 464 указания размера блока преобразования и параметр квантования 21), совместно используемую для трех компонентов. Квантованный коэффициент преобразования 10 вводится в блок обратного квантования 12, который осуществляет такую же обработку, которую осуществляет первый блок 503a кодирования изображения, совместно с параметром квантования 21 и подвергается обработке обратного квантования. Затем выходной сигнал блока обратного квантования 12 вводится в блок обратного преобразования 312, который осуществляет такую же обработку, которую осуществляет первый блок 503a кодирования изображения, и восстанавливается до дифференциального сигнала прогнозирования локального декодирования 14 (если флаг 464 указания размера блока преобразования присутствует в видеопотоке 422c, к которому обращается флаг 464 указания размера блока преобразования на этапе обратного квантования и на этапе обработки обратного преобразования). С другой стороны, только обработка обращения к служебной информации прогнозирования 463 для генерации прогнозируемого изображения 7 в блоке прогнозирования 461 в первом блоке 503a кодирования изображения включена в блок прогнозирования 461. Тип макроблока/тип субмакроблока 106 и служебная информация прогнозирования 463 вводятся в блок прогнозирования 461 для получения прогнозируемого изображения 7 для трех компонентов. Когда тип макроблока указывает интрапрогнозирование, прогнозируемое изображение 7 для трех компонентов получается из служебной информации прогнозирования 463 в соответствии с информацией режима интрапрогнозирования. Когда тип макроблока указывает интерпрогнозирование, прогнозируемое изображение 7 для трех компонентов получается из служебной информации прогнозирования 463 в соответствии с вектором движения и индексом опорного изображения. Дифференциальный сигнал прогнозирования локального декодирования 14 и прогнозируемое изображение 7 суммируются сумматором 18 для получения внутренне декодированного изображения 15 для трех компонентов. Поскольку внутренне декодированное изображение (локально декодированное изображение) 15 используется для прогнозирования с компенсацией движения следующих макроблоков, после применения обработки удаления блочного искажения к выборкам внутренне декодированного изображения для трех компонентов в разблокирующем фильтре 462, который осуществляет такую же обработку, которую осуществляет первый блок 503a кодирования изображения, внутренне декодированное изображение 15 выводится как декодированное изображение 427a и сохранятеся в памяти 16a. В этом случае обработка разблокирующего фильтра применяется к внутренне декодированному изображению 15 на основании инструкции флага 24 управления разблокирующим фильтром, интерпретируемой блоком 25 декодирования с переменной длиной слова. Совокупность фрагментов данных опорного изображения, образованных тремя цветовыми компонентами на протяжении совокупности интервалов времени, сохраняется в памяти 16a. Блок прогнозирования 461 выбирает опорное изображение, указанное индексом опорного изображения, извлеченным из битового потока в единицах макроблоков, из данных опорного изображения и генерирует прогнозируемое изображение. В порядке размещения данных опорного изображения в памяти 16a, данные опорного изображения можно по отдельности сохранять для каждого из цветовых компонентов в режиме последовательных плоскостей, или выборки соответствующих цветовых компонентов можно сохранять в режиме последовательных точек. Декодированное изображение 427a включает в себя три цветовых компонента и непосредственно преобразуется в цветовой видеокадр, образующий блок доступа 427a0, при общей обработке декодирования.
Описание работы второго блока декодирования изображения
Внутренняя структура каждого из вторых блоков 603b0-603b2 декодирования изображения показана на фиг.17. Каждый из вторых блоков 603b0-603b2 декодирования изображения принимает видеопоток 442c, согласующийся с массивами, показанными на фиг.69 и 70, выводимый из декодера, показанного на фиг.71, в единицах блоков NAL среза C0, C1 или C2, выделенных блоком 602 принятия решения относительно цветового компонента, после того, как видеопоток делится в единицах блоков NAL в блоке 610 анализа верхнего заголовка, осуществляет обработку декодирования с макроблоком, состоящим из выборки одного цветового компонента, показанным на фиг.67, в качестве единицы, и восстанавливает выходной видеокадр.
Видеопоток 422c вводится в блок 25 декодирования с переменной длиной слова. Блок 25 декодирования с переменной длиной слова интерпретирует битовый поток 422c в соответствии с заранее определенным правилом (синтаксисом) и извлекает квантованный коэффициент преобразования 10 для одного цветового компонента и информацию заголовка макроблока (тип макроблока/тип субмакроблока 106, служебную информацию прогнозирования 463, флаг 464 указания размера блока преобразования и параметр квантования 21), совместно используемую для одного цветового компонента. Квантованный коэффициент преобразования 10 вводится в блок обратного квантования 12, который осуществляет такую же обработку, которую осуществляет второй 503b0 (503b1, 503b2) блок кодирования изображения, совместно с параметром квантования 21 и подвергается обработке обратного квантования. Затем выходной сигнал блока обратного квантования 12 вводится в блок обратного преобразования 312, который осуществляет такую же обработку, которую осуществляет второй блок 503b0 (503b1, 503b2) кодирования изображения, и восстанавливается до дифференциального сигнала прогнозирования локального декодирования 14 (если флаг 464 указания размера блока преобразования присутствует в видеопотоке 422c, к которому обращается флаг 464 указания размера блока преобразования на этапе обратного квантования и на этапе обработки обратного преобразования). С другой стороны, только обработка обращения к служебной информации прогнозирования 463 для генерации прогнозируемого изображения 7 в блоке прогнозирования 461 во втором блоке 503b0 (503b1, 503b2) кодирования изображения включена в блок прогнозирования 461. Тип макроблока/тип субмакроблока 106 и служебная информация прогнозирования 463 вводятся в блок прогнозирования 461 для получения прогнозируемого изображения 7 для одного цветового компонента. Когда тип макроблока указывает интрапрогнозирование, прогнозируемое изображение 7 для одного цветового компонента получается из служебной информации прогнозирования 463 в соответствии с информацией режима интрапрогнозирования. Когда тип макроблока указывает интерпрогнозирование, прогнозируемое изображение 7 для одного цветового компонента получается из служебной информации прогнозирования 463 в соответствии с вектором движения и индексом опорного изображения. Дифференциальный сигнал прогнозирования локального декодирования 14 и прогнозируемое изображение 7 суммируются сумматором 18 для получения внутренне декодированного изображения 15 для макроблока одного цветового компонента. Поскольку внутренне декодированное изображение 15 используется для прогнозирования с компенсацией движения следующих макроблоков, после применения обработки удаления блочного искажения к выборкам внутренне декодированного изображения для одного цветового компонента в разблокирующем фильтре 26, который осуществляет такую же обработку, которую осуществляет второй блок 503b0 (503b1, 503b2) кодирования изображения, внутренне декодированное изображение 15 выводится как декодированное изображение 427b и сохраняется в памяти 16b. В этом случае обработка разблокирующего фильтра применяется к внутренне декодированному изображению 15 на основании инструкции флага 24 управления разблокирующим фильтром, интерпретируемой блоком 25 декодирования с переменной длиной слова. Декодированное изображение 427b включает в себя только выборку одного цветового компонента и построено как цветовой видеокадр путем связывания, в единицах блоков доступа 427b0, декодированного изображения 427b в качестве выходных сигналов других соответствующих вторых блоков 603b0-603b2 декодирования изображения, подлежащих параллельной обработке, показанной на фиг.75.
Как следует из вышесказанного, первый блок 603a декодирования изображения и вторые блоки 603b0-603b2 декодирования изображения отличаются только тем, обрабатывается ли информация заголовка макроблока как информация, общая для трех компонентов или как информация одного цветового компонента, и структурой битового потока данных среза. Можно реализовать большинство основных блоков обработки декодирования, например, обработку прогнозирования для компенсации движения, обратного преобразования и обратного квантования, показанные на фиг.73 и 74, в функциональных блоках, общих для первого блока 503a кодирования изображения и вторых блоков 503b0-503b2 кодирования изображения. Таким образом, можно реализовать не только полностью независимый блок обработки декодирования, показанный на фиг.75, но и различные декодеры, надлежащим образом комбинируя основные компоненты, показанные на фиг.76 и 77. Кроме того, если конфигурация памяти 16a в первом блоке 503a кодирования изображения обеспечена в режиме последовательных плоскостей, можно совместно использовать структуры блоков памяти 16a и 16b между первым блоком 603a декодирования изображения и вторыми блоками 603b0-603b2 декодирования изображения.
Очевидно, что декодер, показанный на фиг.75, способен принимать и декодировать битовый поток, выводимый из кодера, способен всегда фиксировать сигнал 423 идентификации общего кодирования/независимого кодирования на "независимую обработку кодирования" и независимо кодировать все кадры вовсе без использования первого блока 503a кодирования изображения в качестве другой разновидности кодера, показанного на фиг.71. В качестве другой разновидности декодера, показанного на фиг.75, в форме использования при условии, что сигнал 423 идентификации общего кодирования/независимого кодирования всегда фиксирован на "независимую обработку кодирования", декодер может быть построен как декодер, который не включает в себя переключатель 601 и первый блок 603a декодирования изображения и осуществляет только независимую обработку декодирования.
Сигнал идентификации общего кодирования/независимого кодирования (num_pictures_in_au) включает в себя информацию для отличения данных, кодированных посредством общей обработки кодирования, от данных, кодированных посредством независимой обработки кодирования (информацию идентификации общего кодирования), и информацию, указывающую, сколько изображений одного цветового компонента присутствует в одном блоке доступа (количество цветовых компонентов). Однако две разновидности информации можно кодировать как независимые фрагменты информации.
Если первый блок 603a декодирования изображения включает в себя функцию для декодирования битового потока согласно высокому профилю AVC, в котором три компонента совместно кодируются в традиционном формате YUV 4:2:0 в качестве объекта, и блок 610 анализа верхнего заголовка принимает решение, в каком формате закодирован битовый поток, со ссылкой на идентификатор профиля, декодированный из битового потока 422c, и передает результат принятия решения на переключатель 601 и первый блок декодирования изображения 603a как часть информации линии сигнала для сигнала 423 идентификации общего кодирования/независимого кодирования, также можно построить декодер, который обеспечивает совместимость традиционного формата YUV 4:2:0 с битовым потоком.
В первом блоке 503a кодирования изображения согласно четырнадцатому варианту осуществления фрагменты информации трех цветовых компонентов смешиваются в данных среза, и полностью идентичная обработка интра/интерпрогнозирования применяется к трем цветовым компонентам. Соответственно, корреляция сигнала между цветовыми компонентами может оставаться в пространстве сигнала ошибки прогнозирования. В качестве средства удаления корреляции сигнала, к сигналу ошибки прогнозирования может применяться, например, обработка преобразования цветового пространства, описанная согласно тринадцатому варианту осуществления. Примеры первого блока 503a кодирования изображения, имеющего такую структуру, показаны на фиг.78 и 79. На фиг.78 показан пример, в котором обработка преобразования цветового пространства осуществляется на пиксельном уровне до осуществления обработки преобразования. Блок 465 преобразования цветового пространства размещен до блока преобразования 310, и блок 466 обратного преобразования цветового пространства размещен после блока обратного преобразования 312. На фиг.79 показан пример, в котором обработка преобразования цветового пространства осуществляется, в то время как частотный компонент, подлежащий обработке, надлежащим образом выбирается в отношении данных коэффициентов, полученных после осуществления обработки преобразования. Блок 465 преобразования цветового пространства расположен после блока преобразования 310, и блок 466 обратного преобразования цветового пространства расположен до блока обратного преобразования 312. Это позволяет регулировать высокочастотный шумовой компонент, включенный в конкретный цветовой компонент, чтобы он не распространялся на другие цветовые компоненты, вряд ли включающие в себя шум. Когда частотный компонент, подлежащий обработке преобразования цветового пространства, сделан адаптивно выбираемым, фрагменты информации сигнализации 467 для принятия решения относительно выбора времени кодирования мультиплексируются с битовым потоком на стороне декодирования.
При обработке преобразования цветового пространства совокупность системных преобразований, описанных согласно тринадцатому варианту осуществления, может переключаться в единицах макроблоков и использоваться согласно характеристике сигнала изображения, подлежащего кодированию, или принятие решения относительно наличия или отсутствия преобразования может осуществляться в единицах макроблоков. Можно также заранее указывать типы выбираемых систем преобразования на уровне последовательностей и указывать систему преобразования, подлежащую выбору, в единицах изображения, среза, макроблока и т.п. Можно выбирать, осуществляется ли обработка преобразования цветового пространства до преобразования или после преобразования. При осуществлении этих разновидностей адаптивной обработки кодирования можно осуществлять оценку эффективности кодирования для всех вариантов выбора с помощью блока 5 принятия решения относительно режима кодирования для выбора варианта с наивысшей эффективностью кодирования. При выполнении этих разновидностей адаптивной обработки кодирования фрагменты информации сигнализации 467 для принятия решения относительно выбора времени кодирования мультиплексируются с битовым потоком на стороне декодирования. Сигнализацию можно указывать на уровне, отличном от уровня макроблоков, например, на уровне среза, изображения, GOP или последовательности.
Декодеры, соответствующие кодерам, показанным на фиг.78 и 79, изображены на фиг.80 и 81. На фиг.80 показан декодер, который декодирует битовый поток, кодированный кодером, показанным на фиг.78, путем осуществления преобразования цветового пространства до обработки преобразования. Блок 25 декодирования с переменной длиной слова декодирует, из битового потока, информацию сигнализации 467 в качестве информации о наличии или отсутствии преобразования для выбора, осуществляется ли преобразование в блоке 466 обратного преобразования цветового пространства, и информации для выбора системы преобразования, выполняемой в блоке 466 обратного преобразования цветового пространства, и выдает информацию на блок 466 обратного преобразования цветового пространства. Декодер, показанный на фиг.80, выполняет, в блоке 466 обратного преобразования цветового пространства, обработку преобразования цветового пространства для сигнала ошибки прогнозирования после обратного преобразования на основании этих разновидностей информации. На фиг.81 показан декодер, который декодирует битовый поток, закодированный кодером, показанным на фиг.79, выбирая частотный компонент, подлежащий обработке, после обработки преобразования и осуществляя преобразование цветового пространства. Блок декодирования с переменной длиной слова декодирует, из битового потока, информацию сигнализации 467 в качестве информации идентификации, включающей в себя информацию о наличии или отсутствии преобразования, для выбора, осуществляется ли преобразование в блоке 466 обратного преобразования цветового пространства, информацию для выбора системы преобразования, выполняемой в блоке обратного преобразования цветового пространства, информацию для выбора частотного компонента, в котором осуществляется преобразование цветового пространства, и т.п., и выдает информацию на блок 466 обратного преобразования цветового пространства. Декодер, показанный на фиг.81, выполняет, в блоке 466 обратного преобразования цветового пространства, обработку преобразования цветового пространства для данных коэффициентов преобразования после обратного квантования на основании этих разновидностей информации.
В декодерах, показанных на фиг.80 и 81, как и в декодере, показанном на фиг.75, если первый блок 603a декодирования изображения включает в себя функцию для декодирования битового потока согласно высокому профилю AVC, в котором три компонента совместно кодируются в традиционном формате YUV 4:2:0 в качестве объекта, и блок 610 анализа верхнего заголовка принимает решение, в каком формате закодирован битовый поток, со ссылкой на идентификатор профиля, декодированный из битового потока 422c, и передает результат принятия решения на переключатель 601 и первый блок декодирования изображения 603a как часть информации линии сигнала для сигнала 423 идентификации общего кодирования/независимого кодирования, также можно построить декодер, который обеспечивает совместимость традиционного формата YUV 4:2:0 с битовым потоком.
Структура кодированных данных информации заголовка макроблока, включенной в битовый поток в традиционном формате YUV 4:2:0, показана на фиг.82. Данные отличаются от информации заголовка компонента Cn, показанной на фиг.50, тем, что когда типом макроблока является интрапрогнозирование, кодированные данные режима 144 интрапрогнозирования цветоразностного сигнала включаются. Когда типом макроблока является интерпрогнозирование, хотя структура кодированных данных информации заголовка макроблока такая же, как в информации заголовка компонента Cn, показанной на фиг.50, вектор движения цветоразностного компонента генерируется методом, отличным от метода генерации компонента яркости, с использованием идентификационного номера опорного изображения и информации вектора движения, включенных в информацию заголовка макроблока.
Ниже объяснены операции декодера для обеспечения совместимости традиционного формата YUV 4:2:0 с битовым потоком. Как описано выше, первый блок 603a декодирования изображения имеет функцию для декодирования битового потока в традиционном формате YUV 4:2:0. Внутренняя структура первого блока декодирования изображения такая же, как показана на фиг.76.
Ниже объяснены операции первого блока декодирования изображения и блока 25 декодирования с переменной длиной слова, имеющего функцию для декодирования битового потока в традиционном формате YUV 4:2:0. Когда видеопоток 422c поступает в блок декодирования с переменной длиной слова, блок декодирования с переменной длиной слова декодирует флаг индикации формата цветоразностного сигнала. Флаг индикации формата цветоразностного сигнала - это флаг, включенный в заголовок параметра последовательности видеопотока 422c и указывающий, является ли форматом входного видеосигнала 4:4:4, 4:2:2, 4:2:0 или 4:0:0. Обработка декодирования для информации заголовка макроблока видеопотока 422c переключается согласно значению флага индикации формата цветоразностного сигнала. Когда тип макроблока указывает интрапрогнозирование, и флаг указания цветоразностного сигнала указывает 4:2:0 или 4:2:2, режим интрапрогнозирования цветоразностного сигнала 144 декодируется из битового потока. Когда флаг индикации формата цветоразностного сигнала указывает 4:4:4, декодирование режима интрапрогнозирования цветоразностного сигнала 144 пропускается. Когда флаг индикации формата цветоразностного сигнала указывает 4:0:0, поскольку входной видеосигнал имеет формат (формат 4:0:0), образованный только сигналом яркости, декодирование режима интрапрогнозирования цветоразностного сигнала 144 пропускается. Обработка декодирования для информации заголовка макроблока, отличной от режима 144 интрапрогнозирования цветоразностного сигнала, такая же, как в блоке декодирования с переменной длиной слова первого блока 603a декодирования изображения, и не включает в себя функцию для декодирования битового потока в традиционном формате YUV 4:2:0. Следовательно, когда видеопоток 422c вводится в блок 25 декодирования с переменной длиной слова, блок 603a декодирования с переменной длиной слова извлекает флаг индикации формата цветоразностного сигнала (не показан), квантованный коэффициент преобразования для трех компонентов 10 и информацию заголовка макроблока (тип макроблока/тип субмакроблока 106, служебную информацию прогнозирования 463, флаг 464 указания размера блока преобразования и параметр квантования 21). Флаг индикации формата цветоразностного сигнала (не показан) и служебная информация прогнозирования 463 вводятся в блок прогнозирования 461 для получения прогнозируемого изображения 7 для трех компонентов.
Внутренняя структура блока прогнозирования 461 первого блока декодирования изображения, которая обеспечивает совместимость традиционного формата YUV 4:2:0 с битовым потоком, показана на фиг.83. Ниже объяснены операции блока прогнозирования.
Блок переключения 4611a принимает решение относительно типа макроблока. Когда тип макроблока указывает интрапрогнозирование, блок переключения 4611b принимает решение относительно значения флага индикации формата цветоразностного сигнала. Когда значение флага индикации формата цветоразностного сигнала указывает 4:2:0 или 4:2:2, блок прогнозирования получает прогнозируемое изображение 7 для трех компонентов из служебной информации прогнозирования в соответствии с информацией режима интрапрогнозирования и информацией режима интрапрогнозирования цветоразностного сигнала. Прогнозируемое изображение сигнала яркости среди трех компонентов генерируется в блоке 4612 интрапрогнозирования сигнала яркости в соответствии с информацией режима интрапрогнозирования. Прогнозируемое изображение цветоразностного сигнала двух компонентов генерируется в блоке 4613 интрапрогнозирования цветоразностного сигнала, который осуществляет обработку, отличную от обработки компонента яркости, в соответствии с информацией режима интрапрогнозирования цветоразностного сигнала. Когда значение флага индикации формата цветоразностного сигнала указывает 4:4:4, прогнозируемые изображения всех трех компонентов генерируются в блоке 4612 интрапрогнозирования сигнала яркости в соответствии с информацией режима интрапрогнозирования. Когда значение флага индикации формата цветоразностного сигнала указывает 4:0:0, поскольку формат 4:0:0 образован только сигналом яркости (одним компонентом), только прогнозируемое изображение сигнала яркости генерируется в блоке 4612 интрапрогнозирования сигнала яркости в соответствии с информацией режима интрапрогнозирования.
Когда тип макроблока указывает интерпрогнозирование в блоке переключения 4611a, блок переключения 4611c принимает решение относительно значения флага индикации формата цветоразностного сигнала. Когда значение флага индикации формата цветоразностного сигнала указывает 4:2:0 или 4:2:2, в отношении сигнала яркости, прогнозируемое изображение генерируется из служебной информации прогнозирования 463 в блоке 4614 интерпрогнозирования сигнала яркости в соответствии с вектором движения и индексом опорного изображения и в соответствии с методом генерации прогнозируемого изображения для сигнала яркости, отвечающим стандарту AVC. Что касается прогнозируемого изображения цветоразностного сигнала двух компонентов, в блоке 4615 интерпрогнозирования цветоразностного сигнала вектор движения, полученный из служебной информации прогнозирования 463, подвергается масштабированию на основании формата цветоразностного сигнала для генерации цветоразностного вектора движения. Прогнозируемое изображение генерируется из опорного изображения, указанного индексом опорного изображения, который получен из служебной информации прогнозирования 463, на основании цветоразностного вектора движения в соответствии с методом, отвечающим стандарту AVC. Когда значение флага индикации формата цветоразностного сигнала указывает 4:0:0, поскольку формат 4:0:0 образован только сигналом яркости (одним компонентом), прогнозируемое изображение сигнала яркости генерируется в блоке 4614 интерпрогнозирования сигнала яркости в соответствии с вектором движения и индексом опорного изображения.
Как описано выше, обеспечено средство генерации прогнозируемого изображения цветоразностного сигнала в традиционном формате YUV 4:2:0, и средство генерации прогнозируемых изображений трех компонентов переключается согласно значению флага индикации формата цветоразностного сигнала, декодированному из битового потока. Таким образом, можно построить декодер, который обеспечивает совместимость традиционного формата YUV 4:2:0 с битовым потоком.
Если информация, указывающая битовый поток, который можно декодировать даже в декодере, не поддерживающем обработку преобразования цветового пространства, например, декодере, показанном на фиг.75, обеспечена в видеопотоке 422c, поступающем на декодеры, показанные на фиг.80 и 81, в единицах параметров последовательности и т.п., во всех декодерах, показанных на фиг.80, 81 и 75, можно осуществлять декодирование битового потока, соответствующее производительности декодирования каждого из декодеров. Соответственно, можно легко обеспечить совместимость битового потока.
Пятнадцатый вариант осуществления
Согласно пятнадцатому варианту осуществления настоящего изобретения будет описан другой вариант осуществления, отличающийся от кодера и декодера согласно четырнадцатому варианту осуществления, показанным на фиг.71, 75, и т.п., только структурой битового потока, подлежащего вводу и выводу. Кодер согласно пятнадцатому варианту осуществления осуществляет мультиплексирование кодированных данных со структурой битового потока, показанной на фиг.84.
В битовом потоке, структура которого показана на фиг.69, блок NAL AUD включает в себя информацию primary_pic_type в качестве своего элемента. В таблице 85 приведена информация о типе кодирования изображения во время кодирования данных изображения в блоке доступа, начиная с блока NAL AUD.
Например, когда primary_pic_type=0, это указывает, что изображение полностью интракодировано. Когда primary_pic_type=1, это указывает, что срез, подлежащий интракодированию, и срез, для которого прогнозирование с компенсацией движения можно осуществлять с использованием только одного списка опорных изображений, можно смешивать в изображении. Поскольку primary_pic_type - это информация, задающая режим кодирования, в котором можно кодировать одно изображение, на стороне кодера, можно осуществлять кодирование, пригодное для различных условий, например, характеристики входного видеосигнала и функции произвольного доступа, оперируя этой информацией. Согласно четырнадцатому варианту осуществления поскольку существует только один primary_pic_type для одного блока доступа, при осуществлении независимой обработки кодирования, primary_pic_type является общим для трех изображений цветового компонента в блоке доступа. Согласно пятнадцатому варианту осуществления, при осуществлении независимого кодирвоания каждого из изображений цветового компонента, primary_pic_type для двух остальных изображений цветового компонента дополнительно вставляется в блок NAL AUD, показанный на фиг.69, согласно значению num_pictures_in_au. Альтернативно, как в структуре битового потока, показанной на фиг.84, кодированные данные каждого изображения цветового компонента начинаются с блока NAL (разделителя каналов цветности), указывающего начало изображения цветового компонента, и в этот блок NAL CCD включена соответствующая информация primary_pic_type. В этой структуре, поскольку кодированные данные соответствующих изображений цветового компонента для одного изображения совместно мультиплексируются, флаг идентификации цветового компонента (color_channel_idc), описанный согласно четырнадцатому варианту осуществления, включен в блок NAL CCD, а не в заголовок среза. Следовательно, возможно консолидировать информацию флага идентификации цветового компонента, подлежащую мультиплексированию с соответствующими срезами, в данные в единицах изображений. Таким образом, можно сократить служебную информацию. Поскольку блок NAL CCD, построенный только как строка байтов, подлежит детектированию для подтверждения color_channel_idc только один раз для каждого изображения цветового компонента, можно быстро найти верхнюю часть изображения цветового компонента, не осуществляя обработку декодирования с переменной длиной слова. Таким образом, на стороне декодера, color_channel_idc в заголовке среза не нужно подтверждать каждый раз для отделения блока NAL, подлежащего декодированию, для каждого цветового компонента. Можно гладко осуществлять подачу данных на второй блок декодирования изображения.
С другой стороны, при такой структуре эффект сокращения размера буфера и задержки обработки кодера, описанного со ссылкой на фиг.72, согласно четырнадцатому варианту осуществления ослабевает. Таким образом, флаг идентификации цветового компонента можно построить для указания на более высоком уровне (последовательности или GOP), мультиплексируются ли кодированные данные в единицах срезов или в единицах изображений цветового компонента. Принимая такую структуру битового потока, можно осуществлять гибкую реализацию кодера согласно форме использования кодера.
Кроме того, согласно еще одному варианту осуществления, мультиплексирование кодированных данных можно осуществлять с помощью структуры битового потока, показанной на фиг.86. Согласно фиг.86 color_channel_idc и primary_pic_type, включенные в блок NAL CCD, показанные на фиг.84, включены в соответствующие AUD. В структуре битового потока согласно пятнадцатому варианту осуществления настоящего изобретения, также в случае независимой обработки кодирования, одно изображение (цветового компонента) включается в один блок доступа. При такой структуре, как и в структурах, описанных выше, существует эффект сокращения служебной информации благодаря возможности консолидации информации флага идентификации цветового компонента в данные в единицах изображения. Кроме того, поскольку блок NAL AUD, построенный только как строка байтов, подлежит детектированию для подтверждения color_channel_idc только один раз для одного изображения, можно быстро найти верхнюю часть изображения цветового компонента, не осуществляя обработку декодирования с переменной длиной слова. Таким образом, на стороне декодера, color_channel_idc в заголовке среза не нужно подтверждать каждый раз для отделения блока NAL, подлежащего декодированию, для каждого цветового компонента. Соответственно, можно гладко осуществлять подачу данных на второй блок декодирования изображения. С другой стороны, поскольку изображение одного кадра или одного поля образовано тремя блоками доступа, необходимо одновременно указывать три блока доступа в качестве данных изображения. Таким образом, в структуре битового потока, показанной на фиг.86, AUD можно присваивать порядковые номера (порядки кодирования и декодирования во временном измерении и т.д.) соответствующих изображений. При такой структуре на стороне декодера можно проверять порядки декодирования и отображения соответствующих изображений, атрибуты цветовых компонентов, принадлежность IDR и т.п., вовсе не осуществляя декодирование данных среза. Можно эффективно осуществлять редактирование и особое воспроизведение на уровне битового потока.
В структуре битового потока, показанной на фиг.69, 84 или 86, информация, указывающая количество блоков NAL среза, включенных в одно изображение цветового компонента, может храниться в областях AUD или CCD.
Что касается всех вариантов осуществления, обработка преобразования и обработка обратного преобразования могут представлять собой преобразование, позволяющее гарантировать ортогональность, например, DCT, или могут представлять собой преобразование, например, AVC, в сочетании с обработкой квантования и обратного квантования для аппроксимации ортогональности, а не строгое преобразование, например, DCT. Кроме того, сигнал ошибки прогнозирования можно кодировать как информацию на пиксельном уровне без осуществления преобразования.
Промышленная применимость
Настоящее изобретение применимо к кодеру цифрового сигнала изображения и к декодеру цифрового сигнала изображения, используемым для кодирования изображения со сжатием, передачи сжатых данных изображения и т.п.
Класс H04N7/32 включающие кодовое прогнозирование
Класс H04N11/04 с использованием импульсно-кодовой модуляции