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

ОБЛАСТЬ ТЕХНИКИ
[1] Примерные варианты осуществления относятся к кодированию и декодированию видео, и более подробно, к способу и устройству для кодирования и декодирования видео, которые выполняют внутреннее предсказание посредством выбора режима внутреннего предсказания согласно размеру внутренне предсказанного блока данных.
УРОВЕНЬ ТЕХНИКИ
[2] Согласно стандарту сжатия изображения, такому как усовершенствованное кодирование видео (AVC) от группы экспертов по движущимся изображениям (MPEG)-1, MPEG-2, MPEG-4 или H.264/MPEG-4, картинка разбивается на макроблоки для кодирования видео. После того, как каждый из макроблоков кодирован любым из режимов кодирования с внешним предсказанием и внутренним предсказанием, соответствующий режим кодирования выбирают согласно скорости передачи, требуемой для кодирования макроблока и допустимому искажению между оригинальным макроблоком и декодированным макроблоком. Затем макроблок кодируют в выбранном режиме кодирования.
[3] Поскольку аппаратное обеспечение для воспроизведения и хранения видео контента с высоким разрешением или высоким качеством развивается и поставляется, потребность в кодере-декодере видео для эффективного кодирования или декодирования видео контента с высоким разрешением или высоким качеством увеличивается. В обычном видео кодере-декодере видео кодируют согласно ограниченному способу кодирования, основанному на макроблоке, имеющем заранее определенный размер.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Техническая проблема
[4] В обычном видео кодере-декодере видео кодируется согласно ограниченному способу кодирования, основанному на макроблоке, имеющем заранее определенный размер.
Решение проблемы
[5] Примерные варианты осуществления обеспечивают способ и устройство для кодирования и декодирования видео, которое использует способ внутреннего предсказания, имеющий различные направленности, основанные на иерархических блоках кодирования, имеющих различные размеры.
Выгодные эффекты изобретения
[6] Согласно настоящему изобретению повышается эффективность кодирования для кодирования видео.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[7] Фиг.1 является блок-схемой устройства для кодирования видео согласно примерному варианту осуществления;
[8] Фиг.2 является блок-схемой устройства для декодирования видео согласно примерному варианту осуществления;
[9] Фиг.3 является диаграммой для объяснения понятия блоков кодирования согласно примерному варианту осуществления;
[10] Фиг.4 является блок-схемой кодера изображения, основанного на блоках кодирования согласно примерному варианту осуществления;
[11] Фиг.5 является блок-схемой декодера изображения, основанного на блоках кодирования согласно примерному варианту осуществления;
[12] Фиг.6 является диаграммой, иллюстрирующей более глубокие блоки кодирования согласно глубинам и сегменты согласно примерному варианту осуществления;
[13] Фиг.7 является диаграммой для объяснения соотношения между блоком кодирования и блоками преобразования согласно примерному варианту осуществления;
[14] Фиг.8 является диаграммой для объяснения информации кодирования блоков кодирования, соответствующих кодированной глубине, согласно примерному варианту осуществления;
[15] Фиг.9 является диаграммой более глубоких блоков кодирования согласно глубинам, согласно примерному варианту осуществления;
[16] Фиг.10-12 являются диаграммами для объяснения соотношения между блоками кодирования, блоками предсказания и блоками преобразования, согласно примерному варианту осуществления;
[17] Фиг.13 является диаграммой для объяснения соотношения между блоком кодирования, блоком предсказания или сегментом, и блоком преобразования согласно информации режима кодирования из Таблицы 1;
[18] Фиг.14 иллюстрирует количество режимов внутреннего предсказания согласно размеру блока кодирования, согласно примерному варианту осуществления;
[19] Фиг.15A-15C являются диаграммами для объяснения режима внутреннего предсказания, примененного к блоку кодирования, имеющему заранее определенный размер, согласно примерному варианту осуществления;
[20] Фиг.16 является диаграммой для объяснения режима внутреннего предсказания, примененного к блоку кодирования, имеющему заранее определенный размер, согласно другому примерному варианту осуществления;
[21] Фиг.17 является ссылочной диаграммой для объяснения режимов внутреннего предсказания, имеющих различные направленности, согласно примерному варианту осуществления;
[22] Фиг.18 является ссылочной диаграммой для объяснения билинейного режима согласно примерному варианту осуществления;
[23] Фиг.19 является диаграммой для объяснения процесса генерирования значения предсказания режима внутреннего предсказания текущего блока кодирования, согласно примерному варианту осуществления;
[24] Фиг.20 является ссылочной диаграммой для объяснения процесса отображения (для) унификации режимов внутреннего предсказания блоков кодирования, имеющих различные размеры, согласно примерному варианту осуществления;
[25] Фиг.21 является ссылочной диаграммой для объяснения процесса отображения режимов внутреннего предсказания соседних блоков кодирования в один из представительных режимов внутреннего предсказания, согласно примерному варианту осуществления;
[26] Фиг.22 является блок-схемой устройства внутреннего предсказания согласно примерному варианту осуществления;
[27] Фиг.23 является последовательностью операций, иллюстрирующей способ кодирования изображения согласно примерному варианту осуществления;
[28] Фиг.24 является последовательностью операций, иллюстрирующей способ декодирования изображения согласно примерному варианту осуществления;
[29] Фиг.25 является диаграммой для объяснения соотношения между текущим пикселем и соседними пикселями, расположенными на «проведенной» линии, имеющей направленность (dx, dy);
[30] Фиг.26 является диаграммой для объяснения изменения в соседнем пикселе, расположенном на проведенной линии, имеющей направленность (dx, dy), согласно местоположению текущего пикселя, согласно примерному варианту осуществления;
[31] Фиг.27 и 28 являются диаграммами для объяснения способа определения направления режима внутреннего предсказания, согласно примерным вариантам осуществления; и
[32] Фиг.29 является диаграммой, иллюстрирующей текущий блок кодирования и соседние пиксели, которые должны быть использованы для внутреннего предсказания, согласно примерному варианту осуществления.
НАИЛУЧШИЙ РЕЖИМ РЕАЛИЗАЦИИ ИЗОБРЕТЕНИЯ
-1
[33] Согласно примерному варианту осуществления предоставлен способ кодирования изображения, причем способ содержит: деление текущей картинки по меньшей мере в один блок, имеющий заранее определенный размер; определение режима внутреннего предсказания, который должен быть применен к текущему блоку, который должен быть кодирован согласно размеру текущего блока; и выполнение внутреннего предсказания в отношении текущего блока согласно определенному режиму внутреннего предсказания, причем режим внутреннего предсказания содержит режим предсказания для выполнения предсказания посредством использования проведенной линии, имеющей угол tan(dy/dx) (dx и dy - целые числа), около каждого пикселя в текущем блоке.
-1
[34] Согласно другому аспекту примерного варианта осуществления предоставлен способ декодирования изображения, причем способ содержит: деление текущей картинки в по меньшей мере один блок, имеющий заранее определенный размер; извлечение информации о режиме внутреннего предсказания, примененному к текущему блоку, который должен быть декодирован, из потока битов; и выполнение внутреннего предсказания в отношении текущего блока согласно извлеченному режиму внутреннего предсказания, при этом режим внутреннего предсказания содержит режим предсказания для выполнения предсказания посредством использования проведенной линии, имеющей угол tan(dy/dx) (dx и dy - целые числа) около каждого пикселя текущего блока.
-1
[35] Согласно другому аспекту примерного варианта осуществления предоставлено устройство для кодирования изображения, при этом устройство содержит: блок определения режима внутреннего предсказания для определения режима внутреннего предсказания, который должен быть выполнен согласно размеру текущего блока, который должен быть закодирован; и блок выполнения внутреннего предсказания для выполнения внутреннего предсказания в отношении текущего блока, который должен быть закодирован согласно режиму внутреннего предсказания, при этом режим внутреннего предсказания включает в себя режим предсказания для выполнения предсказания посредством использования проведенной линии, имеющей угол tan(dy/dx) (dx, и dy - целые числа) около каждого пикселя в текущем блоке.
-1
[36] Согласно другому аспекту примерного варианта осуществления предоставлено устройство для декодирования изображения, при этом устройство содержит: статистический декодер для извлечения информации о режиме внутреннего предсказания, примененного к текущему блоку, который должен быть декодирован, из потока битов; и блок выполнения внутреннего предсказания для выполнения внутреннего предсказания в отношении текущего блока согласно режиму внутреннего предсказания, при этом режим внутреннего предсказания содержит режим предсказания для выполнения предсказания посредством использования проведенной линии, имеющей угол tan(dy/dx) (dx, и dy - целые числа) около каждого пикселя в текущем блоке.
[37] Согласно другому аспекту примерного варианта осуществления представлен считываемый компьютером носитель записи, имеющий воплощенную в нем программу для выполнения способа.
[38] Согласно другому аспекту примерного варианта осуществления представлен считываемый компьютером носитель записи, имеющий воплощенную в нем программу для выполнения способа.
[39] Согласно примерному варианту осуществления, эффективность сжатия изображения может быть улучшена посредством выполнения кодирования с внутренним предсказанием в различных направлениях над блоками кодирования, имеющими различные размеры.
РЕЖИМ РЕАЛИЗАЦИИ ИЗОБРЕТЕНИЯ
[40] Ниже примерные варианты осуществления описаны более полно со ссылками на сопроводительные чертежи, на которых показаны примерные варианты осуществления.
[41] В настоящем описании «блок кодирования» является блоком данных кодирования, в котором данные изображения закодированы на стороне кодера, и кодированным блоком данных, в который кодированные данные изображения декодируются на стороне декодера, согласно примерным вариантам осуществления. Кроме того, «кодированная глубина» означает глубину, где блок кодирования кодируется. Кроме того, видео содержит неподвижное изображение и движущуюся картинку. В примерных вариантах осуществления «блок» может относиться или может не относиться к блоку с размером, зависящим от его контекста.
[42] Сначала способ и устройство для кодирования видео и способ и устройство для декодирования видео, согласно примерному варианту осуществления, будут описаны со ссылками на Фиг.1-13.
[43] Фиг.1 является блок-схемой устройства 100 для кодирования видео согласно примерному варианту осуществления.
[44] Устройство 100 включает в себя блок 110 разделения максимального блока кодирования, блок 120 определения блока кодирования и блок 130 вывода.
[45] Блок 110 разделения максимального блока кодирования может разделить текущую картинку на основании максимального блока кодирования для текущей картинки изображения. Если текущая картинка больше, чем максимальный блок кодирования, данные изображения текущей картинки могут быть разделены в по меньшей мере один максимальный блок кодирования. Максимальный блок кодирования согласно примерному варианту осуществления может быть блоком данных, имеющим размер 32×32, 64×64, 128×128, 256×256 и т.д., в котором форма блока данных является квадратом, имеющим ширину и высоту в степенях двойки. Данные изображения могут быть выведены к блоку 120 определения блока кодирования согласно по меньшей мере одному максимальному блоку кодирования.
[46] Блок кодирования согласно примерному варианту осуществления может быть охарактеризован максимальным размером и глубиной. Глубина обозначает количество раз, сколько блок кодирования пространственно делится из максимального блока кодирования, и с углублением или увеличением глубины более глубокие блоки кодирования согласно глубинам могут быть разделены от максимального блока кодирования до минимального блока кодирования. Глубина максимального блока кодирования является наиболее высокой глубиной, и глубина минимального блока кодирования является наиболее нижней глубиной. Так как размер блока кодирования, соответствующий каждой глубине, уменьшается, когда глубина максимального блока кодирования углубляется, блок кодирования, соответствующий более верхней глубине, может включать в себя множество блоков кодирования, соответствующих более низким глубинам.
[47] Как описано выше, данные изображения текущей картинки разделяют на максимальные блоки кодирования согласно максимальному размеру блока кодирования, и каждый из максимальных блоков кодирования может включать в себя более глубокие блоки кодирования, которые разделены согласно глубинам. Так как максимальный блок кодирования согласно примерному варианту осуществления разделяется согласно глубинам, данные изображения пространственной области, включенные в максимальный блок кодирования, могут быть иерархически классифицированы согласно глубинам.
[48] Максимальная глубина и максимальный размер блока кодирования, которые ограничивают общее количество раз, сколько раз высота и ширина максимального блока кодирования иерархически делятся, могут быть заранее определены.
[49] Блок 120 определения блока кодирования кодирует по меньшей мере одну область разделения, полученную посредством разделения области максимального блока кодирования согласно глубинам, и определяет глубину, чтобы вывести окончательно кодированные данные изображения согласно этой по меньшей мере одной области разделения. Другими словами, блок 120 определения блока кодирования определяет кодированную глубину посредством кодирования данных изображения в более глубоких блоках кодирования согласно глубинам, в соответствии с максимальным блоком кодирования текущей картинки, и выбирает глубину, имеющую наименьшую ошибку кодирования. Таким образом, кодированные данные изображения блока кодирования, соответствующего определенной таким образом кодированной глубине, в конечном итоге выводятся. Кроме того, блоки кодирования, соответствующие кодированной глубине, могут быть расценены как кодированные блоки кодирования.
[50] Определенная кодированная глубина и кодированные данные изображения согласно определенной кодированной глубине выводят к блоку 130 вывода.
[51] Данные изображения в максимальном блоке кодирования кодируют на основании более глубоких блоков кодирования, соответствующих по меньшей мере одной глубине, равной или ниже максимальной глубины, и результаты кодирования данных изображения сравнивают на основании каждого из более глубоких блоков кодирования. Глубина, имеющая наименьшую ошибку кодирования, может быть выбрана после сравнения ошибок кодирования более глубоких блоков кодирования. По меньшей мере одна кодированная глубина может быть выбрана для каждого максимального блока кодирования.
[52] Размер максимального блока кодирования делится, когда блок кодирования иерархически разделяется согласно глубинам, и когда количество блоков кодирования увеличивается. Кроме того, даже если блоки кодирования соответствуют одной и той же глубине в одном максимальном блоке кодирования, каждый из блоков кодирования, соответствующих одной и той же глубине, может быть разделен до более низкой глубины посредством измерения ошибки кодирования данных изображения каждого блока кодирования, отдельно. Соответственно, даже когда данные изображения включены в один максимальный блок кодирования, данные изображения разделяются на области согласно глубинам, ошибки кодирования могут отличаться согласно областям в одном максимальном блоке кодирования, и таким образом кодированные глубины могут отличаться согласно областям в данных изображения. Таким образом, одна или более кодированные глубины могут быть определены в одном максимальном блоке кодирования, и данные изображения максимального блока кодирования могут быть разделены согласно блокам кодирования по меньшей мере одной кодированной глубины.
[53] Соответственно, блок 120 определения блока кодирования может определить блоки кодирования, имеющие структуру дерева, включенные в максимальный блок кодирования. Блоки кодирования, имеющие структуру дерева, согласно примерному варианту осуществления включают в себя блоки кодирования, соответствующие глубине, определенной, чтобы быть кодированной глубиной, из числа всех более глубоких блоков кодирования, включенных в максимальный блок кодирования. Блок кодирования кодированной глубины может быть иерархически определен согласно глубинам в одной и той же области максимального блока кодирования, и может быть независимо определен в различных областях. Аналогично, кодированная глубина в текущей области может быть независимо определена из кодированной глубины в другой области.
[54] Максимальная глубина согласно примерному варианту осуществления является индексом, относящимся к количеству раз разделения от максимального блока кодирования до минимального блока кодирования. Первая максимальная глубина согласно примерному варианту осуществления может обозначать общее количество раз разделения от максимального блока кодирования до минимального блока кодирования. Вторая максимальная глубина согласно примерному варианту осуществления может обозначать общее количество уровней глубины от максимального блока кодирования до минимального блока кодирования. Например, когда глубина максимального блока кодирования равна 0, глубина блока кодирования, в котором максимальный блок кодирования разделяется однократно, может быть установлена в 1, а глубина блока кодирования, при которой максимальный блок кодирования разделен дважды, может быть установлена в 2. Здесь, если минимальный блок кодирования является блоком кодирования, в котором максимальный блок кодирования разделен четыре раза, существуют 5 уровней глубины из глубин 0, 1, 2, 3 и 4, и таким образом первая максимальная глубина может быть установлена в 4, и вторая максимальная глубина может быть установлена в 5.
[55] Кодирование с предсказанием и преобразование могут быть выполнены согласно максимальному блоку кодирования. Кодирование с предсказанием и преобразование также выполняют на основании более глубоких блоков кодирования согласно глубине, равной, или глубинам, меньшим, чем максимальная глубина, согласно максимальному блоку кодирования. Преобразование может быть выполнено согласно способу ортогонального преобразования или целочисленного преобразования.
[56] Так как количество более глубоких блоков кодирования увеличивается всякий раз, когда максимальный блок кодирования разделяется согласно глубинам, кодирование, включающее в себя кодирование с предсказанием и преобразование, выполняется над всеми более глубокими блоками кодирования, генерируемых, когда глубина углубляется. Для удобства описания кодирование с предсказанием и преобразование описаны ниже в отношении блока кодирования текущей глубины, в максимальном блоке кодирования.
[57] Устройство 100 может по-разному выбирать размер или форму блока данных для кодирования данных изображения. Чтобы закодировать данные изображения, операции, такие как кодирование с предсказанием, преобразование и статистическое (энтропийное) кодирование выполняют, и в это время один и тот же блок данных может использоваться для всех операций, или различные блоки данных могут использоваться для каждой операции.
[58] Например, устройство 100 может выбрать не только блок кодирования для кодирования данных изображения, но также и блок данных, отличающийся от блока кодирования, чтобы выполнить кодирование с предсказанием над данными изображения в этом блоке кодирования.
[59] Чтобы выполнить кодирование с предсказанием в максимальном блоке кодирования, кодирование с предсказанием может быть выполнено на основании блока кодирования, соответствующего кодированной глубине, то есть на основании блока кодирования, который больше не разделен на блоки кодирования, соответствующие более низкой глубине. В дальнейшем описании блок кодирования, который больше не разделяется и становится базисным блоком для кодирования с предсказанием, будет упоминаться как блок предсказания. Сегмент, полученный посредством разделения блока предсказания, может включать в себя блок данных, полученный посредством разделения по меньшей мере одного из высоты и ширины блока предсказания.
[60] Например, когда блок кодирования 2N×2N (где N - положительное целое число) больше не разделяется и становится блоком предсказания 2N×2N, и размер сегмента может быть 2N×2N, 2N×N, N×2N или N×N. Примеры типа сегмента включают в себя симметричные сегменты, которые получают посредством симметричного разделения высоты или ширины блока предсказания, сегменты, полученные асимметричным разделением высоты или ширины блока предсказания, таким как 1:n или n:1, сегменты, которые получены геометрическим разделением блока предсказания, и сегменты, имеющие произвольные формы.
[61] Режим предсказания блока предсказания может быть по меньшей мере одним из внутреннего (intra) режима, внешнего (inter) режима и режима пропуска. Например, внутренний режим или внешний режим могут быть выполнены над сегментом 2N×2N, 2N×N, N×2N или N×N. Кроме того, режим пропуска может быть выполнен только над сегментом 2N×2N. Кодирование независимо выполняется над одним блоком предсказания в блоке кодирования, таким образом выбирая режим предсказания, имеющий наименьшую ошибку кодирования.
[62] Устройство 100 может также выполнять преобразование над данными изображения в блоке кодирования, основанное не только на блоке кодирования для кодирования данных изображения, но также и основанное на блоке данных, который отличается от блока кодирования.
[63] Чтобы выполнить преобразование в блоке кодирования, это преобразование может быть выполнено на основании блока данных, имеющего размер, меньший или равный этому блоку кодирования. Например, блок данных для преобразования может включать в себя блок данных для внутреннего режима и блок данных для внешнего режима.
1
2
[64] Блок данных, используемый как основа преобразования, будет упоминаться ниже как блок преобразования. Глубина преобразования, указывающая количество раз разделения, чтобы достигнуть блока преобразования посредством разделения высоты и ширины блока кодирования, может также быть установлена в блоке преобразования. Например, в текущем блоке кодирования размером 2N×2N, глубина преобразования может быть 0, когда размер блока преобразования равен также 2N×2N, может быть 1, когда каждая из высоты и ширины текущего блока кодирования разделена на две равные части, полностью разделены на 4 блоков преобразования, и размер блока преобразования является, таким образом, равным NxN, и может быть 2, когда каждая из высоты и ширины текущего блока кодирования разделена на четыре равные части, полностью разделены на 4 блоков преобразования, и размер блока преобразования является, таким образом, равным N/2×N/2. Например, блок преобразования может быть установлен согласно иерархической структуре дерева, в которой блок преобразования верхней глубины преобразования разделен на четыре блока преобразования более низкой глубины преобразования согласно иерархическим характеристикам глубины преобразования.
[65] Аналогично блоку кодирования, блок преобразования в блоке кодирования может быть рекурсивно разделен на области меньшего размера так, чтобы блок преобразования мог быть определен независимо в блоках областей. Таким образом, остаточные данные в блоке кодирования могут быть разделены согласно преобразованию, имеющему структуру дерева согласно глубинам преобразования.
[66] Кодирование информации согласно блокам кодирования, соответствующим кодированной глубине, требует не только информации о кодированной глубине, но также и об информации, относящейся к кодированию с предсказанием и преобразованию. Соответственно, блок 120 определения блока кодирования не только определяет кодированную глубину, имеющую наименьшую ошибку кодирования, но также и определяет тип сегмента в блоке предсказания, режим предсказания согласно блокам предсказания, и размер блока преобразования для преобразования.
[67] Блоки кодирования согласно структуре дерева в максимальном блоке кодирования и способ определения сегмента, согласно примерным вариантам осуществления, описаны подробно ниже со ссылками на Фиг.3-12.
[68] Блок 120 определения блока кодирования может измерять ошибку кодирования более глубоких блоков кодирования согласно глубинам с использованием оптимизации искажения частоты на основании множителей Лагранжа.
[69] Блок 130 вывода выводит данные изображения максимального блока кодирования, который закодирован на основании по меньшей мере одной кодированной глубины, определенной блоком 120 определения блока кодирования, и информации о режиме кодирования согласно кодированной глубине, в потоках битов.
[70] Кодированные данные изображения могут быть получены посредством кодирования остаточных данных изображения.
[71] Информация о режиме кодирования согласно кодированной глубине может включать в себя информацию о кодированной глубине, о типе сегмента в блоке предсказания, режиме предсказания и размере блока преобразования.
[72] Информация о кодированной глубине может быть задана посредством использования информации разделения согласно глубинам, которая указывает, выполнено ли кодирование над блоками кодирования более низкой глубины вместо текущей глубины. Если текущая глубина текущего блока кодирования является кодированной глубиной, данные изображения в текущем блоке кодирования кодируют и выводят, и таким образом информация разделения может быть задана, чтобы не разделять текущий блок кодирования до более низкой глубины. Альтернативно, если текущая глубина текущего блока кодирования не является кодированной глубиной, кодирование выполняют над блоком кодирования более низкой глубины, и таким образом информация разделения может быть задана, чтобы разделять текущий блок кодирования, чтобы получить блоки кодирования более низкой глубины.
[73] Если текущая глубина не является кодированной глубиной, кодирование выполняют над блоком кодирования, который разделен в блок кодирования более низкой глубины. Так как по меньшей мере один блок кодирования более низкой глубины существует в одном блоке кодирования текущей глубины, кодирование повторяющимся образом выполняется над каждым блоком кодирования более низкой глубины, и таким образом кодирование может быть рекурсивно выполнено для блоков кодирования, имеющих одну и ту же глубину.
[74] Так как блоки кодирования, имеющие структуру дерева, определены для одного максимального блока кодирования, и информация о по меньшей мере одном режиме кодирования определена для блока кодирования кодированной глубины, информация о по меньшей мере одном режиме кодирования может быть определена для одного максимального блока кодирования. Кроме того, кодированная глубина данных изображения максимального блока кодирования может быть различной согласно местоположениям, так как данные изображения иерархически разделены согласно глубинам, и таким образом информация о кодированной глубине и режиме кодирования может быть установлена для данных изображения.
[75] Соответственно, блок 130 вывода может назначить информацию кодирования о соответствующей кодированной глубине и режиме кодирования по меньшей мере одному из блока кодирования, блока предсказания и минимального блока, включенного в максимальный блок кодирования.
[76] Минимальный блок согласно примерному варианту осуществления является прямоугольным блоком данных, полученным посредством разделения минимального блока кодирования, составляющего самую нижнюю глубину, на 4. Альтернативно, минимальный блок может быть максимальным прямоугольным блоком данных, который может быть включен во все блоки кодирования, блоки предсказания, блоки сегментов и блоки преобразования, включенные в максимальный блок кодирования.
[77] Например, информация кодирования, выводимая через блок 130 вывода, может быть классифицирована на информацию кодирования согласно блокам кодирования и информацию кодирования согласно блокам предсказания. Информация кодирования согласно блокам кодирования может включать в себя информацию о режиме предсказания и о размере сегментов. Информация кодирования согласно блокам предсказания может включать в себя информацию об оцененном направлении внешнего режима, об индексе опорного изображения внешнего режима, о векторе движения, о компоненте насыщенности цвета внутреннего режима, и о способе интерполяции внутреннего режима. Кроме того, информация о максимальном размере блока кодирования, заданного согласно картинкам, вырезкам или группам изображений (GOP), и информация о максимальной глубине, могут быть вставлены в SPS (Набор Параметров Последовательности) или заголовок потока битов.
[78] В устройстве 100 более глубокий блок кодирования может быть блоком кодирования, полученным посредством деления высоты или ширины блока кодирования более верхней глубины на два. Другими словами, когда размер блока кодирования текущей глубины равен 2N×2N, размер блока кодирования более низкой глубины равен N×N. Кроме того, блок кодирования текущей глубины, имеющей размер 2N×2N, может включать в себя максимум 4 блока кодирования более низкой глубины.
[79] Соответственно, устройство 100 может сформировать блоки кодирования, имеющие структуру дерева, посредством определения блоков кодирования, имеющих оптимальную форму и оптимальный размер для каждого максимального блока кодирования, на основании размера максимального блока кодирования и максимальной глубины, определенной, рассматривая характеристики текущей картинки. Кроме того, так как кодирование может быть выполнено над каждым максимальным блоком кодирования посредством использования любого одного из различных режимов предсказания и преобразования, оптимальный режим кодирования может быть определен, рассматривая характеристики блока кодирования различных размеров изображения.
[80] Таким образом, если изображение, имеющее высокое разрешение или большое количество данных, кодируется в обычном макроблоке, количество макроблоков для каждой картинки чрезмерно увеличивается. Соответственно, количество частей сжатой информации, сгенерированных для каждого макроблока, увеличивается, и таким образом трудно передать сжатую информацию, и эффективность сжатия данных уменьшается. Однако, при использовании устройства 100 эффективность сжатия изображения может быть увеличена, так как блок кодирования отрегулирован при рассмотрении характеристик изображения, в то же время увеличивая максимальный размер блока кодирования при рассмотрении размера изображения.
[81] Фиг.2 является блок-схемой устройства 200 для декодирования видео, согласно примерному варианту осуществления.
[82] Устройство 200 включает в себя приемник 210, блок 220 извлечения информации кодирования и данных изображения, и декодер 230 данных изображения. Определения различных терминов, таких как блок кодирования, глубина, блок предсказания, блок преобразования и информация о различных режимах кодирования, для различных операций устройства 200 идентичны описанным со ссылками на Фиг.1 и устройство 100.
[83] Приемник 210 принимает и выполняет анализ (синтаксический разбор) потока битов кодированного видео. Блок 220 извлечения информации кодирования и данных изображения извлекает закодированные данные изображения для каждого блока кодирования из проанализированного потока битов, при этом блоки кодирования имеют структуру дерева согласно каждому максимальному блоку кодирования, и выводит извлеченные данные изображения к декодеру 230 данных изображения. Блок 220 извлечения информации кодирования и данных изображения может извлечь информацию о максимальном размере блока кодирования текущей картинки из заголовка о текущей картинке или SPS.
[84] Кроме того, блок 220 извлечения информации кодирования и данных изображения информации извлекает информацию о кодированной глубине и режиме кодирования для блоков кодирования, имеющих структуру дерева, согласно каждому максимальному блоку кодирования, из проанализированного потока битов. Извлеченная информация о кодированной глубине и режиме кодирования выводится к декодеру 230 данных изображения. Другими словами, данные изображения в битовом потоке разделяются на максимальный блок кодирования так, что декодер 230 данных изображения декодирует данные изображения для каждого максимального блока кодирования.
[85] Информация о кодированной глубине и режиме кодирования согласно максимальному блоку кодирования может быть установлена для информации о по меньшей мере одном блоке кодирования, соответствующем кодированной глубине, и информация о режиме кодирования может включать в себя информацию о типе сегмента соответствующего блока кодирования, соответствующего кодированной глубине, о режиме предсказания и размере блока преобразования. Кроме того, информация разделения согласно глубинам может быть извлечена в качестве информации о кодированной глубине.
[86] Информация о кодированной глубине и режиме кодирования согласно каждому максимальному блоку кодирования, извлеченная блоком 220 извлечения информации кодирования и данных изображения, является информацией о кодированной глубине и режиме кодирования, определенным для генерирования минимальной ошибки кодирования, когда кодер, такой как устройство 100, повторяющимся образом выполняет кодирование для каждого более глубокого блока кодирования согласно глубинам, согласно каждому максимальному блоку кодирования. Соответственно, устройство 200 может восстановить изображение посредством декодирования данных изображения согласно кодированной глубине и режиму кодирования, который генерирует минимальную ошибку кодирования.
[87] Так как информация кодирования о кодированной глубине и режиме кодирования может быть назначена заранее определенному блоку данных из числа соответствующих блока кодирования, блока предсказания и минимального блока, блок 220 извлечения информации кодирования и данных изображения может извлечь информацию о кодированной глубине и режиме кодирования согласно заранее определенным блокам данных. Эти заранее определенные блоки данных, которым назначена одна и та же информация о кодированной глубине и режиме кодирования, могут быть логически выведены, чтобы быть блоками данных, включенными в один и тот же максимальный блок кодирования.
[88] Декодер 230 данных изображения восстанавливает текущую картинку посредством декодирования данных изображения в каждом максимальном блоке кодирования на основании информации о кодированной глубине и режиме кодирования согласно максимальным блокам кодирования. Другими словами, декодер 230 данных изображения может декодировать кодированные данные изображения на основании извлеченной информации о типе сегмента, режиме предсказания и блоке преобразования для каждого блока кодирования из числа блоков кодирования, имеющих структуру дерева, в каждом максимальном блоке кодирования. Процесс декодирования может включать в себя предсказание, включающее внутреннее предсказание и компенсацию движения, и обратное преобразование. Обратное преобразование может быть выполнено согласно способу обратного ортогонального преобразования или обратного целочисленного преобразования.
[89] Декодер 230 данных изображения может выполнить внутреннее предсказание или компенсацию движения согласно сегменту и режиму предсказания каждого блока кодирования, на основании информации о типе сегмента и режиме предсказания блока предсказания блока кодирования согласно кодированным глубинам.
[90] Кроме того, декодер 230 данных изображения может выполнить обратное преобразование согласно каждому блоку преобразования в блоке кодирования на основании информации о размере блока преобразования блока кодирования согласно кодированным глубинам так, чтобы выполнить обратное преобразование согласно максимальным блокам кодирования.
[91] Декодер 230 данных изображения может определить по меньшей мере одну кодированную глубину текущего максимального блока кодирования посредством использования информации разделения согласно глубинам. Если информация разделения указывает, что данные изображения больше не разделены в текущей глубине, текущая глубина является кодированной глубиной. Соответственно, декодер 230 данных изображения может декодировать кодированные данные по меньшей мере одного блока кодирования, соответствующего каждой кодированной глубине в текущем максимальном блоке кодирования, посредством использования информации о типе сегмента блока предсказания, режиме предсказания и размере блока преобразования для каждого блока кодирования, соответствующего кодированной глубине, и вывести данные изображения текущего максимального блока кодирования.
[92] Другими словами, блоки данных, содержащие информацию кодирования, включающую одну и ту же информацию разделения, могут быть собраны посредством наблюдения набора информации кодирования, назначенного для заранее определенного блока данных из числа блока кодирования, блока предсказания и минимального блока, и эти собранные блоки данных могут рассматриваться как являющиеся одним блоком данных, который должен быть декодирован декодером 230 данных изображения в одном и том же режиме кодирования.
[93] Устройство 200 может получить информацию о по меньшей мере одном блоке кодирования, который генерирует минимальную ошибку кодирования, когда кодирование рекурсивно выполняется для каждого максимального блока кодирования, и может использовать эту информацию, чтобы декодировать текущую картинку. Другими словами, блоки кодирования, имеющие структуру дерева, определенные как оптимальные блоки кодирования в каждом максимальном блоке кодирования, могут быть декодированы. Кроме того, максимальный размер кодирования блока определяется, рассматривая разрешение и количество данных изображения.
[94] Соответственно, даже если данные изображения имеют высокое разрешение и большое количество данных, данные изображения могут быть эффективно декодированы и восстановлены посредством использования размера блока кодирования и режима кодирования, которые адаптивно определены согласно характеристикам данных изображения, посредством использования информации об оптимальном режиме кодирования, принятом от кодера.
[95] Способ определения блоков кодирования, имеющих структуру дерева, блока предсказания и блока преобразования, согласно примерному варианту осуществления, описан ниже со ссылками на Фиг.3-13.
[96] Фиг.3 является диаграммой для объяснения понятия блоков кодирования согласно примерному варианту осуществления.
[97] Размер блока кодирования может быть выражен как ширина × высота, и может быть 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.
[98] В видео данных 310 разрешение равно 1920×1080, максимальный размер блока кодирования равен 64 и максимальная глубина равна 2. В видео данных 320 разрешение равно 1920×1080, максимальный размер блока кодирования равен 64 и максимальная глубина равна 3. В видео данных 330 разрешение равно 352×288, максимальный размер блока кодирования равен 16 и максимальная глубина равна 1. Максимальная глубина, показанная в Фиг.3, обозначает общее количество разделений от максимального блока кодирования до минимального блока декодирования.
[99] Если разрешение высоко или количество данных является большим, максимальный размер блока кодирования может быть большим так, чтобы не только повысить эффективность кодирования, но также и точно отразить характеристики изображения. Соответственно, максимальный размер блока кодирования видео данных 310 и 320, имеющих более высокое разрешение, чем видео данные 330, может быть равен 64.
[100] Так как максимальная глубина видео данных 310 равна 2, блоки кодирования 315 видео данных 310 могут включать в себя максимальный блок кодирования, имеющий размер вдоль длинной оси 64, и блоки кодирования, имеющие размеры вдоль длинной оси 32 и 16, так как глубины углубляются до двух уровней посредством разделения максимального блока кодирования дважды. Между тем, так как максимальная глубина видео данных 330 равна 1, блоки 335 кодирования в видео данных 330 могут включать в себя максимальный блок кодирования, имеющий размер вдоль длинной оси 16, и блоки кодирования, имеющие размер вдоль длинной оси 8, так как глубины углубляются до одного уровня посредством разделения максимального блока кодирования один раз.
[101] Так как максимальная глубина видео данных 320 равна 3, блоки 325 кодирования из видео данных 320 могут включать в себя максимальный блок кодирования, имеющий размер вдоль длинной оси 64, и блоки кодирования, имеющие размеры вдоль длинной оси 32, 16 и 8, так как глубины углубляются до 3 уровней посредством разделения максимального блока кодирования три раза. Поскольку глубина углубляется, подробная информация может быть точно выражена.
[102] Фиг.4 является блок-схемой кодера 400 изображения на основании блоков кодирования, согласно примерному варианту осуществления.
[103] Кодер 400 изображения выполняет операции блока 120 определения блока кодирования из устройства 100, чтобы закодировать данные изображения. Другими словами, блок 410 внутреннего предсказания выполняет внутреннее предсказание над блоками кодирования во внутреннем режиме среди текущего кадра 405, и блок 420 оценки движения и компенсатор 425 движения выполняют внешнюю оценку и компенсацию движения над блоками кодирования во внешнем режиме среди текущего кадра 405 посредством использования текущего кадра 405 и опорного кадра 495.
[104] Данные, выведенные из блока 410 внутреннего предсказания, блока 420 оценки движения и компенсатора 425 движения, выводят как квантованный коэффициент преобразования через преобразователь 430 и квантователь 440. Квантованный коэффициент преобразования восстанавливается как данные в пространственной области посредством обратного квантователя 460 и обратного преобразователя 470, и восстановленные данные в пространственной области выводят как опорный кадр 495 после постобработки через блок 480 удаления блочности и блок 490 циклической фильтрации. Квантованный коэффициент преобразования может быть выведен как поток битов 455 через статистический кодер 450.
[105] Для того, чтобы кодер 400 изображения был применен в устройстве 100, все элементы кодера 400 изображения, то есть, блок 410 внутреннего предсказания, блок 420 оценки движения, компенсатор 425 движения, преобразователь 430, квантователь 440, статистический кодер 450, обратный квантователь 460, обратный преобразователь 470, блок 480 удаления блочности и блок 490 циклической фильтрации, выполняют операции на основании каждого блока кодирования из числа блоков кодирования, имеющих структуру дерева, в то же время рассматривая максимальную глубину каждого максимального блока кодирования.
[106] В частности, блок 410 внутреннего предсказания, блок 420 оценки движения и компенсатор 425 движения определяют сегменты и режим предсказания каждого блока кодирования из числа блоков кодирования, имеющих структуру дерева, в то же время рассматривая максимальный размер и максимальную глубину текущего максимального блока кодирования, и преобразователь 430 определяет размер блока преобразования в каждом блоке кодирования из числа блоков кодирования, имеющих структуру дерева.
[107] Фиг.5 является блок-схемой декодера 500 изображения на основании блоков кодирования, согласно примерному варианту осуществления.
[108] Анализатор 510 анализирует (выполняет синтаксический разбор) кодированные данные изображения, которые должны быть декодированы, и информацию о кодировании, необходимую для декодирования, из потока битов 505. Кодированные данные изображения выводят как обратно квантованные данные через статистический декодер 520 и обратный квантователь 530, и обратно квантованные данные восстанавливают в данные изображения в пространственной области с помощью обратного преобразователя 540.
[109] Блок 550 внутреннего предсказания выполняет внутреннее предсказание над блоками кодирования во внутреннем режиме относительно данных изображения в пространственной области, и компенсатор 560 движения выполняет компенсацию движения над блоками кодирования во внешнем режиме посредством использования опорного кадра 585.
[110] Данные изображения в пространственной области, которые прошли через блок 550 внутреннего предсказания и компенсатор 560 движения, могут быть выведены как восстановленный кадр 595 после постобработки через блок 570 удаления блочности и блок 580 циклической фильтрации. Кроме того, данные изображения, которые постобработаны с помощью блока 570 удаления блочности и блока 580 циклической фильтрации, могут быть выведены как опорный кадр 585.
[111] Чтобы декодировать данные изображения в декодере 230 данных изображения в устройстве 200, декодер 500 изображения может выполнить операции, которые выполняют после анализатора 510.
[112] Для того, чтобы декодер 500 изображения был применен в устройстве 200, все элементы декодера 500 изображения, то есть, анализатор 510, статистический декодер 520, обратный квантователь 530, обратный преобразователь 540, блок 550 внутреннего предсказания, компенсатор 560 движения, блок 570 удаления блочности и блок 580 циклической фильтрации, выполняют операции на основании блоков кодирования, имеющих структуру дерева, для каждого максимального блока кодирования.
[113] В частности, блок 550 внутреннего предсказания и компенсатор 560 движения выполняют операции на основании сегментов и режима предсказания для каждого из блоков кодирования, имеющих структуру дерева, и обратный преобразователь 540 выполняет операции на основании размера блока преобразования для каждого блока кодирования.
[114] Фиг.6 является диаграммой, иллюстрирующей более глубокие блоки кодирования согласно глубинам и сегменты, согласно примерному варианту осуществления.
[115] Устройство 100 и устройство 200 используют иерархические блоки кодирования, чтобы учесть характеристики изображения. Максимальная высота, максимальная ширина и максимальная глубина блоков кодирования могут быть адаптивно определены согласно характеристикам изображения, или могут быть иначе установлены пользователем. Размеры более глубоких блоков кодирования согласно глубинам могут быть определены согласно заранее определенному максимальному размеру блока кодирования.
[116] В иерархической структуре 600 блоков кодирования, согласно примерному варианту осуществления, каждая максимальная высота и максимальная ширина блоков кодирования равны 64 и максимальная глубина равна 4. Так как глубина углубляется вдоль вертикальной оси иерархической структуры 600, высота и ширина каждого более глубокого блока кодирования делятся. Кроме того, блок предсказания и сегменты, которые являются основаниями для кодирования с предсказанием каждого более глубокого блока кодирования, показаны вдоль горизонтальной оси иерархической структуры 600.
[117] Другими словами, блок кодирования 610 является максимальным блоком кодирования в иерархической структуре 600, в котором глубина равна 0, и размер, то есть, высота на ширину, равен 64×64. Глубина углубляется вдоль вертикальной оси, и существуют блок кодирования 620, имеющий размер 32×32 и глубину 1, блок кодирования 630, имеющий размер 16×16 и глубину 2, блок кодирования 640, имеющий размер 8×8 и глубину 3, и блок кодирования 650, имеющий размер 4×4 и глубину 4. Блок кодирования 650, имеющий размер 4×4 и глубину 4, является минимальным блоком кодирования.
[118] Блок предсказания и сегменты блока кодирования скомпонованы вдоль горизонтальной оси согласно каждой глубине. Другими словами, если блок кодирования 610, имеющий размер 64×64 и глубину 0, является блоком предсказания, этот блок предсказания может быть разделен на сегменты, включенные в блок кодирования 610, то есть сегмент 610, имеющий размер 64×64, сегменты 612, имеющие размер 64×32, сегменты 614, имеющие размер 32×64, или сегменты 616, имеющие размер 32×32.
[119] Аналогично, блок предсказания блока кодирования 620, имеющий размер 32×32 и глубину 1, может быть разделен на сегменты, включенные в блок кодирования 620, то есть сегмент 620, имеющий размер 32×32, сегменты 622, имеющие размер 32×16, сегменты 624, имеющие размер 16×32, и сегменты 626, имеющие размер 16×16.
[120] Аналогично, блок предсказания блока кодирования 630, имеющий размер 16×16 и глубину 2, может быть разделен на сегменты, включенные в блок кодирования 630, то есть сегмент, имеющий размер 16×16, включенный в блок кодирования 630, сегменты 632, имеющие размер 16×8, сегменты 634, имеющие размер 8×16, и сегменты 636, имеющие размер 8×8.
[121] Аналогично, блок предсказания блока кодирования 640, имеющий размер 8×8 и глубину 3, может быть разделен на сегменты, включенные в блок кодирования 640, то есть сегмент, имеющий размер 8×8, включенный в блок кодирования 640, сегменты 642, имеющие размер 8×4, сегменты 644, имеющие размер 4×8, и сегменты 646, имеющие размер 4×4.
[122] Блок кодирования 650, имеющий размер 4×4 и глубину 4, является минимальным блоком кодирования и блоком кодирования самой нижней глубины. Блок предсказания блока кодирования 650 только назначен на сегмент, имеющий размер 4×4.
[123] Чтобы определить по меньшей мере одну кодированную глубину блоков кодирования, составляющих максимальный блок кодирования 610, блок 120 определения блока кодирования из устройства 100 выполняет кодирование для блоков кодирования, соответствующих каждой глубине, включенных в максимальный блок кодирования 610.
[124] Количество более глубоких блоков кодирования согласно глубинам, включающих в себя данные в одном и том же диапазоне и один и тот же размер, увеличивается, когда глубина углубляется. Например, требуются четыре блока кодирования, соответствующие глубине 2, чтобы охватывать данные, которые включены в один блок кодирования, соответствующий глубине 1. Соответственно, чтобы сравнить результаты кодирования одних и тех же данных согласно глубинам, кодируют каждый блок кодирования, соответствующий глубине 1, и четыре блока кодирования, соответствующие глубине 2.
[125] Чтобы выполнить кодирование для текущей глубины среди глубины, наименьшая ошибка кодирования может быть выбрана для текущей глубины посредством выполнения кодирования для каждого блока предсказания в блоках кодирования, соответствующих текущей глубине, вдоль горизонтальной оси иерархической структуры 600. Альтернативно, минимальная ошибка кодирования может быть найдена посредством сравнения наименьших ошибок кодирования согласно глубинам, посредством выполнения кодирования для каждой глубины, когда глубина углубляется вдоль вертикальной оси иерархической структуры 600. Глубина и сегмент, имеющие минимальную ошибку кодирования в блоке кодирования 610, могут быть выбраны как кодированная глубина и тип сегмента блока кодирования 610.
[126] Фиг.7 является диаграммой для объяснения соотношения между блоком кодирования 710 и блоками преобразования 720, согласно примерному варианту осуществления.
[127] Устройство 100 или 200 кодирует или декодирует изображение согласно блокам кодирования, имеющим размеры, меньшие чем или равные максимальному блоку кодирования, для каждого максимального блока кодирования. Размеры блоков преобразования для преобразования во время кодирования, могут быть выбраны на основании блоков данных, которые не больше чем соответствующий блок кодирования.
[128] Например, в устройстве 100 или 200, если размер блока кодирования 710 равен 64×64, преобразование может быть выполнено посредством использования блоков преобразования 720, имеющих размер 32×32.
[129] Кроме того, данные блока кодирования 710, имеющего размер 64×64, могут быть кодированы посредством выполнения преобразования над каждым из блоков преобразования, имеющих размер 32×32, 16×16, 8×8 и 4×4, которые меньше чем 64×64, и затем блок преобразования, имеющий наименьшую ошибку кодирования, может быть выбран.
[130] Фиг.8 является диаграммой для объяснения информации кодирования блоков кодирования, соответствующих кодированной глубине, согласно примерному варианту осуществления.
[131] Блок 130 вывода в устройстве 100 может закодировать и передать информацию 800 о типе сегмента, информацию 810 о режиме предсказания и информацию 820 о размере блока преобразования для каждого блока кодирования, соответствующего кодированной глубине, в качестве информации о режиме кодирования.
[132] Информация 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
[133] Информация 810 указывает режим предсказания каждого сегмента. Например, информация 810 может указывать режим кодирования с предсказанием, выполняемого над сегментом, указанным информацией 800, то есть, внутренний (intra) режим 812, внешний (inter) режим 814 или режим 816 пропуска.
[134] Информация 820 указывает блок преобразования, который должен быть основан на том, когда преобразование выполняется над текущим блоком кодирования. Например, блок преобразования может быть первым внутренним блоком 822 преобразования, вторым внутренним блоком 824 преобразования, первым внешним блоком 826 преобразования или вторым внешним блоком 828 преобразования.
[135] Блок 220 извлечения информации кодирования и данных изображения в устройстве 200 может извлечь и использовать информацию 800, 810 и 820 для декодирования.
[136] Фиг.9 является диаграммой более глубоких блоков кодирования согласно глубинам, согласно примерному варианту осуществления.
[137] Информация разделения может использоваться, чтобы указать изменение глубины. Информация разделения указывает, разделен ли блок кодирования текущей глубины в блоки кодирования более низкой глубины.
[138] Блок 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 предсказания могут включать в себя асимметричные сегменты, сегменты, имеющие заранее определенную форму, и сегменты, имеющие геометрическую форму.
[139] Кодирование с предсказанием повторяющимся образом выполняется над одним сегментом, имеющим размер 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.
[140] Ошибки кодирования, включающие кодирование с предсказанием в типах 912-918 сегментов сравнивают, и определяют наименьшую ошибку кодирования среди типов сегментов. Если ошибка кодирования является наименьшей в одном из типов 912-916 сегментов, блок 910 предсказания не может быть разделен в более низкую глубину.
[141] Если ошибка кодирования является наименьшей в типе 918 сегментов, глубина изменяется от 0 к 1, чтобы разделить тип 918 сегментов, на операции 920, и кодирование повторяющимся образом выполняется над блоками кодирования 930, имеющими глубину 2 и размер N_0×N_0, чтобы искать минимальную ошибку кодирования.
[142] Блок предсказания 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.
[143] Если ошибка кодирования является наименьшей в типе 948 сегментов, глубина изменяется от 1 до 2, чтобы разделить тип 948 сегментов, на операции 950, и кодирование повторяющимся образом выполняется над блоками кодирования 960, которые имеют глубину 2 и размер N_2×N_2, чтобы искать минимальную ошибку кодирования.
[144] Когда максимальная глубина равна d, операция разделения согласно каждой глубине может быть выполнена до тех пор пока глубина не станет равной 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).
[145] Кодирование с предсказанием может повторяющимся образом выполняться над одним сегментом, имеющим размер 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 сегментов, чтобы искать тип разделения, имеющий минимальную ошибку кодирования.
[146] Даже когда тип 998 сегментов имеет минимальную ошибку кодирования, так как максимальная глубина равна d, блок кодирования CU_(d-1), имеющий глубину d-1, больше не разделяется до более низкой глубины, и кодированная глубина для блоков кодирования, составляющих текущий максимальный блок кодирования 900, определяется как равная d-1, и тип сегмента блока кодирования 900 может быть определен как N_(d-1)×N_(d-1). Кроме того, так как максимальная глубина равна d, и минимальный блок кодирования 980, имеющий самую нижнюю глубину d-1, больше не разделяется до более низкой глубины, информация разделения для блока кодирования 980 не установлена.
[147] Блок данных 999 может быть минимальным блоком для текущего максимального блока кодирования. Минимальный блок согласно примерному варианту осуществления может быть прямоугольным блоком данных, полученным посредством разделения минимального блока кодирования 980 на 4. Выполняя кодирование повторяющимся образом, устройство 100 может выбрать глубину, имеющую наименьшую ошибку кодирования, посредством сравнения ошибок кодирования согласно глубинам блока кодирования 900, чтобы определить кодированную глубину, и установить соответствующий тип сегмента и режим предсказания в качестве режима кодирования кодированной глубины.
[148] Как таковые, минимальные ошибки кодирования согласно глубинам сравнивают во всех из глубин 1-d, и глубина, имеющая наименьшую ошибку кодирования, может быть определена как кодированная глубина. Кодированная глубина, тип сегмента блока предсказания и режим предсказания могут быть кодированы и переданы как информация о режиме кодирования. Кроме того, так как блок кодирования разделен от глубины 0 до кодированной глубины, только информация разделения кодированной глубины установлена в 0, и информация разделения глубин, исключая кодированную глубину, установлена равной 1.
[149] Блок 220 извлечения информации кодирования и данных изображения в устройстве 200 может извлечь и использовать информацию о кодированной глубине и блоке предсказания блока кодирования 900, чтобы декодировать сегмент 912. Устройство 200 может определить глубину, в которой информация разделения равна 0, в качестве кодированной глубины посредством использования информации сегмента согласно глубинам, и использовать информацию о режиме кодирования соответствующей глубины для декодирования.
[150] Фиг.10-12 являются диаграммами для объяснения соотношения между блоками кодирования 1010, блоками предсказания 1060 и блоками преобразования 1070, согласно примерному варианту осуществления.
[151] Блоки кодирования 1010 являются блоками кодирования, имеющими структуру дерева, соответствующими кодированным глубинам, определенным устройством 100, в максимальном блоке кодирования. Блоки предсказания 1060 являются сегментами блоков предсказания каждого из блоков кодирования 1010, и блоки преобразования 1070 являются блоками преобразования каждого из блоков кодирования 1010.
[152] Когда глубина максимального блока кодирования равна 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.
[153] В блоках предсказания 1060 некоторые блоки кодирования 1014, 1016, 1022, 1032, 1048, 1050, 1052 и 1054 разделены на сегменты для кодирования с предсказанием. Другими словами, типы сегментов в блоках кодирования 1014, 1022, 1050 и 1054 имеют размер 2N×N, типы сегментов в блоках кодирования 1016, 1048 и 1052 имеют размер N×2N, и тип сегмента блока кодирования 1032 имеет размер N×N. Блоки предсказания и сегменты блоков кодирования 1010 меньше или равны каждому блоку кодирования.
[154] Преобразование или обратное преобразование выполняют над данными изображения блока кодирования 1052 в блоках преобразования 1070 в блоке данных, который меньше чем блок кодирования 1052. Кроме того, блоки кодирования 1014, 1016, 1022, 1032, 1048, 1050 и 1052 в блоках преобразования 1070 отличаются от таковых в блоках предсказания 1060 в терминах размеров и форм. Другими словами, устройства 100 и 200 могут выполнять внутреннее предсказание, оценку движения, компенсацию движения, преобразование и обратное преобразование индивидуально над блоком данных в одном и том же блоке кодирования.
[155] Соответственно, кодирование рекурсивно выполняют над каждым из блоков кодирования, имеющим иерархическую структуру в каждой области максимального блока кодирования, чтобы определить оптимальный блок кодирования, и таким образом, блоки кодирования, имеющие рекурсивную структуру дерева, могут быть получены. Информация кодирования может включать в себя информацию разделения о блоке кодирования, информацию о типе сегмента, информацию о режиме предсказания и информацию о размере блока преобразования. Таблица 1 показывает информацию кодирования, которая может быть установлена устройствами 100 и 200.
[156]
Таблица 1
Информация разделения 0 (кодирование над блоками кодирования, имеющими размер 2N×2N и текущую глубину d)
Информация разделения 1
Режим предска-зания
Тип сегмента
Размер блока преобразования
Кодирование повторяющимся образом блоков кодирования, имеющих более низкую глубину d+1
IntraInterSkip (Только 2N×2N)
Симметричный тип сегмента
Асимметричный тип сегмента
Информация разделения 0 блока преобразования
Информация разделения 1 блока преобразования
2N×2N2N×NN×2NN×N
2N×nU2N×nDnL×2NnR×2N
2N×2N
N×N(Симметричныйтип)N/2×N/2(Асимметричный тип)
[157] Блок 130 вывода в устройстве 100 может выводить информацию кодирования о блоках кодирования, имеющих структуру дерева, и блок 220 извлечения информации кодирования и данных изображения в устройстве 200 может извлекать информацию кодирования о блоках кодирования, имеющих структуру дерева, из принятого потока битов.
[158] Информация разделения указывает, разделен ли текущий блок кодирования в блоки кодирования более низкой глубины. Если информация разделения текущей глубины d равна 0, глубина, на которой текущий блок кодирования больше не разделяется в более низкую глубину, является кодированной глубиной, и таким образом информация о типе сегмента, режиме предсказания и размере блока преобразования может быть задана для кодированной глубины. Если текущий блок кодирования дополнительно разделен согласно информации разделения, кодирование независимо выполняется над четырьмя разделенными блоками кодирования более низкой глубины.
[159] Режим предсказания может быть одним из внутреннего режима, внешнего режима и режима пропуска. Внутренний режим и внешний режим могут быть заданы во всех типах сегментов, и режим пропуска задан только в типе сегмента, имеющем размер 2N×2N.
[160] Информация о типе сегмента может указывать симметричные типы сегментов, имеющих размеры 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
[161] Размер блока преобразования может быть установлен, чтобы быть двумя типами во внутреннем режиме и двумя типами во внешнем режиме. Другими словами, если информация разделения блока преобразования равна 0, размер блока преобразования может быть 2N×2N, который является размером текущего блока кодирования. Если информация разделения блока преобразования равна 1, блоки преобразования могут быть получены посредством разделения текущего блока кодирования. Кроме того, если тип сегмента текущего блока кодирования, имеющего размер 2N×2N, является симметричным типом сегментов, размер блока преобразования может быть равен N×N, и если тип сегмента текущего блока кодирования является асимметричным типом сегментов, размер блока преобразования может быть равен N/2×N/2.
[162] Информация кодирования о блоках кодирования, имеющих структуру дерева, может включать в себя по меньшей мере один из блока кодирования, соответствующего кодированной глубине, блока предсказания и минимального блока. Блок кодирования, соответствующий кодированной глубине, может включать в себя по меньшей мере один из блока предсказания и минимального блока, содержащего одну и ту же информацию кодирования.
[163] Соответственно, определяют, включены ли смежные блоки данных в один и тот же блок кодирования, соответствующий кодированной глубине, посредством сравнения информации кодирования смежных блоков данных. Кроме того, соответствующий блок кодирования, соответствующий кодированной глубине, определяют посредством использования информации кодирования блока данных и таким образом может быть определено распределение кодированных глубин в максимальном блоке кодирования.
[164] Соответственно, если текущий блок кодирования предсказан на основании информации кодирования смежных блоков данных, на информацию кодирования блоков данных в более глубоких блоках кодирования, смежных с текущим блоком кодирования, можно непосредственно ссылаться и использовать.
[165] Альтернативно, если текущий блок кодирования предсказан на основании информации кодирования смежных блоков данных, блоки данных, смежные с текущим блоком кодирования, ищутся, используя информацию кодирования блоков данных, и на найденные смежные блоки кодирования можно ссылаться для того, чтобы предсказать текущий блок кодирования.
[166] Фиг.13 является диаграммой для объяснения соотношения между блоком кодирования, блоком предсказания или сегментом и блоком преобразования, согласно информации режима кодирования из Таблицы 1.
[167] Максимальный блок кодирования 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.
[168] Когда тип сегмента установлен симметричным, т.е. тип 1322, 1324, 1326 или 1328 сегмента, блок преобразования 1342, имеющий размер 2N×2N, установлен, если информация разделения (флаг размера TU) блока преобразования равен 0, и блок преобразования 1344, имеющий размер N×N, установлен, если флаг размера TU равен 1.
[169] Когда тип сегмента установлен асимметричным, т.е. тип 1332, 1334, 1336 или 1338 сегмента, блок преобразования 1352, имеющий размер 2N×2N, установлен, если флаг размера TU равен 0, и блок преобразования 1354, имеющий размер N/2×N/2, установлен, если флаг размера TU равен 1.
[170] Со ссылками на Фиг.13, флаг размера TU является флагом, имеющим значение или 0 или 1, но флаг размера TU не ограничен 1 битом и блок преобразования может быть иерархически разделенным, имеющим структуру дерева, в то время как флаг размера TU увеличивается от 0.
[171] В этом случае размер блока преобразования, который фактически использовался, может быть выражен посредством использования флага размера TU блока преобразования, согласно примерному варианту осуществления, вместе с максимальным размером и минимальным размером блока преобразования. Согласно примерному варианту осуществления, устройство 100 способно кодировать информацию размера максимального блока преобразования, информацию размера минимального блока преобразования и флаг максимального размера TU. Результат кодирования информации размера максимального блока преобразования, информации размера минимального блока преобразования и флага максимального размера TU может быть вставлен в SPS. Согласно примерному варианту осуществления, устройство 200 может декодировать видео посредством использования информации размера максимального блока преобразования, информации размера минимального блока преобразования и флага максимального размера TU.
[172] Внутреннее предсказание, выполняемое блоком 410 внутреннего предсказания в устройстве 100 кодирования видео, проиллюстрированном на Фиг.4, и блоком 550 внутреннего предсказания в устройстве 200 декодирования видео, проиллюстрированном на Фиг.5, описано подробно ниже. В нижеследующем описании блок кодирования обозначает текущий кодированный блок в процессе кодирования изображения и блок декодирования обозначает текущий декодированный блок в процессе декодирования изображения. Блок кодирования и блок декодирования различны только в том, что блок кодирования используется в процессе кодирования, и блок декодирования используется при декодировании. Для единства терминов, за исключением конкретного случая, блок кодирования и блок декодирования упоминаются как блок кодирования в обоих процессах кодирования и декодирования. Кроме того, специалисту понятно из настоящего описания, что способ и устройство внутреннего предсказания согласно примерному варианту осуществления могут также быть применены, чтобы выполнить внутреннее предсказание в обычном видео кодере-декодере.
[173] Фиг.14 иллюстрирует количество режимов внутреннего предсказания согласно размеру блока кодирования, согласно примерному варианту осуществления.
[174] На Фиг.14, количество режимов внутреннего предсказания, которые должны быть применены к блоку кодирования (блоку декодирования на этапе декодирования), могут изменяться согласно размеру блока кодирования. Например, со ссылками на Фиг.14, когда размер блока кодирования, который должен быть внутренне предсказан, равен N×N, количество режимов внутреннего предсказания, которые должны быть фактически выполнены над блоками кодирования, имеющими размеры 2×2, 4×4, 16×16, 32×32, 64×64 и 128×128, может быть определено равным 5, 9, 9, 17, 33, 5 и 5 (в случае Примера 2). Для другого примера, когда размер блока кодирования, который должен быть внутренне предсказан, равен N×N, количество режимов внутреннего предсказания, которые должны быть фактически выполнены над блоками кодирования, имеющими размеры 2×2, 4×4, 8×8, 16×16, 32×32, 64×64 и 128×128, может быть определено равным 3, 17, 34, 34, 34, 5 и 5. Причина, почему количество режимов внутреннего предсказания, которые должны быть выполнены, изменяется согласно размеру блока кодирования, заключается в том, что служебные расходы для кодирования информации режима предсказания изменяются согласно размеру блока кодирования. Другими словами, в случае блока кодирования, имеющего небольшой размер, хотя он занимает малую часть всего изображения, служебные расходы для передачи дополнительной информации, такой как режим предсказания блока кодирования, имеющего небольшой размер, могут быть высокими. Соответственно, если блок кодирования, имеющий небольшой размер, закодирован посредством использования слишком многих режимов предсказания, количество битов может быть увеличено и эффективность сжатия может быть уменьшена. Блок кодирования, имеющий большой размер, например, блок кодирования, имеющий размер, больший чем 64×64, часто выбирается как блок кодирования для плоской области. Если блок кодирования, имеющий большой размер, закодирован посредством использования слишком многих режимов предсказания, однако, эффективность сжатия также может быть уменьшена.
[175] Соответственно, на Фиг.14, если размеры блоков кодирования грубо классифицированы в по меньшей мере три размера N1×N1 (2=N1=4, N1 - целое число), N2×N2 (8=N2=32, N2 - целое число) и N3×N3 (64=N3, N3 - целое число), количество режимов внутреннего предсказания, которые должны быть выполнены над блоком кодирования, имеющим размер N1×N1, равно A1 (A1 - положительное целое число), количество режимов внутреннего предсказания, которые должны быть выполнены над блоком кодирования, имеющим размер N2×N2, равно A2 (A2 - положительное целое число) и количество режимов внутреннего предсказания, которые должны быть выполнены над блоком кодирования, имеющим размер N3×N3, равно A3 (A3 - положительное целое число), количество режимов внутреннего предсказания, которые должны быть выполнены согласно размеру каждого блока кодирования, могут быть установлены, чтобы удовлетворять отношению A3=A1=A2. Таким образом, когда текущая картинка грубо разделена на блок кодирования, имеющий небольшой размер, блок кодирования, имеющий промежуточный размер, и блок кодирования, имеющий большой размер, блок кодирования, имеющий промежуточный размер, может быть установлен, чтобы иметь самое большое количество режимов предсказания, и блок кодирования, имеющий небольшой размер, и блок кодирования, имеющий большой размер, могут быть установлены, чтобы иметь относительно меньшее количество режимов предсказания. Однако, представленный примерный вариант осуществления не ограничен этим, и блок кодирования, имеющий небольшой размер, и блок кодирования, имеющий большой размер, могут быть установлены, чтобы иметь большое количество режимов предсказания. Количество режимов предсказания, изменяющееся согласно размеру каждого блока кодирования, проиллюстрированного на Фиг.14, является примером и может быть изменено.
[176] Фиг.15A является диаграммой для объяснения режима внутреннего предсказания, примененного к блоку кодирования, имеющему заранее определенный размер, согласно примерному варианту осуществления.
[177] Со ссылками на Фиг.14 и 15A, например, когда внутреннее предсказание выполняется над блоком кодирования, имеющим размер 4×4, блок кодирования, имеющий размер 4×4, может иметь вертикальный режим (режим 0), горизонтальный режим (режим 1), режим постоянного тока (DC) (режим 2), режим по диагонали вниз влево (режим 3), режим по диагонали вниз вправо (режим 4), вертикальный правый режим (режим 5), горизонтальный нижний режим (режим 6), вертикальный левый режим (режим 7) и горизонтальный верхний режим (режим 8).
[178] Фиг.15B иллюстрирует направления режимов внутреннего предсказания на Фиг.15A. На Фиг.15B, цифра, показанная в конце стрелки, обозначает соответствующее значение режима, когда предсказание выполняется в направлении, отмеченном стрелкой. Здесь, режим 2 является режимом предсказания DC без направленности и таким образом не показан.
[179] Фиг.15C иллюстрирует способ внутреннего предсказания, выполненный над блоком кодирования согласно Фиг.15A.
[180] Со ссылками на Фиг.15C, блок кодирования с предсказанием генерируется посредством использования соседних пикселей А-М текущего блока кодирования в доступном режиме внутреннего предсказания, определенном посредством размера блока кодирования. Например, операция кодирования с предсказанием текущего блока кодирования, имеющего размер 4×4 в режиме 0, то есть, вертикальном режиме, объясняется ниже. Сначала пиксельные значения пикселей А-D, являющиеся соседними выше текущего блока кодирования, имеющего размер 4×4, предсказываются как пиксельные значения текущего блока кодирования, имеющего размер 4×4. Таким образом, пиксельное значение пикселя A предсказывается как пиксельные значения четырех пикселей первого столбца текущего блока кодирования, имеющего размер 4×4, пиксельное значение B предсказывается как пиксельные значения четырех пикселей второго столбца текущего блока кодирования, имеющего размер 4×4, пиксельное значение C предсказывается как пиксельные значения четырех пикселей третьего столбца текущего блока кодирования, имеющего размер 4×4, и пиксельное значение D предсказывается как пиксельные значения четырех пикселей четвертого столбца текущего блока кодирования, имеющего размер 4×4. Затем, значение ошибки между фактическими пиксельными значениями пикселей, включенных в исходный 4×4 текущий блок кодирования, и пиксельными значениями пикселей, включенных в предсказанный 4×4 текущий блок кодирования, используя пиксели А-D получают и кодируют.
[181] Фиг.16 является диаграммой для объяснения режима внутреннего предсказания, примененного к блоку кодирования, имеющему заранее определенный размер, согласно другому примерному варианту осуществления.
[182] Со ссылками на Фиг.14 и 16, когда внутреннее предсказание выполняется над блоком кодирования, имеющим размер 2×2, блок кодирования, имеющий размер 2×2, может иметь 5 режимов, то есть, вертикальный режим, горизонтальный режим, режим DC, режим плоскости и режим по диагонали вниз вправо.
-1
[183] Если блок кодирования, имеющий размер 32×32, имеет 33 режима внутреннего предсказания, как показано на Фиг.14, необходимо установить направления 33 режимов внутреннего предсказания. Чтобы установить режимы внутреннего предсказания, имеющие различные направления, отличные от режимов внутреннего предсказания, проиллюстрированных на Фиг.15 и 16, направление предсказания для выбора соседнего пикселя, который должен использоваться в качестве опорного пикселя около пикселя в блоке кодирования, устанавливается посредством использования параметров dx и dy. Например, когда каждый из 33 режимов предсказания представлен как режим N (N является целым числом от 0 до 32), режим 0 может быть установлен как вертикальный режим, режим 1 установлен как горизонтальный режим, режим 2 установлен как режим DC и режим 3 установлен как режим плоскости, и каждый из режимов 4 - режим 31 может быть установлен как режим предсказания, имеющим направленность tan(dy/dx) посредством использования (dx, dy), представленного как одно из (1, -1), (1, 1), (1, 2), (2, 1), (1, -2), (2, 1), (1, -2), (2, -1), (2, -11), (5, -7), (10, -7), (11, 3), (4, 3), (1, 11), (1, -1), (12, -3), (1, -11), (1, -7), (3, -10), (5, -6), (7, -6), (7, -4), (11, 1), (6, 1), (8, 3), (5, 3), (5, 7), (2, 7), (5, -7) и (4, -3), как показано в таблице 2.
[184]
Таблица 2
№ режима
dx
dy
№ режима
dx
dy
режим 4
1
-1
режим 18
1
-11
режим 5
1
1
режим 19
1
-7
режим 6
1
2
режим 20
3
-10
режим 7
2
1
режим 21
5
-6
режим 8
1
-2
режим 22
7
-6
режим 9
2
-1
режим 23
7
-4
режим 10
2
-11
режим 24
11
1
режим 11
5
-7
режим 25
6
1
режим 12
10
-7
режим 26
8
3
режим 13
11
3
режим 27
5
3
режим 14
4
3
режим 28
5
7
режим 15
1
11
режим 29
2
7
режим 16
1
-1
режим 30
5
-7
режим 17
12
-3
режим 31
4
-3
Режим 0 является вертикальным режимом, режим 1 является горизонтальным режимом, режим 2 является режимом DC, режим 3 является режимом плоскости и режим 32 является билинейным режимом.
[185] Последний режим 32 может быть установлен как билинейный режим, используя билинейную интерполяцию, как описано ниже со ссылками на Фиг.18.
[186] Фиг.17A-17C являются ссылочными диаграммами для объяснения режимов внутреннего предсказания, имеющих различную направленность, согласно примерному варианту осуществления.
-1
[187] Как описано выше со ссылками на Таблицу 2, режимы внутреннего предсказания могут иметь различную направленность tan(dy/dx) посредством использования множества параметров (dx, dy).
-1
[188] Со ссылками на Фиг.17A, соседние пиксели A и B, расположенные на проведенной линии 150, имеющей угол tan(dy/dx), определенный согласно (dx, dy) каждого режима, показанного в Таблице 2, около текущего пикселя P, который должен быть предсказан в текущем блоке кодирования, может использоваться как предсказатель для текущего пикселя P. В этом случае соседние пиксели, используемые в качестве предсказателя, могут быть пикселями предыдущих блоков кодирования сверху, слева, справа и снизу текущего блока кодирования, которые ранее кодированы и восстановлены. Кроме того, если проведенная линия 150 проходит между, а не через, соседними пикселями с целочисленными местоположениями, соседние пиксели, ближние к проведенной линии 150, могут использоваться в качестве предсказателя. Например, соседний пиксель, ближайший к проведенной линии 150, может использоваться в качестве предсказателя. Кроме того, среднее значение между соседними пикселями ближе к проведенной линии 150 из числа соседних пикселей может использоваться в качестве предсказателя, или взвешенное среднее значение, рассматривающее расстояние между пересечением проведенной линии 150 и соседствующими пикселями, близкими к проведенной линии 150, может использоваться в качестве предсказателя для текущего пикселя P. Кроме того, может быть сигнализировано, какой соседний пиксель между соседним пикселем на оси X и соседним пикселем оси Y, как и соседние пиксели A и B, используется в качестве предсказателя для текущего пикселя P в каждом блоке предсказания.
[189] Фиг.17B и 17C являются ссылочными диаграммами для объяснения процесса генерирования предсказателя, когда проведенная линия 150 согласно Фиг.17A проходит между, не через, соседними пикселями с целочисленными местоположениями.
-1
-1
[190] Со ссылками на Фиг.17B, если проведенная линия 150, имеющая угол tan(dy/dx), который определен согласно (dx, dy) каждого режима, проходит между соседним пикселем А 151 и соседним пикселем B 152 с целочисленными местоположениями, взвешенное среднее значение, учитывающее расстояние между пересечением проведенной линии 150 и соседними пикселями А 151 и B 152, ближними к проведенной линии 150, может использоваться в качестве предсказателя, как описано выше. Например, если расстояние между соседним пикселем А 151 и пересечением проведенной линии 150, имеющей угол tan(dy/dx), равно f, и расстояние между соседним пикселем B 152 и пересечением проведенной линии 150 равно g, предсказатель для текущего пикселя P может быть получен как (A*g+B*f)/(f+g). Здесь, каждое f и g может быть нормализованным расстоянием, используя целое число. Если программное обеспечение или аппаратное обеспечение используются, предсказатель для текущего пикселя P может быть получен операцией сдвига как (g*A+f*B+2)>>2. Как показано на Фиг.17B, если проведенная линия 150 проходит через первую четверть, ближнюю к соседнему пикселю А 151 из числа четырех частей, полученных взятием четверти расстояния между соседним пикселем А 151 и соседним пикселем B 152 с целочисленным местоположением, предсказатель для текущего пикселя P может быть получен как (3*A+B)/4. Такая операция может быть выполнена посредством операции сдвига, рассматривая округление до ближайшего целого числа как (3*A+B+2)>>2.
-1
[191] Между тем, если проведенная линия 150, имеющая угол tan(dy/dx), который определен согласно (dx, dy) каждого режима, проходит между соседним пикселем А 151 и соседним пикселем B 152 с целочисленным местоположением, секция между соседним пикселем А 151 и соседним пикселем B 152 может быть разделена на заранее определенное количество областей, и взвешенное среднее значение, учитывающее расстояние между пересечением и соседним пикселем А 151 и соседним пикселем B 152 в каждой разделенной области, может использоваться как значение предсказания. Например, со ссылками на Фиг.17C, секция между соседним пикселем А 151 и соседним пикселем B 152 может быть разделена на пять секций P1-P5, как показано на Фиг.17C, представляющее взвешенное среднее значение, учитывающее расстояние между пересечением и соседним пикселем А 151 и соседним пикселем B 152 в каждой секции, может быть определено и это представляющее взвешенное среднее значение может использоваться в качестве предсказателя для текущего пикселя P. Более подробно, если проведенная линия 150 проходит через секцию P1, значение соседнего пикселя A может быть определено как предсказатель для текущего пикселя P. Если проведенная линия 150 проходит через секцию P2, взвешенное среднее значение (3*A+1*B+2)>>2, учитывающее расстояние между соседними пикселями A и B и средней точкой секции P2, может быть определено в качестве предсказателя для текущего пикселя P. Если проведенная линия 150 проходит через секцию P3, взвешенное среднее значение (2*A+2*B+2)>>2, учитывающее расстояние между соседними пикселями A и B и средней точкой секции P3, может быть определено в качестве предсказателя для текущего пикселя P. Если проведенная линия 150 проходит через секцию P4, взвешенное среднее значение (1*A+3*B+2)>>2, учитывающее расстояние между соседними пикселями A и B и средней точкой секции P4, может быть определено в качестве предсказателя для текущего пикселя P. Если проведенная линия 150 проходит через секцию P5, значение соседнего пикселя B может быть определено в качестве предсказателя для текущего пикселя P.
[192] Кроме того, если два соседних пикселя, то есть соседний пиксель А сверху и соседний пиксель B слева пересекаются проведенной линией 150, как показано на Фиг.17A, среднее значение соседнего пикселя A и соседнего пикселя B может использоваться в качестве предсказателя для текущего пикселя P, или если (dx*dy) - положительное значение, соседний пиксель А сверху может использоваться, и если (dx*dy) - отрицательное значение, соседний пиксель B слева может использоваться.
[193] Режимы внутреннего предсказания, имеющие различную направленность, как показано в Таблице 2, могут быть заданы в конце кодирования и конце декодирования, и только соответствующий индекс режима внутреннего предсказания, установленный для каждого блока кодирования, может быть передан.
[194] Фиг.29 является диаграммой, иллюстрирующей текущий блок кодирования 2900 и соседние пиксели 2910 и 2920, которые должны использоваться для внутреннего предсказания, согласно примерному варианту осуществления.
[195] Со ссылками на Фиг.29, соседние пиксели 2910 с верхней стороны текущего блока кодирования 2900 и соседние пиксели 2920 на левой стороне текущего блока кодирования 2900 могут использоваться для внутреннего предсказания текущего блока кодирования 2900. Как показано на Фиг.29, подобно более нижней части соседних пикселей 2920, пиксели слева внизу, включенные в соседний блок, еще не кодированный, могут использоваться также для внутреннего предсказания текущего блока кодирования 2900. Количество соседних пикселей 2910 и 2920, используемых для внутреннего предсказания текущего блока кодирования 2900, ими не ограничивается и может быть изменено с учетом направленности режима внутреннего предсказания, примененного текущему блоку кодирования 2900. Таким образом, согласно примерному варианту осуществления, соседние пиксели, используемые для внутреннего предсказания текущего блока кодирования, могут включать в себя левые нижние соседние пиксели и правые верхние соседние пиксели около текущего блока кодирования, а также левые соседние пиксели и верхние соседние пиксели.
[196] Фиг.18 является ссылочной диаграммой для объяснения билинейного режима согласно примерному варианту осуществления.
[197] Со ссылками на Фиг.18, в билинейном режиме вычисляют геометрическое среднее значение, рассматривая расстояния к верхней, нижней, левой и правой границам текущего пикселя P, и пиксели, расположенные на верхней, нижней, левой и правой границах около текущего пикселя P, который должен быть предсказан в текущем блоке кодирования, и результат вычисления используется в качестве предсказателя для текущего пикселя P. Таким образом, в билинейном режиме геометрическое среднее значение расстояний до верхней, нижней, левой и правой границ текущего пикселя P и пикселя А 161, пикселя B 162, пикселя D 166 и пикселя E 167, которые расположены на верхней, нижней, левой и правой границах текущего пикселя P, используются в качестве предсказателя для текущего пикселя P. Так как билинейный режим является одним из режимов внутреннего предсказания, соседние пиксели на верхней и левой сторонах, которые ранее кодированы и затем восстановлены, должны также использоваться как опорные пиксели во время предсказания. Соответственно, соответствующие пиксельные значения в текущем блоке кодирования не используются как пиксель А 161 и пиксель B, но используются виртуальные пиксельные значения, генерируемые посредством использования соседних пикселей на верхней и левой сторонах.
[198] Например, сначала виртуальный пиксель C 163 справа снизу текущего блока кодирования может быть вычислен посредством использования среднего значения соседнего пикселя LeftDownPixel 165 с левой нижней стороны и соседнего пикселя RightUpPixel 164 с правой верхней стороны, смежного с текущим блоком кодирования, как показано в Уравнении 1.
[199] [Уравнение 1]
[200] C=0,5(LeftDownPixel+RightUpPixel)
[201] Виртуальный пиксель C 163 может быть получен посредством операции сдвига, так как Уравнение 1 может быть предсказателем для текущего пикселя P, может быть получено операцией сдвига как C=0,5 (LeftDownPixel+RightUpPixel+1)>>1.
[202] Затем значение виртуального пикселя А 161, расположенного на нижней границе, когда текущий пиксель P расширяется вниз посредством учета расстояния W2 к правой границе и расстояния W1 к левой границе текущего пикселя P, может быть получено посредством использования среднего значения соседнего пикселя LeftDownPixel 165 и виртуального пикселя C 163, учитывая расстояния W1 и W2. Например, значение виртуального пикселя А 161 может быть вычислено, используя одно уравнение, показанное в Уравнении 2.
[203] [Уравнение 2]
[204] А=(C*W1+LeftDownPixel*W2)/(W1+W2);
[205] А=(C*W1+LeftDownPixel*W2+((W1+W2)/2))/(W1+W2)
n
(n-1)
[206] Когда значение W1+W2 в Уравнении 2 является степенью 2, таким как 2, А=(C*W1+LeftDownPixel*W2+((W1+W2)/2))/(W1+W2) может быть вычислено операцией сдвига как А=(C*W1+LeftDownPixel*W2+2)>> n без (операции) деления.
[207] Аналогично, значение виртуального пикселя B 162, расположенного на правой границе, когда текущий пиксель P расширяется вправо посредством учета расстояния h2 к нижней границе и расстояния h1 к верхней границе текущего пикселя P, может быть получено посредством использования среднего значения соседнего пикселя RightUpPixel 164, учитывая расстояния h1 и h2. Например, значение виртуального пикселя B 162 может быть вычислено, используя одно уравнение, показанное в Уравнении 3.
[208] [Уравнение 3]
[209] B=(C*h1+RightUpPixel*h2)/(h1+h2);
[210] B=(C*h1+RightUpPixel*h2+((h1+h2)/2))/(h1+h2)
m
(m-1)
[211] Когда значение h1+h2 в Уравнении 3 является степенью 2, таким как 2, B=(C*h1+RightUpPixel*h2+((h1+h2)/2))/(h1+h2) может быть вычислено операцией сдвига как B=(C*h1+RightUpPixel*h2+2)>> m без деления.
[212] Как только значения виртуального пикселя B 162 на правой границе и виртуального пикселя А 161 на нижней границе текущего пикселя P 160 определены посредством использования Уравнений 1-3, предсказатель для текущего пикселя P 160 может быть определен посредством использования среднего значения A+B+D+E. Более подробно, взвешенное среднее значение, учитывающее расстояние между текущим пикселем P 160 и виртуальным пикселем А 161, виртуальным пикселем B 162, пикселем D 166 и пикселем E 167 или среднее значение A+B+D+E могут использоваться в качестве предсказателя для текущего пикселя P 160. Например, если взвешенное среднее значение используется и размер блока равен 16×16, предсказатель для текущего пикселя P может быть получен как (h1*A+h2*D+W1*B+W2*E+16)>>5. Такое билинейное предсказание применяется ко всем пикселям в текущем блоке кодирования и генерируется блок кодирования с предсказанием текущего блока кодирования в билинейном режиме предсказания.
[213] Так как кодирование с предсказанием выполняется согласно режимам внутреннего предсказания, которые изменяются согласно размеру блока кодирования, более эффективное сжатие может быть достигнуто согласно характеристикам изображения.
-1
-1
[214] Так как большее количество режимов внутреннего предсказания, чем режимов внутреннего предсказания, используемых в обычном кодере-декодере, используются согласно размеру блока кодирования согласно примерному варианту осуществления, совместимость с обычным кодером-декодером может стать проблемой. В уровне техники самое большее 9 режимов внутреннего предсказания могут использоваться, как показано на Фиг.13A и 13B. Соответственно, необходимо отобразить (преобразовать в) режимы внутреннего предсказания, имеющие различные направления, выбранные согласно примерному варианту осуществления, на один из меньшего количества режимов внутреннего предсказания. Таким образом, когда количество доступных режимов внутреннего предсказания текущего блока кодирования равно N1 (N1 - целое число), для того, чтобы сделать доступные режимы внутреннего предсказания текущего блока кодирования совместимыми с блоком кодирования заранее определенного размера, включающим N2 (N2 - целое число, отличающееся от N1) режимов внутреннего предсказания, режимы внутреннего предсказания текущего блока кодирования могут быть отображены на режим внутреннего предсказания, имеющий наиболее похожее направление из числа N2 режимов внутреннего предсказания. Например, в общей сложности 33 режима внутреннего предсказания доступны, как показано в Таблице 2, в текущем блоке кодирования, и предполагается, что режим внутреннего предсказания, в конечном итоге применяемый к текущему блоку кодирования, является режимом 14, то есть, (dx, dy)=(4, 3), имеющем направленность tan(3/4)=36,87 (градусов). В этом случае, чтобы привести в соответствие режим внутреннего предсказания, примененный к текущему блоку, к одному из 9 режимов внутреннего предсказания, как показано на Фиг.15A и 15B, режим 4 (down_right, вниз-вправо) режим, имеющий самую похожую направленность к направленности 36,87 (градусов), может быть выбран. Таким образом, режим 14 из Таблицы 2 может быть отображен на режим 4, показанный на Фиг.15A. Аналогично, если режим внутреннего предсказания, примененный к текущему блоку кодирования, выбран как режим 15, то есть (dx, dy)=(1, 11), из числа 33 доступных режимов внутреннего предсказания из Таблицы 2, так как направленность режима внутреннего предсказания, примененного к текущему блоку кодирования, равна tan(11)=84,80 (градусов), режим 0 (вертикальный) согласно Фиг.13, имеющий самую похожую направленность к направленности 84,80 (градусов) может быть отображен на режим 15.
[215] Между тем, чтобы декодировать блок кодирования, кодированный посредством внутреннего предсказания, требуется информация режима предсказания о том, посредством какого режима внутреннего предсказания кодирован текущий блок кодирования. Соответственно, когда изображение кодируется, информация о режиме внутреннего предсказания текущего блока кодирования добавляется к потоку битов и в это время, если информация о режиме внутреннего предсказания добавляется «как есть» к потоку битов для каждого блока кодирования, служебные расходы увеличиваются, таким образом уменьшая эффективность сжатия. Соответственно, информация о режиме внутреннего предсказания текущего блока кодирования, определенного в результате кодирования текущего блока кодирования, не передается «как есть», но передается только значение разности между значением фактического режима внутреннего предсказания и значением предсказания режима внутреннего предсказания, предсказанного из соседних блоков кодирования.
[216] Если используются режимы внутреннего предсказания, имеющие различные направления, выбранные согласно примерному варианту осуществления, количество доступных режимов внутреннего предсказания может измениться согласно размеру блока кодирования. Соответственно, чтобы предсказать режим внутреннего предсказания текущего блока кодирования, необходимо отобразить режимы внутреннего предсказания соседних блоков кодирования на представительные (характерные) режимы внутреннего предсказания. Здесь, представительные режимы внутреннего предсказания могут быть меньшим количеством режимов внутреннего предсказания из числа режимов внутреннего предсказания доступных соседних блоков кодирования или 9 режимов внутреннего предсказания, как показано на Фиг.19.
[217] Фиг.19 является диаграммой для объяснения процесса генерирования значения предсказания режима внутреннего предсказания текущего блока кодирования, согласно примерному варианту осуществления.
[218] Со ссылками на Фиг.19, когда текущим блоком кодирования является А 170, режим внутреннего предсказания текущего блока кодирования А 170 может быть предсказан из режимов внутреннего предсказания, определенных из соседних блоков кодирования. Например, если режим внутреннего предсказания, определенный из левого блока кодирования B 171 текущего блока кодирования А 170, является режимом 3, и режим внутреннего предсказания блока кодирования C 172 является режимом 4, режим внутреннего предсказания текущего блока кодирования А 170 может быть предсказан как режим 3, имеющий меньшее значение из числа режимов предсказания блока кодирования C 172 и левого блока кодирования B 171. Если режимом внутреннего предсказания, определенным в результате фактического кодирования внутреннего предсказания, выполненного над текущим блоком кодирования А 170 является режим 4, только разность 1 от режима 3, который является значением режима внутреннего предсказания, предсказанного из соседних блоков кодирования, передается как информация режима внутреннего предсказания для текущего блока кодирования А 170. Когда изображение декодируется, таким же образом, значение предсказания режима внутреннего предсказания текущего блока декодирования генерируется, значение разности режима, переданное через поток битов, добавляется к значению предсказания режима внутреннего предсказания, и получают информацию режима внутреннего предсказания, фактически примененного к текущему блоку декодирования. Хотя только соседние блоки кодирования, расположенные на верхней и левой сторонах текущего блока кодирования, используются в вышеупомянутом описании, режим внутреннего предсказания текущего блока кодирования А 170 может быть предсказан посредством использования других соседних блоков кодирования, таких как E и D согласно Фиг.19.
[219] Так как режимы внутреннего предсказания, фактически выполняемые, изменяются согласно размерам блоков кодирования, режим внутреннего предсказания, предсказанный из соседних блоков кодирования, может не совпадать с режимом внутреннего предсказания текущего блока кодирования. Соответственно, чтобы предсказать режим внутреннего предсказания текущего блока кодирования из соседних блоков кодирования, имеющих другие размеры, требуется процесс отображения для объединения режимов внутреннего предсказания блоков кодирования, имеющих различные режимы внутреннего предсказания.
[220] Фиг.20A и 20B являются ссылочными диаграммами для объяснения процесса отображения для объединения режимов внутреннего предсказания блоков кодирования, имеющих различные размеры, согласно примерному варианту осуществления.
[221] Со ссылками на Фиг.20A предполагается, что текущий блок кодирования А 180 имеет размер 16×16, левый блок кодирования B 181 имеет размер 8×8 и блок кодирования C 182 имеет размер 4×4. Кроме того, как показано на Фиг.14, предполагается, что количества доступных режимов внутреннего предсказания блоков кодирования, имеющих размеры 4×4, 8×8 и 16×16, равны соответственно 9, 9 и 33. В этом случае, так как количества доступных режимов внутреннего предсказания левого блока кодирования B 181 и верхнего блока кодирования C 182 отличаются от количества доступных режимов внутреннего предсказания текущего блока кодирования А 180, режим внутреннего предсказания, предсказанный из левого блока кодирования B 181 и верхнего блока кодирования C 182, не является подходящим для использования в качестве значения предсказания режима внутреннего предсказания текущего блока кодирования А 180. Соответственно, на Фиг.20A режимы внутреннего предсказания соседних блоков кодирования B и C 181 и 182 соответственно изменяются на первый и второй представительные режимы внутреннего предсказания, имеющие наиболее похожее направление из числа заранее определенного количества представительных режимов внутреннего предсказания, и режим с меньшим значением из числа первого и второго представительных режимов внутреннего предсказания выбирают в качестве окончательного представительного режима внутреннего предсказания. И, режим внутреннего предсказания, имеющий наиболее похожее направление с представительным режимом внутреннего предсказания, выбранным из числа режимов внутреннего предсказания, доступных согласно размеру текущего блока кодирования 1080, предсказывают в качестве режима внутреннего предсказания текущего блока кодирования 1080.
-1
[222] Альтернативно, со ссылками на Фиг.20B, предполагается, что текущий блок кодирования A имеет размер 16×16, левый блок кодирования B имеет размер 32×32 и верхний блок кодирования C имеет размер 8×8. Кроме того, как показано на Фиг.14, предполагается, что количества доступных режимов внутреннего предсказания блоков кодирования, имеющих размеры 8×8, 16×16 и 32×32, равны соответственно 9, 9 и 33. Кроме того, предполагается, что режим внутреннего предсказания левого блока кодирования B является режимом 4 и режим внутреннего предсказания верхнего блока кодирования C является режимом 31. В этом случае, так как режимы внутреннего предсказания левого блока кодирования B и верхнего блока кодирования C не совместимы друг с другом, каждый из режимов внутреннего предсказания левого блока кодирования B и верхнего блока кодирования C отображают на один из представительных режимов внутреннего предсказания, показанных на Фиг.21. Так как режим 31, который является режимом внутреннего предсказания левого блока кодирования B, имеет направленность (dx, dy)=(4, -3) как показано в Таблице 2, режим 5, имеющими наиболее похожую направленность к tan(-3/4) из числа представительных режимов внутреннего предсказания Фиг.21, отображается, и так как режим 4 режима внутреннего предсказания верхнего блока кодирования C имеет ту же направленность, как направленность режима 4 из числа представительных режимов внутреннего предсказания согласно Фиг.21, режим 4 отображается.
[223] Режим 4, имеющий меньшее значение режима из режима 5, который является отображенным режимом внутреннего предсказания левого блока кодирования B, и режима 4, который является отображенным режимом внутреннего предсказания верхнего блока кодирования C, может быть определен как значение предсказания режима внутреннего предсказания текущего блока кодирования, и только значение разности режима между фактическим режимом внутреннего предсказания и предсказанным режимом внутреннего предсказания текущего блока кодирования может быть закодировано в качестве информации режима предсказания текущего блока кодирования.
[224] Фиг.21 является ссылочной диаграммой для объяснения процесса отображения режимов внутреннего предсказания соседних блоков кодирования на один из представительных режимов внутреннего предсказания, согласно примерному варианту осуществления. На Фиг.21, в качестве представительных режимов внутреннего предсказания установлены вертикальный режим, горизонтальный режим, режим DC, режим по диагонали влево, режим по диагонали вправо, вертикальный правый режим, вертикальный левый режим, горизонтальный верхний режим и горизонтальный нижний режим. Однако, представительные режимы внутреннего предсказания не ограничены этими и могут быть установлены так, чтобы иметь другое количество направленностей.
[225] Со ссылками на Фиг.21, заранее установлено заранее определенное количество представительных режимов внутреннего предсказания, и режимы внутреннего предсказания соседних блоков кодирования отображаются на представительный режим внутреннего предсказания, имеющий наиболее похожее направление. Например, если определенный режим внутреннего предсказания верхнего блока кодирования A является режимом внутреннего предсказания MODE_A (190), имеющим направленность, режим внутреннего предсказания MODE_A(190) верхнего блока кодирования A отображается на режим MODE 1, имеющий наиболее похожие направления из числа 9 заранее установленных представительных режимов 1-9 внутреннего предсказания. Аналогично, если определенный режим внутреннего предсказания левого блока кодирования B является режимом внутреннего предсказания MODE_B (191), имеющим направленность, режим внутреннего предсказания MODE_B (191) этого левого блока кодирования B отображается на режим MODE 5, имеющий наиболее похожее направления из числа 9 заранее установленных представительных режимов 1-9 внутреннего предсказания.
[226] Затем режим, имеющий меньшее значение из числа первого представительного режима внутреннего предсказания и второго представительного режима внутреннего предсказания, выбирают в качестве окончательного представительного режима внутреннего предсказания соседнего блока кодирования. Причина, почему выбирают представительный режим внутреннего предсказания, имеющий меньшее значение режима, заключается в том, что меньшее значение режима устанавливают в чаще генерируемые режимы внутреннего предсказания. Таким образом, если различные режимы внутреннего предсказания предсказаны из соседних блоков кодирования, так как режим внутреннего предсказания, имеющий меньшее значение режима, имеет более высокую вероятность возникновения, предпочтительно выбрать режим предсказания, имеющий меньшее значение, в качестве предсказателя для режима предсказания текущего блока кодирования, когда имеются различные режимы предсказания.
[227] Хотя представительный режим внутреннего предсказания выбран из соседних блоков кодирования, представительный режим внутреннего предсказания иногда может не использоваться как есть в качестве предсказателя режима внутреннего предсказания текущего блока кодирования. Если текущий блок кодирования А 180 имеет 33 режима внутреннего предсказания и представительный режим внутреннего предсказания имеет 9 режимов внутреннего предсказания, как описано со ссылками на Фиг.20, режим внутреннего предсказания текущего блока кодирования А 180, соответствующий представительному режиму внутреннего предсказания, не существует. В этом случае, аналогично способу, используемому для отображения режимов внутреннего предсказания соседних блоков кодирования на представительный режим внутреннего предсказания, как описано выше, режим внутреннего предсказания, имеющий наиболее похожее направление к представительному режиму внутреннего предсказания, выбранному из режимов внутреннего предсказания согласно размеру текущего блока кодирования, может быть выбран в качестве окончательного предсказателя режима внутреннего предсказания текущего блока кодирования. Например, если представительным режимом внутреннего предсказания, окончательно выбранным из соседних блоков кодирования на Фиг.21, является MODE 1, режим внутреннего предсказания, имеющий наиболее похожую направленность к MODE 1 из числа режимов внутреннего предсказания, доступных согласно размеру текущего блока кодирования, может быть окончательно выбран в качестве предсказателя режима внутреннего предсказания текущего блока кодирования.
-1
[228] Между тем, как описано со ссылками на Фиг.15A-15C, если предсказатель для текущего пикселя P генерируется посредством использования соседних пикселей на или близко к проведенной линии 150, проведенная линия 150 имеет фактически направленность tan(dy/dx). Чтобы вычислить эту направленность, так как деление (dy/dx) необходимо, вычисление сводится к десятичным разрядам, когда используется аппаратное обеспечение или программное обеспечение, таким образом увеличивая объем вычислений. Соответственно, процесс установки dx и dy используется, чтобы уменьшить объем вычислений, когда направление предсказания для выбора соседних пикселей, которые должны использоваться как опорные пиксели около пикселя в блоке кодирования, установлено посредством использования параметров dx и dy в способе, подобном описанному со ссылками на Таблицу 2.
[229] Фиг.25 является диаграммой для объяснения соотношения между текущим пикселем и соседними пикселями, расположенными на проведенной линии, имеющей направленность (dy/dx), согласно примерному варианту осуществления.
-1
[230] Со ссылками на Фиг.25, предполагается, что местоположение текущего пикселя P является P(j, i) и верхним соседним пикселем и левым соседним пикселем B, расположенный на проведенной линии 2510, имеющей направленность, то есть, градиент, tan(dy/dx), и проходящей через текущий пиксель P, являются соответственно A и B. Когда предполагается, что местоположения верхних соседних пикселей соответствуют оси X на координатной плоскости и местоположения левых соседних пикселей соответствуют оси Y на координатной плоскости, верхний соседний пиксель A расположен в (j+i*dx/dy, 0) и левый соседний пиксель B расположен в (0, i+j*dy/dx). Соответственно, чтобы определить любой из верхнего соседнего пикселя A и левого соседнего пикселя B для предсказания текущего пикселя P, требуется деление, такое как dx/dy или dy/dx. Такое деление является очень сложным, как описано выше, таким образом уменьшая скорость вычислений программного обеспечения или аппаратного обеспечения.
n
m
[231] Соответственно, значение любого из dx и dy, представляющих направленность режима предсказания для определения соседних пикселей, может быть определено как степень 2. Таким образом, когда n и m являются целыми числами, dx и dy могут быть равны 2 и 2, соответственно.
n
n
[232] Со ссылками на Фиг.25, если левый соседний пиксель B используется в качестве предсказателя для текущего пикселя P и dx имеет значение 2, j*dy/dx, необходимое, чтобы определить (0, i+j*dy/dx), которое является местоположением левого соседнего пикселя B, становится равным (j*dy/(2)) и (операцию) деления, использующую такую степень 2, легко получают посредством операции сдвига как (j*dy)>>n, таким образом уменьшая объем вычислений.
m
m
[233] Аналогично, если верхний соседний пиксель A используется в качестве предсказателя для текущего пикселя P и dy имеет значение 2, i*dx/dy, необходимое, чтобы определить (j+i*dx/dy, 0), которое является местоположением верхнего соседнего пикселя A, становится равным (i*dx)/(2), и деление, использующее такую степень 2, легко получают посредством операции сдвига как (i*dx)>>m.
[234] Фиг.26 является диаграммой для объяснения изменения в соседнем пикселе, расположенном на проведенной линии, имеющей направленность (dx, dy), согласно местоположению текущего пикселя, согласно примерному варианту осуществления.
[235] В качестве соседнего пикселя, необходимого для предсказания согласно местоположению текущего пикселя, выбирают любой из верхнего соседнего пикселя и левого соседнего пикселя.
[236] Со ссылками на Фиг.26, когда текущим пикселем 2610 является P(j, i) и предсказывается посредством использования соседнего пикселя, расположенного в направлении предсказания, верхний пиксель A используется, чтобы предсказать текущий пиксель P 2610. Когда текущим пикселем 2610 является Q (b, a), левый пиксель B используется, чтобы предсказать текущий пиксель Q 2620.
m
m
[237] Если только dy компонент направления оси Y из числа (dx, dy), представляющего направление предсказания, имеет степень 2 как 2, в то время как верхний пиксель А на Фиг.24 может быть определен посредством операции сдвига без деления, например как (j+(i*dx)>>m, 0), левый пиксель B требует деления, например как (0, a+b*2/dx). Соответственно, чтобы исключить деление, когда предсказатель генерируется для всех пикселей текущего блока, все из dx и dy могут иметь тип степени 2.
[238] Фиг.27 и 28 являются диаграммами для объяснения способа определения направления режима внутреннего предсказания, согласно примерным вариантам осуществления.
[239] Обычно существует много случаев, где линейные шаблоны, показанные в изображении или видео сигнале, являются вертикальными или горизонтальными. Соответственно, когда режимы внутреннего предсказания, имеющие различную направленность, определены посредством использования параметров dx и dy, эффективность кодирования изображения может быть улучшена посредством определения значений dx и dy следующим образом.
m
4
[240] Более подробно, если dy имеет фиксированное значение 2, абсолютное значение dx может быть установлено так, чтобы расстояние между направлениями предсказания, близкими к вертикальному направлению, было узким, и расстояние между режимами предсказания ближе к горизонтальному направлению, было более широким. Например, со ссылками на Фиг.27, если dy имеет значение 2, то есть, 16, значение dx может быть установлено равным 1, 2, 3, 4, 6, 9, 12, 16, 0, -1, -2, -3, -4, -6, -9, -12 и -16 так, чтобы расстояние между направлениями предсказания, близкими к вертикальному направлению, было узким, и расстояние между режимами предсказания ближе к горизонтальному направлению, было более широким.
n
4
[241] Аналогично, если dx имеет фиксированное значение 2, абсолютное значение dy может быть установлено так, чтобы расстояние между направлениями предсказания, близкими к горизонтальному направлению, было узким, и расстояние между режимами предсказания ближе к вертикальному направлению было более широким. Например, со ссылками на Фиг.28, если dx имеет значение 2, то есть, 16, значение dy может быть установлено равным 1, 2, 3, 4, 6, 9, 12, 16, 0, -1, -2, -3, -4, -6, -9, -12 и -16 так, чтобы расстояние между направлениями предсказания, близкими к горизонтальному направлению, было узким, и расстояние между режимами предсказания ближе к вертикальному направлению было более широким.
[242] Кроме того, когда одно из значений dx и dy является фиксированным, оставшееся значение может быть установлено увеличенным согласно режиму предсказания. Например, если dy фиксировано, расстояние между dx может быть установлено увеличенным на заранее определенное значение. Кроме того, угол горизонтального направления и вертикального направления может быть разделен на заранее определенные единицы, и такая увеличенная величина может быть установлена в каждом из разделенных углов. Например, если dy фиксировано, значение dx может быть установлено, чтобы иметь увеличенную величину a в секции меньшей 15 градусов, увеличенную величину b в секции между 15 градусами и 30 градусами и увеличенную ширину c в секции, большей, чем 30 градусов. В этом случае, чтобы иметь такую форму, как показано на Фиг.25, значение dx может быть установлено так, чтобы удовлетворять соотношению a<b<c.
-1
[243] Например, режимы предсказания, описанные со ссылками на Фиг.25-28, могут быть определены как режим предсказания, имеющий направленность tan(dy/dx) посредством использования (dx, dy) как показано в Таблицах 3-5.
[244]
Таблица 3
dx
dy
dx
dy
dx
dy
-32
32
21
32
32
13
-26
32
26
32
32
17
-21
32
32
32
32
21
-17
32
32
-26
32
26
-13
32
32
-21
32
32
-9
32
32
-17
-5
32
32
-13
-2
32
32
-9
0
32
32
-5
2
32
32
-2
5
32
32
0
9
32
32
2
13
32
32
5
17
32
32
9
[245]
Таблица 4
dx
dy
dx
dy
dx
dy
-32
32
19
32
32
10
-25
32
25
32
32
14
19
32
32
32
32
19
-14
32
32
-25
32
25
-10
32
32
-19
32
32
-6
32
32
-14
-3
32
32
-10
-1
32
32
-6
0
32
32
-3
1
32
32
-1
3
32
32
0
6
32
32
1
10
32
32
3
14
32
32
6
[246]
Таблица 5
dx
dy
dx
dy
dx
dy
-32
32
23
32
32
15
-27
32
27
32
32
19
-23
32
32
32
32
23
-19
32
32
-27
32
27
-15
32
32
-23
32
32
-11
32
32
-19
-7
32
32
-15
-3
32
32
-11
0
32
32
-7
3
32
32
-3
7
32
32
0
11
32
32
3
15
32
32
7
19
32
32
11
[247] Фиг.22 является блок-схемой устройства 200 внутреннего предсказания согласно примерному варианту осуществления. Устройство 200 внутреннего предсказания может работать как блок 410 внутреннего предсказания в устройстве 400 согласно Фиг.4 и блок 550 внутреннего предсказания в устройстве 500 согласно Фиг.5.
[248] Со ссылками на Фиг.22, блок 2010 определения режима внутреннего предсказания определяет режим внутреннего предсказания, который должен быть применен к текущему блоку кодирования, согласно размеру каждого из блоков кодирования, разделенных на основании максимального блока кодирования и глубины, как описано выше. Таким образом, блок 2010 определения режима внутреннего предсказания определяет режимы внутреннего предсказания, которые должны быть применены согласно размеру текущего блока кодирования, из числа режимов внутреннего предсказания, имеющих различные направления.
[249] Блок 2020 выполнения внутреннего предсказания выполняет внутреннее предсказание над каждым блоком кодирования посредством использования определенных режимов внутреннего предсказания. Оптимальный режим внутреннего предсказания, имеющий наименьшее значение значения ошибки из числа значений ошибки между исходным блоком кодирования и блоком кодирования с предсказанием, генерируемым в результате внутреннего предсказания, выполняемого блоком 2020 выполнения внутреннего предсказания, определяют как окончательный режим внутреннего предсказания этого блока кодирования.
[250] Между тем, если устройство 2000 внутреннего предсказания, иллюстрированное на Фиг.22, применяется к устройству декодирования, блок 2010 определения режима внутреннего предсказания определяет размер текущего блока декодирования посредством использования максимального блока кодирования, извлеченного из потока битов, кодированного статистическим декодером 520 согласно Фиг.5, и информации глубины, которая получена иерархическим разделением максимального блока кодирования. Кроме того, блок 2020 выполнения внутреннего предсказания генерирует блок декодирования с предсказанием посредством выполнения внутреннего предсказания над блоком декодирования согласно извлеченному режиму внутреннего предсказания. Блок декодирования с предсказанием добавляют к остаточным данным, восстановленным из потока битов, чтобы выполнить декодирование над блоком декодирования.
[251] Фиг.23 является последовательностью операций, иллюстрирующей способ кодирования изображения, согласно примерному варианту осуществления.
[252] Со ссылками на Фиг.23, на этапе 2110 текущая картинка разделяется по меньшей мере на один блок. Как описано выше, текущая картинка может быть разделена на основании максимального блока кодирования, который является блоком кодирования, имеющим максимальный размер, и глубины, которая получена посредством иерархического разделения максимального блока кодирования.
-1
[253] На этапе 2120 определяют режим внутреннего предсказания, который должен быть выполнен для текущего блока согласно размеру текущего блока. Как описано выше, режим внутреннего предсказания включает в себя режим предсказания для выполнения предсказания посредством использования пикселей соседних блоков на или близко к проведенной линии, имеющей угол tan(dy/dx) около каждого пикселя в текущем блоке.
[254] На этапе 2130 внутреннее предсказание выполняется в отношении текущего блока согласно определенному режиму внутреннего предсказания. Режим внутреннего предсказания, имеющий наименьшее значение значения ошибки предсказания из числа режимов внутреннего предсказания, выбирают как окончательный режим внутреннего предсказания текущего блока.
[255] Фиг.24 является последовательностью операций, иллюстрирующей способ декодирования изображения, согласно примерному варианту осуществления.
[256] Со ссылками на Фиг.24 на этапе 2210 текущая картинка разделяется по меньшей мере на один блок, имеющий заранее определенный размер. Здесь, текущая картинка может быть разделена на основании максимального блока декодирования, который является блоком декодирования, имеющим максимальный размер, извлеченным из потока битов, и информации глубины, которая получена посредством иерархического разделения максимального блока декодирования.
-1
[257] На этапе 2220 информация о режиме внутреннего предсказания, примененного к текущему блоку, извлекается из потока битов. Режим внутреннего предсказания включает в себя режим предсказания для выполнения предсказания посредством использования пикселей соседних блоков на или близко к проведенной линии, имеющей угол tan(dy/dx) (dx и dy - целые числа) около каждого пикселя в текущем блоке. Как описано выше со ссылками на Фиг.19-21, если используется предсказатель режима внутреннего предсказания, предсказанного из режимов внутреннего предсказания соседних блоков декодирования, режимы внутреннего предсказания соседних блоков декодирования текущего блока декодирования отображаются на представительные режимы внутреннего предсказания, и представительный режим внутреннего предсказания, имеющий меньшее значение режима из числа представительных режимов внутреннего предсказания, выбирают в качестве окончательного представительного режима внутреннего предсказания. И, режим внутреннего предсказания, имеющий наиболее похожее направление к окончательному представительному режиму внутреннего предсказания из числа доступных режимов внутреннего предсказания, определенных согласно размеру текущего блока декодирования, выбирают в качестве предсказателя режима внутреннего предсказания текущего блока декодирования, значение разности между предсказателями режима внутреннего предсказания и фактического режима внутреннего предсказания, включенное в поток битов, извлекают, и это значение разности добавляют к предсказателю режима внутреннего предсказания, таким образом определяя режим внутреннего предсказания текущего блока декодирования.
[258] На этапе 2230 блок декодирования декодируют посредством выполнения внутреннего предсказания над блоком декодирования согласно извлеченному режиму внутреннего предсказания.
[259] Примерные варианты осуществления могут быть записаны как компьютерные программы и могут быть реализованы в компьютерах общего назначения, которые выполняют программы, используя считываемый компьютером носитель записи. Примеры считываемого компьютером носителя записи включают в себя магнитные носители данных (например, ROM, дискеты, жесткие диски и т.д.) и оптические носители записи (например, CD-ROM, или DVD).
[260] В то время как это изобретение подробно показано и описано со ссылками на предпочтительные варианты его осуществления, специалистам должно быть понятно, что различные изменения в форме и деталях могут быть сделаны, не отступая от объема и формы изобретения, как определено приложенной формулой изобретения. Предпочтительные варианты осуществления нужно рассматривать только в описательном смысле, а не в целях ограничения. Поэтому, объем охраны изобретения определяется не в соответствии с подробным описанием изобретения, а приложенной формулой изобретения, и все различия в пределах этого объема должны быть рассмотрены как включаемые в настоящее изобретение.