СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ ВЕКТОРА ДВИЖЕНИЯ
METHOD AND APPARATUS FOR ENCODING/DECODING MOTION VECTOR

Область техники, к которой относится изобретение
Устройства и способы, совместимые с иллюстративными вариантами осуществления, имеющие отношение к способу и устройству для кодирования вектора движения и, в частности, к способу и устройству для кодирования предсказателя вектора движения текущего блока.
Уровень техники
Кодек, такой как стандарт усовершенствованного кодирования видео группы экспертов по кинематографии MPEG-4 H.264/MPEG-4 AVC, использует векторы движения ранее закодированных блоков, смежных с текущим блоком, для предсказания вектора движения текущего блока. Таким образом, среднее значение векторов движения ранее закодированных блоков, смежных с левой, верхней и верхней правой сторонами текущего блока, используется в качестве предсказателя вектора движения текущего блока.
Раскрытие изобретения
Иллюстративные варианты осуществления обеспечивают способ и устройство для кодирования и декодирования вектора движения и машиночитаемый носитель, хранящий машиночитаемую программу для исполнения способа.
В соответствии с настоящим документом вектор движения эффективно кодируется на основе более точного предсказателя вектора движения.
Краткое описание чертежей
Упомянутые выше и/или другие аспекты изобретения станут более понятны посредством подробного описания иллюстративных вариантов осуществления со ссылкой на приложенные чертежи.
Фиг. 1 - блок-схема устройства для кодирования изображения в соответствии с иллюстративным вариантом осуществления;
Фиг. 2 - блок-схема устройства для декодирования изображения в соответствии с иллюстративным вариантом осуществления;
Фиг. 3 иллюстрирует иерархические блоки кодирования в соответствии с иллюстративным вариантом осуществления;
Фиг. 4 - блок-схема кодера изображения на основе блока кодирования в соответствии с иллюстративным вариантом осуществления;
Фиг. 5 - блок-схема декодера изображения на основе блока кодирования в соответствии с иллюстративным вариантом осуществления;
Фиг. 6 иллюстрирует максимальный блок кодирования, подблок кодирования и блок предсказания в соответствии с иллюстративным вариантом осуществления;
Фиг. 7 иллюстрирует блок кодирования и блок преобразования в соответствии с иллюстративным вариантом осуществления;
Фиг. 8A и 8B иллюстрируют формы разделения блока кодирования, блока предсказания и блока преобразования в соответствии с иллюстративным вариантом осуществления;
Фиг. 9 - блок-схема устройства для кодирования вектора движения в соответствии с иллюстративным вариантом осуществления;
Фиг. 10A и 10B иллюстрируют потенциальные предсказатели векторов движения явного режима в соответствии с иллюстративным вариантом осуществления;
Фиг. 11A-11C иллюстрируют потенциальные предсказатели векторов движения явного режима в соответствии с иллюстративным вариантом осуществления;
Фиг. 12 иллюстрирует способ формирования предсказателей векторов движения в неявном режиме в соответствии с иллюстративным вариантом осуществления;
Фиг. 13 - блок-схема устройства для декодирования вектора движения в соответствии с иллюстративным вариантом осуществления;
Фиг. 14 - блок-схема последовательности операций способа кодирования вектора движения в соответствии с иллюстративным вариантом осуществления; и
Фиг. 15 - блок-схема последовательности операций способа декодирования вектора движения в соответствии с иллюстративным вариантом осуществления.
Осуществление изобретения
В соответствии с аспектом иллюстративного варианта осуществления, обеспечен способ кодирования вектора движения текущего блока, способ содержит этапы, на которых: выбирают в качестве режима кодирования информации о предсказателе вектора движения текущего блока первый режим, в котором кодируется информация, указывающая предсказатель вектора движения, по меньшей мере, из одного предсказателя вектора движения, или второй режим, в котором кодируется информация, указывающая формирование предсказателя вектора движения на основе блоков или пикселей, включенных в ранее закодированную область, смежную с текущим блоком; определяют предсказатель вектора движения текущего блока в соответствии с выбранным режимом и кодируют информацию о предсказателе вектора движения текущего блока; и кодируют вектор разности между вектором движения текущего блока и предсказателем вектора движения текущего блока.
Выбор первого режима или второго режима может включать в себя этап, на котором выбирают первый режим или второй режим на основе глубины, указывающей степень уменьшения от размера максимального блока кодирования текущего изображения или секции до размера текущего блока.
Выбор первого режима или второго режима может включать в себя этап, на котором выбирают первый режим или второй режим в блоке текущего изображения или секции, включающих в себя текущий блок.
Выбор первого режима или второго режима может включать в себя этап, на котором выбирают первый режим или второй режим на основе того, закодирован ли текущий блок в режиме пропуска.
По меньшей мере, один предсказатель вектора движения может включать в себя первый вектор движения блока, смежный с левой стороной текущего блока, второй вектор движения блока, смежный с верхней стороной текущего блока, и третий вектор движения блока, смежный с верхней правой стороной текущего блока.
По меньшей мере, один предсказатель вектора движения может дополнительно включать в себя среднее значение первого вектора движения, второго вектора движения и третьего вектора движения.
По меньшей мере, один предсказатель вектора движения может дополнительно включать в себя предсказатель вектора движения, сформированный на основе вектора движения блока, расположенного аналогично с текущим блоком в опорном изображении, и временного расстояния между опорным изображением и текущим изображением.
Информация, указывающая формирование предсказателя вектора движения на основе блоков или пикселей, включенных в ранее закодированную область, смежную с текущим блоком, может представлять собой информацию, указывающую формирование предсказателя вектора движения текущего блока на основе среднего значения первого вектора движения блока, смежного с левой стороной текущего блока, второго вектора движения блока, смежного с верхней стороной текущего блока, и третьего вектора движения блока, смежного с верхней правой стороной текущего блока.
Информация, указывающая формирование предсказателя вектора движения на основе блоков или пикселей, включенных в ранее закодированную область, смежную с текущим блоком, может представлять собой информацию, указывающую формирование предсказателя вектора движения текущего блока на основе вектора движения, сформированного посредством поиска опорного изображения с использованием пикселей, включенных в ранее закодированную область, смежную с текущим блоком.
В соответствии с аспектом другого иллюстративного варианта осуществления обеспечено устройство для кодирования вектора движения текущего блока, устройство содержит: предсказатель, который выбирает в качестве режима кодирования информации о предсказателе вектора движения текущего блока первый режим, в котором кодируется информация, указывающая предсказатель вектора движения, по меньшей мере, из одного предсказателя вектора движения, или второй режим, в котором кодируется информация, указывающая формирование предсказателя вектора движения на основе блоков или пикселей, включенных в ранее закодированную область, смежную с текущим блоком, и который определяет предсказатель вектора движения текущего блока на основе выбранного режима; первый кодер, который кодирует информацию о предсказателе вектора движения текущего блока, определенную на основе выбранного режима; и второй кодер, который кодирует вектор разности между вектором движения текущего блока и предсказателем вектора движения текущего блока.
В соответствии с аспектом другого иллюстративного варианта осуществления обеспечен способ декодирования вектора движения текущего блока, способ содержит этапы, на которых: декодируют информацию о предсказателе вектора движения текущего блока, закодированную в соответствии с режимом, выбранному из первого режима и второго режима; декодируют вектор разности между вектором движения текущего блока и предсказателем вектора движения текущего блока; формируют предсказатель вектора движения текущего блока на основе декодированной информации о предсказателе вектора движения текущего блока; и восстанавливают вектор движения текущего блока на основе предсказателя вектора движения и вектора разности, причем первый режим представляет собой режим, в котором кодируется информация, указывающая предсказатель вектора движения, по меньшей мере, из одного предсказателя вектора движения, и второй режим представляет собой режим, в котором кодируется информация, указывающая формирование предсказателя вектора движения на основе блоков или пикселей, включенных в ранее декодированную область, смежную с текущим блоком.
В соответствии с аспектом другого иллюстративного варианта осуществления обеспечено устройство для декодирования вектора движения текущего блока, устройство содержит: первый декодер, который декодирует информацию о предсказателе вектора движения текущего блока, закодированную в соответствии с режимом, выбранным из первого режима и второго режима; второй декодер, который декодирует вектор разности между вектором движения текущего блока и предсказателем вектора движения текущего блока; предсказатель, который формирует предсказатель вектора движения текущего блока на основе декодированной информации о предсказателе вектора движения текущего блока; и блок восстановления вектора движения, который восстанавливает вектор движения текущего блока на основе предсказателя вектора движения и вектора разности, причем первый режим представляет собой режим, в котором кодируется информация, указывающая предсказатель вектора движения, по меньшей мере, из одного предсказателя вектора движения, и второй режим представляет собой режим, в котором кодируется информация, указывающая формирование предсказателя вектора движения на основе блоков или пикселей, включенных в ранее декодированную область, смежную с текущим блоком.
В соответствии с аспектом другого иллюстративного варианта осуществления обеспечен машиночитаемый носитель, хранящий машиночитаемую программу для исполнения способа кодирования вектора движения и способа декодирования вектора движения.
Вариант осуществления изобретения
Теперь со ссылкой на сопроводительные чертежи, на которых аналогичные номера для ссылок всюду относятся к аналогичным элементам, будут более полно описаны иллюстративные варианты осуществления. Такие выражения, как “по меньшей мере, один из”, предшествующие списку элементов, изменяют весь список элементов и не изменяют отдельные элементы списка. В настоящем описании "изображение" может обозначать неподвижное изображение для видеоинформации или динамическое изображения, то есть непосредственно саму видеоинформацию.
Фиг. 1 является блок-схемой устройства 100 для кодирования изображения в соответствии с иллюстративным вариантом осуществления. Как показано на Фиг. 1, устройство 100 включает в себя модуль 110 деления на максимальные кодовые блоки, модуль 120 определения глубины кодирования, кодер 130 данных изображения и кодер 140 информации кодирования.
Модуль 110 деления на максимальные блоки кодирования может разделить текущее изображение или секцию на основе максимального блока кодирования, который представляет собой блок кодирования самого большого размера. Таким образом, модуль 110 деления на максимальные блоки кодирования может разделить текущее изображение или секцию для получения, по меньшей мере, одного максимального блока кодирования.
В соответствии с иллюстративным вариантом осуществления блок кодирования может быть представлен с использованием максимального блока кодирования и глубины. Как описано выше, максимальный блок кодирования указывает блок кодирования, имеющий самый большой размер среди блоков кодирования текущего изображения, и глубина указывает размер подблока кодирования, полученного посредством иерархического уменьшения блока кодирования. По мере увеличения глубины блок кодирования может уменьшаться от максимального блока кодирования до минимального блока кодирования, причем глубина максимального блока кодирования определена как минимальная глубина, и глубина минимального блока кодирования определена как максимальная глубина. Поскольку размер блока кодирования уменьшается от максимального блока кодирования по мере увеличения глубины, подблок кодирования с глубиной с порядковым номером k может включать в себя множество подблоков кодирования с глубиной с порядковым номером (k+n) (где k и n - целые числа, равные или больше 1).
В соответствии с увеличением размера изображения, которое будет закодировано, кодирование изображения в более больших блоках кодирования может привести к более высокой степени сжатия изображения. Однако если более большой блок кодирования фиксирован, изображение не может быть эффективно закодировано посредством отражения постоянно изменяющихся характеристик изображения.
Например, при кодировании гладкой области, такой как море или небо, чем больше блок кодирования, тем больше может увеличиться степень сжатия. Однако при кодировании сложной области, такой как люди или здания, чем меньше блок кодирования, тем больше может увеличиться степень сжатия.
Согласно этому, в соответствии с иллюстративным вариантом осуществления, для каждого изображения или секции устанавливаются разные максимальные блоки кодирования изображения и разные максимальные глубины. Поскольку максимальная глубина обозначает максимальное количество раз, в которое может уменьшиться блок кодирования, размер каждого минимального блока кодирования, включенного в максимальный блок кодирования изображения, может быть переменным образом установлен в соответствии с максимальной глубиной.
Модуль 120 определения глубины кодирования определяет максимальную глубину. Например, максимальная глубина может быть определена на основе вычисления зависимости искажений от скорости передачи (R-D). Кроме того, максимальная глубина может быть определена по-разному для каждого изображения или секции или для каждого максимального блока кодирования. Определенная максимальная глубина предоставляется кодеру 140 информации кодирования, и данные изображения в соответствии с максимальным блоком кодирования предоставляются кодеру 130 данных изображения.
Максимальная глубина обозначает блок кодирования, имеющий самый маленький размер, который может быть включен в максимальный блок кодирования, то есть минимальный блок кодирования. Другими словами, максимальный блок кодирования может быть разделен на подблоки кодирования, имеющие разные размеры в соответствии с разными глубинами. Это будет описано подробно позже со ссылкой на Фиг. 8A и 8B. Кроме того, подблоки кодирования, имеющие разные размеры, которые включены в максимальный блок кодирования, могут быть предсказаны или преобразованы на основе блоков обработки, имеющих разные размеры. Другими словами, устройство 100 может выполнить множество операций по обработке для кодирования изображения на основе блоков обработки, имеющих разные размеры и разные формы. Чтобы закодировать данные изображения, выполняются такие операции по обработке, как предсказание, преобразование и статистическое кодирование, причем блоки обработки, имеющие одинаковый размер, могут использоваться для каждой операции, или блоки обработки, имеющие разные размеры, могут использоваться для каждой операции.
Например, устройство 100 может выбрать блок обработки, который отличается от блока кодирования, для предсказания блока кодирования. Когда размер блока кодирования составляет 2N×2N (где N - положительное целое число), блоки обработки для предсказания могут составлять 2N×2N, 2N×N, N×2N и N×N. Другими словами, предсказание движения может быть выполнено на основе блока обработки, имеющего форму, посредством которой, по меньшей мере, либо высота, либо ширина блока кодирования разделяется пополам. В дальнейшем блок обработки, который является основой предсказания, упоминается как блок предсказания.
Режим предсказания может быть, по меньшей мере, одним режимом из режима с интра-кодированием, режима с интер-кодированием, и режима пропуска, и конкретный режим предсказания может быть выполнен только для блока предсказания, имеющего конкретный размер или форму. Например, режим с интра-кодированием может быть выполнен только для блоков предсказания, имеющих размеры 2N×2N и N×N, форма которых представляет собой квадрат. Кроме того, режим пропуска может быть выполнен только для блока предсказания, имеющего размер 2N×2N. Если в блоке кодирования существует множество блоков предсказания, после выполнения предсказания для каждого блока предсказания может быть выбран режим предсказания с наименьшим количеством ошибок кодирования.
В качестве альтернативы, устройство 100 может выполнять частотное преобразование над данными изображения на основе блока обработки, имеющего размер, отличающийся от размера блока кодирования. Для частотного преобразования в блоке кодирования частотное преобразование может быть выполнено на основе блока обработки, имеющего размер, равный или меньше, чем размер блока кодирования. В дальнейшем блок обработки, который является основой частотного преобразования, упоминается как блок преобразования. Частотное преобразование может представлять собой дискретное косинусное преобразование (DCT) или преобразование Карунена-Лоэва (KLT).
Модуль 120 определения глубины кодирования может определять подблоки кодирования, включенные в максимальный блок кодирования, с использованием оптимизации зависимости искажений от скорости передачи (R-D) на основе Лагранжева множителя. Другими словами, модуль 120 определения глубины кодирования может определять, какую форму имеет множество подблоков кодирования, разделенных из максимального блока кодирования, причем множество подблоков кодирования имеет разные размеры в соответствии с их глубинами. Кодер 130 данных изображения выдает битовый поток посредством кодирования максимального блока кодирования на основе форм разделения, определенных модулем 120 определения глубины кодирования.
Кодер 140 информации кодирования кодирует информацию режима кодирования максимального блока кодирования, определенную модулем 120 определения глубины кодирования. Другими словами, кодер 140 информации кодирования выдает битовый поток посредством кодирования информации о форме разделения максимального блока кодирования, информации о максимальной глубине и информации о режиме кодирования подблока кодирования для каждой глубины. Информация о режиме кодирования подблока кодирования может включать в себя, по меньшей мере, один элемент множества, состоящего из информации о блоке предсказания подблока кодирования, информации о режиме предсказания для каждого блока предсказания и информации о блоке преобразования подблока кодирования.
Поскольку подблоки кодирования, имеющие разные размеры, существуют для каждого максимального блока кодирования, и информация о режиме кодирования определена для каждого подблока кодирования, информация, по меньшей мере, об одном режиме кодирования может быть определена для одного максимального блока кодирования.
Устройство 100 может формировать подблоки кодирования посредством равного деления высоты и ширины максимального блока кодирования на два в соответствии с увеличением глубины. Таким образом, когда размер блока кодирования глубины с порядковым номером k составляет 2N×2N, размер блока кодирования глубины с порядковым номером (k+1) может составлять N×N.
Согласно этому, устройство 100 в соответствии с иллюстративным вариантом осуществления может определять оптимальную форму разделения для каждого максимального блока кодирования на основе размеров максимальных блоков кодирования и максимальной глубины с учетом характеристики изображения. Посредством переменного регулирования размера максимального блока кодирования с учетом характеристики изображения и кодирования изображение посредством разделения максимального блока кодирования на подблоки кодирования различных глубин могут быть более эффективно закодированы изображения, имеющие различные разрешения.
Фиг. 2 является блок-схемой устройства 200 для декодирования изображения в соответствии с иллюстративным вариантом осуществления. Как показано на Фиг. 2, устройство 200 включает в себя модуль 210 сбора данных изображения, модуль 220 извлечения информации кодирования и декодер 230 данных изображения.
Модуль 210 сбора данных изображения получает данные изображения в соответствии с максимальными блоками кодирования посредством анализа битового потока, принятого устройством 200 и выдает данные изображения декодеру 230 данных изображения. Модуль 210 сбора данных изображения может извлечь информацию о максимальном блоке кодирования текущего изображения или секции из заголовка текущего изображения или секции. Другими словами, модуль 210 сбора данных изображения делит битовый поток на максимальные блоки кодирования, с тем чтобы декодер 230 данных изображения мог декодировать данные изображения в соответствии с максимальными блоками кодирования.
Модуль 220 извлечения информации кодирования извлекает информацию о максимальном блоке кодирования, максимальной глубине, форме разделения максимального блока кодирования и режиме кодирования подблоков кодирования посредством анализа битового потока, принятого устройством 200. Например, модуль 220 извлечения информации кодирования может извлечь описанную выше информацию из заголовка текущего изображения. Информация о форме разделения и информация о режиме кодирования представляются декодеру 230 данных изображения.
Информация о форме разделения максимального блока кодирования может включать в себя информацию о подблоках кодирования, имеющих разные размеры в соответствии с глубинами, включенных в максимальный блок кодирования, и информация о режиме кодирования может включать в себя, по меньшей мере, один элемент множества, состоящего из информации о блоке предсказания в соответствии с подблоком кодирования, информации о режиме предсказания и информации о блоке преобразования.
Декодер 230 данных изображения восстанавливает текущее изображение посредством декодирования данных изображения каждого максимального блока кодирования на основе информации, извлеченной модулем 220 извлечения информации кодирования. Декодер 230 данных изображения может декодировать подблоки кодирования, включенные в максимальный блок кодирования, на основе информации о форме разделения максимального блока кодирования. Процесс декодирования может включать в себя, по меньшей мере, один процесс из множества, состоящего из процесса предсказания, включающего в себя предсказание с интра-кодированием и компенсацию движения, и процесса обратного преобразования.
Кроме того, декодер 230 данных изображения может выполнить предсказание с интра-кодированием или предсказание с интер-кодированием на основе информации о блоке предсказания и информации о режиме предсказания, чтобы предсказать блок предсказания. Декодер 230 данных изображения также может выполнить обратное преобразование для каждого подблока кодирования на основе информации о блоке преобразования подблока кодирования.
Фиг. 3 иллюстрирует иерархические блоки кодирования в соответствии с иллюстративным вариантом осуществления. Как показано на Фиг. 3, иллюстративные иерархические блоки кодирования включают в себя блоки кодирования, размеры которых составляют 64×64, 32×32, 16×16, 8×8 и 4×4. Кроме того, также может существовать кодирование блоков, размеры которых составляют 64×32, 32×64, 32×16, 16×32, 16×8, 8×16, 8×4 и 4×8.
В иллюстративном варианте осуществления, показанном на Фиг. 3, для первых данных 310 изображения, разрешение которого составляет 1920×1080, размер максимального блока кодирования установлен равным 64×64, и максимальная глубина установлена равной 2. Для вторых данных 320 изображения, разрешение которого составляет 1920×1080, размер максимального блока кодирования установлен равным 64×64, и максимальная глубина установлена равной 3. Для третьих данных 330 изображения, разрешение которого составляет 352×288, размер максимального блока кодирования установлен равным 16×16, и максимальная глубина установлена равной 1.
Когда разрешение является высоким, или объем данных является большим, максимальный размер блока кодирования может быть относительно большим, чтобы увеличить степень сжатия и точно отразить характеристики изображения. В соответствии с этим, для первых и вторых данных 310 и 320 изображения, имеющих более высокое разрешение, чем третьи данные 330 изображения, размер 64×64 может быть выбран в качестве размера максимального блока кодирования.
Максимальная глубина указывает на общее количество уровней в иерархических блоках кодирования. Поскольку максимальная глубина первых данных 310 изображения равна 2, блок 315 кодирования данных 310 изображения может включать в себя максимальный блок кодирования, размер по более длинной оси которого составляет 64, и подблоки кодирования, размеры по более длинной оси которых составляют 32 и 16, в соответствии с увеличением глубины.
С другой стороны, поскольку максимальная глубина третьих данных 330 изображения равна 1, блок 335 кодирования данных 330 изображения может включать в себя максимальный блок кодирования, размер по более длинной оси которого составляет 16, и блоки кодирования, размеры по более длинной оси которых составляют 8, в соответствии с увеличением глубины.
Однако, поскольку максимальная глубина вторых 320 данных изображения равна 3, блок 325 кодирования данных 320 изображения может включать в себя максимальный блок кодирования, размер по более длинной оси которого составляет 64, и подблоки кодирования, размеры по более длинной оси которых составляют 32, 16 и 8, в соответствии с увеличением глубины. Поскольку изображение закодировано на основе меньшего подблока кодирования по мере увеличения глубины, иллюстративные варианты осуществления являются подходящими для кодирования изображения, включающего в себя сцены с длительностью больше минуты.
Фиг. 4 является блок-схемой кодера 400 изображения на основе блока кодирования в соответствии с иллюстративным вариантом осуществления. Как показано на Фиг. 4, модуль 410 предсказания с интра-кодированием выполняет предсказание с интра-кодированием над блоками предсказания режима интра-кодирования в текущем кадре 405, и модуль 420 оценки движения и модуль 425 компенсации движения выполняют предсказание с интер-кодированием и компенсацию движения над блоками предсказания режима интер-кодирования с использованием текущего кадра 405 и опорного кадра 495.
На основе блоков предсказания, выданных от модуля 410 предсказания с интра-кодированием, модуля 420 оценки движения и модуля 425 компенсации движения формируются разностные значения. Сформированные разностные значения выдаются как квантованные коэффициенты преобразования посредством прохода через модуль 430 преобразования и модуль 440 квантования.
Квантованные коэффициенты преобразования восстанавливаются в разностные значения посредством прохода через модуль 460 обратного квантования и модуль 470 обратного преобразования. Восстановленные разностные значения подвергаются постобработке посредством прохода модуль 480 удаления блочности и модуль 490 фильтрации с обратной связью и выдаются как опорный кадр 495. Квантованные коэффициенты преобразования могут быть выданы как битовый поток 455 посредством прохода через статистический кодер 450.
Для выполнения кодирования на основе способа кодирования в соответствии с иллюстративным вариантом осуществления компоненты кодера 400 изображения, то есть модуль 410 предсказания с интра-кодированием, модуль 420 оценки движения, модуль 425 компенсации движения, модуль 430 преобразования, модуль 440 квантования, статистический кодер 450, модуль 460 обратного квантования, модуль 470 обратного преобразования, модуль 480 удаления блочности и модуль 490 фильтрации с обратной связью, выполняют процессы кодирования изображения на основе максимального блока кодирования, подблока кодирования в соответствии с глубинами, блока предсказания и блоку преобразования.
Фиг. 5 является блок-схемой декодера 500 изображения на основе блока кодирования в соответствии с иллюстративным вариантом осуществления. Как показано на Фиг. 5, битовый поток 505 проходит через анализатор 510, с тем чтобы закодированные данные изображения, которые будут декодированы, и информация кодирования, используемая для декодирования, были проанализированы. Закодированные данные изображения выдаются как подвергнутые обратному квантованию данные посредством прохода через статистический декодер 520 и модуль 530 обратного квантования и восстанавливаются в разностные значения посредством прохода через модуль 540 обратного преобразования. Разностные значения восстанавливаются в соответствии с блоками кодирования, добавленными к результату предсказания с интра-кодированием модуля 550 предсказания с интра-кодированием или к результату компенсации движения модуля 560 компенсации движения. Восстановленные блоки кодирования используются для предсказания следующих блоков кодирования или следующего изображения посредством прохода через модуль 570 удаления блочности и модуль 580 фильтрации с обратной связью.
Для выполнения декодирования на основе способа декодирования в соответствии с иллюстративным вариантом осуществления компоненты декодера 500 изображения, то есть анализатор 510, статистический декодер 520, модуль 530 обратного квантования, модуль 540 обратного преобразования, модуль 550 предсказания с интра-кодированием, модуль 560 компенсации движения, модуль 570 удаления блочности и модуль 580 фильтрации с обратной связью выполняют процессы декодирования изображения на основе максимального блока кодирования, подблока кодирования в соответствии с глубинами, блока предсказания и блока преобразования.
В частности, модуль 550 предсказания с интра-кодированием и модуль 560 компенсации движения определяют блок предсказания и режим предсказания в подблоке кодирования с учетом максимального блока кодирования и глубины, и модуль 540 обратного преобразования выполняет обратное преобразование с учетом размера блока преобразования.
Фиг. 6 иллюстрирует максимальный блок кодирования, подблок кодирования и блок предсказания в соответствии с иллюстративным вариантом осуществления.
Как описано выше, устройство 100 кодирования и устройство 200 декодирования в соответствии с одним или более иллюстративными вариантами осуществления используют иерархические блоки кодирования для выполнения кодирования и декодирования с учетом характеристик изображения. Максимальный блок кодирования и максимальная глубина могут быть адаптивно установлены в соответствии с характеристиками изображения или переменным образом установлены в соответствии с требованиями пользователя.
Как показано на Фиг. 6, иерархическая структура блока 600 кодирования в соответствии с иллюстративным вариантом осуществления иллюстрирует максимальный блок 610 кодирования, высота и ширина которого составляют 64, и максимальная глубина равна 4. Глубина увеличивается вдоль вертикальной оси иерархической структуры блока 600 кодирования, и по мере увеличения глубины, высота и ширина подблоков 620-650 кодирования уменьшается. Блоки предсказания максимального блока 610 кодирования и подблоки 620-650 кодирования показаны вдоль горизонтальной оси иерархической структуры блока 600 кодирования.
Максимальный блок 610 кодирования имеет глубину 0 и размер (то есть, высоту и ширину) 64×64. Глубина увеличивается вдоль вертикальной оси таким образом, что существует подблок 620 кодирования, размер которого составляет 32×32 и глубина равна 1, подблок 630 кодирования, размер которого составляет 16×16 и глубина равна 2, подблок 640 кодирования, размер которого составляет 8×8 и глубина равна 3, и подблок 650 кодирования, размер которого составляет 4×4 и глубина равна 4. Подблок 650 кодирования, размер которого составляет 4×4 и глубина равна 4, является минимальным блоком кодирования. Минимальный блок 650 кодирования может быть разделен на блоки предсказания, каждый из которых является меньше минимального блока кодирования.
В иллюстративном варианте осуществления, показанном на Фиг. 6, примеры блока предсказания показаны вдоль горизонтальной оси в соответствии с каждой глубиной. Таким образом, блок предсказания максимального блока 610 кодирования, глубина которого равна 0, может представлять собой блок предсказания, размер которого равен блоку 610 кодирования, то есть составляет 64×64, или блок 612 предсказания, размер которого составляет 64×32, блок 614 предсказания, размер которого составляет 32×64, или блок 616 предсказания, размер которого составляет 32×32,которые имеют размер, меньший чем блок 610 кодирования, размер которого составляет 64×64.
Блок предсказания блока 610 кодирования, глубина которого равна 1 и размер составляет 32×32, может представлять собой блок предсказания, размер которого равен блоку 620 кодирования, то есть составляет 32×32, или блок 622 предсказания, размер которого составляет 32×16, блок 624 предсказания, размер которого составляет 16×32, или блок 626 предсказания, размер которого составляет 16×16, которые имеют размер, меньший чем блок 620 кодирования, размер которого составляет 32×32.
Блок предсказания блока 630 кодирования, глубина которого равна 2 и размер составляет 16×16, может представлять собой блок предсказания, размер которого равен блоку 630 кодирования, то есть составляет 16×16, или блок 632 предсказания, размер которого составляет 16×8, блок 634 предсказания, размер которого составляет 8×16, или блок 636 предсказания, размер которого составляет 8×8, которые имеют размер, меньший чем блок 630 кодирования, размер которого составляет 16×16.
Блок предсказания блока 640 кодирования, глубина которого равна 3 и размер составляет 8×8, может представлять собой блок предсказания, размер которого равен блоку 640 кодирования, то есть составляет 8×8, или блок 642 предсказания, размер которого составляет 8×4, блок 644 предсказания, размер которого составляет 4×8, или блок 646 предсказания, размер которого составляет 4×4, которые имеют размер, меньший чем блок 640 кодирования, размер которого составляет 8×8.
Блок 650 кодирования, глубина которого равна 4 и размер составляет 4×4, представляет собой минимальный блок кодирования и блок кодирования максимальной глубины. Блок предсказания блока 650 кодирования может представлять собой блок 650 предсказания, размер которого составляет 4×4, блок 652 предсказания, имеющий размер 4×2, блок 654 предсказания, имеющий размер 2×4, или блок 656 предсказания, имеющий размер 2×2.
Фиг. 7 иллюстрирует блок кодирования и блок преобразования в соответствии с иллюстративным вариантом осуществления. Устройство 100 кодирования и устройство 200 декодирования в соответствии с одним или более иллюстративными вариантами осуществления выполняют кодирование непосредственно с максимальным блоком кодирования или с подблоками кодирования, которые равны или меньше максимального блока кодирования и разделены из максимального блока кодирования.
В процессе кодирования размер блока преобразования для частотного преобразования выбирается таким образом, чтобы он был не больше, чем размер соответствующего блока кодирования. Например, когда текущий блок 710 кодирования имеет размер 64×64, частотное преобразование может быть выполнено с использованием блока 720 преобразования, имеющего размер 32×32.
Фиг. 8A и 8B иллюстрируют формы разделения блока кодирования, блока предсказания и блока преобразования в соответствии с иллюстративным вариантом осуществления. Фиг. 8A иллюстрирует блок кодирования и блок предсказания в соответствии с иллюстративным вариантом осуществления.
Левая сторона Фиг. 8A показывает форму разделения, выбранную устройством 100 кодирования в соответствии с иллюстративным вариантом осуществления для кодирования максимального блока 810 кодирования. Устройство 100 делит максимальный блок 810 кодирования на различные формы, выполняет кодирование и выбирает оптимальную форму разделения, сравнивая результаты кодирования различных форм разделения друг с другом на основе зависимости искажений от скорости передачи (R-D). Когда оптимальным является кодирование максимального блока 810 кодирования, как он есть, максимальный блок 810 кодирования может быть закодирован без разделения максимального блока 810 кодирования, показанного на Фиг. 8A и 8B.
Как показано на левой стороне Фиг. 8A, максимальный блок 810 кодирования, глубина которого равна 0, кодируется посредством разделения максимального блока кодирования на подблоки кодирования, глубины которых равны или больше, чем 1. Таким образом, максимальный блок 810 кодирования разделяется на 4 подблока кодирования, глубины которых равны 1, и все или некоторые из подблоков кодирования, глубины которых равны 1, разделяются на подблоки кодирования, глубины которых равны 2.
Подблок кодирования, расположенный сверху справа, и подблок кодирования, расположенный снизу слева, среди подблоков кодирования, глубины которых равны 1, разделены на подблоки кодирования, глубины которых равны или больше, чем 2. Некоторые из подблоков кодирования, глубины которых равны или больше, чем 2, могут быть разделены на подблоки кодирования, глубины которых равны или больше чем 3.
Правая сторона Фиг. 8A показывает форму разделения блока предсказания для максимального блока 810 кодирования. Как показано на правой стороне Фиг. 8A, блок 860 предсказания для максимального блока 810 кодирования может быть разделен по-другому по сравнению с максимальным блоком 810 кодирования. Другими словами, блок предсказания для каждого из подблоков кодирования может быть меньше соответствующего подблока кодирования.
Например, блок предсказания для подблока 854 кодирования, расположенного внизу справа, среди подблоков кодирования, глубины которых равны 1, может быть меньше подблока 854 кодирования. Кроме того, блоки предсказания для некоторых подблоков 814, 816, 850 и 852 кодирования подблоков 814, 816, 818, 828, 850 и 852 кодирования, глубины которых равны 2, могут быть меньше подблоков 814, 816, 850 и 852, соответственно. Кроме того, блоки предсказания для подблоков 822, 832 и 848 кодирования, глубины которых равны 3, могут быть меньше подблоков 822, 832 и 848 кодирования, соответственно. Блоки предсказания могут иметь форму, посредством которой соответствующие подблоки кодирования разделены пополам в направлении высоты или ширины, или имеют форму, посредством которой соответствующие подблоки кодирования разделены на четыре равных части в направлении высоты и ширины.
Фиг. 8B иллюстрирует блок предсказания и блок преобразования в соответствии с иллюстративным вариантом осуществления. Левая сторона Фиг. 8B показывает форму разделения блока предсказания для максимального блока 810 кодирования, показанного на правой стороне Фиг. 8A, и правая сторона Фиг. 8B показывает форму разделения блока преобразования максимального блока 810 кодирования.
Как показано на правой стороне Фиг. 8B, форма разделения блока 870 преобразования может быть установлена по-другому по сравнению с блоком 860 предсказания. Например, даже при том, что блок предсказания для блока 854 кодирования, глубина которого равна 1, выбран в форме, посредством которой высота блока 854 кодирования разделена пополам, блок преобразования может быть выбран с таким же размером, как блок 854 кодирования. Аналогичным образом, даже при том, что блоки предсказания для блоков 814 и 850 кодирования, глубины которых равны 2, выбраны в форме, посредством которой высота каждого из блоков 814 и 850 кодирования разделена пополам, блок преобразования может быть выбран с таким же размером, как первоначальный размер каждого из блоков 814 и 850 кодирования.
Блок преобразования может быть выбран с меньшим размером, чем блок предсказания. Например, когда блок предсказания для блока 852 кодирования, глубина которого равна 2, выбран в форме, посредством которой ширина блока 852 кодирования разделена пополам, блок преобразования может быть выбран в форме, посредством которой блок 852 кодирования разделен на четыре равных части в направлении высоты и ширины, которые имеют меньший размер, чем форма блока предсказания.
Фиг. 9 является блок-схемой устройства 900 для кодирования вектора движения в соответствии с иллюстративным вариантом осуществления. Устройство 900 для кодирования вектора движения может быть включено в устройство 100, описанное выше со ссылкой на Фиг. 1, или кодер 400 изображения, описанный выше со ссылкой на Фиг. 4. Как показано на Фиг. 9, устройство 900 кодирования вектора движения включает в себя модуль 910 предсказания, первый кодер 920 и второй кодер 930.
Чтобы декодировать закодированный блок с использованием предсказания с интер-кодированием, то есть с предсказанием между изображениями, используется информация о векторе движения, указывающая разность позиции между текущим блоком и аналогичным блоком в опорном изображении. Таким образом, информация о векторах движения кодируется и вставляется в битовый поток в процессе кодирования изображения. Однако если информация о векторах движения закодирована и вставлена как есть, накладные расходы для кодирования информации о векторах движения увеличиваются, тем самым уменьшая степень сжатия данных изображения.
Поэтому в процессе кодирования изображения информация о векторе движения сжимается посредством предсказания вектора движения текущего блока, кодирования только вектора разности между сформированным предсказателем вектора движения и первоначальным вектором движения и вставки закодированного вектора разности в битовый поток. Фиг. 9 иллюстрирует устройство 900 для кодирования вектора движения, которое использует такой предсказатель вектора движения.
Как показано на Фиг. 9, модуль 910 предсказания определяет, закодирован ли вектор движения текущего блока с предсказанием на основе явного режима или неявного режима.
Как описано выше, такой кодек, как MPEG 4 H.264/MPEG-4 AVC использует векторы движения для ранее закодированных блоков, смежных с текущим блоком, для предсказания вектора движения текущего блока. Таким образом, среднее значение векторов движения ранее закодированных блоков, смежных с левой, верхней и верхней правой сторонами текущего блока, используется в качестве предсказателя вектора движения текущего блока. Поскольку векторы движения всех блоков, закодированных с использованием предсказания с интер-кодированием, предсказываются с использованием одного и того же способа, информация о предсказателе вектора движения не должна кодироваться отдельно. Однако устройство 100 или декодер 400 изображения в соответствии с одним или более иллюстративными вариантами осуществления использует как режим, в котором информация о предсказателе вектора движения не закодирована отдельно, так и режим, в котором информация о предсказателе вектора движения закодирована, чтобы более точно предсказать вектор движения, и теперь это будет подробно описано.
(1) Явный режим
Один из способов кодирования предсказателя вектора движения, который может быть выбран модулем 910 предсказания, может реализовать режим явного кодирования информации о предсказателе вектора движения текущего блока. Этот явный режим представляет собой режим вычисления, по меньшей мере, одного потенциального предсказателя вектора движения и отдельного кодирования информации, указывающей, какой предсказатель вектора движения используется для предсказания вектора движения текущего блока. Потенциальные предсказатели векторов движения в соответствии с одним или более иллюстративными вариантами осуществления теперь будут описаны со ссылкой на Фиг. 10A, 10B и 11A-11C.
Фиг. 10A и 10B иллюстрируют потенциальные предсказатели векторов движения явного режима в соответствии с одним или более иллюстративными вариантами осуществления. Как показано на Фиг. 10A, способ предсказания вектора движения в соответствии с иллюстративным вариантом осуществления может использовать один из векторов движения ранее закодированных блоков, смежных с текущим блоком, в качестве предсказателя вектора движения текущего блока. Блок a0, самый левый среди блоков, смежных с верхней стороной текущего блока, блок b0, самый верхний среди блоков, смежных с его левой стороной, блок c, смежный с его верхним правым углом, блок d, смежный с его верхним левым углом, и блок e, смежный с его нижним правым углом, могут использоваться для предсказателей векторов движения текущего блока.
Как показано на Фиг. 10B, векторы движения всех блоков, смежных с текущим блоком, могут использоваться в качестве предсказателей векторов движения текущего блока. Другими словами, векторы движения не только блока a0, самого левого среди блоков, смежных с верхней стороной текущего блока, но всех блоков, смежных с его верхней стороной, могут использоваться в качестве предсказателей векторов движения текущего блока. Кроме того, векторы движения не только блока b0, самого верхнего среди блоков, смежных с его левой стороной, но всех блоков, смежных с его левой стороной, могут использоваться в качестве предсказателей векторов движения текущего блока.
В качестве альтернативы, среднее значение векторов движения смежных блоков может использоваться в качестве предсказателя вектора движения. Например, среднее значение от (mv_ a0, mv_ b0, mv_c) может использоваться в качестве предсказателя вектора движения текущего блока, причем mv_a0 обозначает вектор движения блока a0, mv_b0 обозначает вектор движения блока b0, и mv_c обозначает вектор движения блока c.
Фиг. 11A-11C иллюстрируют потенциальные предсказатели векторов движения явного режима в соответствии с другим иллюстративным вариантом осуществления. Фиг. 11A иллюстрирует способ вычисления предсказателя вектора движения изображения с двунаправленным предсказанием (называемого B-изображением) в соответствии с иллюстративным вариантом осуществления. Когда текущее изображение, включающее в себя текущий блок, является B-изображением, в котором выполняется двунаправленное предсказание, вектор движения, сформированный на основе временного расстояния, может представлять собой предсказатель вектора движения.
Как показано на Фиг. 11A, предсказатель вектора движения текущего блока 1100 текущего изображения 1110 может быть сформирован с использованием вектора движения блока 1120 в аналогично расположенной позиции предыдущего по времени изображения 1112. Например, если вектор движения mv_colA блока 1120 в позиции, расположенной аналогично с текущим блоком 1100, сформирован для искомого блока 1122, следующего по времени изображения 1114 текущего изображения 1110, потенциальные предсказатели векторов движения mv_L0A и mv_L1A текущего блока 1100 могут быть сформированы в соответствии с уравнениями ниже:
mv_L1A=(t1/t2)×mv_colA
mv_L0A=mv_L1A-mv_colA
где mv_L0A обозначает предсказатель вектора движения текущего блока 1100 для предыдущего по времени изображения 1112, и mv_L1A обозначает предсказатель вектора движения текущего блока 1100 для следующего по времени изображения 1114.
Фиг. 11B иллюстрирует способ формирования предсказателя вектора движения B-изображения в соответствии с другим иллюстративным вариантом осуществления. По сравнению со способом, проиллюстрированным на Фиг. 11A, блок 1130 в позиции, аналогичной с текущим блоком 1100, существует в следующем по времени изображении 1114 на Фиг. 11B.
Как показано на Фиг. 11B, предсказатель вектора движения текущего блока 1100 текущего изображения 1110 может быть сформирован с использованием вектора движения блока 1130 в аналогично расположенной позиции следующего по времени изображения 1114. Например, если вектор движения mv_colB блока 1130 в позиции, расположенной аналогично с текущим блоком 1100, сформирован для искомого блока 1132, предыдущего по времени изображения 1112 текущего изображения 1110, потенциальные предсказатели векторов движения mv_L0B и mv_L1B текущего блока 1100 могут быть сформированы в соответствии с уравнениями ниже:
mv_L0B=(t3/t4)×mv_colB
mv_L1B=mv_L0B-mv_colB
где mv_L0B обозначает предсказатель вектора движения текущего блока 1100 для предыдущего по времени изображения 1112, и mv_L1B обозначает предсказатель вектора движения текущего блока 1100 для следующего по времени изображения 1114.
При формировании вектора движения текущего блока 1100 B-изображения может использоваться, по меньшей мере, один из способов, проиллюстрированных на Фиг. 11A и 11B. Другими словами, поскольку предсказатель вектора движения сформирован с использованием вектора движения и временного расстояния блока 1120 или 1130 в позиции, расположенной аналогично с текущим блоком 1100, предсказатели векторов движения могут быть сформированы с использованием способов, проиллюстрированных на Фиг. 11A и 11B, если существуют векторы движения блоков 1120 и 1130 в аналогично расположенной позиции. Таким образом, модуль 910 предсказания в соответствии с иллюстративным вариантом осуществления может сформировать предсказатель вектора движения текущего блока 1100 с использованием только блока, имеющего вектор движения, среди блоков 1120 и 1130 в аналогично расположенной позиции.
Например, когда блок 1120 в аналогично расположенной позиции предыдущего по времени изображения 1112 кодируется с использованием предсказания с интра-кодированием вместо предсказания с интер-кодированием, вектор движения блока 1120 не существует, и, таким образом, предсказатель вектора движения текущего блока 1100 не может быть сформирован с использованием способа формирования предсказателя вектора движения, проиллюстрированного на Фиг. 11A.
Фиг. 11C иллюстрирует способ формирования предсказателя вектора движения B-изображения в соответствии с иллюстративным вариантом осуществления. Как показано на Фиг. 11C, предсказатель вектора движения текущего блока 1100 текущего изображения 1110 может быть сформирован с использованием вектора движения блока 1140 в аналогично расположенной позиции предыдущего по времени изображения 1112. Например, если вектор движения mv_colC блока 1130 в позиции, расположенной аналогично с текущим блоком 1100, сформирован для искомого блока 1142 другого предыдущего по времени изображения 1116, потенциальный предсказатель вектора движения mv_L0C текущего блока 1100 может быть сформирован в соответствии с уравнением ниже:
mv_L0C=(t6/t5)×mv_colC.
Поскольку текущее изображение 1110 является P-изображением, количество предсказателей векторов движения текущего блока 1100 равно 1, в отличие от Фиг. 11A и 11B.
В итоге, множество C потенциальных предсказателей векторов движения в соответствии с Фиг. 10A, 10B и 11A-11C может быть сформировано в соответствии с уравнением ниже:
C={median(mv_a0, mv_b0, mv_c), mv_a0, mv_a1, …, mv_aN, mv_b0, mv_b1, …, mv_bN, mv_c, mv_d, mv_e, mv_temporal}.
В качестве альтернативы, множество C может быть сформировано посредством сокращения количества потенциальных предсказателей векторов движения в соответствии с уравнением ниже:
C={median(mv_a′, mv_b′, mv_c′), mv_a′, mv_b′, mv_c′, mv_temporal}.
Здесь mv_x обозначает вектор движения блока x, median() обозначает среднее значение, и mv_temporal обозначает потенциальные предсказатели векторов движения, сформированные с использование временного расстояния, описанного выше в связи с Фиг. 11A к 11C.
Кроме того, mv_a′ обозначает самый первый допустимый вектор движения среди mv_a0, mv_a1. …, mv_aN. Например, когда блок a0 закодирован с использованием предсказания с интра-кодированием, вектор движения mv_a0 блока a0 не является допустимым, и, таким образом, mv_a′=mv_a1, и если вектор движения блока a1 также не является допустимым, mv_a′=mv_a2.
Аналогичным образом, mv_b′ обозначает первый допустимый вектор движения среди mv_b0, mv_b1, …, mv_bN, и mv_c′ обозначает первый допустимый вектор движения среди mv_c, mv_d, и mv_e.
Явный режим представляет собой режим кодирования информации, указывающей, какой вектор движения использовался для предсказателя вектора движения текущего блока. Например, когда вектор движения закодирован в явном режиме, каждому из элементов множества C, то есть потенциальному предсказателю вектора движения может быть выделено двоичное число, и если один из потенциальных кандидатов используется в качестве предсказателя вектора движения текущего блока, может выдаваться соответствующее двоичное число.
Специалисты в области техники легко поймут, что совместно с явным режимом могут использоваться другие потенциальные предсказатели векторов движения помимо описанных выше.
(2) Неявный режим
Другой один из способов кодирования предсказателя вектора движения, который может быть выбран модулем 910 предсказания, реализует режим кодирования информации, указывающей, что предсказатель вектора движения текущего блока сформирован на основе блоков или пикселей, включенных в ранее закодированную область, смежную с текущим блоком. В отличие от явного режима, этот режим представляет собой режим кодирования информации, указывающей формирование предсказателя вектора движения в неявном режиме без кодирования информации для обозначения предсказателя вектора движения.
Как описано выше, такой кодек, как MPEG 4 H.264/MPEG-4 AVC использует векторы движения для ранее закодированных блоков, смежных с текущим блоком, для предсказания вектора движения текущего блока. Таким образом, среднее значение векторов движения ранее закодированных блоков, смежных с левой, верхней и верхней правой сторонами текущего блока, используется в качестве предсказателя вектора движения текущего блока. В этом случае, в отличие от явного режима, информация для выбора одного из потенциальных предсказателей векторов движения может не кодироваться.
Другими словами, если в процессе кодирования изображения закодирована только информация, указывающая, что предсказатель вектора движения текущего блока был закодирован в неявном режиме, в процессе декодирования изображения в качестве предсказателя вектора движения текущего блока может использоваться среднее значение векторов движения ранее закодированных блоков, смежных с левой, верхней и верхней правой сторонами текущего блока.
Кроме того, способ кодирования изображения в соответствии с иллюстративным вариантом осуществления обеспечивает новый неявный режим помимо способа использования среднего значения векторов движения ранее закодированных блоков, смежных с левой, верхней и верхней правой сторонами текущего блока в качестве предсказателя вектора движения текущего блока. Теперь это будет подробно описано со ссылкой на Фиг. 12.
Фиг. 12 иллюстрирует способ формирования предсказателя вектора движения в неявном режиме в соответствии с иллюстративным вариантом осуществления. Как показано на Фиг. 12, пиксели 1222, включенные в ранее закодированную область 1220, смежную с текущим блоком 1200 текущего изображения 1210, используются для формирования предсказателя вектора движения текущего блока 1200. Соответствующие пиксели 1224 определяются посредством поиска опорного изображения 1212 с использованием смежных пикселей 1222. Соответствующие пиксели 1224 могут быть определены посредством вычисления суммы абсолютных разностей (SAD). Когда соответствующие пиксели 1224 определены, формируется вектор движения mv_template смежных пикселей 1222, и вектор движения mv_template может использоваться в качестве предсказателя вектора движения текущего блока 1200.
Если режим использования среднего значения векторов движения смежных блоков в качестве предсказателя вектора движения определен как “неявный режим 1”, и если режим формирования предсказателя вектора движения с использованием пикселей, смежных с текущим блоком, определен как “неявный режим 2”, предсказатель вектора движения может быть сформирован с использованием одного из двух неявных режимов 1 и 2 посредством кодирования информации об одном из двух неявных режимов в процессе кодирования изображения и обращения к информации о режиме в процессе декодирования изображения.
(3) Выбор режима
Для модуля 910 предсказания могут иметься различные критерии выбора одного режима из описанных выше явного режима и неявного режима.
Если один из множества потенциальных предсказателей векторов движения выбран в явном режиме, может быть выбран предсказатель вектора движения, более подобный вектору движения текущего блока. Однако, поскольку кодируется информация, указывающая один из множества потенциальных предсказателей векторов движения, может возникнуть больше накладных расходов, чем в неявных режимах. Таким образом, для блока кодирования, имеющего большой размер, вектор движения может быть закодирован в явном режиме, поскольку вероятность увеличения ошибки, возникающей, когда вектор движения предсказан неправильно, выше для блока кодирования, имеющего большой размер, чем для блока кодирования, имеющего небольшой размер, и количество случаев с накладными расходами уменьшается для каждого изображения.
Например, когда изображение, разделенное на m равных блоков кодирования, имеющих размер 64×64, кодируется в явном режиме, количество случаев с накладными расходами составляет m. Однако когда изображение, которое имеет тот же самый размер, разделенное на 4m равных блоков кодирования, имеющих размер 32×32, кодируется в явном режиме, количество случаев с накладными расходами 4m.
Согласно этому модуль 910 предсказания в соответствии с иллюстративным вариантом осуществления может выбрать один режим из явного режима и неявного режима на основе размера блока кодирования, когда кодируется вектор движения текущего блока.
Поскольку размер блока кодирования в способе кодирования изображения и способе декодирования изображения в соответствии с иллюстративными вариантами осуществления, описанным выше со ссылкой на Фиг. 1-8, представлен с использованием глубины, модуль 910 предсказания определяет на основе глубины текущего блока, закодирован ли вектор движения текущего блока в явном режиме или неявном режиме. Например, когда блоки кодирования, глубины которых равны 0 и 1, предсказываются с интер-кодированием, векторы движения блоков кодирования кодируются в явном режиме, и когда блоки кодирования, глубины которых равны или больше 2, предсказываются с интер-кодированием, векторы движения блоков кодирования кодируются в неявном режиме.
В соответствии с другим иллюстративным вариантом осуществления модуль 910 предсказания может выбрать явный режим или неявный режим для каждого изображения или блока секции. Поскольку характеристики изображения отличаются для каждого изображения или блока секции, явный режим или неявный режим могут быть выбраны для каждого изображения или блока секции с учетом этих характеристик изображения. Векторы движения кодирования блоков, включенных в текущее изображение или секцию, могут быть закодированы с предсказанием посредством выбора оптимального режима из явного режима и неявного режима с учетом зависимости искажений от скорости передачи (R-D).
Например, если векторы движения кодирования блоков, включенных в изображение или секцию, могут быть точно предсказаны без использования явного режима, векторы движения всех блоков кодирования, включенных в изображение или секцию, могут быть закодированы с предсказанием в неявном режиме.
В соответствии с другим иллюстративным вариантом осуществления модуль 910 предсказания может выбрать явный режим или неявный режим на основе того, был ли текущий блок закодирован в режиме пропуска. Режим пропуска представляет собой режим кодирования, в котором информация флага, указывающая, что текущий блок был закодирован в режиме пропуска, закодирована без кодирования значения пикселей.
Кроме того, режим пропуска представляет собой режим, в котором не закодировано значение пикселей текущего блока, поскольку блок предсказания, сформированный посредством выполнения компенсации движения с использованием предсказателя вектора движения в качестве вектора движения текущего блока, аналогичен текущему блоку. Таким образом, поскольку предсказатель вектора движения сформирован более подобно вектору движения текущего блока, вероятность кодирования текущего блока в режиме пропуска выше. В соответствии с этим, блок, закодированный в режиме пропуска, может быть закодирован в явном режиме.
Как показано на Фиг. 9, когда модуль 910 предсказания выбирает один режим из явного режима и неявного режима и определяет предсказатель вектора движения в соответствии с выбранным режимом, первый кодер 920 и второй кодер 930 кодируют информацию о режиме кодирования и векторе движения.
В частности, первый кодер 920 кодирует информацию о предсказателе вектора движения текущего блока. Более подробно, когда модуль 910 предсказания определяет, что вектор движения текущего блока закодирован в явном режиме, первый кодер 920 кодирует информацию, указывающую, что предсказатель вектора движения был сформирован в явном режиме, и информацию, указывающую, какой потенциальный предсказатель вектора движения использовался в качестве предсказателя вектора движения текущего блока.
Напротив, когда модуль 910 предсказания определяет, что вектор движения текущего блока закодирован в неявном режиме, первый кодер 920 кодирует информацию, указывающую, что предсказатель вектора движения текущего блока был сформирован в неявном режиме. Другими словами, первый кодер 920 кодирует информацию, указывающую, что предсказатель вектора движения текущего блока был сформирован с использованием блоков или пикселей, смежных с текущим блоком. Если используются два или более неявных режимов, первый кодер 920 может дополнительно закодировать информацию, указывающую, какой неявный режим использовался для формирования предсказателя вектора движения текущего блока.
Второй кодер 930 кодирует вектор движения текущего блока на основе предсказателя вектора движения, определенного модулем 910 предсказания. В качестве альтернативы, второй кодер 930 формирует вектор разности посредством вычитания предсказателя вектора движения, сформированного модулем 910 предсказания, из вектора движения текущего блока, сформированного в результате компенсации движения, и кодирует информацию о векторе разности.
Фиг. 13 является блок-схемой устройства 1300 для декодирования вектора движения в соответствии с иллюстративным вариантом осуществления. Устройство 1300 для декодирования вектора движения может быть включено в устройство 200 декодирования изображения, описанное выше со ссылкой на Фиг. 2, или декодер 500 изображения, описанный выше со ссылкой на Фиг. 5. Как показано на Фиг. 13, устройство 1300 декодирования вектора движения включает в себя первый декодер 1310, второй декодер 1320, модуль 1330 предсказания и модуль 1340 восстановления вектора движения.
Первый декодер 1310 декодирует информацию о предсказателе вектора движения текущего блока, которая включена в битовый поток. Более подробно, первый декодер 1310 декодирует информацию, указывающую, был ли предсказатель вектора движения текущего блока закодирован в явном режиме или неявном режиме. Когда предсказатель вектора движения текущего блока был закодирован в явном режиме, первый декодер 1310 далее декодирует информацию, указывающую предсказатель вектора движения, использованный в качестве предсказателя вектора движения текущего блока, среди множества предсказателей векторов движения. Когда предсказатель вектора движения текущего блока был закодирован в неявном режиме, первый декодер 1310 может далее декодировать информацию, указывающую, какой из множества неявных режимов использовался для кодирования предсказателя вектора движения текущего блока.
Второй декодер 1320 декодирует вектор разности между вектором движения и предсказателем вектора движения текущего блока, включенным в битовый поток.
Модуль 1330 предсказания формирует предсказатель вектора движения текущего блока на основе информации о предсказателе вектора движения текущего блока, которая была декодирована первым декодером 1310.
Когда декодируется информация о предсказателе вектора движения текущего блока, который был закодирован в явном режиме, модуль 1330 предсказания формирует предсказатель вектора движения среди потенциальных предсказателей векторов движения, описанных выше со ссылкой на Фиг. 10A, 10B и 11A-11C, и использует сформированный предсказатель вектора движения в качестве предсказателя вектора движения текущего блока.
Когда декодируется информация о предсказателе вектора движения текущего блока, который был закодирован в неявном режиме, модуль 1330 предсказания формирует предсказатель вектора движения текущего блока с использованием блоков или пикселей, включенных в ранее закодированную область, смежную с текущим блоком. Более подробно, модуль 1330 предсказания формирует среднее значение векторов движения блоков, смежных с текущим блоком, в качестве предсказателя вектора движения текущего блока или формирует предсказатель вектора движения текущего блока посредством поиска опорного изображения с использованием пикселей, смежных с текущим блоком.
Модуль 1340 восстановления вектора движения восстанавливает вектор движения текущего блока посредством суммирования предсказателя вектора движения, сформированного модулем 1330 предсказания, и вектора разности, декодированного вторым декодером 1320. Восстановленный вектор движения используется для компенсации движения текущего блока.
Фиг. 14 является блок-схемой последовательности операций способа кодирования вектора движения в соответствии с иллюстративным вариантом осуществления. Как показано на Фиг. 14, устройство 900 кодирования вектора движения в соответствии с иллюстративным вариантом осуществления выбирает один режим из явного режима и неявного режима в качестве режима кодирования информации о предсказателе вектора движения на этапе 1410.
Явный режим представляет собой режим кодирования информации, указывающей потенциальный предсказатель вектора движения, по меньшей мере, среди одного потенциального предсказателя вектора движения в качестве информации о предсказателе вектора движения, и неявный режим представляет собой режим кодирования информации, указывающей, что предсказатель вектора движения был сформирован на основе блоков или пикселей, включенных в ранее закодированную область, смежную с текущим блоком, в качестве информации о предсказателе вектора движения. Их подробные описания были даны выше со ссылкой на Фиг. 10A, 10B, 11A-11C и 12.
Режим может быть выбран на основе размера текущего блока, то есть глубины текущего блока или выбран в блоке текущего изображения или секции, в которую включен текущий блок. В качестве альтернативы, режим может быть выбран согласно тому, был ли текущий блок закодирован в режиме пропуска.
На этапе 1420 устройство 900 кодирования вектора движения определяет предсказатель вектора движения в соответствии с режимом, выбранным на этапе 1410. Более подробно, устройство 900 кодирования вектора движения определяет предсказатель вектора движения текущего блока на основе явного режима или неявного режима, выбранного на этапе 1410. Более подробно, устройство 900 кодирования вектора движения определяет потенциальный предсказатель вектора движения, по меньшей мере, среди одного потенциального предсказателя вектора движения в качестве предсказателя вектора движения текущего блока в явном режиме или определяет предсказатель вектора движения текущего блока на основе блоков или пикселей, смежных с текущим блоком, в неявном режиме.
На этапе 1430 устройство 900 кодирования вектора движения кодирует информацию о предсказателе вектора движения, определенном на этапе 1420. В случае явного режима устройство 900 кодирования вектора движения кодирует информацию, указывающую потенциальный предсказатель вектора движения, по меньшей мере, среди одного потенциального предсказателя вектора движения, в качестве предсказателя вектора движения текущего блока и информацию, указывающую, что информация о предсказателе вектора движения текущего блока была закодирована в явном режиме. В случае неявного режима устройство 900 кодирования вектора движения кодирует информацию, указывающую, что предсказатель вектора движения текущего блока был сформирован на основе блоков или пикселей, включенных в ранее закодированную область, смежную с текущим блоком. В случае множества неявных режимов устройство 900 кодирования вектора движения может дополнительно закодировать информацию, указывающую на один режим из множества неявных режимов.
На этапе 1440 устройство 900 кодирования вектора движения кодирует вектор разности, сформированный посредством вычитания предсказателя вектора движения, определенного на этапе 1420, из вектора движения текущего блока.
Фиг. 15 является блок-схемой последовательности операций способа декодирования вектора движения в соответствии с иллюстративным вариантом осуществления. Как показано на Фиг. 15, устройство 1300 декодирования вектора движения в соответствии с иллюстративным вариантом осуществления декодирует информацию о предсказателе вектора движения текущего блока, которая включена в битовый поток, на этапе 1510. Более подробно, устройство 1300 декодирования вектора движения декодирует информацию о режиме, использованную для кодирования предсказателя вектора движения текущего блока, из явного режима и неявного режима.
В случае явного режима устройство 1300 декодирования вектора движения декодирует информацию, указывающую, что предсказатель вектора движения текущего блока был закодирован в явном режиме, и информации о потенциальном предсказателе вектора движения, по меньшей мере, среди одного потенциального предсказателя вектора движения. В случае неявного режима устройство 1300 декодирования вектора движения декодирует информацию, указывающую, что предсказатель вектора движения текущего блока был сформирован на основе блоков или пикселей, включенных в ранее декодированную область, смежную с текущим блоком. В случае множества неявных режимов устройство 1300 декодирования вектора движения может дополнительно декодировать информацию, указывающую на один из множества неявных режимов.
На этапе 1520 устройство 1300 декодирования вектора движения декодирует информацию о векторе разности. Вектор разности представляет собой вектор разности между предсказателем вектора движения текущего блока и вектором движения текущего блока.
На этапе 1530 устройство 1300 декодирования вектора движения формирует предсказатель вектора движения текущего блока на основе информации о предсказателе вектора движения, которая декодирована на этапе 1510. Более подробно, устройство 1300 декодирования вектора движения формирует предсказатель вектора движения текущего блока в соответствии с явным режимом или неявным режимом. Более подробно, устройство 1300 декодирования вектора движения формирует предсказатель вектора движения текущего блока посредством выбора потенциального предсказателя вектора движения, по меньшей мере, среди одного потенциального предсказателя вектора движения или с использованием блоков или пикселей, включенных в ранее декодированную область, смежную с текущим блоком.
На этапе 1540 устройство 1300 декодирования вектора движения восстанавливает вектор движения текущего блока посредством суммирования вектора разности, декодированного на этапе 1520, и предсказателя вектора движения, сформированного на этапе 1530.
Хотя выше были подробно показаны и описаны иллюстративные варианты осуществления, специалисты в области техники поймут, что в них могут быть внесены различные изменения в форме и деталях без отступления от сущности и объема настоящей концепции изобретения, определенной в следующей формуле изобретения.
Кроме того, система в соответствии с иллюстративным вариантом осуществления может быть реализована с использованием машиночитаемого кода на машиночитаемом носителе. Например, по меньшей мере, одно устройство из устройства 100 для кодирования изображения, устройства 200 для декодирования изображения, кодера 400 изображения, декодер 500 изображения, устройства 900 кодирования вектора движения и устройства 1300 декодирования вектора движения в соответствии с иллюстративными вариантами осуществления может включать в себя шину, присоединенную к модулям каждого из устройств, показанных на Фиг. 1, 2, 4, 5, 9 и 13, и, по меньшей мере, один процессор, соединенный с шиной. Кроме того, память, присоединенная, по меньшей мере, к одному процессору для выполнения описанных выше команд, может быть включена в устройство и соединена с шиной для хранения команд и принятых сообщений или сформированных сообщений.
Машиночитаемый носитель представляет собой любое устройство хранения данных, которое может хранить данные, которые могут быть затем считаны компьютерной системой. Примеры машиночитаемого носителя записи включают в себя постоянное запоминающее устройство (ПЗУ; ROM), оперативное запоминающее устройство (ОЗУ; RAM), компакт-диски, предназначенный только для чтения (CD-ROM), магнитные ленты, гибкие диски и оптические устройства хранения данных. Машиночитаемый носитель также может быть распределен по компьютерным системам, соединенным посредством сети, таким образом, что машиночитаемый код хранится и исполняется распределенным образом.