Способ и устройство для кодирования/декодирования изображений с использованием вектора движения
Иллюстрации
Показать всеИзобретение относится к технологиям кодирования/декодирования изображения с использованием вектора движения. Техническим результатом является уменьшение объема памяти, требуемого для хранения векторов движения, за счет усечения вектора движения. Предложено устройство декодирования изображения. Устройство содержит буфер опорной картинки для хранения опорной картинки. Устройство содержит блок компенсации движения для генерирования блока предсказания с использованием опорной картинки и вектора движения опорной картинки. При этом вектор движения опорной картинки усекается в предварительно определенном фиксированном диапазоне. Устройство декодирования изображения декодирует битовый поток в режиме внутреннего предсказания или в режиме внешнего предсказания для вывода реконструированного изображения. 4 з.п. ф-лы, 15 ил., 18 табл.
Реферат
ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится к обработке изображения, и более конкретно, к способу кодирования/декодирования видео с использованием усеченного вектора движения и устройству для этого.
УРОВЕНЬ ТЕХНИКИ
В последнее время в соответствии с распространением систем вещания, поддерживающих разрешение высокой четкости (HD) в стране и во всем мире, многие пользователи привыкли к изображению c высоким разрешением и четкостью, так что многие организации провели много попыток для разработки видеоустройств следующего поколения. К тому же, так как интерес к HDTV и сверхвысокому разрешению (UHD), имеющему разрешение в четыре раза выше, чем разрешение HDTV, увеличился, потребовалась технология сжатия для видео с более высоким разрешением и более высокой четкостью.
Для сжатия изображения могут быть использованы технология внешнего предсказания для предсказания значений пикселей, включенных в текущую картинку из картинки до и/или после текущей картинки, технология внутреннего предсказания для предсказания значений пикселей с использованием информации пикселей в данной картинке, технология энтропийного кодирования для присвоения сокращенного кода символу, имеющему высокую частоту появления, длинного кода символу, имеющему низкую частоту появления, или подобные.
РАСКРЫТИЕ
ТЕХНИЧЕСКАЯ ПРОБЛЕМА
Настоящее изобретение предоставляет способ кодирования/декодирования видео с использованием усеченного вектора движения и устройство для него.
Настоящее изобретение также предоставляет способ для усечения вектора движения опорной картинки.
Настоящее изобретение также предоставляет способ для передачи информации о векторе движения.
ТЕХНИЧЕСКОЕ РЕШЕНИЕ
1. Вариант осуществления настоящего изобретения относится к способу кодирования изображения. Способ включает в себя усечение вектора движения опорной картинки в предварительно определенном динамическом диапазоне, чтобы сгенерировать усеченный вектор движения, сохранение усеченного вектора движения в буфере и кодирование вектора движения древовидного блока кодирования с использованием вектора движения, сохраненного в буфере.
2. В п.1, динамический диапазон может быть задан уровнем видеокодека.
3. В п.1, динамический диапазон может быть определен посредством предварительно определенной глубины в битах, и глубина в битах может быть задана уровнем видеокодека.
4. В п.1, X-составляющая и Y-составляющая вектора движения опорной картинки могут быть усечены в разных динамических диапазонах.
5. Еще один вариант осуществления настоящего изобретения относится к способу декодирования изображения. Способ включает в себя усечение вектора движения опорной картинки в предварительно определенном динамическом диапазоне, чтобы сгенерировать усеченный вектор движения, сохранение усеченного вектора движения в буфере, получение вектора движения древовидного блока кодирования с использованием вектора движения, сохраненного в буфере и выполнение процесса декодирования с внешним предсказанием с использованием вектора движения древовидного блока кодирования.
6. В п.5, динамический диапазон может быть задан уровнем видеокодека.
7. В п.5, динамический диапазон может быть определен посредством предварительно определенной глубины в битах, и глубина в битах может быть задана уровнем видеокодека.
8. В п.5, динамический диапазон может быть определен посредством предварительно определенной глубины в битах, и глубина в битах может быть получена посредством набора параметров последовательности, передаваемого из устройства кодирования изображения.
9. В п.8, набор параметров последовательности может включать в себя флаг, указывающий является ли вектор движения опорной картинки усеченным, и параметр для получения глубины в битах.
10. В п.9, способ декодирования изображения может включать в себя сжатие вектора движения опорной картинки, в котором набор параметров последовательности включает в себя флаг, указывающий является ли вектор движения опорной картинки сжатым, и параметр для получения коэффициента сжатия вектора движения опорной картинки.
11. В п.5, способ декодирования изображения может включать в себя ограничение разрешения представления вектора движения опорной картинки.
12. В п.5, усеченный вектор движения может быть сохранен согласно приоритету.
13. В п.5, усеченный вектор движения может быть вектором движения блока, кодированного в режиме внешнего предсказания.
14. В п.5, способ декодирования изображения может включать в себя выполнение масштабирования вектора движения опорной картинки.
15. В п.5, X-составляющая и Y-составляющая вектора движения опорной картинки могут быть усечены в разных динамических диапазонах.
16. В п.15, динамический диапазон X-составляющей и динамический диапазон Y-составляющей могут быть заданы уровнем видеокодека.
17. Еще один вариант осуществления настоящего изобретения относится к устройству декодирования изображения. Устройство включает в себя буфер опорной картинки, хранящий опорную картинку, и компенсатор движения, генерирующий предсказанный блок с использованием опорной картинки и вектора движения опорной картинки, при этом вектор движения опорной картинки усекается в предварительно определенном динамическом диапазоне.
18. В п.17, динамический диапазон может быть задан уровнем видеокодека.
19. В п.17, динамический диапазон может быть определен посредством предварительно определенной глубины в битах, и глубина в битах может быть задана уровнем видеокодека.
20. В п.17, динамический диапазон может быть определен посредством предварительно определенной глубины в битах, и глубина в битах может быть получена посредством набора параметров последовательности, передаваемого из устройства кодирования изображения.
ПОЛЕЗНЫЕ РЕЗУЛЬТАТЫ
Согласно примерному варианту осуществления настоящего изобретения видео может быть кодировано с использованием усеченного вектора движения.
Согласно примерному варианту осуществления настоящего изобретения размер памяти, требуемой для хранения векторов движения, может быть уменьшен.
Согласно примерному варианту осуществления настоящего изобретения полоса пропускания для доступа к памяти, требуемая для извлечения данных из памяти, может быть уменьшена.
ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 является блок-схемой, показывающей пример структуры кодера согласно примерному варианту осуществления настоящего изобретения.
Фиг.2 является блок-схемой, показывающей пример структуры декодера согласно примерному варианту осуществления настоящего изобретения.
Фиг.3 показывает примеры картинки объектов кодирования/декодирования и опорной картинки.
Фиг.4 показывает пример ограничения динамического диапазона вектора движения.
Фиг.5-8 являются схемами последовательностей операций, показывающими способ сохранения вектора движения опорной картинки.
Фиг.9 показывает пример квантования вектора движения.
Фиг.10-13 показывают примеры извлечения информации движения из опорной картинки.
Фиг.14 является схемой последовательности операций, показывающей способ кодирования изображения согласно примерному варианту осуществления настоящего изобретения.
Фиг.15 является схемой последовательности операций, показывающей способ декодирования изображения согласно примерному варианту осуществления настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
В дальнейшем, примерные варианты осуществления настоящего изобретения будут описаны подробно со ссылкой на прилагаемые чертежи. Однако, при описании примерных вариантов осуществления настоящего изобретения хорошо известные функции или конструкции не будут описаны подробно, так как они могут сделать понимание настоящего изобретения затруднительным.
Следует понимать, что когда какой-либо элемент называется являющимся "соединенным с" или "связанным с" другим элементом, он может быть соединен напрямую или связан напрямую с другим элементом или быть соединен или связан с другим элементом, так что другой элемент находится между ними. К тому же, в настоящем описании в случае, когда описывается как "включающий в себя" конкретный компонент, следует понимать, что помимо соответствующего компонента, не исключены другие компоненты, и они могут быть включены в примерные варианты осуществления или технический объем настоящего изобретения.
Термины, используемые в данном описании, "первый", "второй" и т.д., могут быть использованы для описания различных компонентов, но эти компоненты не должны толковаться как ограниченные данными терминами. То есть, данные термины используются для отличия одного компонента от другого компонента. Например, "первый" компонент может быть назван "вторым" компонентом, или наоборот, без отступления от объема настоящего изобретения.
К тому же, компоненты, описанные в примерных вариантах осуществления настоящего изобретения, показаны раздельно только для того, чтобы указать, что они выполняют разные характерные функции. Вследствие этого, компоненты, которые показаны раздельно, не означают, что каждый из компонентов не может быть реализован как одно аппаратное средство или программное средство. То есть, каждый из компонентов разделен для удобства разъяснения, множество компонентов могут быть объединены друг с другом, чтобы тем самым работать как один компонент, или один компонент может быть разделен на множество компонентов, чтобы тем самым работать как множество компонентов, которые включены в объем настоящего изобретения, пока он отступает от существенных характеристик настоящего изобретения.
К тому же, некоторые из компонентов могут не быть необходимыми компонентами, выполняющими ключевые функции настоящего изобретения, но могут быть выборочными компонентами, улучшающими только его эффективность. Настоящее изобретение может также быть реализовано только посредством структуры, включающей в себя необходимые компоненты, за исключением выборочных компонентов, и структура, включающая в себя только необходимые компоненты, также включена в объем настоящего изобретения.
Фиг.1 является блок-схемой, показывающей пример структуры кодера согласно примерному варианту осуществления настоящего изобретения.
Ссылаясь на фиг.1, кодер 100 включает в себя модуль 111 предсказания движения, компенсатор 112 движения, модуль 120 внутреннего предсказания, переключатель 115, модуль 125 вычитания, преобразователь 130, модуль 140 квантования, энтропийный кодер 150, модуль 160 деквантования, обратный преобразователь 170, сумматор 175, фильтрующий модуль 180 и буфер 190 опорной картинки.
Кодер 100 кодирует входные изображения в режиме внутреннего предсказания или режиме внешнего предсказания для вывода кодером битового потока. Внутреннее предсказание означает предсказание внутри картинки, и внешнее предсказание означает предсказание между картинками. Кодер 100 переключается между режимом внутреннего предсказания и режимом внешнего предсказания посредством переключения переключателя 115. Кодер 100 генерирует предсказанный блок для входного блока входного изображения и затем кодирует остаток между входным блоком и предсказанным блоком.
В случае режима внутреннего предсказания модуль 120 внутреннего предсказания выполняет пространственное предсказание с использованием значений пикселей соседних блоков, которые уже кодированы, чтобы сгенерировать предсказанные блоки.
В случае режима внешнего предсказания модуль 111 предсказания движения осуществляет поиск опорного блока, оптимально совпадающего с входным блоком, в опорной картинке, хранящейся в буфере 190 опорной картинки, во время процесса предсказания движения, чтобы получить вектор движения. Компенсатор 112 движения выполняет компенсацию движения с использованием вектора движения, чтобы сгенерировать предсказанный блок. Здесь, вектор движения может быть двухмерным вектором, используемым для внешнего предсказания, и представлять смещение между текущим древовидным блоком кодирования и опорным блоком.
Модуль 125 вычитания генерирует остаточный блок на основе остатка между входным блоком и предсказанным блоком, и преобразователь 130 преобразует остаточный блок для вывода коэффициента преобразования. Модуль 140 квантования квантует коэффициент преобразования для вывода квантованного коэффициента.
Энтропийный кодер 150 выполняет энтропийное кодирование на основе информации, полученной во время процесса кодирования/квантования для вывода битового потока. Энтропийное кодирование представляет часто генерируемые символы как небольшое число битов, тем самым уменьшая размер битового потока для символа кодирования. Вследствие этого, можно ожидать улучшения эффективности сжатия видео посредством энтропийного кодирования. Энтропийный кодер 150 для энтропийного кодирования может использовать способ кодирования, такой как экспоненциальный код Голомба, контекстно-адаптированное кодирование с переменной длиной кодового слова (CAVLC), контекстно-адаптированное двоичное арифметическое кодирование (CABAC), или подобный.
Кодированная картинка должна быть снова декодирована и сохранена, чтобы быть использованной в качестве опорной картинки для выполнения кодирования с внешним предсказанием. Вследствие этого, модуль 160 деквантования деквантует квантованный коэффициент, и обратный преобразователь 170 осуществляет обратное преобразование деквантованного коэффициента для вывода реконструированного остаточного блока. Сумматор 175 добавляет (суммирует с) реконструированный остаточный блок к предсказанному блоку, чтобы сгенерировать реконструированный блок.
Фильтрующий модуль 180 также называется адаптивным контурным фильтром и применяет к реконструированному блоку по меньшей мере одно из фильтрации блочности, адаптивной компенсации смещения выборок (SAO), адаптивной контурной фильтрации (ALF). Фильтрация блочности означает, что удаляется блочность изображения, возникающая на границе между блоками, и компенсация SAO означает, что соответствующее смещение добавляется к значению пикселя, для того, чтобы компенсировать ошибку кодирования. К тому же, ALF означает, что фильтрация выполняется на основе сравнения значения между реконструированным изображением и первоначальным изображением.
При этом, буфер 190 опорной картинки хранит реконструированный блок, пропущенный через фильтрующий модуль 180.
Фиг.2 является блок-схемой, показывающей пример структуры декодера согласно примерному варианту осуществления настоящего изобретения.
Ссылаясь на Фиг.2, декодер включает в себя энтропийный декодер 210, модуль 220 деквантования, обратный преобразователь 230, модуль 240 внутреннего предсказания, компенсатор 250 движения, сумматор 255, фильтрующий модуль 260 и буфер 270 опорной картинки.
Декодер 200 декодирует битовый поток в режиме внутреннего предсказания или режиме внешнего предсказания для вывода реконструированного изображения. Декодер 200 переключается между режимом внутреннего предсказания и режимом внешнего предсказания посредством переключения переключателя. Декодер 200 получает остаточный блок из битового потока, чтобы сгенерировать предсказанный блок, и затем добавляет остаточный блок и предсказанный блок друг к другу, чтобы сгенерировать реконструированный блок.
Энтропийный декодер 210 выполняет энтропийное декодирование на основе распределения вероятностей. Процесс энтропийного декодирования является процессом, противоположным вышеупомянутому процессу энтропийного кодирования. То есть энтропийный декодер 210 генерирует символ, включающий в себя квантованный коэффициент из битового потока, в котором часто генерируемый символ представлен как небольшое число битов.
Модуль 220 деквантования деквантует квантованный коэффициент, и обратный преобразователь 230 осуществляет обратное преобразование деквантованного коэффициента, чтобы сгенерировать остаточный блок.
В случае режима внутреннего предсказания модуль 240 внутреннего предсказания выполняет пространственное предсказание с использованием значений пикселей соседних блоков, которые уже кодированы, чтобы сгенерировать предсказанные блоки.
В случае режима внешнего предсказания компенсатор 250 движения выполняет компенсацию движения с использованием вектора движения и опорной картинки, хранящейся в буфере 270 опорной картинки, чтобы сгенерировать предсказанный блок.
Сумматор 255 добавляет (суммирует с) предсказанный блок к остаточному блоку, и фильтрующий модуль 260 применяет по меньшей мере одно из фильтрации блочности, компенсации SAO, ALF, к блоку, пропущенному через сумматор, для вывода реконструированного изображения.
Реконструированное изображение может быть сохранено в буфере 270 опорной картинки, чтобы тем самым быть использованным для компенсации движения.
В дальнейшем, блок означает единицу кодирования/декодирования. В процессе кодирования/декодирования изображение разделяется на предварительно определенный размер и затем кодируется/декодируется. Вследствие этого, блок может также быть назван единицей кодирования (CU), единицей предсказания (PU), единицей преобразования (TU) или подобным, и одиночный блок может также быть разделен на подблоки, имеющие меньший размер.
Здесь, единица предсказания означает базовую единицу, в которой выполняется предсказание и/или компенсация движения. Единица предсказания может быть разделена на множество сегментов, и каждый из сегментов может быть также назван сегментом единицы предсказания. Когда единица предсказания разделена на множество сегментов, каждый из сегментов единицы предсказания может стать базовой единицей, в которой выполняются предсказание и/или компенсация движения. В дальнейшем, в примерном варианте осуществления настоящего изобретения, единица предсказания может также означать сегменты единицы предсказания.
При этом, в кодировании видео высокой эффективности (HEVC) используется способ предсказания вектора движения, основанный на усовершенствованном предсказании вектора движения (AMVP).
В способе предсказания вектора движения, основанном на усовершенствованном предсказании вектора движения, может быть использован вектор движения (MV) блока, существующего в положении, которое является таким же или соответствует положению древовидного блока кодирования, в опорной картинке, так же как и векторы движения реконструированных блоков, расположенных вокруг древовидного блока кодирования. Здесь, блок, существующий в положении, которое является таким же или пространственно соответствует положению древовидного блока кодирования, в опорной картинке называется совмещенным блоком, и вектор движения совмещенного блока называется совмещенным вектором движения или временным вектором движения. Однако, совмещенный блок может быть блоком, существующим в положении, аналогичном (то есть, соответствующим) положению древовидного блока кодирования, в опорной картинке, так же как и блоком, существующим в том же положении, что и положение древовидного блока кодирования.
В способе слияния информации движения информация движения оценивается исходя из совмещенного блока, так же как и реконструированных блоков, расположенных вокруг древовидного блока кодирования, чтобы тем самым быть использованной в качестве информации движения древовидного блока кодирования. Здесь, информация движения включает в себя по меньшей мере одно из информации режима внешнего предсказания, указывающей индекс опорной картинки, вектор движения, однонаправленный, двунаправленный или подобное, требуемой в момент внешнего предсказания, списка опорных картинок и информации режима предсказания о том, выполняется ли кодирование в режиме внутреннего предсказания или в режиме внешнего предсказания.
Предсказанный вектор движения в древовидном блоке кодирования может быть вектором движения совмещенного блока, который является блоком, временно смежным с древовидным блоком кодирования, так же как векторы движения соседних блоков, пространственно смежных с древовидным блоком кодирования.
Фиг.3 показывает примеры картинки объектов кодирования/декодирования и опорной картинки.
На фиг.3, блок X указывает древовидный блок кодирования в картинке 310 объектов кодирования/декодирования, и блок A, блок B, блок C, блок D и блок E указывают реконструированные блоки, расположенные вокруг древовидного блока кодирования. К тому же, блок T в опорной картинке 320 указывает совмещенный блок, существующий в положении, соответствующем положению древовидного блока кодирования.
Какой вектор движения в древовидном блоке кодирования используется в качестве предсказанного вектора движения может быть распознано посредством индекса блока предсказания вектора движения.
Как показано в таблице 1, индексы модуля предсказания вектора движения mvp_idx_10 и mvp_idx_11 для каждого списка опорных картинок передаются декодеру, и декодер использует такой же вектор движения как вектор движения, предсказанный кодером, в качестве предсказанного вектора движения.
В случае, в котором древовидный блок кодирования кодируется/декодируется с использованием векторов движения соседних блоков, пространственно смежных с древовидным блоком кодирования, вектор движения может храниться только с помощью памяти, имеющей относительно небольшой размер. Однако, в случае, в котором используется временный вектор движения, так как все векторы движения опорной картинки должны храниться в памяти, требуется память, имеющая относительно большой размер, и размер полосы пропускания для доступа к памяти, требуемой для извлечения данных из памяти, также увеличивается. Вследствие этого, нужно более эффективно хранить временный вектор движения в прикладном окружении, в котором пространство памяти портативного терминала, или подобного, является недостаточным или потребление электроэнергии минимизировано.
При этом в качестве технологии сохранения вектора движения в памяти, существует способ уменьшения пространственного разрешения вектора движения. В этом способе вектор движения сжимается с любым коэффициентом и затем сохраняется в памяти. Например, вектор движения, сохраненный в единице блока 4×4, сохранен в 4×4 или большей единице блока для уменьшения числа сохраненных векторов движения. Здесь, для того, чтобы регулировать размер блока сохраненного вектора движения передается информация о коэффициенте сжатия. Информация передается посредством набора параметров последовательности (SPS), как показано в таблице 2.
Ссылаясь на таблицу 2, в случае, в котором motion_vector_buffer_comp_flag равен 1, выполняется процесс сжатия буфера вектора движения.
motion_vector_buffer_comp_ratio_log2 указывает коэффициент сжатия процесса сжатия буфера вектора движения. В случае, в котором motion_vector_buffer_comp_ratio_log2 не существует, motion_vector_buffer_comp_ratio_log2 расценивается как 0, и коэффициент сжатия буфера вектора движения представляется уравнением 1.
[Уравнение 1]
MVBufferCompRatio=1<<motion_vector_buffer_comp_ratio_log2
Например, в случае, в котором все блоки 4×4 картинок 1920×1080 имеют разные вектора движения и используют два списка опорных картинок, причем каждый использует две опорные картинки, для хранения временного вектора движения требуется общее пространство памяти 3,21 Мбайта, как описано ниже.
1. Глубина в битах 26 бит на один вектор движения.
(1) Динамический диапазон X-составляющей вектора движения: от -252 до +7676 (глубина в битах: 13 битов)
(2) Динамический диапазон Y-составляющей вектора движения: от -252 до +4316 (глубина в битах: 13 битов)
(3) (Динамические диапазоны каждой составляющей вектора движения были вычислены на основе первой единицы предсказания в соответствующей картинке.)
2. В случае, в котором все из единиц блока 4×4 имеют разные векторы движения: 480×270 = 129600 блоков
3. Использование двух векторов движения на каждый блок.
4. Число списков опорных картинок: 2
5. Использование двух опорных картинок на каждый список опорных картинок
=> 26 битов × 129600 блоков × два вектора движения × два списка опорных картинок × две опорные картинки = 26956800 битов = 3,21 Мбайта
Согласно способу уменьшения пространственного разрешения вектор движения, как описано выше, возможно уменьшить размер требуемого пространства памяти и полосы пропускания для доступа к памяти с использованием пространственной корреляции вектора движения. Однако, способ уменьшения пространственного разрешения вектора движения не ограничивает динамический диапазон вектора движения.
Когда размер пространства памяти уменьшается на 1/4, размер пространства памяти, требуемого в вышеупомянутом примере, уменьшается до почти 0,8 Мбайта. Здесь, когда только шесть битов глубины в битах, требуемой для хранения вектора движения, используются для каждой составляющей вектора движения посредством дополнительного ограничения динамического диапазона вектора движения, размер требуемого пространства памяти может быть дополнительно уменьшен до 0,37 Мбайта.
Вследствие этого в примерном варианте осуществления настоящего изобретения, динамический диапазон вектора движения ограничивается, для того, чтобы уменьшить размер пространства памяти, требуемого для хранения вектора движения, и полосы пропускания для доступа к памяти, требуемой для извлечения данных из памяти. Вектор движения опорной картинки, динамический диапазон которой ограничен, может быть использован в качестве временного вектора движения в древовидном блоке кодирования.
В дальнейшем, динамический диапазон означает диапазон между минимальным значением и максимальным значением отрицательной составляющей или положительной составляющей вектора движения на основе 0, и глубина в битах, которая указывает размер пространства, требуемого для хранения вектора движения, означает ширину в битах. К тому же, пока не описано конкретно, вектор движения означает вектор движения опорной картинки, то есть, временный вектор движения.
В случае, в котором каждая составляющая вектора движения выходит за динамический диапазон, он представляется минимальным значением или максимальным значением соответствующего динамического диапазона. Например, в случае, в котором X-составляющая вектора движения составляет 312 и максимальное значение динамического диапазона каждой составляющей вектора движения составляет 256, X-составляющая вектора движения ограничивается до 256.
Аналогично, в случае, в котором глубина в битах каждой составляющей вектора движения составляет 16 битов, и вектор движения составляет (-36, 24), когда глубина в битах каждой составляющей вектора движения ограничена до 6 битов, каждая составляющая вектора движения имеет динамический диапазон от -32 до +31, так что вектор движения представляется посредством (-32, 24), что находится в его динамическом диапазоне.
К тому же, в случае, в котором глубина в битах каждой составляющей вектора движения составляет 16 битов, и вектор движения составляет (-49, 142), когда глубина в битах каждой составляющей вектора движения ограничена до 9 битов, каждая составляющая вектора движения имеет динамический диапазон от -256 до +255, так что вектор движения представляется посредством (-49, 142) без изменения
Фиг.4 показывает пример ограничения динамического диапазона вектора движения.
Ссылаясь на фиг.4, когда динамический диапазон вектора движения, имеющего динамический диапазон от -4096 до +4095, ограничивается от -128 до +127, глубина в битах может быть уменьшена с 13 битов до 8 битов.
Каждая составляющая временного вектора движения усекается как представлено уравнениями 2 и 3, чтобы быть сохраненной при глубине в битах из N бита(ов). Где N является положительным целым числом.
[Уравнение 2]
clippedMV_X = min(1<<(N-1)-1, max(-1<<(N-1), MV_X))
[Уравнение 3]
clippedMV_Y = min(1<<(N-1)-1, max(-1<<(N-1), MV_Y))
где MV_X указывает X-составляющую вектора движения, MV_Y указывает Y-составляющую вектора движения, min(a,b) означает операцию вывода меньшего значения в a и b, и max(a,b) означает операцию вывода большего значения в a и b. Каждый из clippedMV_X и clippedMV_Y указывает X- и Y-составляющие усеченного временного вектора движения, и хранится в памяти, чтобы тем самым быть использованным в качестве временного вектора движения древовидного блока кодирования.
Например, как показано в таблице 3, в случае, в котором размер пространства памяти составляет 48 байт, и каждая составляющая вектора движения использует глубину в битах из 16 битов, могут быть сохранены всего двенадцать векторов движения.
Таблица 3 | |||||||
MV1-X | MV1-Y | MV2-X | MV2-Y | MV3-X | MV3-Y | MV4-X | MV4-Y |
MV5-X | MV5-Y | MV6-X | MV6-Y | MV7-X | MV7-Y | MV8-X | MV8-Y |
MV9-X | MV9-Y | MV10-X | MV10-Y | MV11-X | MV11-Y | MV12-X | MV12-Y |
Однако, когда каждая составляющая вектора движения использует только глубину в битах из 8 битов, могут быть сохранены всего двадцать четыре вектора движения, как показано в таблице 4.
Таблица 4 | |||||||
MV1-X | MV1-Y | MV2-X | MV2-Y | MV3-X | MV3-Y | MV4-X | MV4-Y |
MV5-X | MV5-Y | MV6-X | MV6-Y | MV7-X | MV7-Y | MV8-X | MV8-Y |
MV9-X | MV9-Y | MV10-X | MV10-Y | MV11-X | MV11-Y | MV12-X | MV12-Y |
MV13-X | MV13-Y | MV14-X | MV14-Y | MV15-X | MV15-Y | MV16-X | MV16-Y |
MV17-X | MV17-Y | MV18-X | MV18-Y | MV19-X | MV19-Y | MV20-X | MV20-Y |
MV21-X | MV21-Y | MV22-X | MV22-Y | MV23-X | MV23-Y | MV24-X | MV24-Y |
Вследствие этого, согласно примерному варианту осуществления настоящего изобретения, когда изображение, реконструированное в кодере и/или декодере, подвергается обработке контурным фильтром, таким как фильтр блочности, адаптивный контурный фильтр, или подобным, и затем сохраняется в буфере декодированной картинки (DPB), динамический диапазон вектора движения ограничивается, так чтобы вектор движения опорной картинки был сохранен. Буфер декодированной картинки означает буфер опорной картинки согласно фиг.1 или Фиг.2.
I. Процесс усечения вектора движения
Процесс усечения каждой составляющей вектора движения задействуется в случае, в котором slice_type не равен 1. Процесс усечения вектора движения выполняется в древовидном блоке или наибольшей единице кодирования после завершения процесса фильтрации. Входными данными в процессе усечения вектора движения являются местоположение (xP, yP), задающее верхнюю левую выборку единицы предсказания относительно верхней левой выборки текущей картинки, и матрицы векторов движения MvL0 и MvL1. Выходными данными в данном процессе являются матрицы усеченных векторов движения CMvL0 и CMvL1.
По отношению к матрицам MvL0, MvLl, CMvL0 и CMvL1 выполняются операции уравнений с 4 по 7.
[Уравнение 4]
mvLX = MvLX[xP, yP]
[Уравнение 5]
cmvLX[0]=Clip(-1<<(TMVBitWidth -1),1<<(TMVBitWidth -1)-1, mvLX[0]
[Уравнение 6]
cmvLX[1] = Clip3(-1<<(TMVBitWidth -1), 1<<(TMVBitWidth -1)-1, mvLX[1]
[Уравнение 7]
CMvLX [xP, yP] = cmvLX
где TMVBitWidth указывает глубину в битах вектора движения, Clip3(a, b, c) означает функцию усечения c, так чтобы существовать в диапазоне между a и b.
II. Процесс сохранения вектора движения
Фиг.5-8 являются схемами последовательностей операций, показывающими способ сохранения вектора движения опорной картинки.
Ссылаясь на фиг.5, вектор движения опорной картинки может быть сохранен с использованием как буфера изображения, хранящего реконструированное изображение, так и буфера вектора движения, хранящего вектор движения. Здесь, реконструированное изображение подвергается обработке контурным фильтром (S510), и вектор движения подвергается процессу ограничения динамического диапазона (S520) и затем сохраняется (S540).
К тому же, ссылаясь на фиг.6, используются и буфер изображения, и буфер вектора движения, вектор движения подвергается процессу ограничения динамического диапазона (S620) и процессу уменьшения пространственного разрешения (S630) и затем сохраняется (S640).
К тому же, ссылаясь на фиг.7, реконструированное изображение подвергается обработке контурным фильтром (S710) и затем сохраняется в буфере изображения (S740), и вектор движения подвергается процессу ограничения динамического диапазона (S720) и затем сохраняется в буфере вектора движения (S540).
К тому же, ссылаясь на фиг.8, реконструированное изображение подвергается обработке контурным фильтром (S810) и затем сохраняется в буфере изображения (S840), и вектор движения подвергается процессу ограничения динамического диапазона (S820) и процессу уменьшения пространственного разрешения (S830) и затем сохраняется (S850).
При этом в примерных вариантах осуществления согласно фиг.6 и 8, последовательность из процесса ограничения динамического диапазона S620 или S820 и процесса уменьшения пространственного разрешения S630 и S830 не ограничивается, и может быть изменена.
К тому же, для того, чтобы дополнительно уменьшить полосу пропускания для доступа к памяти, динамические диапазоны каждой составляющей вектора движения могут быть ограничены по-разному. Например, только один из динамического диапазона X-составляющей и динамического диапазона Y-составляющей может быть ограничен, или динамический диапазон Y-составляющей может быть дополнительно ограничен по сравнению с динамическим диапазоном X-составляющей.
Ограниченный динамический диапазон вектора движения передается посредством набора параметров последовательности, набора параметров картинки (PPS), заголовка слайса (среза) и тому подобного, и декодер аналогично выполняет ограничение динамического диапазона временного вектора движения в последовательности, картинке или слайсе. В этом случае может также быть передана глубина в битах, которая является размером пространства памяти, требуемого для хранения вектора движения, представленного в динамическом диапазоне. К тому же, возможно эффективно хранить временный вектор движения, с тем чтобы совпадал с характеристиками движения изображения, с использованием динамического диапазона, передаваемого посредством набора параметров последовательности, набора параметров картинки, заголовка слайса или подобного, вместо хранения вектора движения с использованием глубины в битах, имеющей фиксированный размер.
При этом вектор движения может быть квантован и сохранен. В случае, в котором вектор движения квантован и сохранен, уменьшается точность вектора движения. В качестве способа квантования существуют равномерное квантование, при котором размеры шага являются равномерными, неравномерное квантование, при котором размеры шага не являются равномерными, и подобные. Размер шага при квантовании задается в фиксированное значение, предварительно заданное между кодером или декодером, или передается из кодера в декодер посредством набора параметров последовательности, набора параметров картинки, заголовка слайса или подобного. Декодер использует квантованный вектор движения как он есть или деквантует и использует квантованный вектор движения. Фиг.9 показывает пример квантования вектора движения. Ссылаясь на Фиг.9, в случае, в котором вектор движения имеет значение составляющей от 32 до 48, вектор движения квантуется до 40.
К тому же, вектор движения может быть ограничен в разрешении представления и сохранен. Разрешение представления означает единицу целого пикселя (1 единица пикселя), единицу дробного пикселя (единица 1/2 пикселя, единица 1/4 пикселя или подобное). Например, разрешение вектора движения, обработанного в единице 1/4 пикселя, может быть сохранено как целый пиксель. Разрешение представления вектора движения задается в фиксированное значение, предварительно заданное между кодером или декодером, или передается из кодера в декодер посредством набора параметров последовательности, набора параметров картинки, заголовка слайса или подобного.
К тому же, только по отношению к некоторым векторам движения из числа временных векторов движения, хранящихся в памяти, могут быть выполнены процесс ограничения динамического диапазона, процесс уменьшения пространственного разрешения и процесс квантования вектора движения.
В случае, в котором динамический диапазо