ОБЛАСТЬ ТЕХНИКИ
[1] Устройства и способы, совместимые с примерными вариантами осуществления, относятся к кодированию и декодированию видео посредством использования слияния блоков для кодирования с предсказанием.
УРОВЕНЬ ТЕХНИКИ
[2] Чтобы кодировать блоки в текущем изображении, технологии сжатия видео обычно используют способ оценки/компенсации движения, который использует информацию предсказания наиболее подобного блока из числа соседних блоков, и способ сжатия, который уменьшает размер видео данных посредством удаления избыточных данных посредством кодирования разностного сигнала между предыдущим изображением и текущим изображением с помощью дискретного косинусного преобразования (DCT).
[3] Поскольку аппаратное обеспечение для воспроизведения и хранения видео контента высокого разрешения или высокого качества было развито и поставляется, потребность в видео кодеке для эффективного кодирования или декодирования видео контента высокого разрешения или высокого качества увеличилось. В видео кодеке согласно связанной области техники видео кодируется согласно способу ограниченного кодирования, основанном на макроблоке, имеющем заранее определенный размер. Кроме того, видео кодек связанной области техники кодирует и декодирует видео данные посредством выполнения преобразования и обратного преобразования в отношении макроблоков посредством использования блоков, каждый имеющий один и тот же размер.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
ТЕХНИЧЕСКАЯ ПРОБЛЕМА
[4] Предоставлены способ и устройство для кодирования видео посредством использования слияния блоков и способ и устройство для декодирования видео посредством использования слияния блоков.
РЕШЕНИЕ ПРОБЛЕМЫ
[5] Согласно аспекту примерного варианта осуществления, предоставлен способ кодирования видео посредством использования слияния блоков данных, причем способ включает в себя: определение режима кодирования, указывающего блок данных для кодирования картинки и способ кодирования, включающий в себя кодирование с предсказанием, который выполняется для каждого блока данных; определение наличия слияния с по меньшей мере одним соседним блоком данных на основании по меньшей мере одного из режима предсказания и режима кодирования согласно блокам данных; и определение информации режима предсказания, относящейся к слиянию информации и относящейся к предсказанию информации на основании наличия слияния с по меньшей мере одним соседним блоком данных согласно блокам данных и определению информации кодирования блока данных, включающей в себя информацию режима предсказания, относящуюся к слиянию информацию и относящуюся к предсказанию информацию.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[6] Фиг. 1 является блок-схемой устройства для кодирования видео посредством использования слияния блоков данных согласно примерному варианту осуществления;
[7] Фиг. 2 является блок-схемой устройства для декодирования видео посредством использования слияния блоков данных согласно примерному варианту осуществления;
[8] Фиг. 3 является диаграммой, иллюстрирующей соседние блоки, которые могут быть слиты с текущим макроблоком согласно уровню техники;
[9] Фиг. 4 и 5 являются диаграммами для описания способов выбора блока данных, который должен быть слит с текущим блоком данных, из числа соседних блоков данных текущего блока данных согласно связанному уровню техники и примерному варианту осуществления соответственно;
[10] Фиг. 6 и 7 являются блок-схемами для описания порядков кодирования и декодирования информации режима предсказания, относящейся к слиянию информации и относящейся к предсказанию информации, согласно примерным вариантам осуществления;
[11] Фиг. 8 и 9 являются диаграммами для описания способов выбора блока данных, который должен быть слит с текущим блоком данных, из числа расширенных соседних блоков данных текущего блока данных согласно связанному уровню техники и примерному варианту осуществления соответственно;
[12] Фиг. 10, 11 и 12 являются блок-схемами для описания порядков кодирования и декодирования информации режима предсказания, относящейся к слиянию информации и относящейся к предсказанию информации, согласно различным примерным вариантам осуществления;
[13] Фиг. 13 является диаграммой, иллюстрирующей соседние блоки данных, которые не сливаются с текущим фрагментом, согласно примерному варианту осуществления;
[14] Фиг. 14 является диаграммой, иллюстрирующей блок данных - кандидат, который изменяется согласно форме и позиции текущего фрагмента, согласно примерному варианту осуществления;
[15] Фиг. 15 является диаграммой, иллюстрирующей соседние блоки данных, которые могут не быть слиты с текущим фрагментом, который является фрагментом, имеющим геометрическую форму, согласно примерному варианту осуществления;
[16] Фиг. 16 является диаграммой, иллюстрирующей пример, в котором соседний блок данных, определенный как подлежащий слиянию с текущим блоком данных, используется согласно примерному варианту осуществления;
[17] Фиг. 17 является последовательностью операций, иллюстрирующей способ кодирования видео посредством использования слияния блоков данных, согласно примерному варианту осуществления;
[18] Фиг. 18 является последовательностью операций, иллюстрирующей способ декодирования видео посредством использования слияния блоков данных, согласно примерному варианту осуществления;
[19] Фиг. 19 является блок-схемой устройства для кодирования видео посредством использования слияния блоков данных на основании блоков кодирования, имеющих структуру дерева, согласно примерному варианту осуществления;
[20] Фиг. 20 является блок-схемой устройства для декодирования видео посредством использования слияния блока данных на основании кодирования блоков, имеющих структуру дерева, согласно примерному варианту осуществления;
[21] Фиг. 21 является диаграммой для описания понятия блоков кодирования согласно примерному варианту осуществления;
[22] Фиг. 22 является блок-схемой модуля кодирования изображения на основании блоков кодирования согласно примерному варианту осуществления;
[23] Фиг. 23 является блок-схемой декодера изображения на основании блоков кодирования согласно примерному варианту осуществления;
[24] Фиг. 24 является диаграммой, иллюстрирующей блоки кодирования согласно глубинам и фрагментам, согласно примерному варианту осуществления;
[25] Фиг. 25 является диаграммой для описания соотношения между блоком кодирования и блоками преобразования согласно примерному варианту осуществления;
[26] Фиг. 26 является диаграммой для описания информации кодирования блоков кодирования, соответствующих кодированной глубине, согласно примерному варианту осуществления;
[27] Фиг. 27 является диаграммой, иллюстрирующей блоки кодирования согласно глубинам, согласно примерному варианту осуществления;
[28] Фиг. 28-30 являются диаграммами для описания соотношения между блоками кодирования, блоками предсказания и блоками преобразования согласно примерному варианту осуществления;
[29] Фиг. 31 является диаграммой для описания соотношения между блоком кодирования, блоком предсказания и блоком преобразования согласно информации режима кодирования из Таблицы 2;
[30] Фиг. 32 является последовательностью операций, иллюстрирующей способ кодирования видео посредством использования слияния блоков данных на основании блоков кодирования, имеющих структуру дерева, согласно примерному варианту осуществления; и
[31] Фиг. 33 является последовательностью операций, иллюстрирующей способ декодирования видео посредством использования слияния блоков данных на основании блоков кодирования, имеющих структуру дерева, согласно примерному варианту осуществления.
ЛУЧШИЙ РЕЖИМ ДЛЯ ВЫПОЛНЕНИЯ ИЗОБРЕТЕНИЯ
[32] Согласно аспекту примерного варианта осуществления, предоставлен способ кодирования видео посредством использования слияния блоков данных, причем способ включает в себя: определение режима кодирования, указывающего блок данных для кодирования картинки и способ кодирования, включающий в себя кодирование с предсказанием, которое выполняется для каждого блока данных; определение наличия слияния с по меньшей мере одним соседним блоком данных на основании по меньшей мере одного из режима предсказания и режима кодирования согласно блокам данных; и определение информации режима предсказания, относящейся к слиянию информации и относящейся к предсказанию информации на основании наличия слияния с по меньшей мере одним соседним блоком данных согласно блокам данных, и определение информации кодирования блока данных, включающей в себя информацию режима предсказания, относящуюся к слиянию информацию и относящуюся к предсказанию информацию.
[33] Определение информации кодирования может включать в себя: определение информации режима пропуска, указывающей, является ли режим предсказания блока данных моделью пропуска, и определение, закодирована ли информация слияния, указывающая, слит ли блок данных и по меньшей мере один соседний блок данных друг с другом на основании информации режима пропуска.
[34] Согласно аспекту другого примерного варианта осуществления предоставлен способ декодирования видео посредством использования слияния блоков данных, причем способ включает в себя: синтаксический разбор принятого потока битов для извлечения кодированных видео данных и информации кодирования и извлечения информации режима предсказания, относящейся к слиянию информации и относящейся к предсказанию информации в информации кодирования; и анализ наличия слияния с по меньшей мере одним соседним блоком данных на основании по меньшей мере одного из режима предсказания и режима кодирования согласно блокам данных на основании информации режима предсказания и относящейся к слиянию информации, и выполнение внешнего предсказания и компенсации движения посредством использования относящейся к предсказанию информации по меньшей мере одного соседнего блока данных в отношении блока данных, слитого с по меньшей мере одним соседним блоком данных, чтобы декодировать кодированные видео данные согласно блокам данных, определенным на основании информации кодирования.
[35] Извлечение и считывание могут включать в себя: извлечение и считывание информации режима пропуска, указывающей, является ли режим предсказания блока данных режимом пропуска; и определение, извлечена ли информация слияния, указывающая, сливаются ли блок данных и по меньшей мере один соседний блок данных друг с другом на основании информации режима пропуска.
[36] Согласно аспекту другого примерного варианта осуществления предоставлено устройство для кодирования видео посредством использования слияния блоков данных, при этом устройство включает в себя: модуль определения режима кодирования, который определяет режим кодирования, указывающий блок данных для кодирования картинки, и способ кодирования, включающий в себя кодирование с предсказанием для каждого блока данных; модуль определения слияния блоков данных, который определяет наличие слияния с по меньшей мере одним соседним блоком данных на основании по меньшей мере одного из режима предсказания и режима кодирования согласно блокам данных; и модуль определения информации кодирования, который определяет информацию режима предсказания, относящуюся к слиянию информацию и относящуюся к предсказанию информацию на основании наличия слияния с соседним блоком данных согласно блокам данных, и определяет информацию кодирования блока данных, включающую в себя информацию режима предсказания, относящуюся к слиянию информацию и относящуюся к предсказанию информацию.
[37] Согласно аспекту другого примерного варианта осуществления предоставлено устройство для декодирования видео посредством использования слияния блоков данных, при этом устройство включает в себя: модуль синтаксического разбора и блок извлечения, который выполняет синтаксический разбор принятого потока битов для извлечения кодированных видео данных и информации кодирования и извлечения информации режима предсказания, относящейся к слиянию информации и относящейся к предсказанию информации в информации кодирования; и модуль слияния блоков данных и декодер, который анализирует наличие слияния с по меньшей мере одним соседним блоком данных на основании по меньшей мере одного из режима предсказания и режима кодирования согласно блокам данных на основании информации режима предсказания и относящейся к слиянию информации и выполняет внешнее предсказание и компенсацию движения посредством использования относящейся к предсказанию информации по меньшей мере одного соседнего блока данных в отношении блока данных, слитого с соседним блоком данных, чтобы декодировать кодированные видео данные согласно блокам данных, определенным на основании информации кодирования.
[38] Согласно аспекту другого примерного варианта осуществления предоставлен считываемый компьютером носитель записи, воплощающий на нем программу для выполнения способа кодирования видео.
[39] Согласно аспекту другого примерного варианта осуществления предоставлен считываемый компьютером носитель записи, воплощавший на нем программу для выполнения способа декодирования видео.
РЕЖИМ ДЛЯ ИЗОБРЕТЕНИЯ
[40] В нижеследующем описании ′изображение′ может относиться не только к неподвижному изображению, но также и движущемуся изображению, такому как видео. Кроме того, ′блок данных′ относится к группе данных в заранее определенном диапазоне из числа данных, составляющих видео. Кроме того, в дальнейшем, выражения, такие как “по меньшей мере один из”, предшествующие списку элементов, модифицируют весь список элементов и не изменяют отдельные элементы списка.
[41] Кодирование и декодирование видео, используя слияние блоков данных, согласно одному или более примерным вариантам осуществления, будут описаны ниже со ссылками на фиг. 1-18. Кодирование и декодирование видео, используя слияние блоков данных на основании кодирования блоков, имеющих структуру дерева, согласно одному или более примерным вариантам осуществления, описаны ниже со ссылками на фиг. 19-33.
[42] Устройство для кодирования видео, устройство для декодирования видео, способ кодирования видео и способ декодирования видео посредством использования слияния блоков данных, согласно одному или более примерным вариантам осуществления будут описаны ниже со ссылками на фиг. 1-18.
[43] Фиг. 1 является блок-схемой устройства 10 для кодирования видео посредством использования слияния блоков данных, согласно примерному варианту осуществления.
[44] Устройство 10 включает в себя модуль 11 определения режима кодирования, модуль 13 определения слияния блоков данных и 15 модуль определения информации кодирования. Для удобства описания устройство 10 для кодирования видео посредством использования слияния блоков данных упоминается как устройство 10 для кодирования видео.
[45] Устройство 10 принимает видео данные, кодирует видео данные, выполняя внешнее предсказание между картинками, внутреннее предсказание в картинке, преобразование, квантование и энтропийное кодирование для картинок видео, и выводит информацию кодирования, включающую в себя информацию о кодированных видео данных и режиме кодирования.
[46] Модуль 11 определения режима кодирования может определять блок данных для кодирования картинки и может определять способ кодирования, который должен быть выполнен для каждого блока данных. В способе кодирования со сжатием видео, чтобы уменьшить размер данных посредством удаления избыточной части в видео данных, выполняется способ кодирования с предсказанием, используя соседние данные. Модуль 11 определения режима кодирования может определять правильный квадратный блок или фрагмент в правильным квадратном блоке в качестве блока (единицы) данных для кодирования с предсказанием.
[47] Модуль 11 определения режима кодирования может определять режим предсказания, указывающий способ кодирования с предсказанием, такой как внешний (интер-) режим, внутренний (intra-) режим, режим пропуска или непосредственный режим, для каждого блока данных. Кроме того, модуль 11 определения режима кодирования может определять дополнительные элементы, такие как направление предсказания или опорный индекс, полезный для кодирования с предсказанием согласно режиму предсказания блока данных.
[48] Модуль 11 определения режима кодирования может определять различные режимы кодирования, включающие в себя режим предсказания для кодирования с предсказанием, и связанные дополнительные элементы, и может соответственно кодировать видео данные.
[49] Модуль 13 определения слияния блоков данных может определить, сливается ли не только блок данных, режим предсказания которого является внешним режимом, но также и блок данных, режим предсказания которого является режимом пропуска или непосредственным режимом, из числа блоков данных, определенных блоком 11 определения режима кодирования, с по меньшей мере одним соседним блоком данных.
[50] Если текущий блок данных сливается с соседним блоком данных, текущий блок данных может совместно использовать информацию вектора движения соседнего блока данных. Хотя разностная информация вектора движения текущего блока данных является независимо кодированной, так как вспомогательная информация предсказания текущего блока данных может быть получена посредством следования или обращения к вспомогательной информации предсказания соседнего блока данных, слитого с текущим блоком данных, эта вспомогательная информация предсказания текущего блока данных не является отдельно кодированной.
[51] Модуль 13 определения слияния блоков данных может определять по меньшей мере одну группу блоков данных - кандидатов, включающую в себя блок данных, который может быть слит с текущим блоком данных в областях, соседних с текущим блоком данных. Модуль 13 определения слияния блоков данных может искать один блок данных, который должен быть слит с текущим блоком данных, в по меньшей мере одной группе блоков данных - кандидатов. В этом случае одна группа блоков данных - кандидатов, включающая в себя блок данных, который может быть слит с текущим блоком данных, может быть определена в каждой области.
[52] Согласно заранее определенному правилу, заранее заданному между системами кодирования и декодирования, способ определения группы блоков данных - кандидатов в по меньшей мере одной области, соседней с текущим блоком данных, и способ определения одного блока данных в группе блоков данных - кандидатов, могут быть установлены.
[53] Кроме того, устройство 10 может кодировать и выводить по меньшей мере одну из информации о способе определения группы блоков данных - кандидатов в по меньшей мере одной области, соседней с текущим блоком данных, и информации о способе определения одного блока данных в группе блоков данных - кандидатов.
[54] Например, модуль 13 определения слияния блоков данных может искать блок данных, имеющий тот же опорный индекс как и текущий блок данных, в группе блоков данных - кандидатов, и может выбрать этот блок данных в качестве блока данных - кандидата, который должен быть слит с текущим блоком данных.
[55] Альтернативно, модуль 13 определения слияния блоков данных может искать блок данных, режим предсказания которого является внешним режимом в группе блоков данных - кандидатов, и может выбрать этот блок данных в качестве блока данных - кандидата, который должен быть слит с текущим блоком данных. Один блок данных может быть окончательно определен из числа блоков данных - кандидатов, выбранных таким образом в качестве блока данных - кандидата, который должен быть слит с текущим блоком данных.
[56] Модуль 13 определения слияния блоков данных может определить блок данных - кандидат, который должен быть слит с текущим блоком данных, посредством использования обычного способа предсказания вектора движения во внешнем режиме. Более подробно, согласно обычному способу предсказания вектора движения во внешнем режиме, множество векторов-кандидатов, которые должны быть предсказаны с вектором движения текущего блока данных, определяются из числа соседних блоков данных, контактирующих со всеми границами текущего блока данных. Таким образом, один из числа соседних блоков данных, контактирующих с левой границей текущего блока данных, один из числа соседних блоков данных, контактирующих с верхней границей текущего блока данных, и один из числа соседних блоков данных, контактирующих с углами текущего блока данных, выбираются, и один из векторов движения этих трех блоков данных определяется как вектор-кандидат.
[57] Согласно обычному способу предсказания вектора движения во внешнем режиме, модуль 13 определения слияния блоков данных может искать и определить один блок данных, который должен быть слит с текущим блоком данных, в группе левых блоков данных - кандидатов, включающей в себя все множество соседних блоков данных, контактирующих с левой границей текущего блока данных, и в группе верхних блоков данных - кандидатов, включающей в себя все множество соседних блоков данных, контактирующих с верхней границей текущего блока данных.
[58] Кроме того, модуль 13 определения слияния блоков данных может искать и определить один блок данных, который должен быть слит с текущим блоком данных, в группе угловых блоков данных - кандидатов, включающей в себя верхний левый соседний блок данных, верхний правый соседний блок данных, и нижний левый соседний блок данных, контактирующих с углами текущего блока данных, в дополнение к группе левых блоков данных - кандидатов и группе верхних блоков данных - кандидатов текущего блока данных.
[59] В этом случае способ определения одного блока данных - кандидата в группе левых блоков данных - кандидатов, способ определения одного блока данных - кандидата в группе верхних блоков данных - кандидатов, и способ определения одного блока данных - кандидата в группе угловых блоков данных - кандидатов могут быть заданы. Так как каждый способ определения одного блока данных - кандидата из числа соответствующей группы блоков данных - кандидатов может быть задан, способ может быть неявно сигнализирован.
[60] Кроме того, может быть задан способ окончательного определения одного соседнего блока данных, который должен быть слит с текущим блоком данных, из числа одного блока данных - кандидата, определенного в группе левых блоков данных - кандидатов, одного блока данных - кандидата, определенного в группе верхних блоков данных - кандидатов, и одного блока данных - кандидата, определенного в группе угловых блоков данных - кандидатов, то есть, трех блоков данных - кандидатов. Таким образом, так как каждый способ определения соседнего блока данных, который должен быть слит с блоком данных - кандидатом, может быть заранее задан, способ может быть неявно сигнализирован.
[61] Например, модуль 13 определения слияния блоков данных может искать блок данных, режим предсказания которого является внешним режимом, из числа блоков данных - кандидатов и может выбрать этот блок данных в качестве блока данных - кандидата, который должен быть слит с текущим блоком данных. Альтернативно, модуль 13 определения слияния блоков данных может искать блок данных, имеющий тот же опорный индекс как и текущий блок данных, из числа блоков данных - кандидатов, и выбрать этот блок данных в качестве блока данных - кандидата, который должен быть слит с текущим блоком данных.
[62] Хотя фрагменты разделяют с целью более точного внешнего предсказания одного блока данных соседнего одного с другим, эти фрагменты могут не быть слиты друг с другом.
[63] Так как доступные блоки данных из числа блоков данных, соседних с текущим фрагментом, могут меняться согласно форме и позиции текущего фрагмента, группа кандидатов слияния, включающая в себя соседние блоки данных, которые могут быть слиты, может быть изменена. Соответственно, модуль 13 определения слияния блоков данных может искать соседний блок данных, который может быть слит, на основании формы и позиции текущего фрагмента.
[64] Модуль 15 определения информации кодирования может определять информацию режима предсказания, относящуюся к слиянию информацию и относящуюся к предсказанию информацию согласно блокам данных. Модуль 15 определения информации кодирования может обновить относящуюся к предсказанию информацию в информации кодирования, определенной блоком 11 определения режима кодирования, согласно слиянию блоков данных модуля 13 определения слияния блоков данных. Модуль 15 определения информации кодирования может кодировать информацию кодирования, чтобы включить относящуюся к слиянию информацию согласно слиянию блоков данных модуля 13 определения слияния блоков данных. Модуль 15 определения информации кодирования может вывести видео данные, кодированные блоком 11 определения режима кодирования, и информацию кодирования.
[65] Информация режима предсказания в относящейся к предсказанию информации является информацией, указывающей, является ли режим предсказания текущего блока данных внешним режимом, внутренним режимом, режимом пропуска или непосредственным режимом. Например, информация режима предсказания может включать в себя информацию режима пропуска, указывающую, является ли режим предсказания текущего блока данных режимом пропуска, и информацию непосредственного режима, указывающую, является ли режим предсказания текущего блока данных непосредственным режимом.
[66] Относящаяся к слиянию информация включает в себя информацию, используемую, чтобы выполнить слияние блоков данных или определить, выполнено ли слияние блоков данных. Например, относящаяся к слиянию информация может включать в себя информацию слияния, указывающую, должен ли текущий блок данных быть слит с соседним блоком данных, и информацию индекса слияния, указывающую блок данных, который должен быть слит. Модуль 15 определения информации кодирования может кодировать информацию слияния с помощью контекстного моделирования относительно комбинации ′режим предсказания и тип фрагмента соседнего блока данных′ и относительно того, ′сливаются ли текущий блок данных и соседний блок данных′.
[67] Относящаяся к предсказанию информация может также включить в себя вспомогательную информацию предсказания и информацию движения, используемые для кодирования с предсказанием блока данных. Например, как описано выше, относящаяся к предсказанию информация может включать в себя вспомогательную информацию предсказания, ссылающуюся на дополнительную информацию, связанную с кодированием с предсказанием, включающую в себя опорный индекс, указывающий блок данных, на который нужно ссылаться и т.п., и вектор движения или разностную информацию вектора движения.
[68] Модуль 15 определения информации кодирования может определить, установлена ли относящаяся к слиянию информация согласно информации режима предсказания на основании близких соотношений между режимом предсказания блока данных и возможностью, что этот блок данных сливается.
[69] В первом примерном варианте осуществления, где слияние блоков данных может быть выполнено в отношении блока данных кроме режима пропуска, модуль 15 определения информации кодирования может кодировать информацию режима пропуска, указывающую, является ли режим предсказания текущего блока данных режимом пропуска, и может определить, сливаются ли информация слияния, указывающая, сливается ли текущий блок данных, и соседний блок данных друг с другом на основании информации режима пропуска.
[70] Более подробно, в первом примерном варианте осуществления, если режимом предсказания текущего блока данных является режим пропуска, модуль 15 определения информации кодирования может установить информацию режима пропуска так, чтобы указывать, что режимом предсказания текущего блока данных является режим пропуска, и может не кодировать информацию слияния текущего блока данных.
[71] Если режимом предсказания текущего блока данных не является режим пропуска, модуль 15 определения информации кодирования может установить информацию режима пропуска так, чтобы указывать, что режимом предсказания текущего блока данных не является режим пропуска, и может кодировать информацию слияния текущего блока данных.
[72] Модуль 15 определения информации кодирования может кодировать разностную информацию вектора движения блока данных на основании информации слияния, и может определить, кодируется ли вспомогательная информация предсказания блока данных.
[73] Таким образом, если текущий блок данных сливается с соседним блоком данных, модуль 15 определения информации кодирования может установить информацию слияния текущего блока данных так, чтобы указывать, что текущий блок данных сливается с соседним блоком данных, и может не кодировать вспомогательную информацию предсказания текущего блока данных. С другой стороны, если текущий блок данных не сливается с соседним блоком данных, модуль 15 определения информации кодирования может установить информацию слияния текущего блока данных так, чтобы указывать, что текущий блок данных не сливается с соседним блоком данных, и может кодировать вспомогательную информацию предсказания текущего блока данных.
[74] Независимо от того, сливается ли текущий блок данных или нет с соседним блоком данных, модуль 15 определения информации кодирования может кодировать разностную информацию вектора движения текущего блока данных.
[75] Кроме того, во втором примерном варианте осуществления, когда определено, выполняется ли слияние блоков данных в отношении блока данных кроме режима пропуска и непосредственного режима, модуль 15 определения информации кодирования может кодировать относящуюся к слиянию информацию для того, чтобы указать, выполняется ли слияние блоков данных в отношении блока данных, режимом предсказания которого является непосредственный режим.
[76] Более подробно, во втором примерном варианте осуществления модуль 15 определения информации кодирования может установить информацию режима пропуска так, чтобы указывать, что режимом предсказания блока данных не является режим пропуска, и может кодировать информацию непосредственного режима. Кроме того, модуль 15 определения информации кодирования может определить, кодируется ли информация слияния, на основании информации непосредственного режима. Таким образом, если режимом предсказания текущего блока данных является непосредственный режим, модуль 15 определения информации кодирования может установить информацию непосредственного режима так, чтобы указывать, что режимом предсказания текущего блока данных является непосредственный режим, и может не кодировать информацию слияния текущего блока данных. Если режимом предсказания текущего блока данных не является непосредственный режим, модуль 15 определения информации кодирования может установить информацию непосредственного режима так, чтобы указывать, что режимом предсказания текущего блока данных не является непосредственный режим, и может кодировать информацию слияния текущего блока данных.
[77] Если информация слияния кодируется, определяют, кодируется ли вспомогательная информация предсказания текущего блока данных, на основании информации слияния, и разностная информация вектора движения текущего блока данных кодируется, как описано выше в первом примерном варианте осуществления.
[78] Блок данных, полученный посредством разделения картинки, может включать в себя ′блок кодирования′, который является блоком (единицей) данных для кодирования картинки, ′блок предсказания′ для кодирования с предсказанием, и ′фрагмент′ для внешнего предсказания. Модуль 13 определения слияния блоков данных может определить, выполняется ли слияние с соседним блоком данных, для каждого блока кодирования, и модуль 15 определения информации кодирования может определять информацию режима пропуска и информацию слияния для каждого блока кодирования. Кроме того, модуль 13 определения слияния блоков данных может определить, выполняется ли слияние с соседним блоком данных, для каждого блока предсказания, и модуль 105 определения информации кодирования может определять информацию режима пропуска и информацию слияния для каждого блока предсказания.
[79] Если и информация режима пропуска и информация слияния используются, так как уникальная информация предсказания текущего блока данных не кодируется как в случае режима пропуска так и в случае слияния данных, устройство 10 может отличить способ предсказания согласно режиму пропуска от способа предсказания согласно слиянию данных. Например, опорный индекс и опорное направление блока данных, имеющего режим пропуска, могут быть определены согласно заданному правилу, и блок данных, слитый с соседним блоком данных, может следовать опорному индексу и опорному направлению информации движения соседнего блока данных. Так как правило для определения опорного индекса и опорного направления блока данных, имеющего режим пропуска, может быть заранее задано, правило может быть неявно сигнализировано.
[80] Модуль 15 определения информации кодирования может кодировать информацию режима пропуска для каждого режима предсказания и может кодировать относящуюся к слиянию информацию для каждого фрагмента. Кроме того, модуль 15 определения информации кодирования может кодировать как относящуюся к слиянию информацию так и информацию режима пропуска для каждого блока данных. Альтернативно, модуль 15 определения информации кодирования может установить относящуюся к слиянию информацию быть кодированной только для блока данных, имеющего заданный заранее определенный режим предсказания.
[81] Устройство 10 может определить слияние блоков данных между блоками кодирования, или определить слияние блоков данных между блоками предсказания. Кроме того, устройство 10 может выборочно кодировать информацию режима пропуска и информацию непосредственного режима. Соответственно, если режимом предсказания блока данных не является режим пропуска на основании информации режима пропуска блока данных, модуль 15 определения информации кодирования может кодировать по меньшей мере одну из информации кодирования режима пропуска/непосредственного режима, указывающей, кодирована ли информация непосредственного режима блока данных, информации определения слияния блоков кодирования, указывающей, определено ли наличие слияния между блоками кодирования, и информации определения слияния блоков предсказания, указывающей, определено ли наличие слияния между блоками предсказания.
[82] Фиг. 2 является блок-схемой устройства 20 для декодирования видео посредством использования слияния блоков данных, согласно примерному варианту осуществления.
[83] Устройство 20 включает в себя модуль синтаксического разбора/модуль извлечения 21 и модуль слияния/декодер 23 блока данных. Для удобства описания устройство 20 для декодирования видео посредством использования слияния блоков данных упоминается ′как устройство 20 для декодирования видео′.
[84] Устройство 20 принимает поток битов кодированных видео данных, извлекает информацию кодирования, включающую в себя информацию о способе кодирования и кодированные видео данные, и выполняет декодирование с помощью энтропийного декодирования, обратного квантования, обратного преобразования и внешнего предсказания/компенсации между картинками, чтобы восстановить видео данные.
[85] Модуль синтаксического разбора/модуль извлечения 21 синтаксически разбирает принятый поток битов для извлечения кодированных видео данных и информации кодирования и извлечения информации режима предсказания, относящейся к слиянию информации и относящейся к предсказанию информации в информации кодирования. Модуль синтаксического разбора/модуль извлечения 21 может извлечь информацию режима пропуска, информацию непосредственного режима и т.п. в качестве информации режима предсказания. Модуль синтаксического разбора/модуль извлечения 21 может извлечь вспомогательную информацию предсказания, включающую в себя опорное направление и опорный индекс, и разностную информацию вектора движения в качестве относящейся к предсказанию информации.
[86] Модуль синтаксического разбора/модуль извлечения 21 может извлечь информацию слияния, информацию индекса слияния и т.п. в качестве относящейся к слиянию информации. Модуль синтаксического разбора/модуль извлечения 21 может считывать информацию слияния, кодированную с помощью контекстного моделирования относительно комбинации ′режим предсказания и тип фрагмента соседнего блока данных′ и ′сливаются ли текущий блок данных и соседний блок данных друг с другом′, и может анализировать режим предсказания и тип фрагмента соседнего блока данных, слитого с текущим блоком данных.
[87] Сначала, в первом примерном варианте осуществления, где определяется, выполнено ли слияние блоков данных в отношении блока данных кроме режима пропуска, модуль синтаксического разбора/модуль извлечения 21 может извлечь и считать информацию режима пропуска блока данных из принятого потока битов, и может определить, извлекается ли информация слияния блока данных, на основании информации режима пропуска. Таким образом, если считано, что режимом предсказания текущего блока данных не является режим пропуска на основании информации режима пропуска, модуль синтаксического разбора/модуль извлечения 21 может извлечь информацию слияния текущего блока данных из принятого потока битов.
[88] Модуль синтаксического разбора/модуль извлечения 21 может извлечь разностную информацию вектора движения блока данных на основании информации слияния, и может определить, извлекается ли вспомогательная информация предсказания блока данных. Таким образом, если считано, что текущий блок данных не слит с соседним блоком данных на основании информации слияния, модуль синтаксического разбора/модуль извлечения 21 может извлечь разностную информацию вектора движения из принятого потока битов и может извлечь вспомогательную информацию предсказания текущего блока данных. С другой стороны, если считано, что текущий блок данных слит с соседним блоком данных на основании информации слияния, модуль синтаксического разбора/модуль извлечения 21 может извлечь разностную информацию вектора движения из принятого потока битов и может не извлекать вспомогательную информацию предсказания текущего блока данных.
[89] Затем, во втором примерном варианте осуществления, где определяется, выполнено ли слияние блоков данных в отношении блока данных кроме режима пропуска и непосредственного режима, если режимом предсказания блока данных не является режим пропуска, модуль синтаксического разбора/модуль извлечения 21 может извлечь информацию непосредственного режима блока данных, и может определить, извлекается ли информация слияния, на основании информации непосредственного режима.
[90] Таким образом, если считано, что режимом предсказания текущего блока данных является непосредственный режим, согласно информации непосредственного режима, модуль синтаксического разбора/модуль извлечения 21 может не извлекать информацию слияния из принятого потока битов. С другой стороны, если считано, что режимом предсказания текущего блока данных не является непосредственный режим, согласно информации непосредственного режима, модуль синтаксического разбора/модуль извлечения 21 может извлечь информацию слияния из принятого потока битов.
[91] Модуль синтаксического разбора/модуль извлечения 21 может извлечь разностную информацию вектора движения блока данных на основании информации слияния, и может определить, извлекается ли вспомогательная информация предсказания, как описано выше в первом варианте осуществления.
[92] Модуль слияния/декодер 23 блока данных анализирует, выполнено ли слияние с по меньшей мере одним соседним блоком данных на основании по меньшей мере одного из режима предсказания и режима кодирования согласно блокам данных на основании информации режима предсказания и относящейся к слиянию информации. Модуль слияния/декодер 23 блока данных может определять блок данных на основании информации кодирования, и декодировать кодированные видео данные согласно определенному блоку данных, чтобы восстановить картинку.
[93] Например, модуль слияния/декодер 23 блока данных может выполнить внешнее предсказание и компенсацию движения посредством использования относящейся к предсказанию информации соседнего блока данных в отношении блока данных, слитого с соседним блоком данных, чтобы декодировать видео данные на основании информации кодирования.
[94] Модуль синтаксического разбора/модуль извлечения 21 может извлечь и считать информацию режима пропуска и информацию слияния для каждого блока кодирования, и модуль слияния/декодер 23 блока данных может определить, выполнено ли слияние с соседним блоком данных на основании информации слияния для каждого блока кодирования.
[95] Кроме того, модуль синтаксического разбора/модуль извлечения 21 может извлечь и считать информацию режима пропуска и информацию слияния для каждого блока предсказания, и модуль слияния/декодер 23 блока данных может определить, генерируется ли слияние с соседним блоком данных, на основании информации слияния для каждого блока предсказания.
[96] Модуль слияния/декодер 23 блока данных может считывать, слит ли текущий блок данных с соседним блоком данных, на основании относящейся к слиянию информации, извлеченной модулем синтаксического разбора/модулем извлечения 21, и может искать блок данных, который должен быть слит, из числа соседних блоков данных.
[97] Сначала модуль слияния/декодер 23 блока данных может проанализировать, слит ли текущий блок данных с соседним блоком данных, на основании информации слияния в относящейся к слиянию информации. Если считано, что текущий блок данных слит с соседним блоком данных, модуль слияния/декодер 23 блока данных может определить по меньшей мере одну группу блоков данных - кандидатов, включающую в себя блок данных, который может быть слит с текущим блоком данных, в областях, соседних с текущим блоком данных, на основании информации индекса слияния в относящейся к слиянию информации. Модуль слияния/декодер 23 блока данных может определять один блок данных, который должен быть слит с текущим блоком данных, в по меньшей мере одной группе блоков данных - кандидатов. Группа блоков данных - кандидатов для слияния текущего блока данных может быть определена для каждой из по меньшей мере одной области, соседней с текущим блоком данных.
[98] Так как каждый способ определения соседнего блока данных, который должен быть слит с блоком данных - кандидатом, может быть задан заранее, способ может быть неявно сигнализирован. Модуль слияния/декодер 23 блока данных может определить один блок данных, который должен быть слит с текущим блоком данных, на основании по меньшей мере одного из способа определения группы блоков данных - кандидатов, которая задана согласно заранее определенному правилу между системами кодирования/декодирования, и способа определения одного блока данных в группе блоков данных - кандидатов.
[99] Модуль синтаксического разбора/модуль извлечения 21 может извлечь по меньшей мере одну из информации о способе определения группы блоков данных - кандидатов из числа по меньшей мере одной области, соседней с текущим блоком данных, и информации о способе определения одного блока данных в группе блоков данных - кандидатов. Модуль слияния/декодер 23 блока данных может определить один блок данных, который должен быть слит с текущим блоком данных, на основании по меньшей мере одной из информации о способе определения извлеченной группы блоков данных - кандидатов и информации о способе определения одного блока данных в группе блоков данных - кандидатов.
[100] Например, если модуль слияния/декодер 23 блока данных устанавливает первый блок данных - кандидат, второй блок данных - кандидат или третий блок данных - кандидат согласно заранее заданному способу, модуль слияния/декодер 23 блока данных может искать соседний блок данных, имеющий тот же опорный индекс как и текущий блок данных, в группе кандидатов слияния соседних блоков данных верхнего уровня, и может определить соседний блок данных в качестве одного блока данных, который должен быть слит.
[101] Альтернативно, если модуль слияния/декодер 23 блока данных определяет первый блок данных - кандидат, второй блок данных - кандидат или третий блок данных - кандидат согласно заранее заданному способу, модуль слияния/декодер 23 блока данных может искать соседний блок данных, режим предсказания которого является внешним режимом, в группе кандидатов слияния соседних блоков данных верхнего уровня, и может определить соседний блок данных в качестве одного блока данных, который должен быть слит с текущим блоком данных.
[102] Так как каждый способ определения одного блока данных - кандидата из числа соответствующей группы блоков данных - кандидатов может быть задан заранее, способ может быть неявно сигнализирован.
[103] Модуль слияния/декодер 23 блока данных может определить блок данных - кандидат, который должен быть слит с текущим блоком данных, посредством использования обычного способа предсказания вектора движения во внешнем режиме. Более подробно, модуль слияния/декодер 23 блока данных может определить один блок данных, который должен быть слит с текущим блоком данных, в группе левых блоков данных - кандидатов, включающей в себя все множество левых соседних блоков данных, контактирующих с левой границей текущего блока данных, и группе верхних блоков данных - кандидатов, включающей в себя все множество верхних соседних блоков данных, контактирующих с верхней границей, на основании информации индекса слияния в относящейся к слиянию информации.
[104] Кроме того, модуль слияния/декодер 23 блока данных может определить один блок данных, который должен быть слит с текущим блоком данных, на основании информации индекса слияния в группе угловых блоков данных - кандидатов, включающей в себя верхний левый соседний блок данных, верхний правый соседний блок данных и нижний левый соседний блок данных, контактирующие с углами текущего блока данных, в дополнение к группе левых блоков данных - кандидатов и группе верхних блоков данных - кандидатов текущего блока данных.
[105] Более подробно, модуль слияния/декодер 23 блока данных может считывать информацию индекса слияния и может определить первый блок данных - кандидат, который является одним в группе левых блоков данных - кандидатов, второй блок данных - кандидат, который является одним в группе верхних блоков данных - кандидатов, или третий блок данных - кандидат, который является одним в группе угловых блоков данных - кандидатов, в качестве соседнего блока данных, который должен быть слит с текущим блоком данных.
[106] Кроме того, модуль слияния/декодер 23 блока данных может искать и определить один из числа левых соседних блоков данных, если первый блок данных - кандидат определен, один из числа верхних соседних блоков данных, если второй блок данных - кандидат определен, и один из числа соседних блоков данных, контактирующих с углами, если третий блок данных - кандидат определен как один блок данных, который должен быть слит с текущим блоком данных.
[107] В этом случае способ поиска и определения одного блока данных, который должен быть слит с текущим блоком данных, из числа левых соседних блоков данных, верхних соседних блоков данных и соседних блоков данных, контактирующих с углами, может быть задан заранее. Например, согласно заранее заданному способу, модуль слияния/декодер 23 блока данных может искать соседний блок данных, режим предсказания которого является внешним режимом, из числа блоков данных - кандидатов и может определить соседний блок данных в качестве одного блока данных, который должен быть слит с текущим блоком данных.
[108] Альтернативно, согласно заданному способу, модуль слияния/декодер 23 блока данных может искать соседний блок данных, имеющий тот же опорный индекс, как и текущий блок данных, из числа блоков данных - кандидатов, и может определить соседний блок данных качестве одного блока данных, который должен быть слит.
[109] Так как каждый способ определения соседнего блока данных, который должен быть слит с блоком данных - кандидатом, может быть задан заранее, способ может быть неявно сигнализирован.
[110] Модуль слияния/декодер 23 блока данных может не выполнять взаимное слияние между фрагментами в одном блоке данных.
[111] Модуль слияния/декодер 23 блока данных может определить блок данных, который должен быть слит с текущим блоком данных, в группе кандидатов слияния соседних блоков данных, которые изменяются согласно форме и позиции текущего фрагмента.
[112] Модуль синтаксического разбора/модуль извлечения 21 может извлечь информацию режима пропуска для каждого блока предсказания и может извлечь относящуюся к слиянию информацию для каждого фрагмента. Альтернативно, модуль синтаксического разбора/модуль извлечения 21 может извлечь относящуюся к слиянию информацию и информацию режима пропуска для каждого блока данных. Кроме того, модуль синтаксического разбора/модуль извлечения 21 может извлечь относящуюся к слиянию информацию только для блока данных, имеющего заранее определенный режим предсказания.
[113] Модуль синтаксического разбора/модуль извлечения 21 может последовательно извлечь информацию режима пропуска, информацию блока предсказания, информацию фрагмента и информацию слияния блока предсказания. Информация фрагмента может включать в себя информацию о том, разделен ли блок предсказания на фрагменты и информацию о типе фрагмента.
[114] Устройство 20 может декодировать видео данные посредством выполнения слияния блока данных между блоками кодирования или между блоками предсказания. Кроме того, устройство 20 может выборочно декодировать видео данные согласно кодированной информации режима пропуска и информации непосредственного режима.
[115] Соответственно, если режимом предсказания блока данных не является режим пропуска на основании информации режима пропуска блока данных, модуль синтаксического разбора/модуль извлечения 21 может извлечь по меньшей мере одну из информации кодирования режима пропуска/непосредственного режима, указывающей, кодирована ли информация непосредственного режима блока данных, информации определения слияния блоков кодирования, указывающей, определено ли наличие слияния кодирования блоков, и информации определения слияния блоков предсказания, указывающей, определено ли наличие слияния между блоками предсказания. Кроме того, модуль слияния/декодер 23 блока данных может выполнить декодирование посредством использования как режима пропуска так и посредством использования непосредственного режима на основании извлеченной информации, или может декодировать видео данные, подвергнутые слиянию блоков данных на основании блока кодирования или блока предсказания.
[116] Модуль слияния/декодер 23 блока данных может декодировать видео данные посредством определения опорного индекса и опорного направления блока данных, имеющего режим пропуска, согласно заданному правилу и следуя опорному индексу и опорному направлению информации движения соседнего блока данных для блока данных, слитого с соседним блоком данных. Так как правило определения опорного индекса и опорного направления блока данных, имеющего режим пропуска, может быть задано заранее, правило может быть неявно сигнализировано.
[117] Когда разрешение видео увеличивается, количество данных быстро увеличивается, и размер блока данных увеличивается, избыточные данные увеличиваются, и таким образом блок данных, имеющий режим пропуска или непосредственный режим, увеличивается. Однако, так как предшествующий способ слияния макроблоков определяет, сливается ли только макроблок, режим предсказания которого является внешним режимом, отличным от режима пропуска и непосредственного режима, и сливает макроблок с соседним макроблоком, имеющим фиксированный размер и фиксированную позицию, предшествующий способ слияния макроблоков применяется к ограниченным областям.
[118] Устройство 10 и устройство 20 могут выполнить слияние блока данных в отношении блоков данных, имеющих различные размеры, различные формы и различные режимы предсказания, и могут сливать блоки данных с соседними блоками данных, имеющими различные позиции. Соответственно, так как различные блоки данных совместно используют относящуюся к предсказанию информацию большого количества различных соседних блоков данных, избыточные данные могут быть удалены, обращаясь к периферийной информации в более широком диапазоне, таким образом улучшая эффективность кодирования видео.
[119] Фиг. 3 является диаграммой, иллюстрирующей соседние блоки, которые могут быть слиты с текущим макроблоком согласно уровню техники.
[120] Согласно способу слияния блоков согласно уровню техники, соседний блок, включенный в группу кандидатов слияния соседних блоков, которые должны быть слиты с текущим макроблоком, должен быть соседним блоком, который имеет внешний режим и закодирован до текущего макроблока. Соответственно, только блоки, соседние с верхней границей и правой границей текущего макроблока, могут быть включены в группу кандидатов слияния.
[121] Слитые блоки могут составлять одну область, и информация кодирования и относящаяся к слиянию информация могут быть кодированы согласно областям слитых блоков. Например, информация слияния о том, выполняется ли слияние блоков, и если слияние блоков выполняется, информация позиции блоков слияния, указывающая, какой блок сливается из числа верхнего соседнего блока и левого соседнего блока текущего макроблока, могут быть кодированы.
[122] Согласно способу слияния блоков согласно уровню техники, хотя множество блоков контактируют с границами текущего макроблока, только соседний блок, контактирующий с верхней левой выборкой текущего блока, может быть выбран, чтобы быть слитым с текущим макроблоком.
[123] Таким образом, один из первого верхнего соседнего блока 32, соседнего с верхней границей первого текущего макроблока 31 и контактирующего с верхней левой выборкой первого текущего макроблока 31, и второго левого соседнего блока 33, соседнего с левой границей первого текущего макроблока 31 и контактирующего с верхней левой выборкой первого макроблока 31, может быть выбран, чтобы быть слитым с первым текущим макроблоком 31.
[124] Аналогично, один из второго верхнего соседнего блока 36 и второго левого соседнего блока 37, контактирующего с верхней левой выборкой второго текущего макроблока 35, может быть выборочно слит со вторым текущим макроблоком 35.
[125] Фиг. 4 и 5 являются диаграммами для описания способов выбора одного блока данных, который должен быть слит с текущим блоком данных, из числа соседних блоков данных текущего блока данных, согласно связанному уровню техники и примерному варианту осуществления, соответственно.
[126] Со ссылками на фиг. 4, согласно способу слияния блока данных согласно уровню техники, хотя соседние блоки данных 42, 43 и 44 контактируют с верхней границей текущего блока 41 данных, и соседние блоки данных 45, 46, 47 и 48 контактируют с левой границей текущего блока 41 данных, блок данных, который должен быть слит с текущим блоком 41 данных, ограничен блоком данных 42 в качестве верхнего соседнего блока данных или блоком данных 45 в качестве левого соседнего блока данных. Кроме того, так как только слияние с соседним блоком данных, режимом предсказания которого является внешний режим, возможно, если режимы предсказания соседних блоков данных 42 и 44 являются режимами пропуска или непосредственными режимами, соседние блоки данных 42 и 44 не рассматриваются как блоки данных, которые должны быть слиты.
[127] Согласно способу слияния блока данных устройства 10 и устройства 20 из Фиг. 5, группа кандидатов слияния соседних блоков данных, которые могут быть слиты с текущим блоком 41 данных, может включать в себя все верхние соседние блоки 42, 43, и 44 данных и левые соседние блоки 45, 46, 47 и 48 данных. В этом случае, даже когда режим предсказания текущего блока 41 данных является режимом пропуска или непосредственным режимом, так же как и внешним режимом, сливается ли текущий блок 41 данных с соседним блоком данных, может быть определено.
[128] Например, один из верхней группы 52 кандидатов слияния, включающей в себя верхние соседние блоки 42, 43 и 44 данных текущего блока 41 данных, может быть определен как верхний кандидат А′ слияния. Аналогично, один из левой группы 55 кандидатов слияния, включающей в себя левые соседние блоки 45, 46, 47 и 48 данных текущего блока 41 данных, может быть определен как левый кандидат L′ слияния. Один из верхнего кандидата А′ слияния и левого кандидата L′ слияния может быть окончательно определен быть соседним блоком данных, который должен быть слит с текущим блоком 41 данных.
[129] Устройство 10 и устройство 20 могут определить способ определения одного из верхней группы 52 кандидатов слияния в качестве верхнего кандидата А′ слияния и способ определения одного из левой группы 55 кандидатов слияния в качестве левого кандидата L′ слияния согласно заданному способу. Информация о текущем способе может быть неявно сообщена. Даже при том, что информация о текущем способе отдельно не кодирована, чтобы искать верхнего кандидата слияния А′ в верхней группе 52 кандидатов слияния или искать левого кандидата L′ слияния в левой группе 55 кандидатов слияния, устройство 10 и устройство 20 может воспринимать заранее заданный способ, в котором отыскиваются верхний кандидат слияния А′ и левый кандидат L′ слияния.
[130] Например, соседние блоки данных, имеющие ту же информацию опорного индекса как и текущий блок 41 данных в верхней группе 52 кандидатов слияния и левой группе 55 кандидатов слияния, могут быть определены как верхний кандидат А′ слияния и левый кандидат L′ слияния. Альтернативно, соседние блоки данных, самые близкие к верхней левой выборке текущего блока 41 данных, чей режим предсказания является внешним режимом в верхней группе 52 кандидатов слияния и левой группе 55 кандидатов слияния, могут быть определены как верхний кандидат А′ слияния и левый кандидат L′ слияния.
[131] Аналогично, устройство 10 и устройство 20 могут окончательно определить один из верхнего кандидата А′ слияния и левого кандидата L′ слияния в качестве соседнего блока данных, который должен быть слит с текущим блоком 41 данных, согласно заданному способу.
[132] Фиг. 6 и 7 являются блок-схемами для описания порядков кодирования и декодирования информации режима предсказания, относящейся к слиянию информации и относящейся к предсказанию информации, согласно примерным вариантам осуществления.
[133] Сначала Фиг. 6 является блок-схемой для описания способа кодирования и декодирования информации режима предсказания, относящейся к слиянию информации и относящейся к предсказанию информации, согласно первому примерному варианту осуществления, в котором наличие слияния блоков данных определяется с учетом того, является ли режим предсказания текущего блока данных режимом пропуска.
[134] Во время операции 61 устройство 10 кодирует информацию ′skip_flag′ (флаг пропуска) режима пропуска текущего блока данных. Если режим предсказания текущего блока данных является режимом пропуска, информация ′skip_flag′ режима пропуска может быть установлена в 1, и если режимом предсказания текущего блока данных не является режим пропуска, информация ′skip_flag′ режима пропуска может быть установлена в 0.
[135] Если определено во время операции 61, что режимом предсказания текущего блока данных является режим пропуска, способ переходит к операции 62. Во время операции 62 информация ′merging_flag′ (флаг слияния) слияния может не быть кодирована. Если определено во время операции 61, что режимом предсказания текущего блока данных не является режим пропуска, способ переходит к операции 63. Во время операции 63 информация ′merging_flag′ слияния кодируется. Направление предсказания и информация опорного индекса текущего блока данных, режим предсказания которого является режимом пропуска, могут быть определены согласно заданному правилу. Для направления предсказания и информации опорного индекса текущего блока данных, который должен быть слит с соседним блоком данных, можно следовать опорному индексу и опорному направлению вектора движения соседнего блока данных или на них могут ссылаться.
[136] Например, если заранее задано правило, что, если текущая вырезка является вырезкой P, направление предсказания блока данных, режим предсказания которого является режимом пропуска, устанавливается в направление List0, если текущая вырезка является вырезкой B, режим предсказания устанавливается в направление Bi, и опорный индекс блока данных, режим предсказания которого является режимом пропуска, устанавливается в 0, кодирование с предсказанием блока данных, режим предсказания которого является режимом пропуска, может быть возможно согласно этому правилу.
[137] Если текущий блок данных сливается с соседним блоком данных, информация ′merging_flag′ слияния текущего блока данных может быть установлена в 1, и если текущий блок данных не сливается с соседним блоком данных, информация ′merging_flag′ слияния текущего блока данных может быть установлена в 0. Во время операции 64, если текущий блок данных сливается с соседним блоком данных, так как могут следовать вспомогательной информации предсказания для кодирования с предсказанием текущего блока данных или получить (ее) из информации соседнего блока данных, направление предсказания и информация опорного индекса ′Inter Direction/Ref index′ (внешнее направление/опорный индекс) текущего блока данных могут не быть кодированы. Во время операции 65, хотя текущий блок данных сливается с соседним блоком данных, разностная информация ′mvd′ вектора движения кодируется.
[138] Во время операции 66, если текущий блок данных не сливается с соседним блоком данных, направление предсказания и информация опорного индекса ′Inter Direction/Ref index′ текущего блока данных могут быть кодированы, и во время операции 67 разностная информация ′mvd′ вектора движения может быть кодирована. Например, направление предсказания текущего блока данных может включать в себя направление list0, направление List1 и направление Bi.
[139] Устройство 20 может извлечь и считать информацию режима пропуска текущего блока данных и может извлечь и считать информацию слияния и относящуюся к предсказанию информацию на основании информации режима пропуска, как в способе операций 61-67.
[140] Фиг. 7 является блок-схемой для описания способа кодирования/декодирования информации режима предсказания, относящейся к слиянию информации и относящейся к предсказанию информации, согласно второму примерному варианту осуществления, в котором наличие слияния блоков данных определяется с учетом того, является ли режим предсказания текущего блока данных режимом пропуска и непосредственным режимом.
[141] Во время операции 71 устройство 10 кодирует информацию ′skip_flag′ режима пропуска текущего блока данных. Если определено во время операции 71, что режимом предсказания текущего блока данных является режим пропуска, способ переходит к операции 72. Во время операции 72 информация ′merging_flag′ (флаг слияния) слияния может не быть кодирована.
[142] Если определено во время операции 71, что режимом предсказания текущего блока данных не является режим пропуска, способ переходит к операции 73. Во время операции 73 непосредственный режим ′direct_flag′ (флаг направления) кодируется. Если режимом предсказания текущего блока данных является непосредственный режим, информация ′direct_flag′ непосредственного режима текущего блока данных может быть установлена в 1, и если режимом предсказания текущего блока данных не является непосредственный режим, информация ′direct_flag′ непосредственного режима текущего блока данных может быть установлена в 0. Если определено во время операции 73, что режимом предсказания текущего блока данных является непосредственный режим, способ переходит к операции 74. Во время операции 74 информация ′merging_flag′ слияния может не быть кодирована.
[143] Если определено во время операции 73, что режимом предсказания текущего блока данных не является непосредственный режим, способ переходит к операции 75. Во время операции 75 информация ′merging_flag′ слияния кодируется. Во время операции 76, если текущий блок данных сливается с соседним блоком данных, направление предсказания и информация опорного индекса ′Inter Direction/Ref index′ текущего блока данных может не быть кодирована, и во время операции 77 разностная информация ′mvd′ вектора движения кодируется. В операциях 78 и 79, если текущий блок данных не сливается с соседним блоком данных, направление предсказания и информация опорного индекса ′Inter Direction/Ref index′ текущего блока данных и разностная информация ′mvd′ вектора движения могут быть кодированы.
[144] Устройство 20 может извлечь и считать информацию режима пропуска или информацию непосредственного режима текущего блока данных и может извлечь и считать информацию слияния и относящуюся к предсказанию информацию на основании информации режима пропуска или информации непосредственного режима, как в способе операций 71-79.
[145] Фиг. 8 и 9 являются диаграммами для описания способов выбора одного блока данных, который должен быть слит с текущим блоком данных, из числа расширенных соседних блоков данных текущего блока данных, согласно способу из уровня техники и примерному варианту осуществления, соответственно.
[146] Согласно уровню техники способ слияния блоков данных согласно Фиг. 8, объекты, которые должны быть слиты с текущим блоком 81 данных, ограничены верхним соседним блоком 82 данных и левым соседним блоком 85 данных, контактирующими с верхней левой выборкой текущего блока 81 данных. Таким образом, соседние блоки 89, 91 и 93 данных, контактирующие с верхним левым углом, верхним правым углом и нижним левым углом текущего блока 81 данных, не включаются в группу кандидатов слияния текущего блока 81 данных.
[147] Способ слияния блоков данных согласно Фиг. 9 аналогичен способу предсказания вектора движения внешнего режима. На фиг. 9 группа кандидатов слияния соседних блоков данных, которые могут быть слиты с текущим блоком 81 данных, может включать в себя не только верхние соседние блоки 82, 83 и 84 данных и левые соседние блоки 85, 86, 87 и 88 данных, но также и соседние блоки данных 89, 91 и 93, контактирующие с верхним левым углом, верхним правым углом, и нижним левым углом текущего блока 81 данных.
[148] Например, один из верхней группы 92 кандидатов слияния, включающей в себя верхние соседние блоки 82, 83 и 84 данных текущего блока 81 данных, может быть определен как верхний кандидат А′ слияния, и один из левой группы 95 кандидатов слияния, включающей в себя левые соседние блоки 85, 86, 87 и 88 данных, может быть определен как левый кандидат L′ слияния. Кроме того, один из угловой группы 96 кандидатов слияния, включающей в себя соседние блоки 89, 91 и 93 данных, контактирующие с верхним левым углом, верхним правым углом и нижним левым углом текущего блока 81 данных, может быть определен как угловой кандидат C′ слияния. Один из верхнего кандидата А′ слияния, левого кандидата L′ слияния и углового кандидата C′ слияния могут быть окончательно определены в качестве соседнего блока данных, который должен быть слит с текущим блоком 81 данных.
[149] Способ определения одного из верхней группы 92 кандидатов слияния в качестве верхнего кандидата А′ слияния, способ определения одного из левой группы 95 кандидатов слияния в качестве левого кандидата L′ слияния, способ определения одного из угловой группы 96 кандидатов слияния в качестве углового кандидата C′ слияния, и способ заключительного определения одного из верхнего кандидата А′ слияния, левого кандидата L′ слияния и углового кандидата C′ слияния, могут следовать заранее заданному правилу, как описано со ссылками на фиг. 5.
[150] На фиг. 9, так как направления блоков данных - кандидатов, которые могут быть слиты с текущим блоком 81 данных, включают в себя верхний, нижний и угловой, информация позиции слияния может быть выражена как индекс слияния, а не тип флага 0 или 1.
[151] Фиг. 10, 11, и 12 являются блок-схемами для описания порядков кодирования и декодирования информации режима предсказания, относящейся к слиянию информации и относящейся к предсказанию информации, согласно различным примерным вариантам осуществления.
[152] Со ссылками на фиг. 10 устройство 10 может кодировать информацию режима пропуска и информацию слияния для каждого блока предсказания, который является блоком данных для кодирования с предсказанием.
[153] Во время операции 101 устройство 10 может кодировать информацию ′skip_flag′ режима пропуска блока предсказания, и во время операции 102 устройство 10 может кодировать информацию ′merging_flag′ слияния блока предсказания отличным от режима пропуска. В операциях 103 и 104 устройство 10 может кодировать уникальную информацию «Информация предсказания» режима предсказания и информацию «Информация фрагмента» фрагмента (для) блока предсказания, режим предсказания которого не является режимом пропуска, и который не сливается с соседним блоком данных.
[154] Соответственно, устройство 20 может извлечь и считать информацию режима пропуска и информацию слияния для каждого блока предсказания. Устройство 20 может извлечь уникальную информацию режима предсказания и информацию фрагмента блока предсказания, режим предсказания которого не является режимом пропуска, и который не сливается с соседним блоком данных.
[155] Со ссылками на фиг. 11 устройство 10 может кодировать информацию режима пропуска для каждого блока предсказания, и может кодировать информацию слияния каждого фрагмента, полученного разделением блока предсказания с целью более точного кодирования с предсказанием.
[156] Во время операции 111 устройство 10 может кодировать информацию ′skip_flag′ режима пропуска блока предсказания, во время операции 112 устройство 10 может кодировать информацию «Информация предсказания» режима предсказания блока предсказания, режим предсказания которого не является режимом пропуска, и во время операции 113 устройство 10 может кодировать информацию «Информация фрагмента» фрагмента.
[157] Во время операции 114 устройство 10 может кодировать информацию ′merging_flag′ слияния для каждого фрагмента блока предсказания, режим предсказания которого не является режимом пропуска. Во время операции 115 устройство 10 может кодировать уникальную информацию движения «информация движения» фрагмента, который не сливается с соседним блоком данных, из числа фрагментов блока предсказания, режим предсказания которого не является режимом пропуска.
[158] Соответственно, устройство 20 может извлечь и считать информацию режима пропуска для каждого блока предсказания, и может извлечь и считать информацию слияния для каждого фрагмента. Устройство 20 может извлечь уникальную информацию движения фрагмента, режим предсказания которого не является режимом пропуска и который не сливается с соседним блоком.
[159] Со ссылками на фиг. 12 устройство 10 может кодировать информацию режима пропуска для каждого блока предсказания, и может кодировать информацию слияния для каждого фрагмента, когда заранее определенное условие удовлетворено.
[160] Во время операции 121 устройство 10 может кодировать информацию ′skip_flag′ режима пропуска блока предсказания, во время операции 122 устройство 10 может кодировать информацию «Информация предсказания» режима предсказания для блока предсказания, режим предсказания которого не является режимом пропуска, и во время операции 123 устройство может кодировать информацию «Информация фрагмента» фрагмента.
[161] Во время операции 124 устройство 10 определяет, удовлетворено ли заранее определенное условие для каждого фрагмента блока предсказания. Во время операции 125 информация ′merging_flag′ слияния только блока данных, удовлетворяющего заранее определенному условию из числа фрагментов блока предсказания, режим предсказания которого не является режимом пропуска, может быть кодирован. Во время операции 126 устройство 10 кодирует уникальную информацию «Информация движения» движения фрагмента, который удовлетворяет заранее определенному условию и не сливается с соседним блоком данных, и фрагмента, который не удовлетворяет заранее определенному условию из фрагментов блока предсказания, режим предсказания которого не является режимом пропуска.
[162] Заранее определенное условие фрагмента для кодирования информации слияния может включать в себя случай, когда режимом предсказания фрагмента является заранее определенный режим предсказания. Например, информация слияния фрагмента может быть кодирована согласно условию, что режим предсказания является не режимом пропуска, а внешним режимом (режимом не-пропуска), условию, что режим предсказания не является режимом пропуска и непосредственным режимом, а внешним режимом (внешний режим не пропуска и не непосредственный внешний режим), или условию, что режимом предсказания является внешний режим, который не разделен фрагментом (не разделенный на фрагменты внешний режим).
[163] Более подробно, во время операции 124, если слияние блоков данных выполняется в отношении блока данных, режим предсказания которого не является режимом пропуска и непосредственным режимом, а внешним режимом, устройство 10 может определить, не являются ли режимы предсказания фрагментов блока предсказания, отличные от режима пропуска, не непосредственными режимами, а внешними режимами. Во время операции 125 информация ′merging_flag′ слияния для фрагмента, режим предсказания которого не является непосредственным режимом, может быть кодирована. Во время операции 126 уникальная информация «Информация движения» движения для фрагмента, режим предсказания которого не является непосредственным режимом и который не сливается с соседним блоком данных, и фрагмента, режимом предсказания которого является непосредственный режим, может быть кодирована.
[164] Соответственно, устройство 20 может извлечь и считать информацию режима пропуска для каждого режима предсказания, и может извлечь и считать информацию слияния для каждого фрагмента. Устройство 20 может извлечь и уникальную информацию движения фрагмента, режим предсказания которого не является режимом пропуска, и который удовлетворяет заранее определенному условию, но не сливается с соседним блоком данных, и фрагментом, который не удовлетворяет заранее определенному условию.
[165] Фиг. 13 является диаграммой, иллюстрирующей соседние блоки данных, которые не сливаются с текущим фрагментом, согласно примерному варианту осуществления.
[166] Блок данных для кодирования с предсказанием, то есть, блок предсказания, может быть разделен на два или больше фрагментов для более точного кодирования с предсказанием. Например, ширина первого блока 131 предсказания может быть разделена на первый фрагмент 132 и второй фрагмент 133.
[167] Так как первый фрагмент 132 и второй фрагмент 133 имеют различные характеристики движения даже при том, что первый фрагмент 132 и второй фрагмент 133 включены в первый блок 131 предсказания, слияние блоков данных может не быть выполнено между первым фрагментом 132 и вторым фрагментом 133. Соответственно, устройство 10 может не определить, выполнено ли слияние блоков данных между первым фрагментом 132 и вторым фрагментом 133 в одном и том же первом блоке 131 предсказания. Кроме того, информация индекса слияния для второго фрагмента 133 может не включать в себя индекс, указывающий левый соседний блок данных.
[168] Даже когда высота второго блока 135 предсказания разделена на третий фрагмент 136 и четвертый фрагмент 137, так как слияние блоков данных не должно быть выполнено между третьим фрагментом 136 и четвертым фрагментом 137, устройство 10 может не определить, выполнено ли слияние блоков данных между третьим фрагментом 136 и четвертым фрагментом 137. Кроме того, информация индекса слияния для четвертого фрагмента 137 может не включать в себя индекс, указывающий верхний соседний блок данных.
[169] Фиг. 14 является диаграммой, иллюстрирующей блок данных - кандидат, который изменяется согласно форме и позиции текущего фрагмента, согласно примерному варианту осуществления.
[170] Согласно форме и позиции фрагмента, позиция соседнего блока данных, который должен быть слит, может измениться. Например, если блок 141 предсказания разделен на левый и правый фрагменты 142 и 143, соседние блоки данных - кандидаты, которые могут быть слиты с левым фрагментом 142, могут быть блоком 144 данных, соседним с верхней границей левого фрагмента 142, блоком 145 данных, соседним с левой границей левого фрагмента 142, и блоком 146 данных, соседним с верхним правым углом левого фрагмента 142.
[171] Хотя правый фрагмент 153 контактирует с левым фрагментом 142 на левой границе, так как левый фрагмент 142 и правый фрагмент 143 являются фрагментами одного и того же блока 141 предсказания, слияние может не быть выполнено между левым фрагментом 142 и правым фрагментом 143. Соответственно, соседние кандидаты блока данных, которые могут быть слиты с правым фрагментом 143, могут быть блоком 146 данных, соседним с верхней границей правого фрагмента 143 и блоком 147 данных, соседним с верхним правым углом правого фрагмента 143. Кроме того, информация индекса слияния для правого фрагмента 143 может не включать в себя индекс, указывающий верхний левый соседний блок данных. Фиг. 15 является диаграммой, иллюстрирующей соседний блок данных, который может не быть слит с текущим фрагментом, который является фрагментом, имеющим геометрическую форму, согласно примерному варианту осуществления.
[172] При кодировании с предсказанием устройства 10 блок предсказания может быть разделен не только в вертикальном или горизонтальном направлении, но также и в произвольном направлении на фрагменты, имеющее геометрически различные формы. Блоки 148, 152, 156 и 160 предсказания, полученные посредством выполнения разделения в произвольных направлениях, иллюстрированы на фиг. 15.
[173] Фрагменты, имеющие геометрические формы, могут не быть слиты с соседними блоками данных, контактирующими с верхними границами и левыми границами фрагментов согласно позициям и формам фрагментов. Например, из числа двух фрагментов 149 и 150 блока предсказания 148, фрагмент 150 может быть слит с соседним блоком данных 151, контактирующим с левой границей. Однако, так как соседний блок данных, контактирующий с верхней границей, является фрагментом 149, включенным в тот же блок предсказания 158, фрагмент 150 не может быть слит с верхним соседним блоком данных. В этом случае информация индекса слияния фрагмента 150 может не включать в себя индекс, указывающий фрагмент 149, который является верхним соседним блоком данных.
[174] Аналогично, из числа двух фрагментов 153 и 154 блока предсказания 152, фрагмент 154 может быть слит с левым соседним блоком данных 155. Однако, так как верхний соседний блок данных является фрагментом 153, включенным в тот же блок предсказания 152, фрагмент 154 не может быть слит с верхним соседним блоком данных.
[175] Аналогично, из числа двух фрагментов 157 и 158 блока предсказания 156, фрагмент 158 может быть слит с верхним соседним блоком данных 159. Однако, так как левый соседний блок данных является фрагментом 157, включенным в тот же блок предсказания 156, фрагмент 158 не может быть слит с левым соседним блоком данных.
[176] Аналогично, из числа двух фрагментов 161 и 162 блока предсказания 160, так как фрагмент 161, включенный в тот же блок предсказания 160, является верхним соседним блоком данных и левым соседним блоком данных фрагмента 162, фрагмент 162 не может быть слит с верхним соседним блоком данных и левым соседним блоком данных.
[177] Как описано со ссылками на фиг. 13, 14 и 15, если соседний блок данных, который не может быть слит, генерируется согласно форме или позиции блока данных, информация индекса слияния может не включать в себя индекс, указывающий соседний блок данных, который может не быть слит.
[178] Кроме того, устройство 10 может не выполнять слияние блоков данных, чтобы расширить текущий блок данных и перекрыть текущий блок данных другим блоком данных, который существует ранее.
[179] Например, если один блок предсказания разделен на два фрагмента, и заранее определенный блок данных - кандидат второго фрагмента имеет ту же информацию движения, как первый фрагмент, слияние между вторым фрагментом и заранее определенным блоком данных - кандидатом может не быть разрешено.
[180] Например, из числа первого фрагмента 132 и второго фрагмента 133 первого блока 131 предсказания на Фиг. 13, если верхний блок предсказания второго фрагмента 133 имеет ту же информацию движения, как первый фрагмент 132, верхние блоки предсказания первого фрагмента 132 и второго фрагмента 133 могут быть исключены из группы блоков данных - кандидатов второго фрагмента 133. Это имеет место потому, что, если слияние блоков данных выполняется таким образом, что второй фрагмент 133 ссылается на информацию движения верхнего блока предсказания, это является тем же случаем, когда ссылаются на информацию движения первого фрагмента 132.
[181] Информация слияния наряду с тем, выполнено ли слияние блоков данных, может быть установлена с помощью контекстного моделирования, рассматривая режим предсказания и тип фрагмента соседнего блока данных. Индекс контекстной модели может быть выражен как информация слияния посредством анализа комбинации режима предсказания и типа фрагмента соседнего блока данных текущего блока данных и случая, когда текущий блок данных и соседний блок данных сливаются друг с другом, в качестве контекстной модели.
[182] Таблица 1 показывает информацию слияния с помощью контекстного моделирования согласно примерному варианту осуществления. Для удобства описания объекты, которые должны быть слиты с текущим блоком данных, ограничены левым соседним блоком данных и верхним соседним блоком данных.
[183]
[184] Могут быть выборочно включены фрагменты, имеющие произвольные формы, такие как симметричные типы 2N×2N, 2N×N, N×2N и N×N фрагмента, полученные посредством разделения высоты или ширины блока предсказания согласно симметричному отношению, асимметричные типы 2N×nU, 2N×nD, nL×2N и nR×2N фрагмента, полученные посредством разделения высоты или ширины блока предсказания согласно асимметричному отношению, такому как 1:n или n:1, или геометрические типы фрагмента, полученные посредством разделения высоты или ширины блока предсказания в различные геометрические формы. Асимметричные типы фрагмента 2N×nU и 2N×nD получают посредством разделения высоты блока предсказания согласно отношениям 1:3 и 3:1, соответственно, и асимметричные типы фрагмента nL×2N, и nR×2N получают посредством разделения ширины блока предсказания согласно отношениям 1:3 и 3:1, соответственно.
[185] Согласно Таблице 1, так как слияние блоков данных не выполняется, когда режимы предсказания как левого соседнего блока данных так и верхнего соседнего блока данных текущего блока данных являются внутренними режимами, информации слияния текущего блока данных назначается индекс 0 без необходимости различать контекстные модели согласно типам фрагмента.
[186] Кроме того, предположение, что режимы предсказания левого соседнего блока данных и верхнего соседнего блока данных являются внешними режимами, а не режимами пропуска или непосредственными режимами, когда только один из левого соседнего блока данных и верхнего соседнего блока данных сливается с текущим блоком данных, и когда и левый соседний блок данных и верхний соседний блок данных сливаются с текущим блоком данных, контекстная модель информации слияния может быть установлена согласно комбинации того, выполняется ли слияние блоков данных согласно типам фрагмента соседних блоков данных. В этом случае каждая информация слияния может быть назначена одному из индексов 1-6 контекстной модели согласно Таблице 1.
[187] Кроме того, предполагая, что режимы предсказания являются режимом пропуска и непосредственным режимом, когда по меньшей мере один из левого соседнего блока данных и верхнего соседнего блока данных является режим пропуска или непосредственный режим, контекстный режим информации слияния может быть установлен согласно типам фрагмента соседних блоков данных, и каждая информация слияния может быть назначена на один из индексов 7-9 контекстной модели согласно Таблице 1.
[188] Соответственно, устройство 20 может считывать информацию слияния согласно контекстному моделированию, и может анализировать, выполнено ли слияние между текущим блоком данных и соседним блоком данных, и режим предсказания и тип фрагмента соседнего блока данных.
[189] Устройство 20 может логически вывести информацию движения текущего блока данных посредством использования информации движения соседнего блока данных, который сливается с текущим блоком данных.
[190] Кроме того, устройство 10 и устройство 20 могут выполнить преобразование над слитым блоком данных, если форма слитого блока данных, сформированного слиянием блока данных, является правильным квадратом.
[191] Кроме того, в устройстве 10 и устройстве 20 соседний блок данных, слитый с текущим блоком данных, может совместно использовать информацию о направлении внутреннего предсказания. Информация о направлении предсказания для слитого блока данных, сформированного слиянием блоков данных, может не быть кодирована или декодирована согласно блокам данных, но может быть кодирована или декодирована только однажды для слитого блока данных.
[192] Фиг. 16 является диаграммой, иллюстрирующей пример, в котором используется соседний блок данных, определенный как подлежащий слиянию с текущим блоком данных, согласно примерному варианту осуществления.
[193] Устройство 10 и устройство 20 могут расширить границу соседнего блока данных, который должен быть слит с текущим блоком данных 163, и могут использовать расширенную границу, чтобы разделить фрагмент текущего блока 164 данных. Например, если текущий блок 163 данных сливается с левыми соседними блоками данных 164, 165 и 166, границы левых соседних блоков 164, 165 и 166 данных могут быть расширены, чтобы достигнуть текущего блока 163 данных. Текущий блок 163 данных может быть разделен на фрагменты 167, 168 и 169 согласно расширенным границам левых соседних блоков 165, 165 и 166 данных.
[194] Фиг. 17 является последовательностью операций, иллюстрирующей способ кодирования видео посредством использования слияния блоков данных, согласно примерному варианту осуществления.
[195] Во время операции 171 определяется режим кодирования, указывающий блок данных для кодирования картинки и способ кодирования, включающий в себя кодирование с предсказанием, выполняемый для каждого блока данных.
[196] Во время операции 172 наличие слияния с по меньшей мере одним соседним блоком данных определено на основании по меньшей мере одного из режима предсказания и режима кодирования согласно блокам данных. Блок данных может включать в себя блок предсказания для кодирования с предсказанием и фрагмент для точного кодирования с предсказанием этого блока предсказания.
[197] Из числа множества верхних соседних блоков данных, контактирующих с верхней границей, и множества левых соседних блоков данных, контактирующих с левой границей текущего блока данных, может отыскиваться блок данных, который должен быть слит с текущим блоком данных. Кроме того, из числа соседних блоков данных, контактирующих с верхним левым углом, верхним правым верхним углом и нижним левым углом текущего блока данных, может отыскиваться блок данных, который должен быть слит с текущим блоком данных.
[198] Во время операции 173 информация режима предсказания, относящаяся к слиянию информация и относящаяся к предсказанию информация определяются на основании наличия слияния с соседним блоком данных согласно блокам данных, и информация кодирования, включающая в себя информацию режима предсказания, относящуюся к слиянию информацию и относящуюся к предсказанию информацию, кодируется.
[199] Относящаяся к слиянию информация блока данных, режим предсказания которого является режимом пропуска и непосредственный режим, может быть кодирована. Соответственно, относящаяся к слиянию информация блока данных, который определен как подлежащий слиянию с заранее определенным соседним блоком данных, может быть кодирована после того, как информация режима пропуска или информация непосредственного режима кодирована. Относящаяся к слиянию информация может включать в себя информацию слияния, указывающую, выполнено ли слияние между текущим блоком данных и соседним блоком данных, и информацию индекса слияния, указывающую соседний блок данных.
[200] Если и информация режима пропуска и относящаяся к слиянию информация блока предсказания кодируются, информация режима предсказания и информация типа фрагмента блока предсказания могут быть кодированы после того, как информация режима пропуска и относящаяся к слиянию информация закодированы.
[201] Если информация режима пропуска блока предсказания кодируется и относящейся к слиянию информации фрагмента кодируется, относящаяся к слиянию информация может быть кодирована согласно фрагментам после того как информация режима пропуска, информация режима предсказания и информация типа фрагмента блока предсказания закодированы.
[202] Фиг. 18 является последовательностью операций, иллюстрирующей способ декодирования видео посредством использования слияния блоков данных, согласно примерному варианту осуществления.
[203] Во время операции 181 принятый поток битов синтаксически разбирается, кодированные видео данные и информация кодирования извлекаются из потока битов, и информация режима предсказания, относящаяся к слиянию информация и относящаяся к предсказанию информация извлекаются из информации кодирования.
[204] Относящаяся к слиянию информация может быть извлечена на основании результата считывания информации режима пропуска или информации непосредственного режима текущего блока данных. Например, относящаяся к слиянию информация блока данных, режим предсказания которого не является режимом пропуска, может быть извлечена. Альтернативно, относящаяся к слиянию информация блока данных, режимом предсказания которого является внешний режим, а не режим пропуска и непосредственный режим, может быть извлечена. Информация слияния, указывающая, выполнено ли слияние между текущим блоком данных и соседним блоком данных, и информация индекса слияния, указывающая соседний блок данных, могут быть считаны из относящейся к слиянию информации.
[205] Если информация режима пропуска и относящаяся к слиянию информация извлечены для каждого блока предсказания, информация режима предсказания и информация типа фрагмента блока предсказания могут быть извлечены после того, как информация режима пропуска и относящаяся к слиянию информация извлечены.
[206] Если информация режима пропуска извлечена на уровне блока предсказания, и относящаяся к слиянию информация извлечена на уровне фрагмента, относящаяся к слиянию информация может быть извлечена согласно фрагментам после того как информация режима пропуска, информация режима предсказания и информация типа фрагмента блока предсказания извлечены.
[207] Во время операции 182 наличие слияния с по меньшей мере одним соседним блоком данных анализируется на основании по меньшей мере одного из режима предсказания и режима кодирования согласно блокам данных на основании информации режима предсказания и относящейся к слиянию информации. Внешнее предсказание и компенсация движения выполняются в отношении блока данных, слитого с соседним блоком данных, посредством использования относящейся к предсказанию информации соседнего блока данных, и кодированные видео данные декодируются согласно определенным блокам данных на основании информации кодирования.
[208] Из числа множества верхних соседних блоков данных, контактирующих с верхней границей, и множеством левых соседних блоков данных, контактирующих с левой границей, блок данных, который должен быть слит с текущим блоком данных, может быть определен на основании информации слияния и информации индекса слияния. Кроме того, из числа соседних блоков данных, контактирующих с верхним левым углом, верхним правым углом и нижним левым углом текущего блока данных, может быть определен блок данных, который должен быть слит с текущим блоком данных.
[209] Относящаяся к движению информация текущего блока данных может быть восстановлена посредством использования относящейся к движению информации блока данных, слитого с текущим блоком данных. Текущий блок данных может быть восстановлен, и картинка может быть восстановлена с помощью компенсации движения, выполненной в отношении текущего блока данных, посредством использования относящейся к движению информации.
[210] Устройство и способ кодирования видео и устройство и способ декодирования видео посредством использования слияния блоков данных на основании блоков кодирования, имеющих структуру дерева, согласно одному или более примерным вариантам осуществления, описаны ниже по тексту со ссылками на фиг. 19-33.
[211] Фиг. 19 является блок-схемой устройства 100 для кодирования видео посредством использования слияния блоков данных на основании блоков кодирования, имеющих структуру дерева, согласно примерному варианту осуществления.
[212] Устройство 100 включает в себя разделитель 110 максимального блока кодирования, модуль 120 определения блока кодирования и модуль 130 вывода. Для удобства описания устройство 100 для кодирования видео посредством использования слияния блоков данных на основании блоков кодирования, имеющих структуру дерева, упоминается ′как устройство 100 для кодирования видео′.
[213] Разделитель 110 максимального блока кодирования может разделять текущую картинку на основании максимального блока кодирования для текущей картинки изображения. Если текущая картинка больше, чем максимальный блок кодирования, данные изображения текущей картинки могут быть разделены в по меньшей мере один максимальный блок кодирования. Максимальный блок кодирования может быть блоком данных, имеющим размер 32x32, 64x64, 128x128, 256x256, и т.д., в котором форма блока данных является квадратом, имеющим ширину и длину равные степени 2. Данные изображения могут быть выведены к модулю 120 определения блока кодирования согласно по меньшей мере одному максимальному блоку кодирования.
[214] Блок кодирования может быть охарактеризован максимальным размером и глубиной. Глубина обозначает количество раз, сколько блок кодирования пространственно разделяется из максимального блока кодирования, и когда глубина углубляется, более глубокие блоки кодирования согласно глубинам могут быть разделены из максимального блока кодирования до минимального блока кодирования. Глубина максимального блока кодирования является самой верхней глубиной, и глубина минимального блока кодирования является самой нижней глубиной. Так как размер блока кодирования, соответствующего каждой глубине, уменьшается, когда углубляется глубина максимального блока кодирования, блок кодирования, соответствующий верхней глубине, может включать в себя множество блоков кодирования, соответствующих более низким глубинам.
[215] Как описано выше, данные изображения текущей картинки разделяются в максимальные блоки кодирования согласно максимальному размеру блока кодирования, и каждый из максимальных блоков кодирования может включать в себя более глубокие блоки кодирования, которые разделяются согласно глубинам. Так как максимальный блок кодирования разделяется согласно глубинам, данные изображения пространственной области, включенной в максимальный блок кодирования, могут быть иерархически классифицированы согласно глубинам.
[216] Максимальная глубина и максимальный размер блока кодирования, которые ограничивают общее количество раз, сколько высота и ширина максимального блока кодирования иерархически разделяются, могут быть заранее определены.
[217] Модуль 120 определения блока кодирования кодирует по меньшей мере одну область разделения, полученную разделением области максимального блока кодирования согласно глубинам, и определяет глубину, чтобы вывести окончательные кодированные данные изображения согласно по меньшей мере одной области разделения. Другими словами, модуль 120 определения блока кодирования определяет кодированную глубину посредством кодирования данных изображения в более глубоких блоках кодирования согласно глубинам, согласно максимальному блоку кодирования текущей картинки, и выбору глубины, имеющих наименьшую ошибку кодирования. Таким образом, кодированные данные изображения блока кодирования, соответствующего определенной кодированной глубине, окончательно выводятся. Кроме того, блоки кодирования, соответствующие кодированной глубине, могут быть расценены как кодированные блоки кодирования. Определенная кодированная глубина и кодированные данные изображения согласно определенной кодированной глубине выводятся к модулю 130 вывода.
[218] Данные изображения в максимальном блоке кодирования кодируются на основании более глубоких блоков кодирования, соответствующих по меньшей мере одной глубине, равной или ниже максимальной глубины, и результаты кодирования данных изображения сравниваются на основании каждого из более глубоких блоков кодирования. Глубина, имеющая наименьшую ошибку кодирования, может быть выбрана после сравнения ошибок кодирования более глубоких блоков кодирования. По меньшей мере одна кодированная глубина может быть выбрана для каждого максимального блока кодирования.
[219] Размер максимального блока кодирования разделяется, когда блок кодирования иерархически разделяется согласно глубинам, и когда количество блоков кодирования увеличивается. Кроме того, даже если блоки кодирования соответствуют одной и той же глубине в одном максимальном блоке кодирования, каждый из блоков кодирования, соответствующих одной и той же глубине, может быть разделен до более низкой глубины с помощью измерения ошибки кодирования данных изображения каждого блока кодирования, отдельно. Соответственно, даже когда данные изображения включены в один максимальный блок кодирования, данные изображения разделяются на области согласно глубинам, ошибки кодирования могут отличаться согласно областям в одном максимальном блоке кодирования, и таким образом кодированные глубины могут отличаться согласно областям в данных изображения. Таким образом, одна или более кодированные глубины могут быть определены в одном максимальном блоке кодирования, и данные изображения максимального блока кодирования могут быть разделены согласно блокам кодирования по меньшей мере одной кодированной глубины.
[220] Соответственно, модуль 120 определения блока кодирования может определить блоки кодирования, имеющие структуру дерева, включенные в максимальный блок кодирования. ′Блоки кодирования, имеющие структуру дерева′ включают в себя блоки кодирования, соответствующие глубине, определенной в качестве кодированной глубины, из числа всех более глубоких блоков кодирования, включенных в максимальный блок кодирования. Блок кодирования кодированной глубины может быть иерархически определен согласно глубинам в одной и той же области максимального блока кодирования, и может быть независимо определен в различных областях. Аналогично, кодированная глубина в текущей области может быть независимо определена из кодированной глубины в другой области.
[221] Максимальная глубина является индексом, относящимся к количеству раз разделения из максимального блока кодирования до минимального блока кодирования. Первая максимальная глубина может обозначать общее количество раз разделения из максимального блока кодирования до минимального блока кодирования. Вторая максимальная глубина может обозначать общее количество уровней глубины из максимального блока кодирования до минимального блока кодирования. Например, когда глубина максимального блока кодирования равна 0, глубина блока кодирования, в котором максимальный блок кодирования разделен однажды, может быть установлена в 1, и глубина блока кодирования, в котором максимальный блок кодирования разделен дважды, может быть установлена в 2. Здесь, если минимальным блоком кодирования является блок кодирования, в котором максимальный блок кодирования разделен четыре раза, существуют 5 уровней глубины из глубин 0, 1, 2, 3 и 4, и таким образом первая максимальная глубина может быть установлена в 4, и вторая максимальная глубина может быть установлена в 5.
[222] Кодирование с предсказанием и преобразование могут быть выполнены согласно максимальному блоку кодирования. Кодирование с предсказанием и преобразование также выполняются на основании более глубоких блоков кодирования согласно глубине, равной или глубинам меньшим, чем максимальная глубина, согласно максимальному блоку кодирования. Преобразование, выполняемое, чтобы кодировать видео, может включать в себя преобразование частоты, ортогональное преобразование, целочисленное преобразование и так далее.
[223] Так как количество более глубоких блоков кодирования увеличивается всякий раз, когда максимальный блок кодирования разделяется согласно глубинам, кодирование, включающее в себя кодирование с предсказанием и преобразование, выполняется в отношении всех более глубоких блоков кодирования, генерируемых, когда глубина углубляется. Для удобства описания кодирование с предсказанием и преобразование будут описаны ниже на основании блока кодирования текущей глубины в максимальном блоке кодирования.
[224] Устройство 100 может различным образом выбрать размер или форму блока данных для кодирования данных изображения. Чтобы кодировать данные изображения, операции, такие как кодирование с предсказанием, преобразование и энтропийное кодирование, выполняются, и в это время тот же блок данных может использоваться для всех операций или различные блоки данных могут использоваться для каждой операции.
[225] Например, устройство 100 может выбрать не только блок кодирования для кодирования данных изображения, но также и блок данных, отличающийся от упомянутого блока кодирования, чтобы выполнить кодирование с предсказанием в отношении данных изображения в блоке кодирования.
[226] Чтобы выполнить кодирование с предсказанием в максимальном блоке кодирования, кодирование с предсказанием может быть выполнено на основании блока кодирования, соответствующего кодированной глубине, то есть на основании блока кодирования, который больше не разделен на блоки кодирования, соответствующие более низкой глубине. В дальнейшем блок кодирования, который больше не разделен и становится базисным блоком для кодирования с предсказанием, будет упоминаться как ′блок предсказания′. Фрагмент, полученный разделением блока предсказания, может включать в себя блок данных, полученный разделением по меньшей мере одного из высоты и ширину блока предсказания.
[227] Например, когда блок кодирования 2N×2N (где N - положительное целое число) больше не разделяется и становится блоком предсказания размером 2N×2N, и размер фрагмента может быть 2N×2N, 2N×N, N×2N, или N×N. Примеры типа фрагмента включают в себя симметричные фрагменты, которые получают симметрично разделяя высоту или ширину блока предсказания, фрагменты, полученные асимметричным разделением высоты или ширины блока предсказания, таким как 1:n или n:1, фрагменты, которые получают, геометрически разделяя блок предсказания, и фрагменты, имеющие произвольные формы.
[228] Режим предсказания блока предсказания может быть по меньшей мере одним из внутреннего режима, внешнего режима и режима пропуска. Например, внутренний режим или внешний режим могут быть выполнены над фрагментом 2N×2N, 2N×N, N×2N или N×N. Кроме того, режим пропуска может быть выполнен только над фрагментом 2N×2N. Кодирование независимо выполняют над одним блоком предсказания в блоке кодирования, таким образом выбирая режим предсказания, имеющий наименьшую ошибку кодирования.
[229] Устройство 100 может также выполнить преобразование в отношении данных изображения в блоке кодирования, основанное не только на блоке кодирования для кодирования данных изображения, но также и на основании блока данных, который отличается от этого блока кодирования.
[230] Чтобы выполнить преобразование в блоке кодирования, преобразование может быть выполнено на основании блока преобразования, имеющего размер, меньший чем или равный блоку кодирования. Например, блок преобразования может включать в себя блок данных для внутреннего режима и блок преобразования для внешнего режима.
[231] Аналогично блокам кодирования, имеющим структуру дерева, блок преобразования в блоке кодирования может быть рекурсивно разделен на области меньшего размера так, чтобы блок преобразования мог быть определен независимо в блоках областей. Таким образом, остаточные данные в блоке кодирования могут быть разделены согласно преобразованию, имеющему структуру дерева, согласно глубинам преобразования.
[232] Блок данных, используемый как основа преобразования, будет ниже упоминаться как ′блок преобразования′. Глубина преобразования, указывающая количество раз разделения, чтобы достигнуть блока преобразования посредством разделения высоты и ширины блока кодирования, может также быть установлена в блоке преобразования. Например, в текущем блоке кодирования 2N×2N, глубина преобразования может быть равна 0, когда размер блока преобразования также равен 2N×2N, может быть равна 1, когда каждая высота и ширина текущего блока кодирования разделены на две равных части, полностью разделены на 41 блоков преобразования, и размер блока преобразования равен таким образом N×N, и может быть равна 2, когда каждая высота и ширина текущего блока кодирования разделены на четыре равных части, полностью разделены на 42 блоков преобразования, и размер блока преобразования таким образом равен N/2×N/2. Например, блок преобразования может быть установлен согласно иерархической структуре дерева, в которой блок преобразования верхней глубины преобразования разделен на четыре блока преобразования более низкой глубины преобразования согласно иерархическим характеристикам глубины преобразования.
[233] Информация кодирования согласно блокам кодирования, соответствующим кодированной глубине, требует не только информации о кодированной глубине, но также и об информации, относящейся к кодированию с предсказанием и преобразованию. Соответственно, модуль 120 определения блока кодирования не только определяет кодированную глубину, имеющую наименьшую ошибку кодирования, но также и определяет тип фрагмента в блоке предсказания, режим предсказания согласно блокам предсказания и размер блока преобразования для преобразования.
[234] Блоки кодирования, имеющие структуру дерева в максимальном блоке кодирования и способ определения фрагмента, согласно примерным вариантам осуществления, описано подробно ниже со ссылками на фиг. 21-31.
[235] Модуль 120 определения блока кодирования может измерить ошибку кодирования более глубоких блоков кодирования согласно глубинам посредством использования оптимизации «искажение-скорость» на основании множителей Лагранжа.
[236] Модуль 130 вывода выводит данные изображения максимального блока кодирования, который кодирован на основании по меньшей мере одной кодированной глубины, определенной модулем 120 определения блока кодирования, и информации о режиме кодирования согласно кодированной глубине, в потоках битов.
[237] Кодированные данные изображения могут быть получены посредством кодирования остаточных данных изображения.
[238] Информация о режиме кодирования согласно кодированной глубине может включать в себя информацию о кодированной глубине, о типе фрагмента в блоке предсказания, режим предсказания и размер блока преобразования.
[239] Информация о кодированной глубине может быть определена посредством использования информации разделения согласно глубинам, которая указывает, выполнено ли кодирование в отношении блоков кодирования более низкой глубины вместо текущей глубины. Если текущая глубина текущего блока кодирования является кодированной глубиной, данные изображения в текущем блоке кодирования кодируются и выводятся, и таким образом информация разделения может быть определена, чтобы не разделять текущий блок кодирования до более низкой глубины. Альтернативно, если текущая глубина текущего блока кодирования не является кодированной глубиной, кодирование выполняется над блоком кодирования более низкой глубины, и таким образом информация разделения может быть определена, чтобы разделить текущий блок кодирования, чтобы получить блоки кодирования более низкой глубины.
[240] Если текущая глубина не является кодированной глубиной, кодирование выполняется в отношении блока кодирования, который разделен на блок кодирования более низкой глубины. Так как по меньшей мере один блок кодирования более низкой глубины существует в одном блоке кодирования текущей глубины, кодирование повторяющимся образом выполняется в отношении каждого блока кодирования более низкой глубины, и таким образом кодирование может быть рекурсивно выполнено для блоков кодирования, имеющих одну и ту же глубину.
[241] Так как блоки кодирования, имеющие структуру дерева, определены для одного максимального блока кодирования, и информация о по меньшей мере одном режиме кодирования определена для блока кодирования кодированной глубины, информация о по меньшей мере одном режиме кодирования может быть определена для одного максимального блока кодирования. Кроме того, кодированная глубина данных изображения максимального блока кодирования может быть различной согласно местоположениям, так как данные изображения иерархически разделены согласно глубинам, и таким образом информация о кодированной глубине и режиме кодирования может быть установлена для данных изображения.
[242] Соответственно, модуль 130 вывода может назначить информацию кодирования о соответствующей кодированной глубине и режиме кодирования по меньшей мере одному из блока кодирования, блока предсказания и минимального блока, включенных в максимальный блок кодирования.
[243] Минимальный блок является прямоугольным блоком данных, полученным посредством разделения минимального блока кодирования, составляющего самую нижнюю глубину 4. Альтернативно, минимальный блок может быть максимальным прямоугольным блоком данных, который может быть включен во все блоки кодирования, блоки предсказания, блоки фрагментов и блоки преобразования, включенные в максимальный блок кодирования.
[244] Например, информация кодирования, выводимая через модуль 130 вывода, может быть классифицирована на информацию кодирования согласно блокам кодирования и информацию кодирования согласно блокам предсказания. Информация кодирования согласно блокам кодирования может включать в себя информацию о режиме предсказания и о размере фрагментов. Информация кодирования согласно блокам предсказания может включать в себя информацию об оцененном направлении внешнего режима, об индексе опорного изображения внешнего режима, о векторе движения, о компоненте насыщенности цвета внутреннего режима и о способе интерполяции внутреннего режима. Кроме того, информация о максимальном размере блока кодирования, определенного согласно картинкам, вырезкам или группам GOP (группам картинок), и информация о максимальной глубине могут быть вставлены в SPS (набор параметров последовательности) или заголовок потока битов.
[245] В устройстве 100 более глубокий блок кодирования может быть блоком кодирования, полученным посредством разделения высоты или ширины блока кодирования верхней глубины на два. Другими словами, когда размер блока кодирования текущей глубины равен 2Nx2N, размер блока кодирования более низкой глубины равен NxN. Кроме того, блок кодирования текущей глубины, имеющей размер 2Nx2N, может включать в себя максимум 4 блока кодирования более низкой глубины.
[246] Соответственно, устройство 100 может сформировать блоки кодирования, имеющие структуру дерева, посредством определения блоков кодирования, имеющих оптимальную форму и оптимальный размер для каждого максимального блока кодирования, на основании размера максимального блока кодирования и максимальной глубины, определенной, рассматривая характеристики текущей картинки. Кроме того, так как кодирование может быть выполнено в отношении каждого максимального блока кодирования посредством использования любого из различных режимов предсказания и преобразований, оптимальный режим кодирования может быть определен, рассматривая характеристики блока кодирования различных размеров изображения.
[247] Устройство 100 может дополнительно выполнять способ слияния блоков данных, чтобы совместно использовать относящуюся к предсказанию информацию между блоками данных, смежными с друг другом, и имеющие аналогичную относящуюся к предсказанию информацию. Модуль 120 определения блока кодирования устройства 100 может включать в себя модуль 11 определения блока кодирования и модуль 13 определения слияния данных из устройства 10, и модуль 130 вывода из устройства 100 может включать в себя модуль 15 определения информации кодирования устройства 10.
[248] Соответственно, модуль 120 определения блока кодирования устройства 100 может определить, выполняется ли слияние блоков данных между соседними блоками данных, в отношении блоков кодирования, блоков предсказания и фрагментов, имеющих структуру дерева, и модуль 130 вывода может выполнить кодирование, включая относящуюся к слиянию информацию в информация кодирования о блоке кодирования.
[249] Модуль 130 вывода может вставить относящуюся к слиянию информацию с информацией кодирования о блоке кодирования и информацией о максимальном размере блока кодирования текущей картинки в заголовок о текущей картинке, PPS или SPS.
[250] Модуль 120 определения блока кодирования может анализировать возможность слияния блоков данных для совместного использования относящейся к предсказанию информации с соседним блоком данных, даже если режим предсказания текущего блока предсказания или текущего фрагмента блоков кодирования, имеющих структуру дерева, является режимом пропуска или непосредственным режимом.
[251] Модуль 120 определения блока кодирования может включать в себя все из множества левых соседних блоков данных, соседних с левой границей текущего блока предсказания или текущего фрагмента, и все из множества верхних соседних блоков данных, соседних с верхней границей в группе кандидатов соседних блоков данных, которые должны быть слиты с текущим блоком данных или текущим фрагментом.
[252] На нижний левый соседний блок данных, соседний с нижним левым углом текущего блока предсказания или текущего фрагмента, можно также ссылаться согласно порядку сканирования или порядку декодирования на основании блоков кодирования, имеющих структуру дерева. Соответственно, модуль 120 определения блока кодирования может также включать в себя блоки данных, соседние с верхним левым углом, верхним правым углом и нижним левым углом, в дополнение ко всем из множества левых соседних блоков данных и верхних соседних блоков данных в группе кандидатов слияния текущего блока предсказания или текущего фрагмента.
[253] Кроме того, так как возможность слияния блоков данных определяется на основании режима предсказания текущего блока предсказания или текущего фрагмента, операции кодирования информации режима предсказания и информации слияния тесно связаны. Например, модуль 130 вывода может кодировать информацию кодирования таким образом, что относящаяся к слиянию информация устанавливается на основании информации пропуска или информации направления для текущего блока предсказания или текущего фрагмента блоков кодирования, имеющих структуру дерева.
[254] Так как блоки кодирования, имеющие структуру дерева, составленные устройством 100, включают в себя блоки предсказания и фрагменты, имеющие различные режимы предсказания и различные формы, блоки предсказания или фрагменты, имеющие различные режимы предсказания и различные формы могут контактировать с верхней границей и левой границей текущего блока предсказания или текущего фрагмента. Модуль 120 определения блока кодирования может искать возможность, что слияние блоков данных выполняется между текущим блоком данных и множеством различных соседних блоков предсказания или соседними фрагментами, контактирующими с верхней границей и левой границей текущего блока предсказания или текущего фрагмента, и может определить объект, который должен быть слит.
[255] Соответственно, так как текущий блок предсказания или текущий фрагмент совместно использует относящуюся к предсказанию информацию с соседними блоками данных, имеющими различные размеры, формы и позиции, на основании блоков кодирования, имеющих структуру дерева, избыточные данные могут быть удалены посредством использования периферийной информации в более широком диапазоне, и эффективность кодирования видео может быть улучшена.
[256] Фиг. 20 является блок-схемой устройства 200 для декодирования видео посредством использования слияния блоков данных на основании блоков кодирования, имеющих структуру дерева, согласно примерному варианту осуществления.
[257] Устройство 200 включает в себя приемник 210, модуль 220 извлечения информации кодирования и данных изображения и декодер 230 данных изображения. Для удобства описания устройство 200 для декодирования видео посредством использования слияния блоков данных на основании блоков кодирования, имеющих структуру дерева, упоминается ′как устройство 200 для декодирования видео′.
[258] Определения различных терминов, таких как блок кодирования, глубина, блок предсказания, блок преобразования и информация о различных режимах кодирования, для различных операций устройства 200 идентичны описанным со ссылками на фиг. 19 и устройство 100.
[259] Приемник 210 принимает и выполняет синтаксический разбор потока битов кодированного видео. Модуль 220 извлечения информации кодирования и данных изображения извлекает кодированные данные изображения для каждого блока кодирования из синтаксически разобранного потока битов, в котором блоки кодирования имеют структуру дерева согласно максимальным блокам кодирования, и выводит извлеченные данные изображения к декодеру 230 данных изображения. Модуль 220 извлечения информации кодирования и данных изображения может извлечь информацию о максимальном размере блока кодирования текущей картинки из заголовка о текущей картинке, PPS или SPS.
[260] Кроме того, модуль 220 извлечения информации кодирования и данных изображения извлекает информацию о кодированной глубине и режиме кодирования для блоков кодирования, имеющих структуру дерева, согласно максимальным блокам кодирования из синтаксически разобранного потока битов. Извлеченная информация о кодированной глубине и режиме кодирования выводится к декодеру 230 данных изображения. Другими словами, данные изображения в потоке битов разделяются на максимальный блок кодирования так, что декодер 230 данных изображения декодирует данные изображения для каждого максимального блока кодирования.
[261] Информация о кодированной глубине и режиме кодирования согласно максимальному блоку кодирования может быть установлена для информации о по меньшей мере одном блоке кодирования, соответствующем кодированной глубине, и информация о режиме кодирования может включать в себя информацию о типе фрагмента соответствующего блока кодирования, соответствующего кодированной глубине, о режиме предсказания и размере блока преобразования. Кроме того, информация кодирования о кодированной глубине и режиме кодирования может также включать в себя относящуюся к слиянию информацию о текущем блоке предсказания или текущем фрагменте.
[262] Информация о кодированной глубине и режиме кодирования согласно максимальным блокам кодирования, извлеченным модулем 220 извлечения информации кодирования и данных изображения, является информацией о кодированной глубине и режиме кодирования, определенной для генерирования минимальной ошибки кодирования, когда кодер, такой как устройство 100, повторяющимся образом выполняет кодирование для каждого более глубокого блока кодирования согласно глубинам согласно максимальным блокам кодирования. Соответственно, устройство 200 может восстановить изображение посредством декодирования данных изображения согласно кодированной глубине и режиму кодирования, который генерирует минимальную ошибку кодирования.
[263] Так как информация кодирования о кодированной глубине и режиме кодирования может быть назначена на заранее определенный блок данных из числа соответствующих блока кодирования, блока предсказания и минимальный блок, модуль 220 извлечения информации кодирования и данных изображения может извлечь информацию о кодированной глубине и режиме кодирования согласно заранее определенным блокам данных. Заранее определенные блоки данных, которым назначена одна и та же информация о кодированной глубине и режиме кодирования, могут быть логически выведены, чтобы быть блоками данных, включенными в один и тот же максимальный блок кодирования.
[264] Декодер 230 данных изображения восстанавливает текущую картинку посредством декодирования данных изображения в каждом максимальном блоке кодирования на основании информации о кодированной глубине и режиме кодирования согласно максимальным блокам кодирования. Другими словами, декодер 230 данных изображения может декодировать кодированные данные изображения на основании извлеченной информации о типе фрагмента, режиме предсказания и блоке преобразования для каждого блока кодирования из числа блоков кодирования, имеющих структуру дерева, включенных в каждый максимальный блок кодирования. Процесс декодирования может включать в себя предсказание, включающее в себя внутреннее предсказание и компенсацию движения, и обратное преобразование.
[265] Декодер 230 данных изображения может выполнить внутреннее предсказание или компенсацию движения согласно фрагменту и режиму предсказания каждого блока кодирования на основании информации о типе фрагмента и режиме предсказания блока предсказания блока кодирования согласно кодированным глубинам.
[266] Кроме того, чтобы выполнить обратное преобразование согласно максимальным блокам кодирования, декодер 230 данных изображения может выполнить обратное преобразование на основании блока преобразования для каждого блока кодирования посредством считывания блоков преобразования, имеющих структуру дерева, включающих в себя информацию о размерах блоков преобразования блоков кодирования согласно кодированным глубинам.
[267] Декодер 230 данных изображения может определить по меньшей мере одну кодированную глубину текущего максимального блока кодирования посредством использования информации разделения согласно глубинам. Если информация разделения указывает, что данные изображения больше не разделены в текущей глубине, текущая глубина является кодированной глубиной. Соответственно, декодер 230 данных изображения может декодировать кодированные данные по меньшей мере одного блока кодирования, соответствующего каждой кодированной глубине в текущем максимальном блоке кодирования посредством использования информации о типе фрагмента блока предсказания, режиме предсказания и размере блока преобразования для каждого блока кодирования, соответствующего кодированной глубине, и вывести данные изображения текущего максимального блока кодирования.
[268] Другими словами, блоки данных, содержащие информацию кодирования, включающую в себя одну и ту же информацию разделения, могут быть собраны, наблюдая информацию кодирования, установленную назначенной для заранее определенного блока данных из числа блока кодирования, блока предсказания и минимального блока, и собранные блоки данных, могут быть рассмотрены как являющиеся одним блоком данных, который должен быть декодирован декодером 230 данных изображения в одном и том же режиме кодирования.
[269] Кроме того, устройство 200 может восстановить текущий блок предсказания или текущий фрагмент посредством использования относящейся к предсказанию информации периферийного блока данных текущего блока предсказания или текущего фрагмента посредством использования способа слияния блоков данных. Для этого приемник 210 и модуль 220 извлечения информации кодирования и данных изображения из устройства 200 могут включать в себя модуль синтаксического разбора/модуль извлечения 21 из устройства 20, и декодер 230 данных изображения из устройства 200 может включать в себя модуль 23 определения слияния блоков данных из устройства 20.
[270] Модуль 220 извлечения информации кодирования и данных изображения может извлечь информацию режима предсказания и относящуюся к слиянию информацию из информации о режиме кодирования. Модуль 220 извлечения информации кодирования и данных изображения может определить возможность извлечения и считывания относящейся к слиянию информации согласно информации режима предсказания в информации о режиме кодирования на основании тесной связи между информацией режима предсказания и относящейся к слиянию информации. Например, модуль 220 извлечения информации кодирования и данных изображения может извлечь относящуюся к слиянию информацию на основании информации режима пропуска или непосредственной информации для текущего блока предсказания или текущего фрагмента блоков кодирования, имеющих структуру дерева. Кроме того, информация слияния и информация индекса слияния могут быть извлечены в качестве относящейся к слиянию информации.
[271] Декодер 230 данных изображения из устройства 200 может сформировать блоки кодирования, имеющие структуру дерева, на основании информации о режиме кодирования и кодированной глубины, и каждый блок кодирования из числа блоков кодирования, имеющих структуру дерева, включает в себя блоки предсказания и фрагменты, имеющие различные режимы предсказания и различные формы.
[272] Декодер 230 данных изображения из устройства 200 может искать, может ли быть выполнено слияние между текущим блоком данных и различными соседними блоками предсказания или соседними фрагментами, контактирующими с верхней границей и левой границей текущего блока предсказания или текущего фрагмента, и может определить объект, который должен быть слит. Относящаяся к предсказанию информация текущего блока предсказания или текущего фрагмента может быть определена или логически выведена, ссылаясь на относящуюся к предсказанию информацию слитого соседнего блока предсказания или фрагмента.
[273] Устройство 200 может получить информацию кодирования о по меньшей мере одном блоке кодирования, который генерирует минимальную ошибку кодирования, когда кодирование рекурсивно выполняется для каждого максимального блока кодирования, и может использовать эту информацию, чтобы декодировать текущую картинку. Другими словами, блоки кодирования, имеющие структуру дерева, определенные как оптимальные блоки кодирования в каждом максимальном блоке кодирования, могут быть декодированы.
[274] Данные, кодированные посредством совместного использования относящейся к предсказанию информации соседних блоков данных, имеющих различные размеры и формы, на основании блоков кодирования согласно структуре дерева, могут быть точно декодированы, обращаясь к относящейся к предсказанию информации соседнего блока данных на основании относящейся к предсказанию информации, и относящейся к слиянию информации, установленной на основании тесной связи.
[275] Способ определения блоков кодирования, имеющих структуру дерева, блока предсказания и блока преобразования согласно примерному варианту осуществления, описаны ниже со ссылками на фиг. 21-31.
[276] Фиг. 21 является диаграммой для описания концепции блоков кодирования согласно примерному варианту осуществления.
[277] Размер блока кодирования может быть выражен как ширина x высота, и может быть равен 64×64, 32×32, 16×16 и 8×8. Блок кодирования 64×64 может быть разделен на фрагменты 64×64, 64×32, 32×64 или 32×32, и блок кодирования 32×32 может быть разделен на фрагменты 32×32, 32×16, 16×32 или 16×16, блок кодирования 16×16 может быть разделен на фрагменты 16×16, 16×8, 8×16 или 8×8, и блок кодирования 8×8 может быть разделен на фрагменты 8×8, 8×4, 4×8, или 4×4.
[278] В видео данных 310 разрешение равно 1920×1080, максимальный размер блока кодирования равен 64 и максимальная глубина равна 2. В видео данных 320 разрешение равно 1920×1080, максимальный размер блока кодирования равен 64, и максимальная глубина равна 3. В видео данных 330 разрешение равно 352×288, максимальный размер блока кодирования равен 16, и максимальная глубина равна 1. Максимальная глубина, показанная на фиг. 11, обозначает общее количество разделений от максимального блока кодирования до минимального блока кодирования.
[279] Если разрешение является высоким, или количество данных является большим, максимальный размер блока кодирования может быть большим, чтобы не только увеличить эффективность кодирования, но также и точно отразить характеристики изображения. Соответственно, максимальный размер блока кодирования видео данных 310 и 320, имеющих более высокое разрешение, чем видео данные 330, может быть равен 64.
[280] Так как максимальная глубина видео данных 310 равна 2, блоки 315 кодирования видео данных 310 могут включать в себя максимальный блок кодирования, имеющий размер 64 по длинной оси, и блоки кодирования, имеющие размеры 32 и 16 по длинный оси, так как глубины углубляются на два уровня, разделяя максимальный блок кодирования дважды. Между тем, так как максимальная глубина видео данных 330 равна 1, блоки 335 кодирования видео данных 330 могут включать в себя максимальный блок кодирования, имеющий размер 16 по длинной оси, и блоки кодирования, имеющие размер 8 по длинной оси, так как глубины углубляются на один уровень, разделяя максимальный блок кодирования однажды.
[281] Так как максимальная глубина видео данных 320 равна 3, блоки 325 кодирования видео данных 320 могут включать в себя максимальный блок кодирования, имеющий размер 64 по длинной оси, и блоки кодирования, имеющие размеры 32, 16 и 8 по длинной оси, так как глубины углубляются до 3 уровней, разделяя максимальный блок кодирования три раза. Поскольку глубина углубляется, подробная информация может быть точно выражена. Фиг. 22 является блок-схемой кодера 400 изображения на основании блоков кодирования, согласно примерному варианту осуществления.
[282] Кодер 400 изображения выполняет операции модуля 120 определения блока кодирования из устройства 100, чтобы кодировать данные изображения. Другими словами, внутренний предсказатель 410 выполняет внутреннее предсказание в отношении блоков кодирования во внутреннем режиме среди текущего кадра 405, и модуль 420 оценки движения и компенсатор 425 движения выполняет внешнюю оценку и компенсацию движения над блоками кодирования во внешнем режиме среди текущего кадра 405 посредством использования текущего кадра 405, и опорного кадра 495.
[283] Вывод данных из внутреннего предсказателя 410, модуля 420 оценки движения и компенсатора 425 движения выводится как квантованный коэффициент преобразования через преобразователь 430 и квантователь 440. Квантованный коэффициент преобразования восстанавливается в качестве данных в пространственной области с помощью обратного квантователя 460 и обратного преобразователя 470, и восстановленные данные в пространственной области выводятся в качестве опорного кадра 495, будучи постобработанным посредством блока 480 удаления блочности и модуля 490 контурного фильтрования. Квантованный коэффициент преобразования может быть выведен как поток битов 455 через энтропийный кодер 450.
[284] Чтобы кодер 400 изображения был применен в устройстве 100, все элементы кодера 400 изображения, то есть, внутренний предсказатель 410, модуль 420 оценки движения, компенсатор 425 движения, преобразователь 430, квантователь 440, энтропийный кодер 450, обратный квантователь 460, обратный преобразователь 470, блок 480 удаления блочности и модуль 490 контурного фильтрования выполняют операции на основании каждого блока кодирования из числа блоков кодирования, имеющих структуру дерева, рассматривая максимальную глубину каждого максимального блока кодирования.
[285] В частности, внутренний предсказатель 410, модуль 420 оценки движения и компенсатор 425 движения определяют фрагменты и режим предсказания каждого блока кодирования из числа блоков кодирования, имеющих структуру дерева, рассматривая максимальный размер и максимальную глубину текущего максимального блока кодирования, и преобразователь 430 определяет размер блока преобразования в каждом блоке кодирования из числа блоков кодирования, имеющих структуру дерева.
[286] Фиг. 23 является блок-схемой декодера 500 изображения на основании блоков кодирования согласно примерному варианту осуществления.
[287] Модуль 510 синтаксического разбора синтаксически разбирает кодированные данные изображения, которые должны быть декодированы, и информацию о кодировании, необходимую для декодирования из потока битов 505. Кодированные данные изображения выводятся в качестве обратно квантованных данных через энтропийный декодер 520 и обратный квантователь 530, и эти обратно квантованные данные восстанавливаются до данных изображения в пространственной области с помощью обратного преобразователя 540.
[288] Внутренний предсказатель 550 выполняет внутреннее предсказание в отношении блоков кодирования во внутреннем режиме относительно данных изображения в пространственной области, и компенсатор 560 движения выполняет компенсацию движения в отношении блоков кодирования во внешнем режиме посредством использования опорного кадра 585.
[289] Данные изображения в пространственной области, которые прошли через внутренний предсказатель 550 и компенсатор 560 движения, могут быть выведены как восстановленный кадр 595, после постобработки в модуле 570 удаления блочности и модуль 580 контурного фильтрования. Кроме того, данные изображения, которые постобработаны с помощью модуля 570 удаления блочности и модуля 580 контурного фильтрования, могут быть выведены как опорный кадр 585.
[290] Чтобы декодировать данные изображения в декодере 230 данных изображения из устройства 200, декодер 500 изображения может выполнить операции, которые выполняются после модуля 510 синтаксического разбора.
[291] Чтобы декодер 500 изображения был применен в устройстве 200, все элементы декодера 500 изображения, то есть, модуль 510 синтаксического разбора, энтропийный декодер 520, обратный квантователь 530, обратный преобразователь 540, внутренний предсказатель 550, компенсатор 560 движения, модуль 570 удаления блочности и модуль 580 контурного фильтрования, выполняют операции на основании блоков кодирования, имеющих структуру дерева, для каждого максимального блока кодирования.
[292] В частности, внутренний предсказатель 550 и компенсатор 560 движения выполняют операции на основании фрагментов и режима предсказания для каждого из блоков кодирования, имеющих структуру дерева, и обратный преобразователь 540 выполняет операции на основании размера блока преобразования для каждого блока кодирования.
[293] Фиг. 24 является диаграммой, иллюстрирующей более глубокие блоки кодирования согласно глубинам и фрагменты согласно примерному варианту осуществления.
[294] Устройство 100 и устройство 200 используют иерархические блоки кодирования, чтобы принять во внимание характеристики изображения. Максимальная высота, максимальная ширина и максимальная глубина блоков кодирования могут быть адаптивно определены согласно характеристикам изображения, или могут быть иным образом установлены пользователем. Размеры более глубоких блоков кодирования согласно глубинам могут быть определены согласно заранее определенному максимальному размеру блока кодирования.
[295] В иерархической структуре 600 блоков кодирования согласно примерному варианту осуществления максимальная высота и максимальная ширина блоков кодирования являются каждая равной 64 и максимальная глубина равна 3. В этом случае максимальная глубина обозначает общее количество делений от максимального блока кодирования до минимального блока кодирования. Так как глубина углубляется вдоль вертикальной оси иерархической структуры 600, высота и ширина более глубокого блока кодирования каждая делятся. Кроме того, блок предсказания и фрагмент, которые являются основаниями для кодирования с предсказанием каждого более глубокого блока кодирования, показаны вдоль горизонтальной оси иерархической структуры 600.
[296] Другими словами, блок 610 кодирования является максимальным блоком кодирования в иерархической структуре 600, в котором глубина равна 0, и размер, то есть, высота на ширину, равен 64x64. Глубина углубляется вдоль вертикальной оси, и блок кодирования 620, имеющий размер 32x32 и глубину 1, блок кодирования 630, имеющий размер 16x16 и глубину 2, и блок кодирования 640, имеющий размер 8x8 и глубину 3, существуют. Блок кодирования 640, имеющий размер 8x8 и глубину 3, является минимальным блоком кодирования.
[297] Блок предсказания и фрагмент блока кодирования скомпонованы вдоль горизонтальной оси согласно глубинам. Другими словами, если блок 610 кодирования, имеющий размер 64×64 и глубину 0, является блоком предсказания, этот блок предсказания может быть разделен на фрагменты, включенные в блок 610 кодирования, то есть, фрагмент 610, имеющий размер 64×64, фрагменты 612, имеющие размер 64×32, фрагменты 614, имеющие размер 32×64, или фрагменты 616, имеющие размер 32×32.
[298] Аналогично, блок предсказания блока кодирования 620, имеющий размер 32×32 и глубину 1, может быть разделен на фрагменты, включенные в блок кодирования 620, то есть, фрагмент 620, имеющий размер 32×32, фрагменты 622, имеющие размер 32×16, фрагменты 624, имеющие размер 16×32, и фрагменты 626, имеющие размер 16×16.
[299] Аналогично, блок предсказания блока кодирования 630, имеющий размер 16×16 и глубину 2, может быть разделен на фрагменты, включенные в блок кодирования 630, то есть, фрагмент, имеющий размер 16×16, включенный в блок кодирования 630, фрагменты 632, имеющие размер 16×8, фрагменты 634, имеющие размер 8×16, и фрагменты 636, имеющие размер 8×8.
[300] Аналогично, блок предсказания блока кодирования 640, имеющий размер 8×8 и глубину 3, может быть разделен на фрагменты, включенные в блок кодирования 640, то есть, фрагмент, имеющий размер 8×8, включенный в блок кодирования 640, фрагменты 642, имеющие размер 8×4, фрагменты 644, имеющие размер 4×8, и фрагменты 646, имеющие размер 4×4.
[301] Чтобы определить по меньшей мере одну кодированную глубину блоков кодирования, составляющих максимальный блок 610 кодирования, модуль 120 определения блока кодирования из устройства 100 выполняет кодирование для блоков кодирования, соответствующих каждой глубине, включенной в максимальный блок 610 кодирования.
[302] Многие из более глубоких блоков кодирования согласно глубинам, включающих в себя данные в одном и том же диапазоне и один и тот же размер, увеличиваются, когда глубина углубляется. Например, четыре блока кодирования, соответствующие глубине 2, требуются, чтобы охватывать данные, которые включены в один блок кодирования, соответствующий глубине 1. Соответственно, чтобы сравнить результаты кодирования одних и тех же данных согласно глубинам, блок кодирования, соответствующий глубине 1, и четыре блока кодирования, соответствующие глубине 2, каждый кодируются.
[303] Чтобы выполнить кодирование для текущей глубины из этой глубины, наименьшая ошибка кодирования может быть выбрана для текущей глубины, выполнения кодирования для каждого блока предсказания в блоках кодирования, соответствующих текущей глубине, вдоль горизонтальной оси иерархической структуры 600. Альтернативно, минимальная ошибка кодирования может быть выбрана, сравнивая по меньшей мере ошибки кодирования согласно глубинам, выполнения кодирования для каждой глубины, когда глубина углубляется вдоль вертикальной оси иерархической структуры 600. Глубина и фрагмент, имеющее минимальную ошибку кодирования в блоке 610 кодирования, могут быть выбраны как кодированная глубина и тип фрагмента блока 610 кодирования.
[304] Фиг. 25 является диаграммой для описания соотношения между блоком 710 кодирования и блоками 720 преобразования согласно примерному варианту осуществления.
[305] Устройство 100 или 200 кодирует или декодирует изображение согласно блокам кодирования, имеющим размеры, меньшие чем или равные максимальному блоку кодирования для каждого максимального блока кодирования. Размеры блоков преобразования для преобразования во время кодирования могут быть выбраны на основании блоков данных, которые не больше, чем соответствующий блок кодирования.
[306] Например, в устройстве 100 или 200, если размер блока 710 кодирования равен 64×64, преобразование может быть выполнено посредством использования блоков 720 преобразования, имеющих размер 32×32.
[307] Кроме того, данные блока 710 кодирования, имеющего размер 64×64, могут быть кодированы, выполняя преобразование в отношении каждого из блоков преобразования, имеющих размер 32×32, 16×16, 8×8, и 4×4, которые меньше чем 64×64, и затем блок преобразования, имеющий наименьшую ошибку кодирования, может быть выбран.
[308] Фиг. 26 является диаграммой для описания информации кодирования блоков кодирования, соответствующих кодированной глубине, согласно примерному варианту осуществления.
[309] Модуль 130 вывода устройства 100 может кодировать и передавать информацию 800 о типе фрагмента, информацию 810 о режиме предсказания и информацию 820 о размере блока преобразования для каждого блока кодирования, соответствующего кодированной глубине, в качестве информации о режиме кодирования.
[310] Информация 800 указывает информацию о форме фрагмента, полученного разделением блока предсказания текущего блока кодирования, при этом фрагмент является блоком данных для кодирования с предсказанием текущего блока кодирования. Например, текущий блок CU_0 кодирования, имеющий размер 2N×2N, может быть разделен на любое одно из: фрагмента 802, имеющего размер 2N×2N, фрагмента 804, имеющего размер 2N×N, фрагмента 806, имеющего размер N×2N, и фрагмента 808, имеющего размер N×N. Здесь информация 800 о типе фрагмента установлена так, чтобы указывать одно из фрагмента 804, имеющего размер 2N×N, фрагмента 806, имеющего размер N×2N, и фрагмента 808, имеющего размер N×N
[311] Информация 810 указывает режим предсказания каждого фрагмента. Например, информация 810 может указывать режим кодирования с предсказанием, выполняемого в отношении фрагмента, указанного информацией 800, то есть, внутренний режим 812, внешний режим 814 или режим пропуска 816.
[312] Информация 820 указывает блок преобразования, на котором нужно основываться, когда преобразование выполняется в отношении текущего блока кодирования. Например, блок преобразования может быть первым внутренний блоком 822 преобразования, вторым внутренним блоком 824 преобразования, первым внешним блоком 826 преобразования или вторым внутренним блоком 828 преобразования.
[313] Модуль 220 извлечения информации кодирования и данных изображения из устройства 200 может извлечь и использовать информацию 800, 810 и 820 для декодирования.
[314] Хотя не показано на фиг. 26, информация о режиме кодирования может включать в себя относящуюся к слиянию информацию, и эта относящаяся к слиянию информация может быть установлена на основании информации 810 о режиме предсказания, таком как внешний режим, внутренний режим, режим пропуска или непосредственный режим. Например, если информация 810 о режиме предсказания является информацией о режиме пропуска, относящаяся к слиянию информация может быть выборочно установлена. Только когда информация 810 о режиме предсказания является информацией о внешнем режиме, не режиме пропуска и непосредственном режиме, относящаяся к слиянию информация может быть установлена.
[315] Фиг. 27 является диаграммой, иллюстрирующей более глубокие блоки кодирования согласно глубинам согласно примерному варианту осуществления.
[316] Информация разделения может использоваться, чтобы указать изменение глубины. Информация разделения указывает, разделен ли блок кодирования текущей глубины на блоки кодирования более низкой глубины.
[317] Блок 910 предсказания для кодирования с предсказанием блока 900 кодирования, имеющего глубину 0 и размер 2N_0×2N_0 может включать в себя фрагменты типа 912 фрагмента, имеющие размер 2N_0×2N_0, типа 914 фрагмента, имеющие размер 2N_0×N_0, типа 916 фрагмента, имеющие размер N_0×2N_0, и типа 918 фрагмента, имеющие размер N_0×N_0. Фиг. 9 только иллюстрирует типы 912-918 фрагмента, которые получены посредством симметричного разделения блока 910 предсказания, но тип фрагмента не ограничен ими, и фрагменты блока 910 предсказания могут включать в себя асимметричные фрагменты, фрагменты, имеющие заранее определенную форму, и фрагменты, имеющие геометрическую форму.
[318] Кодирование с предсказанием повторяющимся образом выполняется в отношении одного фрагмента, имеющего размер 2N_0×2N_0, двух фрагментов, имеющих размер 2N_0×N_0, двух фрагментов, имеющих размер N_0×2N_0, и четырех фрагментов, имеющих размер N_0×N_0, согласно типам фрагмента. Кодирование с предсказанием во внутреннем режиме и внешнем режиме может быть выполнено в отношении фрагментов, имеющих размеры 2N_0×2N_0, N_0×2N_0, 2N_0×N_0, и N_0×N_0. Кодирование с предсказанием в режиме пропуска выполняется только в отношении фрагмента, имеющего размер 2N_0×2N_0.
[319] Ошибки кодирования, включающие в себя кодирования с предсказанием в типах 912-918 фрагмента, сравнивают, и наименьшую ошибку кодирования определяют среди типов фрагмента. Если ошибка кодирования является наименьшей в одном из типов 912-916 фрагмента, блок 910 предсказания не может быть разделен на более низкую глубину.
[320] Если ошибка кодирования является наименьшей в типе 918 фрагмента, глубина изменяется с 0 на 1, чтобы разделить тип 918 фрагмента во время операции 920, и кодирование повторяющимся образом выполняется в отношении блоков 930 кодирования, имеющих глубину 1 и размер N_0×N_0, чтобы искать минимальную ошибку кодирования.
[321] Блок 940 предсказания для кодирования с предсказанием блока 930 кодирования, имеющего глубину 1 и размер 2N_1×2N_1 (=N_0×N_0), может включать в себя фрагменты типа 942 фрагмента, имеющие размер 2N_1×2N_1, типа 944 фрагмента, имеющие размер 2N_1×N_1, типа 946 фрагмента, имеющие размер N_1×2N_1, и типа 948 фрагмент, имеющие размер N_1×N_1.
[322] Если ошибка кодирования является наименьшей в типе 948 фрагмента, глубина изменяется с 1 на 2, чтобы разделить тип 948 фрагмент во время операции 950, и кодирование повторяющимся образом выполняется в отношении блоков 960 кодирования, которые имеют глубину 2 и размер N_2×N_2, чтобы искать минимальную ошибку кодирования.
[323] Когда максимальная глубина равна d-1, операция разделения согласно глубинам может быть выполнена вплоть до того, когда глубина станет равной d-1, и информация разделения может быть кодирована вплоть до того, когда глубина станет равной одной из 0-d-2. Другими словами, когда кодирование выполняется вплоть до того, когда глубина равна d-1 после того, как блок кодирования, соответствующий глубине d-2, разделен во время операции 970, блок предсказания 990 для кодирования с предсказанием блока 980 кодирования, имеющего глубину d-1 и размер 2N_(d-1)×2N_(d-1), может включать в себя фрагменты типа 992 фрагмента, имеющие размер 2N_(d-1)×2N_(d-1), типа 994 фрагмента, имеющие размер 2N_(d-1)×N_(d-1), типа 996 фрагмента, имеющие размер N_(d-1)×2N_(d-1), и типа 998 фрагмента, имеющие размер N_(d-1)×N_(d-1).
[324] Кодирование с предсказанием может повторяющимся образом выполняться в отношении одного разделения, имеющего размер 2N_(d-1)×2N_(d-1), двух фрагментов, имеющих размер 2N_(d-1)×N_(d-1), двух фрагментов, имеющих размер N_(d-1)×2N_(d-1), четырех фрагментов, имеющих размер N_(d-1)×N_(d-1), из числа типов 992-998 фрагмента, чтобы искать тип фрагмента, имеющий минимальную ошибку кодирования.
[325] Даже когда тип 998 фрагмента имеет минимальную ошибку кодирования, так как максимальная глубина равна d-1, блок кодирования CU_(d-1), имеющий глубину d-1, больше не разделяется до более низкой глубины, и кодированная глубина для блоков кодирования, составляющих текущий максимальный блок 900 кодирования, может быть определена равной d-1, и тип фрагмента блока 900 кодирования может быть определен равным N_(d-1)×N_(d-1). Кроме того, так как максимальная глубина равна d-1 и минимальный блок 980 кодирования, имеющий самую низкую глубину, равную d-1, больше не разделяется до более низкой глубины, информация разделения для блока кодирования 980 не устанавливается.
[326] Блок данных 999 может быть ′минимальным блоком′ для текущего максимального блока кодирования. Минимальный блок может быть прямоугольным блоком данных, полученным посредством разделения минимального блока 980 кодирования на 4. Выполняя кодирование повторяющимся образом, устройство 100 может выбрать глубину, имеющую наименьшую ошибку кодирования, посредством сравнения ошибок кодирования согласно глубинам блока 900 кодирования, чтобы определить кодированную глубину, и установить соответствующий тип фрагмента и режим предсказания как режим кодирования кодированной глубины.
[327] Как таковые, минимальные ошибки кодирования согласно глубинам сравниваются во всех глубинах от 1 до d, и глубина, имеющая наименьшую ошибку кодирования, может быть определена как кодированная глубина. Кодированная глубина, тип фрагмента блока предсказания и режим предсказания могут быть кодированы и переданы в качестве информации о режиме кодирования. Кроме того, так как блок кодирования разделяется от глубины 0 до кодированной глубины, только информация разделения кодированной глубины устанавливается в 0, и информация разделения глубин, исключая упомянутую кодированную глубину, устанавливается в 1.
[328] Модуль 220 извлечения информации кодирования и данных изображения устройства 200 может извлечь и использовать информацию о кодированной глубине и блоке предсказания блока 900 кодирования, чтобы декодировать фрагмент 912. Устройство 200 может определить глубину, в которой информация разделения равна 0, в качестве кодированной глубины посредством использования информации разделения согласно глубинам, и использовать информацию о режиме кодирования соответствующей глубины для декодирования.
[329] Фиг. 28-30 являются диаграммами для описания соотношения между блоками 1010 кодирования, блокам 1060 предсказания и блоками 1070 преобразования согласно примерному варианту осуществления.
[330] Блоки 1010 кодирования являются блоками кодирования, имеющими структуру дерева, соответствующими кодированным глубинам, определенным устройством 100, в максимальном блоке кодирования. Блоки 1060 предсказания являются фрагментами блоков предсказания каждого из блоков 1010 кодирования, и блоки 1070 преобразования являются блоками преобразования каждого из блоков 1010 кодирования.
[331] Когда глубина максимального блока кодирования равна 0 в блоках 1010 кодирования, глубины блоков 1012 и 1054 кодирования равны 1, глубины блоков 1014, 1016, 1018, 1028, 1050 и 1052 кодирования равны 2, глубины блоков 1020, 1022, 1024, 1026, 1030, 1032 и 1048 кодирования равны 3, и глубины блоков 1040, 1042, 1044 и 1046 кодирования равны 4.
[332] В блоках 1060 предсказания некоторые блоки 1014, 1016, 1022, 1032, 1048, 1050, 1052 и 1054 кодирования разделены на фрагменты для кодирования с предсказанием. Другими словами, типы фрагмента в блоках 1014, 1022, 1050 и 1054 кодирования имеют размер 2N×N, типы фрагмента в блоках 1016, 1048, и 1052 кодирования имеют размер N×2N, и тип фрагмента блока 1032 кодирования имеет размер N×N. Блоки предсказания и фрагменты блоков 1010 кодирования меньше, чем или равны каждому блоку кодирования.
[333] Преобразование или обратное преобразование выполняются в отношении данных изображения блока 1052 кодирования в блоках 1070 преобразования в блоке данных, который является меньшим, чем блок 1052 кодирования. Кроме того, блоки 1014, 1016, 1022, 1032, 1048, 1050 и 1052 кодирования в блоках 1070 преобразования отличаются от таковых в блоках 1060 предсказания в терминах размеров и форм. Другими словами, устройства 100 и 200 могут выполнить внутреннее предсказание, оценку движения, компенсацию движения, преобразование и обратное преобразование индивидуально в отношении блока данных в одном и том же блоке кодирования.
[334] Соответственно, кодирование рекурсивно выполняется в отношении каждого из блоков кодирования, имеющих иерархическую структуру, в каждой области максимального блока кодирования, чтобы определить оптимальный блок кодирования, и таким образом блоки кодирования, имеющие рекурсивную структуру дерева, могут быть получены. Информация кодирования может включать в себя информацию разделения о блоке кодирования, информацию о типе фрагмента, информацию о режиме предсказания, и информацию о размере блока преобразования. Таблица 2 показывает информацию кодирования, которая может быть установлена устройствами 100 и 200.
[335]
(кодирования блока кодирования, имеющего размер 2N×2N и текущую глубину d)
Внешний
Пропуска (только 2N×2N)
2N×N
N×2N
N×N
2N×nD
nL×2N
nR×2N
[336] Модуль 130 вывода устройства 100 может выводить информацию кодирования о блоках кодирования, имеющих структуру дерева, и модуль 220 извлечения информации кодирования и данных изображения устройства 200 может извлечь информацию кодирования о блоках кодирования, имеющих структуру дерева, из принятого потока битов.
[337] Информация разделения указывает, разделен ли текущий блок кодирования на блоки кодирования более низкой глубины. Если информация разделения текущей глубины d равна 0, глубина, при которой текущий блок кодирования больше не разделяется на более низкую глубину, является кодированной глубиной, и таким образом информация о типе фрагмента, режиме предсказания, и размере блока преобразования может быть определена для кодированной глубины. Если текущий блок кодирования далее разделяется согласно информации разделения, кодирование независимо выполняется в отношении четырех блоков кодирования разделения более низкой глубины.
[338] Режим предсказания может быть одним из внутреннего режима, внешнего режима и режима пропуска. Внутренний режим и внешний режим могут быть определены во всех типах фрагмента, и режим пропуска определен только в типе фрагмента, имеющем размер 2N×2N.
[339] Информация о типе фрагмента может указать симметричные типы фрагмента, имеющие размеры 2N×2N, 2N×N, N×2N и N×N, которые получают, симметрично разделяя высоту или ширину блока предсказания, и асимметричные типы фрагмента, имеющие размеры 2N×nU, 2N×nD, nL×2N, и nR×2N, которые получают, асимметрично разделяя высоту или ширину блока предсказания. Асимметричные типы фрагмента, имеющие размеры 2N×nU и 2N×nD, могут быть соответственно получены, разделяя высоту блока предсказания как 1:3 и 3:1, и асимметричные типы фрагмента, имеющие размеры nL×2N и nR×2N, могут быть соответственно получены, разделяя ширину блока предсказания как 1:3 и 3:1
[340] Размер блока преобразования может быть установлен равным двум типам во внутреннем режиме и двум типам во внешнем режиме. Другими словами, если информация разделения блока преобразования равна 0, размер блока преобразования может быть 2N×2N, который является размером текущего блока кодирования. Если информация разделения блока преобразования равна 1, блоки преобразования могут быть получены, разделяя текущий блок кодирования. Кроме того, если тип фрагмента текущего блока кодирования, имеющего размер 2N×2N, является симметричным типом фрагмента, размер блока преобразования может быть равен N×N, и если тип фрагмента текущего блока кодирования является асимметричным типом фрагмента, размер блока преобразования может быть равен N/2×N/2.
[341] Информация кодирования о блоках кодирования, имеющих структуру дерева, может включать в себя по меньшей мере одно из блока кодирования, соответствующего кодированной глубине, блока предсказания и минимального блока. Блок кодирования, соответствующий кодированной глубине, может включать в себя по меньшей мере один из блока предсказания и минимального блока, содержащего одну и ту же информацию кодирования.
[342] Соответственно, определяют, включены ли смежные блоки данных в один и тот же блок кодирования, соответствующий кодированной глубине, посредством сравнения информации кодирования смежных блоков данных. Кроме того, соответствующий блок кодирования, соответствующий кодированной глубине, определяют посредством использования информация кодирования блока данных, и таким образом распределение кодированных глубин в максимальном блоке кодирования может быть определено.
[343] Соответственно, если текущий блок кодирования предсказывается на основании информации кодирования смежных блоков данных, на информацию кодирования блоков данных в более глубоких блоках кодирования, смежных с текущим блоком кодирования, можно непосредственно ссылаться и использовать.
[344] Альтернативно, если текущий блок кодирования предсказывается на основании информации кодирования смежных блоков данных, блоки данных, смежные с текущим блоком кодирования, отыскиваются, используя кодированную информацию блоков данных, и на найденные смежные блоки кодирования можно ссылаться для того, чтобы предсказать текущий блок кодирования.
[345] Фиг. 31 является диаграммой для описания соотношения между блоком кодирования, блоком предсказания или фрагментом, и блоком преобразования согласно информации режима кодирования из Таблицы 2.
[346] Максимальный блок 1300 кодирования включает в себя блоки 1302, 1304, 1306, 1312, 1314, 1316 и 1318 кодирования кодированных глубин. Здесь, так как блок 1318 кодирования является блоком кодирования кодированной глубины, информация разделения может быть установлена в 0. Информация о типе фрагмента блока 1318 кодирования, имеющего размер 2N×2N, может быть установлена чтобы быть одной из типа 1322 фрагмента, имеющего размер 2N×2N, типа 1324 фрагмента, имеющего размер 2N×N, типа 1326 фрагмента, имеющего размер N×2N, типа 1328 фрагмента, имеющего размер N×N, типа 1332 фрагмента, имеющего размер 2N×nU, типа 1334 фрагмента, имеющего размер 2N×nD, типа 1336 фрагмента, имеющего размер nL×2N, и типа 1338 фрагмента, имеющего размер nR×2N.
[347] Информация разделения (флаг размера TU) блока преобразования является индексом преобразования, и таким образом, размер блока преобразования, соответствующего индексу преобразования, может изменяться согласно типу блока предсказания или типу фрагмента блока кодирования.
[348] Например, когда тип фрагмента установлен так, чтобы быть симметричным, то есть, тип 1322, 1324, 1326 или 1328 фрагмента, блок 1342 преобразования, имеющий размер 2N×2N, установлен, если флаг размера TU равен 0, и блок 1344 преобразования, имеющий размер N×N, установлен, если флаг размера TU равен 1.
[349] С другой стороны, когда тип фрагмента установлен так, чтобы быть асимметричным, то есть тип 1332, 1334, 1336 или 1338 фрагмента, блок 1352 преобразования, имеющий размер 2N×2N, установлен, если флаг размера TU равен 0, и блок 1354 преобразования, имеющий размер N/2×N/2, установлен, если флаг размера TU равен 1.
[350] Со ссылками на фиг. 18, флаг размера TU является флагом, имеющим значение или 0 или 1, но флаг размера TU не ограничен 1 битом, и блок преобразования может быть иерархически разделен, имея структуру дерева, в то время как флаг размера TU увеличивается от 0. Флаг размера TU может использоваться в качестве примера индекса преобразования.
[351] В этом случае размер блока преобразования, который фактически использовался, может быть выражен посредством использования флага размера TU блока преобразования вместе с максимальным размером и минимальным размером блока преобразования. Устройство 100 может кодировать информацию максимального размера блока преобразования, информацию минимального размера блока преобразования и флаг максимального размера TU. Результат кодирования информации максимального размера блока преобразования, информации минимального размера блока преобразования и флага максимального размера TU может быть вставлен в SPS. Устройство 200 может декодировать видео посредством использования информации максимального размера блока преобразования, информации минимального размера блока преобразования и флага максимального размера TU.
[352] Например, если размер текущего блока кодирования равен 64×64, и максимальный размер блока преобразования равен 32×32, то размер блока преобразования может быть равен 32×32, когда флаг размера TU равен 0, может быть равен 16×16, когда флаг размера TU равен 1, и может быть равен 8×8, когда флаг размера TU равен 2.
[353] В качестве другого примера, если размер текущего блока кодирования равен 32×32 и минимальный размер блока преобразования равен 32×32, то размер блока преобразования может быть равен 32×32, когда флаг размера TU равен 0. Здесь, флаг размера TU может не быть установлен в значение, отличное от 0, так как размер блока преобразования может не быть меньше, чем 32×32.
[354] В качестве другого примера, если размер текущего блока кодирования равен 64×64 и максимальный флаг размера TU равен 1, то флаг размера TU может быть 0 или 1. Здесь, флаг размера TU может не быть установлен в значение, отличное от 0 или 1.
[355] Таким образом, если определено, что максимальный флаг размера TU равен ′MaxTransformSizeIndex′, минимальный размер блока преобразования равен ′MinTransformSize′, и размер блока преобразования равен ′RootTuSize′, когда флаг размера TU равен 0, то текущий минимальный размер блока преобразования, ′CurrMinTuSize′, который может быть определен в текущем блоке кодирования, может быть определен Уравнением (1):
[356]
[357] CurrMinTuSize = max MinTransformSize, RootTuSize / (2^MaxTransformSizeIndex)) (1)
[358]
[359] По сравнению с текущим минимальным размером ′CurrMinTuSize′ блока преобразования, который может быть определен в текущем блоке кодирования, размер ′RootTuSize′ блока преобразования, когда флаг размера TU равен 0, может обозначать максимальный размер блока преобразования, который может быть выбран в системе. В Уравнении (1) ′RootTuSize/(2^MaxTransformSizeIndex)′ обозначает размер блока преобразования, когда размер ′RootTuSize′ блока преобразования, когда флаг размера TU равен 0, разделяется количество раз, соответствующее максимальному флагу размера TU, и ′MinTransformSize′ обозначает минимальный размер преобразования. Таким образом, меньшее значение из ′RootTuSize/(2^MaxTransformSizeIndex)′ и ′MinTransformSize′ может быть текущим минимальным размером блока преобразования ′CurrMinTuSize′, который может быть определен в текущем блоке кодирования.
[360] Максимальный размер RootTuSize блока преобразования может изменяться согласно типу режима предсказания.
[361] Например, если текущим режимом предсказания является внешний режим, то ′RootTuSize′ может быть определен посредством использования Уравнения (2) ниже. В Уравнении (2), ′MaxTransformSize′ обозначает максимальный размер блока преобразования, и ′PUSize′ обозначает текущий размер блока предсказания.
[362]
[363] RootTuSize = min (MaxTransformSize, PUSize)......... (2)
[364]
[365] Таким образом, если текущим режимом предсказания является внешний режим, размер блока преобразования ′RootTuSize′, когда флаг размера TU равен 0, может быть меньшим значением из максимального размера блока преобразования и текущего размера блока предсказания.
[366] Если режим предсказания текущего блока фрагмента является внутренним режимом, ′RootTuSize′ может быть определен посредством использования Уравнения (3) ниже. В Уравнении (3) ′PartitionSize′ обозначает размер текущего блока фрагмента.
[367]
[368] RootTuSize = min (MaxTransformSize, PartitionSize) (3)
[369]
[370] Таким образом, если текущий режим предсказания является внутренним режимом, размер блока преобразования, ′RootTuSize′, когда флаг размера TU равен 0, может быть меньшим значением из максимального размера блока преобразования и размера текущего блока фрагмента.
[371] Однако, текущий максимальный размер ′RootTuSize′ блока преобразования, который изменяется согласно типу режима предсказания в блоке фрагмента, является только примером и не ограничен этим.
[372] Фиг. 32 является последовательностью операций, иллюстрирующей способ кодирования видео посредством использования слияния блоков данных на основании блоков кодирования, имеющих структуру дерева, согласно примерному варианту осуществления.
[373] Во время операции 1210 текущая картинка видео разделяется на максимальные блоки кодирования. Во время операции 1220 данные изображения могут быть кодированы как блоки кодирования согласно глубинам для каждого максимального блока кодирования текущей картинки, причем глубина, генерирующая наименьшую ошибку кодирования, может быть выбрана и определена согласно кодированной глубине, и блоки кодирования, имеющие структуру дерева, составленные из блоков кодирования глубины, определенной, чтобы быть кодированной глубиной, могут быть определены. Данные изображения согласно кодированным максимальным блокам кодирования согласно определенному блоку кодирования могут быть выведены.
[374] Во время операции 1230 может быть определено, выполняется ли слияние блоков данных между соседними блоками данных, в отношении блоков предсказания или фрагментов блоков кодирования, имеющих структуру дерева. Относящаяся к предсказанию информация может быть совместно использована между сливаемыми блоками данных. Необходимость в слиянии блоков данных для совместного использования относящейся к предсказанию информации с соседним блоком данных может быть проанализирована даже при том, что режим предсказания текущего блока предсказания или текущего фрагмента блоков кодирования, имеющих структуру дерева, является режимом пропуска или непосредственным режимом.
[375] Во время операции 1230 информация о режиме кодирования блоков кодирования, имеющих структуру дерева, может быть кодирована, чтобы включать в себя относящуюся к слиянию информацию, включающую в себя информацию слияния и информацию индекса слияния. Информация о режиме кодирования и данных изображения максимального блока кодирования, кодированного на основании блоков кодирования, имеющих структуру дерева, может быть выведена в потоках битов.
[376] Фиг. 33 является последовательностью операций, иллюстрирующей способ декодирования видео посредством использования слияния блоков данных на основании блоков кодирования, имеющих структуру дерева, согласно примерному варианту осуществления.
[377] Во время операции 1310 поток битов кодированного видео принимают и синтаксически разбирают. Во время операции 1320 кодированные данные изображения для данных изображения текущей картинки, кодированных для каждого блока кодирования согласно блокам кодирования, имеющим структуру дерева, извлекаются из синтаксически разобранного потока битов согласно максимальным блокам кодирования, и информация о кодированной глубине и режиме кодирования извлекается. Из информации о кодированной глубине и режиме кодирования может быть извлечена относящая к слиянию информация. Возможность извлечения и считывания относящейся к слиянию информации может быть определена на основании информации режима предсказания. Например, относящаяся к слиянию информация может быть извлечена на основании информации режима пропуска или непосредственной информации для текущего блока предсказания или текущего фрагмента блоков кодирования, имеющих структуру дерева. Кроме того, информация слияния и информация индекса слияния может быть извлечена в качестве относящейся к слиянию информации.
[378] Во время операции 1330 информация о типе фрагмента, режиме предсказания и блоке преобразования блока предсказания блоков кодирования, имеющих структуру дерева, могут быть считаны на основании информации о режиме кодирования и кодированной глубине максимального блока кодирования, и могут использоваться, чтобы декодировать данные изображения максимального блока кодирования.
[379] Кроме того, объект, который должен быть слит, может быть найден из числа множества соседних блоков данных, соседних с текущим блоком данных, и слияние блоков данных может быть определено на основании относящейся к слиянию информации. Оценка движения и компенсация текущего блока предсказания или текущего фрагмента могут быть выполнены посредством логического вывода относящейся к предсказанию информации текущего блока предсказания или текущего фрагмента посредством совместного использования или обращения к относящейся к предсказанию информации слитого соседнего блока предсказания или фрагмента. Данные изображения максимального блока кодирования могут быть восстановлены, и текущая картинка может быть восстановлена посредством декодирования, включающего в себя оценку движения и компенсацию согласно блокам кодирования, имеющим структуру дерева.
[380] В устройстве 100 и устройстве 200, так как возможность, что слияние блоков данных для совместного использования взаимной относящейся к предсказанию информации может быть выполнено в отношении режимов предсказания и фрагментов, имеющих различные режимы предсказания, различные размеры и формы согласно структуре дерева, исследуется, слияние выполняется между соседними блоками данных, имеющими различные позиции, таким образом позволяя совместно использовать относящуюся к предсказанию информацию. Соответственно, так как избыточные данные могут быть удалены посредством использования периферийной информации в более широком диапазоне, эффективность кодирования данных изображения может быть улучшена.
[381] Кроме того, так как информация режима предсказания и относящаяся к слиянию информация кодируются и декодируются иерархически и непрерывно с учетом тесной взаимосвязи между возможностью слияния и различными режимами предсказания, эффективность информация кодирования может быть улучшена.
[382] Один или более примерные варианты осуществления могут быть записаны как компьютерные программы и могут быть реализованы в компьютерах общего назначения, которые выполняют программы, используя считываемый компьютером носитель записи. Примеры считываемого компьютером носителя записи включают в себя магнитные носители данных (например, ROM, дискеты, жесткие диски, и т.д.) и оптические носители записи (например, CD-ROM, или DVD).
[383] В то время как примерные варианты осуществления конкретно показаны и описаны выше, специалистам будет понято, что различные изменения в форме и деталях могут быть сделаны, не отступая от духа и области изобретательной концепции, как определено приложенной формулой изобретения. Примерные варианты осуществления следует рассматривать в описательном смысле только, а не в целях ограничения. Поэтому, область изобретательной концепции определяется не в соответствии с подробным описанием примерных вариантов осуществления, а приложенной формулой изобретения, и все различия в пределах этой области должны быть рассмотрены как включаемые в настоящее изобретение.
Изобретение относится к средствам кодирования и декодирования видео посредством использования слияния блоков. Технический результат заключается в обеспечении возможности кодирования и декодирования видео посредством использования слияния блоков. Способ кодирования включает в себя: определение режима кодирования, указывающего текущий блок данных для кодирования картинки и способ кодирования, включающий в себя способ кодирования с предсказанием для текущего блока данных; определение наличия слияния с по меньшей мере одним соседним блоком данных на основании по меньшей мере одного из режима предсказания и режима кодирования; и определение информации режима предсказания, относящейся к слиянию информации и относящейся к предсказанию информации, и определение информации кодирования блока данных, включающего в себя упомянутые информацию режима предсказания, относящуюся к слиянию информацию и относящуюся к предсказанию информацию. 3 з.п. ф-лы, 33 ил., 2 табл.
1. Способ декодирования видео, причем способ содержит этапы:
получают из потока битов флаг пропуска для блока кодирования, который указывает, является ли режим кодирования для упомянутого блока кодирования режимом пропуска,
когда флаг пропуска указывает режим пропуска упомянутого блока кодирования, получают из потока битов индекс слияния, указывающий один блок среди группы блоков - кандидатов, и
когда флаг пропуска указывает режим непропуска упомянутого блока кодирования, получают информацию о типе разделения и информацию слияния для разделения среди по меньшей мере одного разделения,
при этом упомянутая группа блоков - кандидатов включает в себя по меньшей мере один блок - кандидат среди соседних блоков упомянутого блока кодирования,
при этом упомянутые соседние блоки включают в себя нижний левый блок, который является смежным по диагонали к нижнему левому углу упомянутого блока кодирования,
когда информацию о типе разделения получают из потока битов, определяют по меньшей мере одно разделение, включающее в себя упомянутое разделение, из упомянутого блока кодирования на основании упомянутой информации о типе разделения, и
при этом упомянутая информация слияния упомянутого разделения указывает, находится ли упомянутое разделение среди по меньшей мере одного разделения в режиме слияния.
2. Способ по п. 1, в котором индекс слияния указывает один из левого блока, верхнего блока, верхнего левого блока, верхнего правого блока и диагонально нижнего левого блока, которые являются смежными с границами упомянутого блока кодирования.
3. Способ по п. 1, дополнительно содержащий выполнение компенсации движения в отношении упомянутого блока кодирования, используя информацию движения блока, указанного упомянутым индексом слияния.
4. Способ по п. 1, дополнительно содержащий выполнение компенсации движения в отношении упомянутого разделения, используя информацию движения блока среди блоков, смежных с упомянутым разделением, когда упомянутое разделение находится в режиме слияния.
US 2008165855 A1, 10.07.2008 | |||
US 2008317132 A1, 25.12.2008 | |||
US 6043846 A, 28.03.2000 | |||
US 5608458 A, 04.03.1997 | |||
KR 20090110336 A, 21.10.2009 | |||
ВИДЕОДЕКОДЕР С ОБРАБОТКОЙ ПЕРЕМЕЖАЮЩИХСЯ ДАННЫХ | 1997 |
|
RU2204217C2 |
ОСНОВЫВАЮЩИЕСЯ НА МНОЖЕСТВЕ СЛОЕВ СПОСОБ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ И ВИДЕОКОДЕР/ДЕКОДЕР, В КОТОРЫХ ИСПОЛЬЗУЕТСЯ СГЛАЖИВАЮЩЕЕ ПРЕДСКАЗАНИЕ | 2007 |
|
RU2355126C2 |
Авторы
Даты
2016-02-27—Публикация
2015-05-13—Подача