ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Устройства и способы, сопоставимые с примерными вариантами осуществления, относятся к кодированию и декодированию вектора движения и, более конкретно, к кодированию и декодированию вектора движения путем прогнозирования вектора движения текущего блока.
УРОВЕНЬ ТЕХНИКИ
Кодек, такой как продвинутое кодирование (AVC) видеосигнала 4Н.264/MPEG-4 от экспертной группы (MPEG) по вопросам движущегося изображения, использует векторы движения ранее кодированных блоков, смежных с текущим блоком для прогнозирования вектора движения текущего блока. То есть медиана векторов движения ранее кодированных блоков, смежных с левой верхней и правой верхней сторонами текущего блока, может быть использована в качестве предиктора (предсказателя) вектора движения текущего блока.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Решение проблемы
Один или более примерных вариантов осуществления обеспечивают способ и устройство для кодирования и декодирования вектора движения, а также считываемый компьютером носитель информации, на котором записана компьютерная программа для исполнения способа.
Преимущественные эффекты изобретения
В соответствии с настоящим изобретением, вектор движения настоящего блока может быть точно спрогнозирован и кодирован на основании этого прогноза.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Вышеуказанные и другие аспекты будут более очевидны с помощью подробного описания примерных вариантов осуществления со ссылкой на приложенные чертежи, на которых:
Фиг. 1 является структурной схемой устройства для кодирования изображения, в соответствии с примерным вариантом осуществления;
Фиг. 2 является структурной схемой устройства для декодирования изображения, в соответствии с примерным вариантом осуществления;
Фиг. 3 изображает элемент иерархического кодирования, в соответствии с примерным вариантом осуществления;
Фиг. 4 является структурной схемой кодер изображения на основании элемента кодирования, в соответствии с примерным вариантом осуществления;
Фиг. 5 является структурной схемой декодера изображения на основании элемента кодирования, в соответствии с примерным вариантом осуществления;
Фиг. 6 изображает максимальный элемент кодирования, подэлемент кодирования и элемент прогнозирования, в соответствии с примерным вариантом осуществления;
Фиг. 7 изображает элемент кодирования и элемент преобразования, в соответствии с примерным вариантом осуществления;
Фиг. 8a-8d изображают формы разделения элемента кодирования, элемента прогнозирования и элемента преобразования, в соответствии с примерным вариантом осуществления;
Фиг. 9 является структурной схемой устройства для декодирования вектора движения, в соответствии с примерным вариантом осуществления;
Фиг. 10a и 10b изображают кандидатов предикторов вектора движения в явном режиме, в соответствии с примерным вариантом осуществления;
Фиг. 10c-10e изображают блоки, имеющие различные размеры, которые являются смежными с текущим блоком, в соответствии с примерным вариантом осуществления;
Фиг. 11a-11c изображают кандидатов предикторов вектора движения в открытом режиме, в соответствии с другим примерным вариантом осуществления;
Фиг. 12a изображает способ генерирования предиктора вектора движения в неявном режиме, в соответствии с примерным вариантом осуществления;
Фиг. 12b изображает способ поиска предиктора вектора движения в неявном режиме, в соответствии с примерным вариантом осуществления;
Фиг. 12c и 12d изображают шаблоны, использованные для генерирования предикторов векторов движения, в соответствии с примерным вариантом осуществления;
Фиг. 13 является структурной схемой устройства для декодирования вектора движения, в соответствии с примерным вариантом осуществления;
Фиг. 14 является блок-схемой последовательности операций способа кодирования вектора движения, в соответствии с примерным вариантом осуществления; и
Фиг. 15 является блок-схемой последовательности операций способа декодирования вектора движения, в соответствии с примерным вариантом осуществления.
НАИЛУЧШЕЕ ТЕХНИЧЕСКОЕ ВЫПОЛНЕНИЕ ИЗОБРЕТЕНИЯ
В соответствии с одним аспектом примерного варианта осуществления, обеспечен способ кодирования вектора движения, причем способ включает в себя выбор из первого режима и второго режима, первый режим, в котором кодируется информация, указывающая предиктор вектора движения из по меньшей мере одного предиктора вектора движения, или второй режим, в котором кодируется информация, указывающая генерирование предиктора вектора движения на основании пикселей, включенных в ранее кодированную область, смежную с текущим блоком; определение предиктора вектора движения текущего блока, в соответствии с выбранным режимом, и кодирование информации о предикторе вектора движения текущего блока; и кодирование вектора разницы между вектором движения текущего блока и предиктором вектора движения текущего блока; при этом второй режим является режимом, в котором кодируется информация, указывающая генерирование предиктора вектора движения с помощью установки диапазона, в котором предиктор вектора движения должен быть найден на основании по меньшей мере одного предиктора вектора движения и с помощью поиска внутри диапазона поиска с использованием пикселей, включенных в ранее кодированную область.
Выбор первого режима или второго режима содержит выбор первого режима или второго режима на основании глубины, указывающей степень уменьшения от размера максимального элемента кодирования текущего изображения или фрагмента до размера текущего блока.
Выбор первого режима или второго режима содержит выбор первого режима или второго режима в элементе текущего изображения или фрагмента, содержащем текущий блок.
Выбор первого режима или второго режима содержит выбор первого режима или второго режима на основании того, кодирован ли текущий блок в режиме пропуска.
По меньшей мере один предиктор вектора движения может включать в себя первый вектор движения блока, смежного с левой стороной текущего блока; второй вектор движения блока, смежного с верхней стороной текущего блока; и третий вектор движения блока, смежного с правой верхней стороной текущего блока.
По меньшей мере один предиктор вектора движения может дополнительно включать в себя медианное значение первого вектора движения, второго вектора движения и третьего вектора движения.
По меньшей мере один предиктор вектора движения может дополнительно включать в себя предиктор вектора движения, генерированный на основании вектора движения блока, совмещенного с текущим блоком в опорном изображении, и временного расстояния между опорным изображением и текущим изображением.
Кодирование информации о предикторе вектора движения текущего блока может включать в себя кодирование информации, указывающей, является ли блок, совмещенный с текущим блоком, блоком изображения, предшествующего по времени текущему изображению, или блоком изображения, следующего по времени за текущим изображением.
Информация, указывающая, является ли блок, совмещенный с текущим блоком, блоком изображения, предшествующего по времени текущему изображению, или блоком изображения, следующего по времени за текущим изображением, может быть вставлена в заголовок фрагмента, в который включен текущей блок.
В соответствии с аспектом другого примерного варианта осуществления, обеспечено устройство для кодирования вектора движения, причем устройство включает в себя элемент прогнозирования, который выбирает из первого режима и второго режима, первый режим, в котором кодируется информация, указывающая один из по меньшей мере одного предиктора вектора движения, или второй режим, в котором кодируется информация, указывающая генерирование предиктора вектора движения на основании пикселей, включенных в ранее кодированную область, смежную с текущим блоком; первый кодер, который определяет предиктор вектора движения текущего блока в соответствии с выбранным режимом и кодирует информацию о предикторе вектора движения текущего блока; и второй кодер, который кодирует вектор разницы между вектором движения текущего блока и предиктором вектора движения текущего блока; при этом второй режим является режимом, в котором кодируется информация, указывающая генерирование предиктора вектора движения с помощью установки диапазона, в котором предиктор вектора движения должен быть найден на основании по меньшей мере одного предиктора вектора движения и с помощью поиска внутри диапазона поиска с использованием пикселей, включенных в ранее кодированную область.
В соответствии с аспектом другого примерного варианта осуществления, обеспечен способ декодирования вектора движения, причем способ включает в себя декодирование информации о предикторе вектора движения текущего блока, кодированной в соответствии с режимом, выбранным из первого режима и второго режима; декодирование вектора разницы между вектором движения текущего блока и предиктором вектора движения текущего блока; генерирование предиктора вектора движения текущего блока на основании декодированной информации о предикторе вектора движения текущего блока и восстановление вектора движения текущего блока на основании генерированного предиктора вектора движения и декодированного вектора разницы; при этом первый режим является режимом, в котором кодируется информация, указывающая один из по меньшей мере одного предиктора вектора движения, а второй режим является режимом, в котором кодируется информация, указывающая генерирование предиктора вектора движения с помощью установки диапазона, в котором предиктор вектора движения должен быть найден на основании по меньшей мере одного предиктора вектора движения и с помощью поиска внутри диапазона поиска с использованием пикселей, включенных в ранее кодированную область, смежную с текущим блоком.
В соответствии с аспектом другого примерного варианта осуществления, обеспечено устройство для декодирования вектора движения, причем устройство включает в себя первый декодер, который декодирует информацию о предикторе вектора движения текущего блока, кодированную в соответствии с режимом, выбранным из первого режима и второго режима; второй декодер, который кодирует вектор разницы между вектором движения текущего блока и предиктором вектора движения текущего блока; элемент прогнозирования, который генерирует предиктор вектора движения текущего блока на основании декодированной информации о предикторе вектора движения текущего блока; и устройство восстановления вектора движения, которое восстанавливает вектор движения текущего блока на основании генерированного предиктора вектора движения и декодированного вектора разницы; при этом первый режим является режимом, в котором кодируется информация, указывающая один из по меньшей мере одного предиктора вектора движения, а второй режим является режимом, в котором кодируется информация, указывающая генерирование предиктора вектора движения с помощью установки диапазона, в котором предиктор вектора движения должен быть найден на основании по меньшей мере одного предиктора вектора движения и с помощью поиска внутри диапазона поиска с использованием пикселей, включенных в ранее кодированную область, смежную с текущим блоком.
В соответствии с аспектом другого примерного варианта осуществления, обеспечен считываемый компьютером носитель информации, на котором записана компьютерная программа для исполнения способа кодирования вектора движения и способа декодирования вектора движения.
В соответствии с аспектом другого примерного варианта осуществления, обеспечен способ кодирования вектора движения, причем способ включает в себя выбор из первого режима и второго режима, первый режим, в котором кодируется информация, указывающая предиктор вектора движения из по меньшей мере одного предиктора вектора движения, или второй режим, в котором кодируется информация, указывающая генерирование предиктора вектора движения на основании пикселей, включенных в ранее кодированную область, смежную с текущим блоком; определение предиктора вектора движения текущего блока, в соответствии с выбранным режимом, и кодирование информации о предикторе вектора движения текущего блока; и кодирование вектора разницы между вектором движения текущего блока и предиктором вектора движения текущего блока.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
Конкретные примерные варианты осуществления описаны более подробно ниже со ссылкой на сопровождающие чертежи. Выражения «по меньшей мере», предшествующие списку элементов, изменяют список элементов в целом и не изменяют отдельные элементы списка. В настоящей спецификации, «изображение» может означать отдельный кадр видео либо движущееся изображение, то есть само видео.
В последующем описании, похожие ссылочные позиции на чертежах используются для похожих элементов, даже на различных чертежах. Объекты, определенные в описании, такие как подробная конструкция и элементы, обеспечены для полного понимания примерных вариантов осуществления. Однако примерные варианты осуществления могут быть исполнены без этих конкретно определенных объектов.
Фиг. 1 является структурной схемой устройства 100 кодирования изображения для кодирования изображения, в соответствии с примерным вариантом осуществления. Устройство 100 кодирования изображения может быть осуществлено как устройство аппаратного обеспечения, например, как процессор компьютера или компьютерной системы. Устройство 100 кодирования изображения, либо один или несколько его компонентов, может также быть осуществлено как модуль программного обеспечения, находящийся в компьютерной системе.
Со ссылкой на Фиг. 1, устройство 100 кодирования изображения включает в себя устройство 110 разделения максимального элемента кодирования, устройство 120 определения глубины кодирования, кодер 130 данных изображения и кодер 140 информации кодирования, которые могут быть осуществлены, например, в качестве аппаратного обеспечения или модулей программного обеспечения, интегрированных в устройство 100 кодирования изображения, или отдельных от устройства 100 кодирования изображения.
Устройство 110 разделения максимального элемента кодирования может разделять текущий кадр или фрагмент на основании максимального элемента кодирования, то есть элемента кодирования наибольшего размера. Устройство 110 разделения максимального элемента кодирования может разделять текущий кадр или фрагмент по меньшей мере на один максимальный элемент кодирования.
В соответствии с примерным вариантом осуществления, элемент кодирования может быть представлен с использованием максимального элемента кодирования и глубины. Как описано выше по тексту, максимальный элемент кодирования указывает элемент кодирования, имеющий наибольший размер из числа элементов кодирования текущего кадра, а глубина указывает степень иерархического уменьшения элемента кодирования. По мере увеличения глубины элемент кодирования может уменьшаться от максимального элемента кодирования до минимального элемента кодирования, причем глубина максимального элемента кодирования определяется как минимальная глубина, а глубина минимального элемента кодирования определяется как максимальная глубина. Так как размер элемента кодирования уменьшается от максимального элемента кодирования по мере увеличения глубины, то подэлемент кодирования глубины k может включать в себя множество подэлементов кодирования глубины (k+n) (где k и n являются целыми числами, равными или больше чем 1).
В соответствии с увеличением размера кадра, который должен быть кодирован, кодирование изображения в элементе кодирования большего размера может привести к большему коэффициенту сжатия изображения. Однако если больший элемент кодирования зафиксирован, то изображение не может быть эффективно кодировано путем отражения непрерывно меняющихся характеристик изображения.
Например, когда кодируется однородная область, такая как море или небо, то чем больше элемент кодирования, тем больше коэффициент сжатия. Однако когда кодируется сложная область, такая как люди или здания, то чем меньше элемент кодирования, тем больше коэффициент сжатия.
Соответственно, в примерном варианте осуществления, различный максимальный элемент кодирования изображения и различная максимальная глубина устанавливаются для каждого кадра или фрагмента. Так как максимальная глубина означает максимальное число раз, на которое может увеличиться элемент кодирования, то размер каждого минимального элемента кодирования, включенный в максимальный элемент кодирования изображения, может быть по-разному установлен в соответствии с максимальной глубиной. Максимальная глубина может быть определена различно для каждого кадра или фрагмента либо для каждого максимального элемента кодирования.
Устройство 120 определения глубины кодирования определяет форму разделения максимального элемента кодирования. Форма разделения может быть определена на основании вычисления издержек норма-искажение (RD). Определенная форма разделения максимального элемента кодирования обеспечена на кодер 140 информации кодирования, и данные изображения в соответствии с максимальными элементами кодирования обеспечены на кодер 130 данных изображения.
Максимальный элемент кодирования может быть разделен на подэлементы кодирования, имеющие различные размеры в соответствии с различными глубинами, и подэлементы кодирования, имеющие различные размеры, которые включены в максимальные элементы, могут быть спрогнозированы или преобразованы частотно на основании элементов обработки, имеющих различные размеры. Другими словами, устройство 100 кодирования изображения может выполнять множество обрабатывающих функций для кодирования изображения на основании элементов обработки, имеющих различные размеры и различные формы. Для кодирования данных изображения выполняются обрабатывающие функции, такие как прогнозирование, преобразование и энтропийное кодирование, причем элементы обработки, имеющие одинаковый размер или различные размеры, могут быть использованы для каждой функции.
Например, устройство 100 кодирования изображения может выбирать элемент обработки, который отличен от элемента кодирования, для прогнозирования элемента кодирования.
Когда размер элемента кодирования равен 2N×2N (где N является положительным целым числом), элементы обработки для прогнозирования могут быть размером 2N×2N, 2N×N, N×2N и N×N. Другими словами, прогнозирования движения может быть выполнено на основании элемента обработки, имеющего форму, при которой по меньшей мере одна высота и одна ширина элемента кодирования могут быть разделены пополам без остатка. В дальнейшем в данном документе, элемент обработки, являющийся основанием прогнозирования, определяется как элемент прогнозирования.
Режим прогнозирования может быть по меньшей мере одним из режимов: внутренний (intra) режим, взаимный (inter) режим и режим пропуска; причем конкретный режим прогнозирования может быть выполнен только для элемента прогнозирования, имеющего конкретный размер или конкретную форму. Например, внутренний режим может быть выполнен только для элементов прогнозирования, имеющих размеры 2N×2N и N×N и форму квадрата. Дополнительно, режим пропуска может быть выполнен только для элемента прогнозирования, имеющего размер 2N×2N. Если в элементе кодирования существуют множество элементов прогнозирования, то режим прогнозирования по меньшей мере с ошибками кодирования может быть выбран после выполнения прогнозирования для каждого элемента прогнозирования.
Альтернативно, устройство 100 кодирования изображения может выполнять преобразование частоты данных изображения на основании элемента обработки, имеющего размер, отличный от размера элемента кодирования. Для преобразования частоты в элементе кодирования преобразование частоты может быть выполнено на основании элемента обработки, имеющего размер, равный или меньше чем размер элемента кодирования. В дальнейшем в данном документе элемент обработки, который является основанием преобразования частоты, определяется как элемент преобразования. Преобразование частоты может быть дискретным косинусным преобразованием (DCT) либо преобразованием (KLT) Карунена-Лоэва.
Устройство 120 определения глубины кодирования может определять подэлементы кодирования, включенные в максимальный элемент кодирования, используя оптимизацию RD на основании множителя Лагранжа. Другими словами, устройство 120 определения глубины кодирования может определять, какую форму имеют множество подэлементов кодирования, разделенных из максимального элемента кодирования, причем множество подэлементов кодирования имеют различные размеры в соответствии с глубинами подэлементов кодирования. Кодер 130 данных изображения выводит поток двоичных данных путем кодирования максимального элемента кодирования на основании форм разделения, определенных устройством 120 определения глубины кодирования.
Кодер 140 информации кодирования кодирует информацию о режиме кодирования максимального элемента кодирования, определенного устройством 120 определения глубины кодирования. Другими словами, кодер 140 информации кодирования выводит поток двоичных данных путем кодирования информации о форме разделения максимального элемента кодирования, информации о максимальной глубине и информации о режиме кодирования подэлемента кодирования для каждой глубины. Информация о режиме кодирования подэлемента кодирования может включать в себя информацию об элементе прогнозирования подэлемента кодирования, информацию о режиме прогнозирования для каждого элемента прогнозирования и информацию об элементе преобразования элементе подкодирования.
Информация о форме разделения максимального элемента кодирования может быть сигнальной информацией, указывающей, разделен ли каждый элемент кодирования. Например, когда максимальный элемент кодирования разделен и кодирован, кодируется информация, указывающая, разделен ли максимальный элемент кодирования. Также, когда подэлемент кодирования, разделенный из максимального элемента кодирования, разделен и кодирован, кодируется информация, указывающая, разделен ли подэлемент кодирования.
Так как подэлементы кодирования, имеющие различные размеры, существуют для каждого максимального элемента кодирования, и информация о режиме кодирования определяется для каждого подэлемента кодирования, то информация по меньшей мере об одном режиме кодирования может быть определена для одного максимального элемента кодирования.
Устройство 100 кодирования изображения может генерировать подэлементы кодирования путем равного разделения высоты и ширины максимального элемента кодирования на два, в соответствии с увеличением глубины. То есть, когда размер элемента кодирования глубины k равен 2N×2N, то размер элемента кодирования глубины (k+1) равен N×N.
Соответственно, устройство 100 кодирования изображения может определять оптимальную форму разделения для каждого максимального элемента кодирования на основании размеров максимального элемента кодирования и максимальной глубины в отношении к характеристикам изображения.
Фиг. 2 является структурной схемой устройства 200 декодирования изображения для декодирования изображения в соответствии с примерным вариантом осуществления. Устройство 200 декодирования изображения может быть осуществлено в качестве технического средства, такого как, например, процессор компьютера или компьютерная система. Устройство 200 декодирования изображения либо один или более его компонентов может быть также осуществлено в качестве модуля программного обеспечения, находящегося в компьютерной системе.
Со ссылкой на Фиг. 2, устройство 200 декодирования изображения включает в себя элемент 210 получения данных изображения, устройство 220 извлечения информации кодирования и декодер 230 данных изображения, которые могут быть осуществлены, например, в качестве аппаратного обеспечения или модулей программного обеспечения, интегрированных в устройство 200 декодирования изображения либо находящихся отдельно от устройства 200 декодирования изображения.
Элемент 210 получения данных изображения принимает данные изображения в соответствии с максимальными элементами кодирования путем разбора потока двоичных данных, принятых устройством 200 декодирования изображения, и выводит данные изображения на декодер 230 данных изображения. Элемент 210 получения данных изображения может извлекать информацию о максимальном элементе кодирования текущего кадра или фрагмента из заголовка текущего кадра или фрагмента. Другими словами, элемент 210 получения данных изображения разделяет поток двоичных данных в максимальном элементе кодирования, так что декодер 230 данных изображения может декодировать данные изображения в соответствии с максимальными элементами кодирования.
Устройство 220 извлечения информации кодирования извлекает информацию о максимальном элементе кодирования, максимальной глубине, форме разделения максимального элемента кодирования и режиме кодирования подэлементов кодирования из заголовка текущего кадра путем разбора потока двоичных данных, принятых устройством 200 декодирования изображения. Информация о форме разделения и информация о режиме кодирования обеспечена на декодер 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 и 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, в соответствии с увеличением глубины. Так как изображение кодировано на основании меньшего подэлемента кодирования по мере увеличения глубины, то примерные варианты осуществления подходят для кодирования изображения, включающего в себя более длинные сцены.
Фиг. 4 является структурной схемой устройства 400 кодирования изображения на основании элемента кодирования, в соответствии с примерным вариантом осуществления. Устройство 400 кодирования изображения, либо один или более его компонентов, может быть осуществлено в качестве технического средства, например процессора компьютера, или модуля программного обеспечения, находящегося в компьютерной системе.
Внутренний предиктор 410 выполняет внутреннее прогнозирование на элементах прогнозирования в режиме внутреннего прогнозирования в текущем кадре 405, а устройство 420 оценки движения и устройство 425 компенсации движения выполняют взаимное прогнозирование и компенсацию движения на элементах прогнозирования в режиме взаимного прогнозирования, используя текущий кадр 405 и опорный кадр 495. Внутренний предиктор 410, устройство 420 оценки движения, устройство 425 компенсации и опорный кадр 495 могут быть осуществлены, например, в качестве аппаратного обеспечения или модулей программного обеспечения, интегрированных в устройство 400 кодирования изображения либо находящихся отдельно от устройства 400 кодирования изображения.
Остаточные значения генерируются на основании вывода элементов прогнозирования из внутреннего предиктора 410, устройства 420 оценки движения и устройства 425 компенсации движения. Генерированные остаточные значения являются выводом в виде квантованных коэффициентов преобразования при прохождении через устройство 430 преобразования и устройство 440 квантования.
Квантованные коэффициенты преобразования восстанавливаются до остаточных значений при прохождении через устройство 460 обратного квантования и устройство 470 обратного преобразования, а восстановленные остаточные значения проходят последующую обработку при прохождении через элемент 480 деблокирования и элемент 490 цикличной фильтрации и выводятся в виде опорного кадра 495. Квантованные коэффициенты преобразования могут быть выводом в виде потока 455 двоичных данных при прохождении через устройство 450 энтропийного кодирования.
Для выполнения кодирования на основании способа кодирования в соответствии с примерным вариантом осуществления внутренний предиктор 410, устройство 420 оценки движения, устройство 425 компенсации движения, устройство 430 преобразования, устройство 440 квантования, устройство 450 энтропийного кодирования, устройство 460 обратного квантования, устройство 470 обратного преобразования, элемент 480 деблокирования и элемент 490 цикличной фильтрации устройства 400 кодирования изображения выполняют процессы кодирования на основании максимального элемента кодирования, подэлемента кодирования в соответствии с глубинами, элементом прогнозирования и элементом преобразования.
Фиг. 5 является структурной схемой устройства 500 декодирования изображения на основании элемента кодирования, в соответствии с примерным вариантом осуществления. Декодер 500 изображения, либо один или более его компонентов, может быть осуществлено в качестве технического средства, например процессора компьютера, или модуля программного обеспечения, находящегося в компьютерной системе.
Поток 505 двоичных данных проходит через устройство 510 разбора, так что происходит разбор данных кодированного изображения, подлежащих декодированию, и информации кодирования, используемой для декодирования. Данные кодированного изображения выводятся в виде обратно квантованных данных при прохождении через устройство 520 энтропийного кодирования и устройство 530 обратного квантования и восстанавливаются до остаточных значений при прохождении через устройство 540 обратного преобразования. Остаточные значения восстанавливаются в соответствии с элементами кодирования путем их добавления к результату внутреннего прогнозирования внутреннего предиктора 550 или к результату компенсации движения устройства 560 компенсации движения. Восстановленные элементы кодирования используются для прогнозирования следующих элементов кодирования или следующего кадра при прохождении через элемент 570 деблокировки и элемент 580 цикличной фильтрации. Устройство 510 разбора, устройство 520 энтропийного кодирования, устройство 530 обратного квантования, устройство 540 обратного преобразования, внутренний предиктор 550, устройство 560 компенсации, элемент 570 деблокировки и элемент 580 цикличной фильтрации могут быть осуществлены, например, в качестве аппаратного обеспечения или модулей программного обеспечения, интегрированных в устройство 500 кодирования изображения либо находящихся отдельно от устройства 500 кодирования изображения.
Для выполнения декодирования на основании способа деблокирования в соответствии с примерным вариантом осуществления устройство 510 разбора, устройство 520 энтропийного кодирования, устройство 530 обратного квантования, устройство 540 обратного преобразования, внутренний предиктор 550, устройство 560 компенсации, элемент 570 деблокировки и элемент 580 цикличной фильтрации устройства 500 кодирования изображения выполняют процессы декодирования изображения на основании максимального элемента кодирования, подэлемента кодирования в соответствии с глубинами, элементом прогнозирования и элементом преобразования.
Более конкретно, внутренний предиктор 550 и устройство 560 компенсации определяют элемент прогнозирования и режим прогнозирования в подэлементе кодирования путем рассмотрения максимального элемента кодирования и глубины, а устройство 540 обратного преобразования выполняет обратное преобразование путем рассмотрения размера элемента преобразования.
Фиг. 6 изображает максимальный элемент кодирования, подэлемент кодирования и элемент прогнозирования в соответствии с примерным вариантом осуществления.
Устройство 100 кодирования изображения, проиллюстрированное на Фиг. 1, и устройство 200 декодирования изображения, проиллюстрированное на Фиг. 2, используют элементы иерархического кодирования для выполнения кодирования и декодирования в отношении характеристик изображения. Максимальный элемент кодирования и максимальная глубина могут быть адаптивно установлены в соответствии с характеристиками изображения либо установлены по-разному в соответствии с требованиями пользователя.
На Фиг. 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, является минимальным элементом кодирования, и минимальный элемент кодирования может быть разделен на элементы прогнозирования, причем каждый из них меньше, чем минимальный элемент кодирования.
Со ссылкой на Фиг. 6, примеры элементов прогнозирования изображены вдоль горизонтальной оси в соответствии с каждой глубиной. То есть элемент прогнозирования максимального элемента 610 кодирования, глубина которого равна 0, может быть элементом прогнозирования, размер которого равен размеру 64×64 максимального элемента кодирования, либо элементом 612 прогнозирования, размер которого равен 64×32, элементом 614 прогнозирования, размер которого равен 32×64, или элементом 616 прогнозирования, размер которого равен 32×32, и иметь размер меньше, чем размер максимального элемента кодирования, размер которого равен 64×64.
Элемент прогнозирования первого подэлемента 620 кодирования, глубина которого равна 1, а размер - 32×32, может быть элементом прогнозирования, размер которого равен размеру 32×32 первого подэлемента кодирования, либо элементом 622 прогнозирования, размер которого равен 32×16, элементом 624 прогнозирования, размер которого равен 16×32, или элементом 626 прогнозирования, размер которого равен 16×16, и иметь размер меньше, чем размер первого подэлемента 620 кодирования, размер которого равен 32×32.
Элемент прогнозирования второго подэлемента 630 кодирования, глубина которого равна 2, а размер - 16×16, может быть элементом прогнозирования, размер которого равен размеру 16×16 второго подэлемента 630 кодирования, либо элементом 632 прогнозирования, размер которого равен 16×8, элементом 634 прогнозирования, размер которого равен 8×16, или элементом 636 прогнозирования, размер которого равен 8×8, и иметь размер меньше, чем размер второго подэлемента 630 кодирования, размер которого равен 16×16.
Элемент прогнозирования третьего подэлемента 640 кодирования, глубина которого равна 3, а размер - 8×8, может быть элементом прогнозирования, размер которого равен размеру 8×8 третьего подэлемента 640 кодирования, либо элементом 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 кодирования изображения, проиллюстрированное на Фиг. 1, и устройство 200 декодирования изображения, проиллюстрированное на Фиг. 2, выполняют кодирование и декодирование с помощью самого максимального элемента кодирования или с помощью подэлементов кодирования, которые равны или меньше, чем максимальный элемент кодирования и разделены из максимального элемента кодирования. В процессе кодирования и декодирования, размер элемента преобразования для частотного преобразования выбирается не больше, чем размер соответствующего элемента кодирования. Например, если текущий элемент 710 кодирования имеет размер 64×64, то частотное преобразование может быть выполнено с помощью элемента 720 преобразования, имеющего размер 32×32.
Фиг. 8a, 8b, 8c и 8d изображают формы разделения элемента 810 кодирования, элемент 860 прогнозирования и элемент 870 преобразования, в соответствии с примерным вариантом осуществления.
Фиг. 8a и 8b изображают элемент 810 кодирования и элемент 860 прогнозирования, в соответствии с примерным вариантом осуществления.
Фиг. 8a изображает форму разделения, выбранную устройством 100 кодирования изображения, проиллюстрированным на Фиг. 1, для кодирования максимального элемента 810 кодирования. Устройство 100 кодирования изображения разделяет максимальный элемент 810 кодирования на различные формы, выполняет кодирование и выбирает оптимальную форму разделения путем сравнения результатов кодирования различных форм кодирования друг с другом на основании издержек RD. Когда оптимально кодировать максимальный 810 кодирования таким, какой он есть, то максимальный элемент 810 кодирования может быть кодирован без разделения максимального элемента 810 кодирования, как изображено на Фиг. 8a-8d.
Со ссылкой на Фиг. 8a, максимальный элемент 810 кодирования, глубина которого равна 0, кодируется путем его разделения на подэлементы кодирования, глубины которых равны или больше чем 1. То есть максимальный элемент 810 кодирования разделяется на 4 подэлемента кодирования, глубины которых равны 1, и все или некоторые подэлементы кодирования, глубины которых равны 1, разделяются на подэлементы 814, 816, 818, 828, 850 и 852 кодирования, глубины которых равны 2.
Подэлемент кодирования, расположенный в правом верхнем углу, и подэлемент кодирования, расположенный в левом нижнем углу, среди подэлементов кодирования, глубины которых равны 1, разделены на подэлементы кодирования, глубины которых равны или больше 2. Некоторые подэлементы кодирования, глубины которых равны или больше 2, могут быть разделены на подэлементы 820, 822, 824, 826, 830, 832, 840, 842, 844, 846 и 848 кодирования, глубины которых равны или больше 3.
Фиг. 8b изображает форму разделения элемента 860 прогнозирования для максимального элемента 810 кодирования.
Со ссылкой на Фиг. 8b, элемент 860 прогнозирования для максимального элемента 810 кодирования может быть разделен отлично от максимального элемента 810 кодирования. Другими словами, элемент прогнозирования для каждого подэлемента кодирования может быть меньше, чем соответствующий подэлемент кодирования.
Например, элемент прогнозирования для подэлемента 854 кодирования, расположенный в правом нижнем углу среди подэлементов 812, 854 кодирования, глубина которых равна 1, может быть меньше, чем подэлемент 854 кодирования. Дополнительно, элементы прогнозирования для подэлементов 814, 816, 850 и 852 кодирования, глубины которых равны 2, могут быть меньше, чем подэлементы 814, 816, 850 и 852 кодирования, соответственно.
Дополнительно, элементы прогнозирования для подэлементов 822, 832 и 848 кодирования, глубины которых равны 3, могут быть меньше, чем подэлементы 822, 832 и 848 кодирования, соответственно. Элементы прогнозирования могут иметь форму, на которую соответствующие подэлементы кодирования равно делятся на два в направлении высоты или ширины, либо иметь форму, на которую соответствующие подэлементы кодирования равно делятся на четыре в направлениях высоты и ширины.
Фиг. 8c и 8d изображают элемент 860 прогнозирования и элемент 870 преобразования, в соответствии с примерным вариантом осуществления.
Фиг. 8c изображает форму разделения элемента 860 прогнозирования для максимального элемента 810 кодирования, изображенного на Фиг. 8b, а Фиг. 8d изображает форму разделения элемента 870 преобразования для максимального элемента 810 кодирования.
Со ссылкой на Фиг. 8d, форма разделения элемента 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, способ прогнозирования вектора движения, в соответствии с примерным вариантом осуществления, может использовать один из векторов движения ранее кодированных блоков, смежных с текущим блоком, в качестве предиктора вектора движения текущего блока. Блок а0, крайний слева среди блоков, смежных с верхней стороной текущего блока, блок b0, самый верхний среди блоков, смежных с его левой стороной, блок с, смежный с его верхней правой стороной, блок d, смежный с его верхней левой стороной, и блок е, смежный с его нижней левой стороной, могут быть использованы в качестве предиктора вектора движения текущего блока.
При способе кодирования изображения и способе декодирования изображения, в соответствии с примерным вариантом осуществления, изображение кодируется и декодируется на основании элементов кодирования, имеющих различные размеры, дифференцированные в соответствии с глубинами. Таким образом, вектор движения блока, смежного с нижней левой стороной текущего блока, может также быть использован в качестве предиктора вектора движения текущего блока.
Со ссылкой на Фиг. 8a, если текущий блок является элементом 820 кодирования, элемент 814 кодирования, смежный с верхней левой стороной текущего блока, элемент 816 кодирования в крайнем левом блоке среди блоков, смежных с верхней стороной текущего блока, элемент 818 кодирования в крайнем правом блоке среди блоков, смежных с его левой стороной, элемент 822 кодирования, смежный с его верхней правой стороной, и элемент 824 кодирования, смежный с его нижней левой верхней стороной, кодируются до текущего блока. Таким образом, вектор движения текущего блока, смежный с нижней левой стороной текущего блока, может быть использован в качестве предиктора вектора движения текущего блока.
Со ссылкой на Фиг. 10b, векторы движения всех блоков, смежных с текущим блоком, могут быть использованы в качестве предиктора вектора движения текущего блока. Другими словами, векторы движения не только блока а0, крайнего слева, среди блоков, смежных с верхней стороной текущего блока, но также и все блоки а0-an, смежные с его верхней стороной, могут быть использованы в качестве предиктора вектора движения текущего блока; и векторы движения не только блока b0, самого верхнего среди блоков, смежных с его левой стороной, но также и все блоки b0-bn, смежные с его левой стороной, могут быть использованы в качестве предиктора вектора движения текущего блока.
Альтернативно, медианное значение векторов движения смежных блоков может быть использовано в качестве предиктора вектора движения текущего блока. Другими словами, медиана (mv_a0, mv_b0, mv_c) может быть использована в качестве предиктора вектора движения текущего блока, причем mv_a0 обозначает вектор движения блока а0, mv_b0 обозначает вектор движения блока b0, а mv_c обозначает вектор движения блока с.
Кандидаты предикторов вектора движения текущего блока могут быть ограничены в соответствии с размером текущего блока и размерами блоков, смежных с текущим блоком. Это будет описано более подробно со ссылками на Фиг. 10c-10e.
Фиг. 10c-10e изображают блоки, имеющие различные размеры, смежные с текущим блоком, в соответствии с примерным вариантом осуществления.
Как описано выше по тексту, при способе кодирования изображения и способе декодирования изображения, в соответствии с примерным вариантом осуществления, изображение кодируется и декодируется на основании элементов кодирования, имеющих различные размеры, дифференцированные в соответствии с глубинами. Таким образом, размеры блоков, смежных с текущим блоком, могут быть разными. Значит, если размер текущего блока отличается значительно от размеров некоторых из блоков, смежных с текущим блоком, векторы движения одного или более блоков, имеющих различные размеры, смежных с текущим блоком, могут не использоваться в качестве предикторов вектора движения текущего блока.
Со ссылкой на Фиг. 10c, блоки 1014-1018, смежные с верхней стороной текущего блока 1010, являются блоками, имеющими размеры меньше, чем размер текущего блока 1010. Так как есть большая вероятность того, что вектор движения блока 1012, смежного с текущим блоком 1010 и имеющего тот же размер, что и текущий блок 1010, может быть таким же или подобным вектору движения текущего блока 1010, элемент 910 прогнозирования может использовать только вектор движения блока 1012, который смежен с текущим блоком 1010 и имеет тот же размер, что и текущий блок 1010, в качестве предиктора вектора движения.
Даже если размер блока 1012 не совпадает с размером текущего блока 1010, только векторы движения блоков, смежных с текущим блоком 1010 и имеющих заранее заданные размеры, могут быть использованы в качестве предиктора вектора движения. Например, только векторы движения блоков 1012 и 1018, имеющих размеры, которые равны или больше, чем 1/4 размера текущего блока 1010, могут быть использованы в качестве предиктора вектора движения.
Со ссылкой на Фиг. 10d, размер блока 1022, смежного с левой стороной текущего блока 1020, в 16 раз больше размера текущего блока 1020, и между ними существует большая разница. Вследствие этой большой разницы, очень мала вероятность того, что вектор движения блока 1022, смежного с левой стороной текущего блока 1020, может быть тем же или подобным вектору движения текущего блока 1020. Таким образом, вектор движения блока 1022, смежного с левой стороной текущего блока 1020, не может быть использован в качестве предиктора вектора движения текущего блока 1020, и только вектор движения блока 1024, смежного с верхней стороной текущего блока 1020, и вектор движения блока 1026, смежного с верхней левой стороной текущего блока 1020, могут быть использованы в качестве предиктора вектора движения текущего блока 1020.
Со ссылкой на Фиг. 10e, размер текущего блока 1030 больше, чем размеры всех блоков 1031-1037, смежных с текущим блоком 1030. В таком случае, если векторы движения всех блоков 1031-1037, смежных с текущим блоком 1030, используются в качестве предикторов вектора движения текущего блока 1030, число кандидатов предикторов вектора движения текущего блока 1030 может быть слишком велико. По мере увеличения разницы между размером текущего блока 1030 и размерами блоков 1031-1037, смежных с текущим блоком 1030, число предикторов вектора движения текущего блока 1030 увеличивается. Таким образом, элемент 910 прогнозирования, изображенный на Фиг. 9, не использует векторы движения одного или более блоков, смежных с текущим блоком 1030 в качестве предикторов вектора движения текущего блока 1030.
Например, в примерном варианте осуществления на Фиг. 10e, вектор движения блока 1031, смежного с нижней левой стороной текущего блока 1030, и вектор движения блока 1037, смежного с верхней правой стороной текущего блока 1030, не обязательно используются в качестве предикторов вектора движения текущего блока 1030.
Таким образом, если размер текущего блока 1030 равен или больше, чем заранее определенный размер, то векторы движения блоков, смежных с текущим блоком 1030, в заранее определенных направлениях не обязательно используются в качестве предикторов вектора движения текущего блока 1030.
Фиг. 11a-11c изображают кандидатов предикторов вектора движения в явном режиме, в соответствии с другим примерным вариантом осуществления.
Фиг. 11a изображает способ вычисления предиктора вектора движения двунаправленного прогнозного изображения (в дальнейшем в данном документе называемого «В изображение» («B кадр»)), в соответствии с примерным вариантом осуществления. Когда текущее изображение, включающее в себя текущий блок, является В изображением, в котором выполняется двунаправленное прогнозирование, то вектор движения, генерированный на основании временной дистанции, может быть предиктором вектора движения.
Предиктор mv_temporal вектора движения текущего блока 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, следующего по времени.
В примерном варианте осуществления на Фиг. 11a, текущее изображение 1110, являющееся В изображением, существует между изображением 1112, предшествующим по времени, и изображением 1114, следующим по времени. В этом случае, если вектор mv_colA движения блока 1120 в положении, совмещенном с текущим блоком 1100, генерируется из изображения 1114, следующего по времени, то вектор движения текущего блока 1100 может быть спрогнозирован более точно на основании mv_L1A. Другими словами, по сравнению со случаем, когда mv_colA является вектором движения, имеющим направление, противоположное изображенному на Фиг. 11a, то есть, в случае, когда mv_colA генерируется из другого кадра до изображения 1112, предшествующего по времени, когда mv_colA является вектором движения в направлении Фиг. 11a, то вектор движения текущего блока 1100 может быть спрогнозирован более точно.
Таким образом, если направление от текущего блока 1100 до блока 1120 в положении, совмещенном с текущим блоком 1100, является направлением List0, то вектор mv_colA движения блока 1120 в положении, совмещенном с текущим блоком 1100, должен быть в направлении List1, так что возможность того, что текущее изображение 1110 может существовать между изображением 1112, предшествующим по времени, и изображением 1114, следующим по времени, как изображено на Фиг. 11a, может возрасти, а вектор движения текущего блока 1100 может быть спрогнозирован более точно на основании mv_colA.
Дополнительно, так как изображения 1110-1114, изображенные на Фиг. 11a, расположены во временной последовательности, то предиктор mv_temporal вектора движения текущего блока 1100 может быть генерирован на основании подсчета (РОС) последовательности изображения. Так как изображение, на которое опирается текущий блок 1100, может быть изображением, отличным от изображений 1112 и 1114, изображенных на Фиг. 11a, то предиктор mv_temporal вектора движения текущего блока 1100 генерируется на основании РОС.
Например, если РОС текущего изображения является CurrPOC, а РОС изображения, на которое опирается текущее изображение, - это CurrRefPOC, то предиктор mv_temporal вектора движения текущего блока 1100 может быть генерирован в соответствии с представленными ниже уравнениями:
Scale=(CurrPOC-CurrRefPOC)/(ColPOC-ColRefPOC)
mv_temporal=Scale*mv_colA
где ColPOC является POC изображения 1112, предшествующего по времени, в которое включен блок 1120 в положении, совмещенном с текущим блоком 1100, а ColRefPOC является РОС изображения 1114, следующего по времени, в которое включен блок 1122, на который опирается блок 1120 в положении, совмещенном с текущим блоком 1100.
Фиг. 11b изображает способ генерирования предиктора вектора движения В изображением, в соответствии с другим примерным вариантом осуществления. По сравнению со способом, изображенным на Фиг. 11a, блок в положении, совмещенном с текущим блоком 1100, существует в изображении 1114, следующим по времени.
Со ссылкой на Фиг. 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, следующего по времени.
Подобно Фиг. 11a, в примерном варианте осуществления Фиг. 11b, текущее изображение 1110, являющееся В изображением, существует между изображением 1112, предшествующим по времени, и изображением 1114, следующим по времени. Таким образом, если вектор mv_colB движения блока 1130 в положении, совмещенном с текущим блоком 1100, генерируется из изображения 1112, предшествующего по времени, то вектор движения текущего блока 1100 может быть спрогнозирован более точно на основании mv_L0B. Другими словами, по сравнению со случаем, когда mv_colB является вектором движения, имеющим направление, противоположное изображенному на Фиг. 11b, то есть, в случае, когда mv_colB генерируется из другого изображения после изображения 1114, следующего по времени, когда mv_colB является вектором движения в направлении Фиг. 11b, то вектор движения текущего блока 1100 может быть спрогнозирован более точно.
Таким образом, если направление от текущего блока 1100 до блока 1130 в положении, совмещенном с текущим блоком 1100, является направлением List1, то вектор mv_colB движения блока 1130 в положении, совмещенном с текущим блоком 1100, должен быть в направлении List0, так что возможность того, что текущее изображение 1110 может существовать между изображением 1112, предшествующим по времени, и изображением 1114, следующим по времени, как изображено на Фиг. 11b, может возрасти, а вектор движения текущего блока 1100 может быть спрогнозирован более точно на основании mv_colB.
Дополнительно, так как изображение, на которое опирается текущий блок 1100, может быть изображением, отличным от изображений 1112 и 1114, изображенных на Фиг. 11b, то предиктор вектора движения текущего блока 1100 может генерироваться на основании РОС.
Например, если РОС текущего изображения является CurrPOC, а РОС изображения, на которое опирается текущее изображение, - это CurrRefPOC, то предиктор вектора движения текущего блока 1100 может быть генерирован в соответствии с представленными ниже уравнениями:
Scale=(CurrPOC-CurrRefPOC)/(ColPOC-ColRefPOC)
mv_temporal=Scale*mv_colB
где ColPOC является POC изображения 1114, следующего по времени, в которое включен блок 1130 в положении, совмещенном с текущим блоком 1100, а ColRefPOC является РОС изображения 1112, предшествующего по времени, в которой включен блок 1132, на который опирается блок 1130 в положении, совмещенном с текущим блоком 1100.
При генерировании вектора движения текущего блока 1100 В изображения с помощью элемента 910 прогнозирования, может быть использован один из способов, изображенных на Фиг. 11a и 11b. Другими словами, так как предиктор вектора движения генерируется с помощью вектора движения и временного расстояния блока 1120 или 1130 в положении, совмещенном с текущим блоком 1100, то предикторы вектора движения могут генерироваться с помощью способов, изображенных на Фиг. 11a и 11b, только если существуют векторы движения блоков 1120 и 1130 в совмещенном положении. Таким образом, элемент 910 прогнозирования, в соответствии с примерным вариантом осуществления, генерирует предиктор вектора движения текущего блока 1100 с только помощью блока, имеющего вектор движения блоков 1120 и 1130 в совмещенном положении.
Например, когда блок 1120 в совмещенном положении изображения 1112, предшествующего по времени, кодируется с помощью внутреннего прогнозирования, а не взаимного прогнозирования, то вектор движения блока 1120 не существует, и, таким образом, предиктор вектора движения текущего блока 1100 не может быть генерирован с помощью способа генерирования предиктора вектора движения, изображенного на Фиг. 11a.
Блок 1120 в положении, совмещенном с изображением 1112, предшествующим по времени, и блок 1130 в положении, совмещенном с изображением 1114, следующим по времени, могут использоваться для генерирования предиктора вектора движения текущего изображения 1110 В изображения с помощью элемента 910 прогнозирования, как изображено на Фиг. 11a и 11b. Таким образом, предиктор вектора движения текущего изображения 1110 может быть декодирован только тогда, когда устройство 900 для кодирования вектора движения знает, какой из блоков 1120 и 1130, в положении, совмещенном с текущим блоком 1100, используется для генерирования предиктора mv_temporal вектора движения.
С этой целью, устройство 900 для кодирования вектора движения может кодировать информацию для определения того, какой из блоков 1120 и 1130 в положении, совмещенном с текущим блоком 1100, используется для генерирования предиктора mv_temporal вектора движения, и может вставлять кодированную информацию в заголовок блока или заголовок фрагмента.
Фиг. 11c изображает способ генерирования предиктора вектора движения Р изображения, в соответствии с примерным вариантом осуществления.
Со ссылкой на Фиг. 11c, предиктор вектора движения текущего блока 1100 текущего изображения 1110 может быть генерирован с помощью вектора движения текущего блока 1140 в положении, совмещенном с изображением 1112, предшествующим по времени. Например, если вектор mv_colC движения блока 1140 в положении, совмещенном с текущим блоком 1100, генерируется для искомого блока 1142 другого изображения 1116, предшествующего по времени, то кандидат предиктора mv_L0C вектора движения текущего блока 1100 может быть генерирован в соответствии с представленным ниже уравнением:
mv_L0C=(t6/t5)×mv_colC
Как описано выше по тексту в отношении Фиг. 11a и 11b, mv_L0C также может быть генерирован на основании РОС. На основании РОС текущего изображения 1110, РОС изображения, на которое опирается текущее изображение 1110, РОС изображения 1112, предшествующего по времени, и РОС другого изображения 1116, предшествующего по времени, может быть генерирован mv_L0C.
Так как текущее изображение 1110 является Р изображением, то число предикторов вектора движения текущего блока 1100 равно 1, в отличие от Фиг. 11a и 11b.
В итоге, набор С кандидатов предикторов вектора движения, в соответствии с Фиг. 10a, 10b и 11a-11c, может быть генерирован в соответствии с представленным ниже уравнением:
С={медиана(mv_a0, mv_b0, mv_c0), mv_a0, mv_a1…, mv_aN, mv_b0, mv_b1…, mv_bN, mv_c, mv_d, mv_e, mv_temporal}.
Альтернативно, набор С может быть генерирован путем сокращения числа кандидатов предикторов вектора движения в соответствии с представленным ниже уравнением:
С={медиана(mv_a', mv_b', mv_c'), mv_a', mv_b', mv_c', mv_temporal}.
В данном документе, mv_x обозначает вектор движения блока х, медиана () обозначает медианное значение, а mv_temporal обозначает кандидатов предикторов вектора движения с помощью временного расстояния, описанного выше по тексту в отношении Фиг. 11a-11c.
Дополнительно, mv_a' обозначает первый действительный вектор движения среди mv_a0, mv_a1…, mv_aN. Например, когда блок а0 кодирован с помощью внутреннего прогнозирования либо опирается на изображение, отличное от изображения, на которое опирается текущий блок, то вектор mv_a0 движения блока а0 недействителен, и, таким образом, mv_a'=mv_a1, и если вектор движения блока а1 также недействителен, то mv_a'=mv_a2.
Подобным образом, mv_b' обозначает первый действительный вектор движения среди mv_b0, mv_b1…, mv_bN, а mv_c' обозначает первый действительный вектор движения среди mv_с, mv_d и mv_e.
Вектор движения блока, который опирается на изображение, отличное от изображения, на которое опирается текущий блок, среди векторов движения блоков, смежных с текущим блоком, не может эффективно прогнозировать вектор движения текущего блока. Таким образом, вектор движения блока, который опирается на изображение, отличное от изображения, на которое опирается текущий блок, может быть исключен из набора С кандидатов предикторов вектора движения.
Явный режим является режимом кодирования информации, указывающей, какой вектор движения используется в качестве предиктора вектора движения текущего блока. Например, когда вектор движения кодируется в явном режиме, двоичное число может быть назначено каждому из элементов набора С, то есть кандидатам предикторам вектора движения, и если один из них используется в качестве предиктора вектора движения текущего блока, то соответствующее двоичное число может быть выводом.
Так как соответствующее двоичное число назначается каждому кандидату предиктору вектора движения, чтобы выделить один из элементов набора С, и оно является выводом, то по мере уменьшения числа элементов в наборе С, элементы набора С могут быть выделены как двоичные числа с меньшим числом битов.
Таким образом, если совпадающий кандидат предиктора вектора движения есть в наборе С, то совпадающий кандидат предиктора вектора движения может быть исключен из набора С, а двоичные числа назначены кандидатам предикторов вектора движения. Например, когда набор С={медиана(mv_a', mv_b', mv_c'), mv_a', mv_b', mv_c', mv_temporal}, как описано выше по тексту, то если mv_a', mv_b' и mv_c' одинаковы, то набор С может быть определен как три элемента, как в С={медиана(mv_a', mv_b', mv_c'), mv_a', mv_temporal}, а двоичные числа назначены. Если элементы набора С могут быть выделены с помощью 3 битов до того, как совпадающий кандидат предиктора вектора движения исключен из набора С, то элементы набора С могут быть выделены с помощью 2 битов после того, как совпадающий кандидат предиктора вектора движения исключен из набора С.
Вместо исключения как совпадающий кандидат предиктора вектора движения из набора С, заранее определенный вес может быть добавлен, чтобы увеличить вероятность того, что совпадающий кандидат предиктора вектора движения может быть определен в качестве предиктора вектора движения текущего блока. Так как на примере, описанном выше по тексту, mv_a', mv_b' и mv_c' одинаковы, и только mv_a' включен в набор С, то вероятность того, что mv_a' может быть определен в качестве предиктора вектора движения текущего блока, может быть увеличена за счет добавления заранее определенного веса к mv_a'.
Дополнительно, когда есть только один кандидат предиктора вектора движения, то, несмотря на явный режим, двоичные числа для выделения одного из кандидатов предикторов вектора движения не могут быть кодированы. Например, когда набор C={медиана(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} и блоки а0-aN, блоки b0-bN, блок с, блок d и блок е являются блоками, спрогнозированными с помощью внутреннего прогнозирования, то набор C={mv_temporal}, таким образом, включает в основном один элемент. Таким образом, в этом случае, устройство 900 для кодирования вектора движения не кодирует двоичные числа для выделения одного кандидата предиктора вектора движения среди множества кандидатов предикторов вектора движения, несмотря на явный режим.
Специалистам в данной области техники будет понятно, что другие кандидаты предикторы вектора движения, кроме описанных выше по тексту в отношении явного режима, также могут существовать.
(2) неявный режим
Другой из способов кодирования предиктора вектора движения, который может быть выбран элементом 910 прогнозирования, - это режим кодирования только той информации, которая указывает, что предиктор вектора движения текущего блока генерируется на основании блоков или пикселей, включенных в ранее кодированную область, смежную с текущим блоком. В отличие от явного режима, неявный режим является режимом кодирования информации, указывающей генерирование предиктора вектора движения в неявном режиме без кодирования информации для выделения предиктора вектора движения.
Как описано выше по тексту, кодек MPEG-4H/264/MPEG-4 AVC использует векторы движения ранее кодированных блоков, смежных с текущим блоком, для прогнозирования вектора движения текущего блока. То есть медиана векторов движения ранее кодированных блоков, смежных с левой, правой и верхней правой сторонами текущего блока, используется в качестве предиктора вектора движения текущего блока. В таком случае, в отличие от явного режима, информация для выбора одного из кандидатов предикторов вектора движения не обязательно должна быть кодирована.
Другими словами, если только информация, указывающая, что предиктор вектора движения текущего блока кодирован в неявном режиме, кодирована в процессе кодирования изображения, то медианное значение векторов движения ранее кодированных блоков, смежных с левой, верхней и верхней правой сторонами текущего блока, может быть использовано в качестве предиктора вектора движения текущего блока в процессе декодирования изображения.
Дополнительно, способ кодирования изображения, в соответствии с примерным вариантом осуществления, обеспечивает новый неявный режим генерирования предиктора вектора движения путем использования ранее кодированных значений пикселей, смежных с текущим блоком, в качестве шаблона. Это будет описано более подробно со ссылкой на Фиг. 12a.
Фиг. 12a изображает способ генерирования предиктора вектора движения в явном режиме, в соответствии с примерным вариантом осуществления.
Со ссылкой на Фиг. 12a, пиксели 1222, включенные в ранее кодированную область 1220, смежную с текущим блоком 1200 текущего изображения 1210, используются для генерирования предиктора вектора движения текущего блока 1200. Соответствующие пиксели 1224 определяются путем поиска опорного изображения 1212 с помощью смежных пикселей 1222. Соответствующие пиксели 1224 могут быть определены путем вычисления суммы (SAD) абсолютных разниц. Когда соответствующие пиксели 1224 определены, то генерируется вектор mv_template движения смежных пикселей 1222, и вектор mv_template движения может быть использован в качестве предиктора вектора движения текущего блока 1200.
Набор С кандидатов предикторов вектора движения может быть использован для поиска mv_template из опорного изображения 1212. Это будет описано более подробно со ссылкой на Фиг. 12b.
Фиг. 12b изображает способ поиска предиктора вектора движения в неявном режиме, в соответствии с примерным вариантом осуществления.
Со ссылкой на Фиг. 12b, когда элемент 910 прогнозирования ищет опорное изображение 1212 с помощью пикселей 1222, смежных с текущим блоком 1200, может быть установлен заранее определенный диапазон 1226 поиска, а соответствующие пиксели 1224 могут быть найдены только внутри заранее определенного диапазона 1226 поиска.
Диапазон 1226 поиска может быть установлен на основании кандидатов предикторов вектора движения, описанных выше по тексту. Центр диапазона 1226 поиска может быть определен на основании кандидатов предикторов вектора движения, а область, включенная в заранее заданный диапазон пикселей, может быть установлена, как и диапазон 1226 поиска, из заранее заданного центра диапазона поиска. Так как может быть множество кандидатов предикторов вектора движения, то множество диапазонов 1226 поиска могут быть установлены, а диапазоны 1226 поиска могут быть установлены в различных изображениях.
Соответствующие пиксели 1224, имеющие наименьшие SAD, определены путем поиска множества диапазонов 1226 поиска, а mv_template генерируется на основании этого определения. Размеры и формы пикселей 1222, смежных с текущим блоком 1200, могут быть различными. Это будет описано более подробно со ссылкой на Фиг. 12c.
Фиг. 12c изображает шаблон, используемый для генерирования предикторов вектора движения, в соответствии с примерным вариантом осуществления.
Со ссылкой на Фиг. 12c, пиксели 1222, смежные с текущим блоком 1200, которые используются для генерирования предиктора вектора движения текущего блока 1200 с помощью элемента 910 прогнозирования, как изображено на Фиг. 12a, могут отличаться по размерам и формам.
Например, когда размер текущего блока 1200 равен 4×4, пиксели 1222, смежные с текущим блоком 1220, могут быть установлены для включения только девяти пикселей, как изображено на Фиг. 12c, а пиксели 1228, смежные с текущим блоком 1220, могут быть установлены так, чтобы включать девять или более пикселей. Дополнительно, пиксели 1222 могут быть установлены так, чтобы иметь форму, отличную от формы '┌', как изображено на Фиг. 12a-12c.
Фиг. 12Dd изображает шаблон, используемый для генерирования предиктора вектора движения, в соответствии с другим примерным вариантом осуществления.
При вычислении SAD, не все пиксели, смежные с текущим блоком 1200, используются, и только некоторые из пикселей 1222, смежные с текущим блоком 1200, могут быть использованы. Например, SAD может быть вычислен с помощью только трех, пяти или семи пикселей из девяти пикселей 1222, имеющих размер 4×4, смежных с текущим блоком 1200. Фиг. 12d изображает шаблон для вычисления SAD с помощью только одного пикселя, смежного с верхней левой стороной текущего блока, крайнего правого пикселя среди пикселей, смежных с его верхней стороной, и крайнего нижнего пикселя среди пикселей, смежных с его левой стороной.
Информация о различных размерах и формах шаблонов, описанных выше по тексту со ссылкой на Фиг. 12b-12d, может быть кодирована отдельно от вектора движения, может быть кодирована как параметры фрагментов и вставлена в заголовок фрагмента, либо может быть кодирована как последовательность параметров и вставлена в поток двоичных данных.
Если режим использования медианы векторов движения смежных блоков в качестве предиктора вектора движения определен как «неявный режим_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 кодирует информацию, указывающую, что предиктор вектора движения генерирован в явном режиме, и информацию, указывающую, какой кандидат предиктора вектора движения используется в качестве предиктора вектора движения текущего блока.
Дополнительно, если множество кандидатов предикторов вектора движения включают в себя mv_temporal, описанный выше по тексту со ссылкой на Фиг. 11a-11c, то также кодируется информация, указывающая, является ли блок 1200 или 1300 в положении, совмещенном с текущим блоком, на котором основано генерирование mv_temporal, блоком изображения, предшествующего по времени, или блоком изображения, следующего по времени.
Напротив, когда элемент 910 прогнозирования выбирает, что вектор движения текущего блока кодируется в неявном режиме, то первый кодер 920 кодирует информацию, указывающую, что предиктор вектора движения текущего блока генерирован в неявном режиме. Другими словами, первый кодер 920 кодирует информацию, указывающую, что предиктор вектора движения текущего блока генерирован с помощью блоков или пикселей, смежных с текущим блоком. Если используются два или более неявных режима, то первый кодер 920 может дополнительно кодировать информацию, указывающую, какой неявный режим используется для генерирования предиктора вектора движения текущего блока.
Неявный режим может быть режимом, в котором предиктор вектора движения текущего блока генерируется с помощью установки диапазона поиска на основании кандидатов предикторов вектора движения текущего блока и с помощью поиска внутри диапазона поиска, установленного на основании пикселей ранее кодированной области, смежной с текущим блоком, как изображено на Фиг. 12c.
Второй кодер 930 кодирует вектор движения текущего блока на основании предиктора вектора движения, определенного элементом 910 прогнозирования. Иначе, второй кодер 930 генерирует вектор разницы путем извлечения предиктора вектора движения, генерированного элементом 910 прогнозирования из вектора движения текущего блока, генерированного в результате компенсации движения, и кодирует информацию о векторе разницы.
Фиг. 13 является структурной схемой устройства 1300 для декодирования вектора движения, в соответствии с примерным вариантом осуществления.
Устройство 1300 для декодирования вектора движения, которое может быть включено в устройство 200 декодирования изображения, описанное выше по тексту в отношении Фиг. 2, или декодер 500 изображения, описанное выше по тексту в отношении Фиг. 5, будет описано подробно. Со ссылкой на Фиг. 13, устройство 1300 для декодирования вектора движения включает в себя первый декодер 1310, второй декодер 1320, элемент 1330 прогнозирования и устройство 1340 восстановления вектора движения.
Первый декодер 1310 декодирует информацию о предикторе вектора движения текущего блока, который включен в поток двоичных данных. Более подробно, первый декодер 1310 декодирует информацию, указывающую, кодирован ли предиктор вектора движения текущего блока в явном режиме или неявном режиме.
Когда предиктор вектора движения текущего блока кодирован в явном режиме, то первый декодер 1310 дополнительно декодирует информацию, указывающую один предиктор вектора движения, используемый в качестве предиктора вектора движения текущего блока, среди множества предикторов вектора движения.
Дополнительно, если множество кандидатов предикторов вектора движения включают в себя mv_temporal, описанный выше по тексту со ссылкой на Фиг. 11a-11c, то также декодируется информация, указывающая, является ли блок 1200 или 1300 в положении, совмещенном с текущим блоком, на основании которого генерируется mv_temporal, блоком изображения, предшествующего по времени, или блоком изображения, следующего по времени.
Когда предиктор вектора движения текущего блока кодирован в неявном режиме, первый декодер 1310 может дополнительно декодировать информацию, указывающую, какой из множества неявных режимов используется для кодирования предиктора вектора движения текущего блока.
Неявный режим может быть режимом, в котором предиктор вектора движения текущего блока генерируется с помощью установки диапазона поиска на основании кандидатов предикторов вектора движения текущего блока и с помощью писка внутри диапазона поиска, установленного на основании пикселей ранее кодированной области, смежной с текущим блоком, как изображено на Фиг. 12c.
Второй декодер 1320 декодирует вектор разницы между вектором движения и предиктором вектора движения текущего блока, включенного в поток двоичных данных.
Элемент 1330 прогнозирования генерирует предиктор вектора движения текущего блока на основании информации о предикторе вектора движения текущего блока, который декодирован первым устройством 1310 декодирования.
Когда информация о предикторе вектора движения текущего блока, который кодирован в явном режиме, декодируется, то элемент 1330 прогнозирования генерирует один предиктор вектора движения среди кандидатов предикторов вектора движения, описанных выше по тексту в отношении Фиг. 10a, 10b и 11a-11c, и использует его в качестве предиктора вектора движения текущего блока.
Когда информация о предикторе вектора движения текущего блока, которая кодирована в неявном режиме, декодируется, то элемент 1330 прогнозирования генерирует предиктор вектора движения текущего блока, используя блоки или пиксели, включенные в ранее кодированную область, смежную с текущим блоком. Более подробно, элемент 1330 прогнозирования генерирует медианное значение векторов движения блоков, смежных с текущим блоком, в качестве предиктора вектора движения текущего блока, либо генерирует предиктор вектора движения текущего блока с помощью поиска опорного изображения, используя пиксели, смежные с текущим блоком.
Устройство 1340 восстановления вектора движения восстанавливает вектор движения текущего блока путем суммирования предиктора вектора движения, генерированного элементом 1330 прогнозирования, и вектора разницы, декодированного вторым декодером 1320. Восстановленный вектор движения используется для компенсации движения текущего блока.
Фиг. 14 является блок-схемой последовательности операций способа кодирования вектора движения, в соответствии с примерным вариантом осуществления.
Со ссылкой на Фиг. 14 устройство кодирования вектора движения, в соответствии с примерным вариантом осуществления, выбирает один из явного режима и неявного режима в качестве режима кодирования информации о предикторе вектора движения в операции 1410.
Явный режим является режимом кодирования информации, указывающей одного кандидата предиктора вектора движения среди по меньшей мере одного кандидата предиктора вектора движения в качестве информации о предикторе вектора движения, а неявный режим является режимом кодирования информации, указывающей, что предиктор вектора движения генерирован на основании блоков или пикселей, включенных в ранее кодированную область, смежную с текущим блоком, в качестве информации о предикторе вектора движения. Подробные описания были даны в отношении Фиг. 10a-10e, 11a-11c и 12a-12c.
Режим может быть выбран на основании размера текущего блока, то есть, глубины текущего блока, или выбран в элементе текущего изображения или фрагмента, в который включен текущий блок. Альтернативно, режим может быть выбран в соответствии с тем, кодирован ли текущий блок в режиме пропуска.
При операции 1420, устройство кодирования вектора движения определяет предиктор вектора движения в соответствии с режимом, выбранным в операции 1410. Более подробно, устройство кодирования вектора движения определяет предиктор вектора движения текущего блока на основании явного режима или неявного режима, выбранного в операции 1410. Более подробно, устройство кодирования вектора движения определяет один предиктор вектора движения среди по меньшей мере одного кандидата предиктора вектора движения в качестве предиктора вектора движения текущего блока в явном режиме или определяет предиктор вектора движения текущего блока на основании блоков или пикселей, смежных с текущим блоком в неявном режиме.
При операции 1430, устройство кодирования вектора движения кодирует информацию о предикторе вектора движения, определенном в операции 1420.
В случае явного режима, устройство кодирования вектора движения кодирует одного кандидата предиктора вектора движения среди по меньшей мере одного кандидата предиктора вектора движения, и информацию, указывающую, что информация о предикторе вектора движения текущего блока кодирована в явном режиме.
Дополнительно, если множество кандидатов предикторов вектора движения включают в себя mv_temporal, описанный выше по тексту со ссылкой на Фиг. 11a-11c, то также кодируется информация, указывающая на то, является ли блок 1200 или 1300 в положении, совмещенном с текущим блоком, на основании которого генерируется mv_temporal, блоком изображения, предшествующего по времени, или блоком изображения, следующего по времени.
В случае неявного режима, устройство кодирования вектора движения кодирует информацию, указывающую, что предиктор вектора движения текущего блока генерирован на основании блоков или пикселей, включенных в ранее кодированную область, смежную с текущим блоком. В случае множества неявных режимов, устройство кодирования вектора движения может дополнительно кодировать информацию, указывающую один из множества неявных режимов.
Неявный режим может быть режимом, в котором предиктор вектора движения текущего блока генерируется путем установки диапазона поиска на основании кандидатов предикторов вектора движения текущего блока и путем поиска внутри диапазона поиска, установленного на основании пикселей ранее кодированной области, смежной с текущим блоком, как изображено на Фиг. 12c.
При операции 1440, устройство кодирования вектора движения кодирует вектор разницы, генерированный путем извлечения предиктора вектора движения, определенного в операции 1420, из вектора движения текущего блока.
Фиг. 15 является блок-схемой последовательности операций способа декодирования вектора движения, в соответствии с примерным вариантом осуществления.
Со ссылкой на Фиг. 15, устройство декодирования вектора движения, в соответствии с примерным вариантом осуществления, декодирует информацию о предикторе вектора движения текущего блока, которая включена в поток двоичных данных, в операции 1510. Более подробно, устройство декодирования вектора движения декодирует информацию о режиме, используемом для кодирования предиктора вектора движения текущего блока, среди явного режима или неявного режима.
В случае явного режима, устройство декодирования вектора движения декодирует информацию, указывающую, что предиктор вектора движения текущего блока кодирован в явном режиме, и информацию об одном кандидате предикторе вектора движения среди по меньшей мере одного кандидата предиктора вектора движения.
Дополнительно, если множество кандидатов предикторов вектора движения включают в себя mv_temporal, описанный выше по тексту со ссылкой на Фиг. 11a-11c, то также кодируется информация, указывающая на то, является ли блок 1200 или 1300 в положении, совмещенном с текущим блоком, на основании которого генерируется mv_temporal, блоком изображения, предшествующего по времени, или блоком изображения, следующего по времени.
В случае неявного режима, устройство декодирования вектора движения декодирует информацию, указывающую, что предиктор вектора движения текущего блока генерирован на основании блоков или пикселей, включенных в ранее декодированную область, смежную с текущим блоком. В случае множества неявных режимов, устройство декодирования вектора движения может дополнительно декодировать информацию, указывающую один из множества неявных режимов.
Неявный режим может быть режимом, в котором предиктор вектора движения текущего блока генерируется путем установки диапазона поиска на основании кандидатов предикторов вектора движения текущего блока и путем поиска внутри диапазона поиска, установленного на основании пикселей ранее кодированной области, смежной с текущим блоком, как изображено на Фиг. 12c.
При операции 1520, устройство декодирования вектора движения декодирует информацию о векторе разницы. Вектор разницы является вектором разницы между предиктором вектора движения текущего блока и вектором движения текущего блока.
При операции 1530, устройство декодирования вектора движения генерирует предиктор вектора движения текущего блока на основании информации о предикторе вектора движения, который был кодирован на операции 1510. Более подробно, устройство декодирования вектора движения генерирует предиктор вектора движения текущего блока в соответствии с явным режимом или неявным режимом. Более подробно, устройство декодирования вектора движения генерирует предиктор вектора движения текущего блока путем выбора кандидата предиктора вектора движения среди по меньшей мере одного кандидата предиктора вектора движения текущего блока либо путем использования блоков или пикселей, включенных в ранее декодированную область, смежную с текущим блоком.
При операции 1540, устройство декодирования вектора движения восстанавливает вектор движения текущего блока путем суммирования вектора разницы, декодированного в операции 1520, и предиктора вектора движения, генерированного в операции 1530.
Как описано выше по тексту, в соответствии с примерными вариантами осуществления, вектор движения может быть спрогнозирован более точно с помощью использования как режима, в котором информация о векторе движения не кодируется отдельно, так и режима, в котором информация о векторе движения кодируется.
Несмотря на то, что примерные варианты осуществления были подробно изображены и описаны выше по тексту, специалистам в данной области техники будет понятно, что могут быть сделаны различные изменения в форме и деталях, при этом не удаляясь от сущности и объема идеи изобретения, определенной в последующей формуле изобретения, и ее эквивалентах. Также, иллюстративное воплощение может быть воплощено в виде машиночитаемых кодов на машиночитаемом носителе информации.
Например, устройство кодирования или декодирования изображения, кодер или декодер изображения, устройство для кодирования вектора движения и устройство для декодирования вектора движения, изображенные на Фиг. 1, 2, 4, 5, 9 и 13, могут включать в себя магистральную шину, соединенную с каждым элементом устройства или устройства для кодирования, по меньшей мере один процессор, который связан с магистральной шиной и используется для выполнения команд, и устройство памяти, соединенное с магистральной шиной для хранения команд, принятых сообщений и генерированных сообщений.
Считываемый компьютером носитель информации является любым устройством хранения данных, способным хранить данные, которые в последующем будут прочитаны компьютерной системой. Примеры считываемых компьютером носителей информации включают в себя постоянное запоминающее устройство (ROM), оперативное запоминающее устройство (RAM), CD-ROM, магнитные пленки, гибкие диски и оптические устройства хранения данных. Считываемый компьютером носитель информации может также быть распределен по сети, соединенной с компьютерными системами, так что считываемый компьютером код хранится и выполняется в распределенной манере.
Изобретение относится к технологиям кодирования и декодирования видеоданных. Техническим результатом является повышение эффективности декодирования изображений за счет настройки размера единицы кодирования. Предложен способ декодирования изображения. Способ содержит этап, на котором получают информацию режима предсказания текущего блока из битового потока, а также осуществляют получение кандидатов-предикторов вектора движения текущего блока с использованием блока, совместно размещенного с текущим блоком в опорном кадре во временном направлении, на основании полученной информации режима предсказания. Далее согласно способу получают предиктор вектора движения текущего блока из числа полученных кандидатов-предикторов вектора движения на основании информации, указывающей предиктор вектора движения, используемый для текущего блока. 1 з.п. ф-лы, 27 ил.
1. Способ декодирования изображения, причем способ содержит:
получение информации режима предсказания текущего блока из битового потока;
получение кандидатов-предикторов вектора движения текущего блока с использованием блока, совместно размещенного с текущим блоком в опорном кадре во временном направлении, на основании полученной информации режима предсказания;
получение предиктора вектора движения текущего блока из числа полученных кандидатов-предикторов вектора движения на основании информации, указывающей предиктор вектора движения, используемый для текущего блока;
получение вектора движения текущего блока на основании полученного предиктора вектора движения и разностного вектора, получаемого из битового потока, причем разностный вектор представляет разность векторов между вектором движения и предиктором вектора движения; и
восстановление текущего блока посредством использования вектора движения,
при этом изображение иерархически разбивается на множество максимальных единиц кодирования согласно информации о максимальном размере единицы кодирования,
единица кодирования текущей глубины является одной из прямоугольных единиц данных, разбитых из единицы кодирования более верхней глубины,
при этом единица кодирования текущей глубины разбивается на единицы кодирования более нижней глубины независимо от соседних единиц кодирования, и
когда единица кодирования текущей глубины не разбивается на единицы кодирования более нижней глубины, единица кодирования текущей глубины разбивается на по меньшей мере одну единицу предсказания,
причем текущий блок является одним из упомянутой по меньшей мере одной единицы предсказания.
2. Способ по п. 1, в котором получение предиктора вектора движения содержит масштабирование вектора движения блока, совместно размещенного с текущим блоком в опорном кадре, на основании временного расстояния между опорным кадром и текущим кадром.
Колосоуборка | 1923 |
|
SU2009A1 |
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
Способ приготовления мыла | 1923 |
|
SU2004A1 |
Пломбировальные щипцы | 1923 |
|
SU2006A1 |
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
СПОСОБ ОПРЕДЕЛЕНИЯ ВЕКТОРОВ ДВИЖЕНИЯ ДЛЯ ТЕКУЩЕГО БЛОКА В КАДРЕ, ПОДЛЕЖАЩЕМ ДЕКОДИРОВАНИЮ | 2006 |
|
RU2360375C2 |
Авторы
Даты
2016-12-20—Публикация
2013-12-27—Подача