RU2811980C2 - Способ и устройство для кодирования/декодирования сигналов изображений - Google Patents
Способ и устройство для кодирования/декодирования сигналов изображений Download PDFInfo
- Publication number
- RU2811980C2 RU2811980C2 RU2023117248A RU2023117248A RU2811980C2 RU 2811980 C2 RU2811980 C2 RU 2811980C2 RU 2023117248 A RU2023117248 A RU 2023117248A RU 2023117248 A RU2023117248 A RU 2023117248A RU 2811980 C2 RU2811980 C2 RU 2811980C2
- Authority
- RU
- Russia
- Prior art keywords
- block
- intra prediction
- current block
- prediction mode
- encoding
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 141
- 239000013074 reference sample Substances 0.000 claims abstract description 194
- 230000009466 transformation Effects 0.000 claims description 213
- 230000000694 effects Effects 0.000 abstract description 4
- 239000000126 substance Substances 0.000 abstract 1
- 239000000523 sample Substances 0.000 description 127
- 238000000638 solvent extraction Methods 0.000 description 90
- 238000006243 chemical reaction Methods 0.000 description 73
- 230000033001 locomotion Effects 0.000 description 66
- 238000005192 partition Methods 0.000 description 56
- 238000013139 quantization Methods 0.000 description 47
- 239000013598 vector Substances 0.000 description 33
- 238000001914 filtration Methods 0.000 description 22
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 230000003044 adaptive effect Effects 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000012937 correction Methods 0.000 description 6
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000012935 Averaging Methods 0.000 description 4
- 238000004873 anchoring Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000011426 transformation method Methods 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 230000004927 fusion Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 229910003460 diamond Inorganic materials 0.000 description 2
- 239000010432 diamond Substances 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- FZEIVUHEODGHML-UHFFFAOYSA-N 2-phenyl-3,6-dimethylmorpholine Chemical compound O1C(C)CNC(C)C1C1=CC=CC=C1 FZEIVUHEODGHML-UHFFFAOYSA-N 0.000 description 1
- YKCSYIYQRSVLAK-UHFFFAOYSA-N 3,5-dimethyl-2-phenylmorpholine Chemical compound CC1NC(C)COC1C1=CC=CC=C1 YKCSYIYQRSVLAK-UHFFFAOYSA-N 0.000 description 1
- 101100332287 Dictyostelium discoideum dst2 gene Proteins 0.000 description 1
- 101100264226 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) XRN1 gene Proteins 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 229940050561 matrix product Drugs 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Abstract
Изобретение относится к средствам для кодирования видео. Технический результат заключается в повышении эффективности кодирования видео. Определяют линию опорных отсчетов текущего блока. Определяют, существует ли кандидатный режим внутреннего предсказания, который является таким же, как режим внутреннего предсказания текущего блока. Получают режим внутреннего предсказания текущего блока на основании определения. Выполняют внутреннее предсказание в отношении текущего блока на основании линии опорных отсчетов и режима внутреннего предсказания. По меньшей мере один из кандидатных режимов внутреннего предсказания получают путем добавления смещения к максимальному значению из режима внутреннего предсказания верхнего соседнего блока и режима внутреннего предсказания левого соседнего блока или вычитания из него. По меньшей мере один из кандидатных режимов внутреннего предсказания получают путем добавления 2 к максимальному значению или вычитания из него, когда разница между режимом внутреннего предсказания верхнего соседнего блока и режимом внутреннего предсказания левого соседнего блока составляет 64. 2 н. и 4 з.п. ф-лы, 30 ил., 11 табл.
Description
Область техники, к которой относится изобретение
[01] Настоящее изобретение относится к способу и устройству для кодирования и декодирования видеосигнала.
Предшествующий уровень техники
[02] По мере увеличения дисплейных панелей, требуется все больше видеоуслуг более высокого качества. Самой большой проблемой видеоуслуг высокой четкости является значительное увеличение объема данных, и для решения этой проблемы активно проводятся исследования по улучшению степени сжатия видео. В качестве иллюстративного примера группа экспертов по кинематографии (MPEG) и группа экспертов по видеокодированию (VCEG) в рамках сектора по стандартизации телекоммуникаций в составе Международного союза электросвязи (ITU-T) сформировали объединенную команду по видеокодированию (JCT-VC) в 2009 году. JCT-VC предложила высокоэффективное видеокодирование (HEVC), которое представляет собой стандарт сжатия видео, имеющий эффективность сжатия примерно вдвое выше, чем эффективность сжатия H.264/AVC, и он одобрен в качестве стандарта 25 января 2013 г. С быстрым развитием видеоуслуг высокой четкости эффективность HEVC постепенно обнаруживает свои ограничения.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[03] Целью настоящего изобретения является предоставление способа получения кандидатного режима внутреннего предсказания на основании режима внутреннего предсказания соседнего блока, смежного с текущим блоком, при кодировании/декодировании видеосигнала и устройства для выполнения способа.
[04] Еще одной целью настоящего изобретения является предоставление способа разбиения блока кодирования или блока преобразования на множество подблоков и выполнения внутреннего предсказания в отношении каждого из подблоков при кодировании/декодировании видеосигнала и устройства для выполнения способа.
[05] Еще одной целью настоящего изобретения является предоставление способа разбиения блока кодирования или блока преобразования на множество подблоков и выполнения преобразования только в отношении некоторых из подблоков при кодировании/декодировании видеосигнала и устройства для выполнения способа.
[06] Технические задачи, которые должны быть решены в настоящем изобретении, не ограничиваются техническими задачами, упомянутыми выше, и не упомянутые другие задачи могут быть ясно поняты специалистами в данной области техники из следующего описания.
[07] Способ декодирования/кодирования видеосигнала согласно настоящему изобретению включает следующие этапы: определение линии опорных отсчетов текущего блока; определение того, существует ли кандидатный режим внутреннего предсказания, который является таким же, как режим внутреннего предсказания текущего блока; получение режима внутреннего предсказания текущего блока на основании определения; и выполнение внутреннего предсказания в отношении текущего блока на основании линии опорных отсчетов и режима внутреннего предсказания. В этом случае по меньшей мере один из кандидатных режимов внутреннего предсказания может быть получен путем добавления смещения к максимальному значению из режима внутреннего предсказания верхнего соседнего блока текущего блока и режима внутреннего предсказания левого соседнего блока текущего блока или вычитания из него.
[08] В способе декодирования/кодирования видеосигнала согласно настоящему изобретению по меньшей мере один из кандидатных режимов внутреннего предсказания может быть получен путем добавления 2 к максимальному значению или вычитания из него, когда разница между режимом внутреннего предсказания верхнего соседнего блока и режимом внутреннего предсказания левого соседнего блока составляет 64.
[09] В способе декодирования/кодирования видеосигнала согласно настоящему изобретению количество кандидатных режимов внутреннего предсказания может меняться согласно индексу линии опорных отсчетов.
[10] Способ декодирования/кодирования видеосигнала согласно настоящему изобретению может дополнительно включать этап определения того, следует ли разбивать текущий блок на множество подблоков, и, когда текущий блок разбивают на множество подблоков, множество подблоков могут совместно использовать один режим внутреннего предсказания.
[11] В способе декодирования/кодирования видеосигнала согласно настоящему изобретению обратное преобразование может быть пропущено для некоторых из множества подблоков.
[12] В способе декодирования/кодирования видеосигнала согласно настоящему изобретению тип преобразования в горизонтальном направлении подблока могут определять на основании ширины подблока, и тип преобразования в вертикальном направлении подблока могут определять на основании высоты подблока.
[13] В способе декодирования/кодирования видеосигнала согласно настоящему изобретению тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении подблока могут определять на основании формы подблока.
[14] Признаки, кратко изложенные выше в отношении настоящего изобретения, являются просто иллюстративными аспектами подробного описания настоящего изобретения, которые будут описаны ниже, и не ограничивают объем настоящего изобретения.
[15] Согласно настоящему изобретению эффективность внутреннего предсказания может быть улучшена путем получения кандидатного режима внутреннего предсказания, подобного режиму внутреннего предсказания соседнего блока, смежного с текущим блоком.
[16] Согласно настоящему изобретению эффективность внутреннего предсказания может быть улучшена путем разбиения блока кодирования или блока преобразования на множество подблоков и выполнения внутреннего предсказания в отношении каждого из подблоков.
[17] Согласно настоящему изобретению эффективность кодирования и декодирования может быть улучшена путем разбиения блока кодирования или блока преобразования на множество подблоков и выполнения преобразования в отношении только некоторых из подблоков.
[18] Эффекты, которые могут быть получены из настоящего изобретения, не ограничены упомянутыми выше эффектами, и не упомянутые другие эффекты могут быть ясно поняты специалистами в данной области техники из следующего описания.
КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВ
[19] На фиг. 1 представлена структурная схема, показывающая видеокодер согласно одному варианту осуществления настоящего изобретения.
[20] На фиг. 2 представлена структурная схема, показывающая видеодекодер согласно одному варианту осуществления настоящего изобретения.
[21] На фиг. 3 представлен вид, показывающий базовый элемент кодового дерева согласно одному варианту осуществления настоящего изобретения.
[22] На фиг. 4 представлен вид, показывающий различные типы разбиения блока кодирования.
[23] На фиг. 5 представлен вид, показывающий схему разбиения элемента кодового дерева.
[24] На фиг. 6 представлена блок-схема, изображающая способ предсказания, осуществляемого между изображениями, согласно одному варианту осуществления настоящего изобретения.
[25] На фиг. 7 представлен вид, показывающий совмещаемый блок.
[26] На фиг. 8 представлена блок-схема, изображающая способ внутреннего предсказания согласно одному варианту осуществления настоящего изобретения.
[27] На фиг. 9 представлен вид, показывающий опорные отсчеты, включенные в каждую линию опорных отсчетов.
[28] На фиг. 10 представлен вид, показывающий режимы внутреннего предсказания.
[29] На фиг. 11 и 12 представлены виды, показывающие пример одномерного массива, размещающего опорные отсчеты в линию.
[30] На фиг. 13 представлен вид, показывающий пример углов, образованных между режимами внутреннего предсказания, основанными на информации об углах, и прямой линией, параллельной оси x.
[31] На фиг. 14 представлен вид, показывающий вариант осуществления получения отсчетов предсказания, когда текущий блок имеет неквадратную форму.
[32] На фиг. 15 представлен вид, показывающий широкоугольные режимы внутреннего предсказания.
[33] На фиг. 16 представлен вид, показывающий пример разбиения в вертикальном направлении и разбиения в горизонтальном направлении.
[34] На фиг. 17 представлен вид, показывающий пример определения типа разбиения блока кодирования.
[35] На фиг. 18 представлен вид, показывающий пример определения типа разбиения блока кодирования.
[36] На фиг. 19 представлен вид, показывающий пример, в котором тип разбиения блока кодирования определяют на основании режима внутреннего предсказания блока кодирования.
[37] На фиг. 20 представлен вид для описания схемы разбиения блока кодирования.
[38] На фиг. 21 представлен вид, показывающий пример, в котором режим кодирования с предсказанием устанавливают по-разному для каждого подблока.
[39] На фиг. 22 представлен вид, показывающий вариант осуществления применения PDPC.
[40] На фиг. 23 и 24 представлены виды, показывающие подблок, в отношении которого будут выполнять второе преобразование.
[41] На фиг. 25 представлен вид для описания примеров определения типа преобразования текущего блока.
[42] На фиг. 26 представлен вид, показывающий пример определения типа преобразования подблока.
[43] На фиг. 27 представлен вид для описания примера, в котором остаточные коэффициенты подблоков устанавливают равными 0.
[44] На фиг. 28 представлен вид, показывающий пример, в котором положение подблока, в отношении которого были выполнены преобразование и/или квантование, указано на основании информации, переданной посредством битового потока.
[45] На фиг. 29 представлена блок-схема, изображающая процесс определения качественного показателя блока.
[46] На фиг. 30 представлен вид, показывающий предварительно заданные фильтры-кандидаты.
ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНОГО ВАРИАНТА ОСУЩЕСТВЛЕНИЯ
[47] Далее будет подробно описан вариант осуществления настоящего изобретения со ссылкой на прилагаемые графические материалы.
[48] Кодирование и декодирование видео выполняется посредством элемента блока. Например, процесс кодирования/декодирования, такой как преобразование, квантование, предсказание, фильтрование в контуре, восстановление и т.п., может выполняться в отношении блока кодирования, блока преобразования или блока предсказания.
[49] Далее блок, подлежащий кодированию/декодированию, будет называться «текущим блоком». Например, текущий блок может представлять блок кодирования, блок преобразования или блок предсказания согласно текущему этапу процесса кодирования/декодирования.
[50] Кроме того, следует понимать, что термин «элемент», используемый в настоящем описании, обозначает базовый элемент для выполнения конкретного процесса кодирования/декодирования, и термин «блок» обозначает массив отсчетов предварительно определенного размера. Если не указано иное, «блок» и «элемент» могут использоваться с одинаковым значением. Например, в варианте осуществления, описанном ниже, следует понимать, что блок кодирования и элемент кодирования имеют одинаковое значение.
[51] На фиг. 1 представлена структурная схема, показывающая видеокодер согласно одному варианту осуществления настоящего изобретения.
[52] Как показано на фиг. 1, устройство 100 для кодирования видео может содержать часть 110 для разбиения изображений, части 120 и 125 для предсказания, часть 130 для преобразования, часть 135 для квантования, часть 160 для перестановки, часть 165 для энтропийного кодирования, часть 140 для обратного квантования, часть 145 для обратного преобразования, часть 150 для фильтрации и запоминающее устройство 155.
[53] Каждый из компонентов, показанных на фиг. 1, показан независимо, чтобы представить характерные функции, отличающие их друг от друга в устройстве для кодирования видео, но это не означает, что каждый компонент образован элементом конфигурации отдельного аппаратного обеспечения или одного программного обеспечения. То есть каждый компонент включен в список в качестве компонента для удобства объяснения, и по меньшей мере два из компонентов могут быть объединены для образования единого компонента, или один компонент может быть разбит на множество компонентов для выполнения функции. Варианты осуществления с объединением и варианты осуществления с разделением компонентов также входят в объем настоящего изобретения, если они не выходят за рамки сущности настоящего изобретения.
[54] Кроме того, некоторые из компонентов не являются важными компонентами, которые выполняют основные функции в настоящем изобретении, но могут быть необязательными компонентами только для повышения эффективности. Настоящее изобретение может быть реализовано путем включения только компонентов, необходимых для реализации сущности настоящего изобретения, за исключением компонентов, используемых для повышения эффективности, и конструкция, содержащая только необходимые компоненты, за исключением необязательных компонентов, используемых для повышения эффективности, также включена в объем настоящего изобретения.
[55] Часть 110 для разбиения изображений может разбивать входное изображение на по меньшей мере один элемент обработки. В этом случае элемент обработки может представлять собой элемент предсказания (PU), элемент преобразования (TU) или элемент кодирования (CU). Часть 110 для разбиения изображений может разбивать изображение на совокупность, состоящую из множества элементов кодирования, элементов предсказания и элементов преобразования, и кодировать изображение за счет выбора совокупности элемента кодирования, элемента предсказания и элемента преобразования на основании предварительно определенного критерия (например, функции стоимости).
[56] Например, одно изображение может быть разбито на множество элементов кодирования. Для разбиения элементов кодирования в изображении может использоваться структура в виде рекурсивного дерева, такая как структура в виде четвертичного дерева. Видео или элемент кодирования, разбитые на разные элементы кодирования с использованием наибольшего элемента кодирования в качестве корня, могут быть разбиты так, чтобы иметь столько же узлов-потомков, сколько разбитых элементов кодирования. Элемент кодирования, который больше не разбивается согласно предварительно определенному ограничению, становится листовым узлом. То есть, если предполагается, что возможно только квадратное разбиение для одного элемента кодирования, один элемент кодирования может быть разбит на не более чем четыре разных элемента кодирования.
[57] Далее в варианте осуществления настоящего изобретения элемент кодирования может использоваться в значении элемента, выполняющего кодирование, или в значении элемента, выполняющего декодирование.
[58] Элемент предсказания может представлять собой элемент, разбитый в форме по меньшей мере одного квадрата, прямоугольника и т.п. одинакового размера в пределах одного элемента кодирования, или он может представлять собой любой элемент предсказания из элементов предсказания, разбитых в пределах одного элемента кодирования, который разбит так, что имеет форму и/или размер, отличающиеся от таковых другого элемента предсказания.
[59] Если элемент кодирования не является наименьшим элементом кодирования, когда генерируется элемент предсказания, который выполняет внутреннее предсказание на основании элемента кодирования, внутреннее предсказание может выполняться без разбиения изображения на множество элементов предсказания N×N.
[60] Части 120 и 125 для предсказания могут содержать часть 120 для предсказания, осуществляемого между изображениями, которая выполняет предсказание, осуществляемое между изображениями, и часть 125 для внутреннего предсказания, которая выполняет внутреннее предсказание. Может быть определено, использовать ли предсказание, осуществляемое между изображениями, или выполнить внутреннее предсказание для элемента предсказания и определить конкретную информацию (например, режим внутреннего предсказания, вектор движения, опорное изображение или т.п.) согласно каждому способу предсказания. В этом случае элемент обработки для выполнения предсказания может отличаться от элемента обработки для определения способа предсказания и конкретно содержимого. Например, способ предсказания и режим предсказания могут быть определены в элементе предсказания, и предсказание может выполняться в элементе преобразования. Остаточный коэффициент (остаточный блок) между сгенерированным блоком предсказания и первоначальным блоком может быть введен в часть 130 для преобразования. Кроме того, информация о режиме предсказания, информация о векторе движения и т.п., используемые для предсказания, могут быть кодированы посредством части 165 для энтропийного кодирования вместе с остаточным коэффициентом и переданы на декодер. Когда используется конкретный режим кодирования, первоначальный блок может быть кодирован как есть и передан на декодер без генерирования блока предсказания посредством частей 120 и 125 для предсказания.
[61] Часть 120 для предсказания, осуществляемого между изображениями, может предсказывать элемент предсказания на основании информации о по меньшей мере одном изображении из изображений перед текущим изображением или после него, и в некоторых случаях она может предсказывать элемент предсказания на основании информации о частичной области, которая была закодирована в текущем изображении. Часть 120 для предсказания, осуществляемого между изображениями, может содержать часть для интерполяции опорного изображения, часть для предсказания движения и часть для компенсации движения.
[62] Часть для интерполяции опорного изображения может принимать информацию об опорном изображении от запоминающего устройства 155 и генерировать информацию о пикселе для целого числа пикселей или меньше из опорного изображения. В случае пикселя яркости 8-отводный интерполяционный фильтр на основе DCT с переменным коэффициентом фильтрования может использоваться для генерирования информации о пикселе целого числа пикселей или меньше посредством элемента, состоящего из 1/4 пикселей. В случае цветоразностного сигнала 4-отводный интерполяционный фильтр на основе DCT с переменным коэффициентом фильтрования может использоваться для генерирования информации о пикселе целого числа пикселей или меньше посредством элемента, состоящего из 1/8 пикселей.
[63] Часть для предсказания движения может выполнять предсказание движения на основании опорного изображения, интерполированного частью для интерполяции опорного изображения. Различные способы, такие как алгоритм сопоставления блоков на основе полного поиска (FBMA), трехступенчатый поиск (TSS), алгоритм нового трехступенчатого поиска (NTS) и т.п., могут использоваться в качестве способа вычисления вектора движения. Вектор движения может иметь значение вектора движения в виде элемента, состоящего из 1/2 или 1/4 пикселей, на основании интерполированных пикселей. Часть для предсказания движения может предсказывать текущий элемент предсказания за счет изменения способа предсказания движения. Различные способы, такие как способ пропуска, способ слияния, способ усовершенствованного предсказания вектора движения (AMVP), способ внутриблочного копирования и т.п., могут использоваться в качестве способа предсказания движения.
[64] Часть 125 для внутреннего предсказания может генерировать элемент предсказания на основании информации об опорных пикселях, расположенных поблизости от текущего блока, которая представляет собой информацию о пикселе в текущем изображении. Когда блок, находящийся поблизости от текущего элемента предсказания, представляет собой блок, в отношении которого было выполнено предсказание, осуществляемое между изображениями, и, таким образом, опорный пиксель представляет собой пиксель, в отношении которого было выполнено предсказание, осуществляемое между изображениями, опорный пиксель, включенный в блок, в отношении которого было выполнено предсказание, осуществляемое между изображениями, может использоваться вместо информации об опорном пикселе блока, находящегося поблизости, в отношении которого было выполнено внутреннее предсказание. То есть, когда опорный пиксель недоступен, по меньшей мере один опорный пиксель из доступных опорных пикселей может использоваться вместо недоступной информации об опорном пикселе.
[65] При внутреннем предсказании режим предсказания может предусматривать режим предсказания, основанный на информации об углах, в котором используется информация об опорном пикселе согласно направлению предсказания, и режим предсказания, не основанный на информации об углах, в котором не используется информация о направлении при выполнении предсказания. Режим для предсказания информации о яркости может отличаться от режима для предсказания информации о цветовой разности, и информация о режиме внутреннего предсказания, используемая для предсказания информации о яркости или информации о предсказанном сигнале яркости, может использоваться для предсказания информации о цветовой разности.
[66] Если размер элемента предсказания такой же, как размер элемента преобразования, когда выполняется внутреннее предсказание, внутреннее предсказание может выполняться для элемента предсказания на основании пикселя на левой стороне, пикселя на верхней левой стороне и пикселя сверху от элемента предсказания. Однако, если размер элемента предсказания отличается от размера элемента преобразования, когда выполняется внутреннее предсказание, внутреннее предсказание может выполняться с использованием опорного пикселя на основании элемента преобразования. Кроме того, внутреннее предсказание с использованием разбиения N×N может использоваться только для наименьшего элемента кодирования.
[67] Посредством способа внутреннего предсказания можно генерировать блок предсказания после применения фильтра адаптивного внутреннего сглаживания (AIS) к опорному пикселю согласно режиму предсказания. Тип фильтра AIS, применяемого к опорному пикселю, может меняться. Для выполнения способа внутреннего предсказания режим внутреннего предсказания текущего элемента предсказания может быть предсказан из режима внутреннего предсказания элемента предсказания, существующего поблизости от текущего элемента предсказания. Когда режим предсказания текущего элемента предсказания предсказан с использованием информации о режиме, предсказанной из соседнего элемента предсказания, если режимы внутреннего предсказания текущего элемента предсказания такие же, как элемент предсказания поблизости, то информация, указывающая, что режимы предсказания текущего элемента предсказания такие же, как элемент предсказания поблизости, может передаваться с использованием информации о предварительно определенном флаге, и если режимы предсказания текущего элемента предсказания и элемента предсказания поблизости отличаются друг от друга, информация о режиме предсказания текущего блока может быть кодирована за счет выполнения энтропийного кодирования.
[68] Кроме того, может быть сгенерирован остаточный блок, содержащий элемент предсказания, который выполнил предсказание на основании элемента предсказания, сгенерированного частями 120 и 125 для предсказания, и информации об остаточном коэффициенте, которая представляет собой значение разницы элемента предсказания от первоначального блока. Сгенерированный остаточный блок может быть введен в часть 130 для преобразования.
[69] Часть 130 для преобразования может преобразовывать остаточный блок, содержащий первоначальный блок и информацию об остаточном коэффициенте элемента предсказания, сгенерированного посредством частей 120 и 125 для предсказания, с помощью способа преобразования, такого как дискретное косинусное преобразование (DCT), дискретное синусное преобразование (DST) или KLT. Применение DCT, DST или KLT для преобразования остаточного блока, может быть определено на основании информации о режиме внутреннего предсказания элемента предсказания, используемого для генерирования остаточного блока.
[70] Часть 135 для квантования может квантовать значения, преобразованные в частотную область посредством части 130 для преобразования. Коэффициенты квантования могут изменяться в зависимости от блока или важности видео. Значение, вычисленное частью 135 для квантования, может быть предоставлено в часть 140 для обратного квантования и часть 160 для перестановки.
[71] Часть 160 для перестановки может выполнять перестановку значений коэффициентов для квантованных остаточных коэффициентов.
[72] Часть 160 для перестановки может изменять коэффициенты двумерной формы блока на одномерную векторную форму посредством способа сканирования коэффициентов. Например, часть 160 для перестановки может сканировать от коэффициентов DC до коэффициентов высокочастотной области с использованием способа зигзагообразного сканирования и менять коэффициенты с приданием им одномерной векторной формы. Согласно размеру элемента преобразования и режиму внутреннего предсказания вместо зигзагообразного сканирования может использоваться вертикальное сканирование в виде сканирования коэффициентов двумерной формы блока в направлении столбцов и горизонтальное сканирование коэффициентов двумерной формы блока в направлении строк. То есть, согласно размеру элемента преобразования и режиму внутреннего предсказания может быть определен способ сканирования, который будет использоваться, из зигзагообразного сканирования, сканирования в вертикальном направлении и сканирования в горизонтальном направлении.
[73] Часть 165 для энтропийного кодирования может выполнять энтропийное кодирование на основании значений, вычисленных частью 160 для перестановки. Для энтропийного кодирования могут использоваться различные способы кодирования, такие как кодирование экспоненциальным способом Голомба, контекстно-адаптивное кодирование с переменной длиной слова (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC) и т.п.
[74] Часть 165 для энтропийного кодирования может кодировать различную информацию, такую как информация об остаточном коэффициенте и информация о типе блока элемента кодирования, информация о режиме предсказания, информация об элементе разбиения, информация об элементе предсказания и информация об элементе передачи, информация о векторе движения, информация об опорном кадре, информация об интерполяции блока и информация о фильтрации, которая введена из части 160 для перестановки и частей 120 и 125 для предсказания.
[75] Часть 165 для энтропийного кодирования может выполнять энтропийное кодирование значения коэффициента элемента кодирования, введенного из части 160 для перестановки.
[76] Часть 140 для обратного квантования и часть 145 для обратного преобразования выполняют обратное квантование значений, квантованных посредством части 135 для квантования, и обратное преобразование значений, преобразованных посредством части 130 для преобразования. Остаточный коэффициент, сгенерированный частью 140 для обратного квантования и частью 145 для обратного преобразования, может быть объединен с элементом предсказания, предсказанным посредством части для оценки движения, часть для компенсации движения и части для внутреннего предсказания, включенных в части 120 и 125 для предсказания, для генерирования восстановленного блока.
[77] Часть 150 для фильтрации может содержать по меньшей мере одно из деблочного фильтра, элемента для компенсации смещения и адаптивного контурного фильтра (ALF).
[78] Деблочный фильтр может удалять искажение блока, генерируемое на границе между блоками в восстановленном изображении. Определение того, следует ли выполнять удаление блочности, применять ли деблочный фильтр к текущему блоку, может осуществляться на основании пикселей, содержащихся в нескольких столбцах или строках, содержащихся в блоке. Сильный фильтр или слабый фильтр может применяться согласно необходимой степени фильтрации для удаления блочности, при применении деблочного фильтра к блоку. Кроме того, когда выполняются фильтрация в вертикальном направлении и фильтрация в горизонтальном направлении при применении деблочного фильтра, фильтрация в вертикальном направлении и фильтрация в горизонтальном направлении могут осуществляться параллельно.
[79] Элемент для коррекции смещения может корректировать смещение первоначального видео посредством элемента, состоящего из пикселей, для видео, в отношении которого было выполнено удаление блочности. Для выполнения коррекции смещения для конкретного изображения можно использовать способ разделения пикселей, включенных в видео, на определенное количество областей, определения области для выполнения смещения, и применения смещения к области, или способ применения смещения, учитывающий информацию о крае каждого пикселя.
[80] Адаптивная контурная фильтрация (ALF) может выполняться на основании значения, полученного посредством сравнения восстановленного и отфильтрованного видео с первоначальным видео. После разделения пикселей, включенных в видео, на предварительно определенные группы, может быть определен один фильтр, который должен применяться к соответствующей группе, и фильтрация может выполняться по-разному для каждой группы. Сигнал яркости, который представляет собой информацию, связанную с тем, следует или нет применять ALF, может передаваться для каждого элемента кодирования (CU), и форма и коэффициент фильтрования фильтра ALF, который должен быть применен, могут меняться в зависимости от каждого блока. Кроме того, фильтр ALF того же типа (фиксированного типа) может применяться независимо от характеристики применяемого блока.
[81] Запоминающее устройство 155 может хранить восстановленный блок или изображение, вычисленные посредством части 150 для фильтрации, и восстановленный и сохраненный блок или изображение могут быть предоставлены в части 120 и 125 для предсказания при выполнении предсказания, осуществляемого между изображениями.
[82] На фиг. 2 представлена структурная схема, показывающая видеодекодер согласно одному варианту осуществления настоящего изобретения.
[83] Как показано на фиг. 2, видеодекодер 200 может содержать часть 210 для энтропийного декодирования, часть 215 для перестановки, часть 220 для обратного квантования, часть 225 для обратного преобразования, части 230 и 235 для предсказания, часть 240 для фильтрации и запоминающее устройство 245.
[84] Когда битовый поток видео вводится из видеокодера, входной битовый поток может быть декодирован согласно процедуре, противоположной процедуре работы видеокодера.
[85] Часть 210 для энтропийного декодирования может выполнять энтропийное декодирование согласно процедуре, противоположной процедуре выполнения энтропийного кодирования в части для энтропийного декодирования видеокодера. Например, могут применяться различные способы, соответствующие способу, выполняемому видеокодером, такие как кодирование экспоненциальным способом Голомба, контекстно-адаптивное кодирование с переменной длиной слова (CAVLC) и контекстно-адаптивное двоичное арифметическое кодирование (CABAC).
[86] Часть 210 для энтропийного декодирования может декодировать информацию, связанную с внутренним предсказанием и предсказанием, осуществляемым между изображениями, выполняемыми кодером.
[87] Часть 215 для перестановки может выполнять перестановку в отношении битового потока, подвергнутого энтропийному декодированию посредством части 210 для энтропийного декодирования, на основании способа перестановки, выполняемого кодером. Коэффициенты, выраженные в одномерной векторной форме, могут быть восстановлены и переставлены как коэффициенты в двумерной форме блока. Часть 215 для перестановки может принимать информацию, связанную со сканированием коэффициентов, выполняемым частью для кодирования, и выполнять восстановление посредством способа обратного сканирования на основании порядка сканирования, выполняемого соответствующей частью для кодирования.
[88] Часть 220 для обратного квантования может выполнять обратное квантование на основании параметра квантования, предоставленного кодером, и значения коэффициента переставленного блока.
[89] Часть 225 для обратного преобразования может выполнять обратное преобразование, т.е. обратное DCT, обратное DST или обратное KLT, для преобразования, т.е. DCT, DST или KLT, выполняемого частью для преобразования в отношении результата квантования, выполняемого видеокодером. Обратное преобразование может выполняться на основании элемента передачи, определенного видеокодером. Часть 225 для обратного преобразования видеодекодера может выборочно выполнять метод преобразования (например, DCT, DST, KLT) согласно множеству фрагментов информации, такой как способ предсказания, размер текущего блока, направление предсказания и т.п.
[90] Части 230 и 235 для предсказания могут генерировать блок предсказания на основании информации, относящейся к генерированию блока предсказания, предоставленного энтропийным декодером 210, и информации о ранее декодированном блоке или изображении, предоставленном запоминающим устройством 245.
[91] Как описано выше, если размер элемента предсказания и размер элемента преобразования одинаковы, когда внутреннее предсказание выполняется таким же образом, как операция в видеокодере, внутреннее предсказание выполняется в отношении элемента предсказания на основании пикселя, находящегося на левой стороне, пикселя на верхней левой стороне и пикселя сверху от элемента предсказания. Однако, если размер элемента предсказания и размер элемента преобразования отличаются друг от друга, когда выполняется внутреннее предсказание, внутреннее предсказание может выполняться с использованием опорного пикселя на основании элемента преобразования. Кроме того, внутреннее предсказание с использованием разбиения N×N может использоваться только для наименьшего элемента кодирования.
[92] Части 230 и 235 для предсказания могут содержать часть для определения элемента предсказания, часть для предсказания, осуществляемого между изображениями, и часть для внутреннего предсказания. Часть для определения элемента предсказания может принимать различную информацию, такую как информация об элементе предсказания, введенная от части 210 для энтропийного декодирования, информация о режиме предсказания для способа внутреннего предсказания, информация, относящаяся к предсказанию движения для способа предсказания, осуществляемого между изображениями, и т.п., идентифицировать элемент предсказания из текущего элемента кодирования и определять, выполняет элемент предсказания предсказание, осуществляемое между изображениями, или внутреннее предсказание. Часть 230 для предсказания, осуществляемого между изображениями, может выполнять предсказание, осуществляемое между изображениями, в отношении текущего элемента предсказания на основании информации, включенной в по меньшей мере одно изображение из изображений до или после текущего изображения, включая текущий элемент предсказания, за счет использования информации, необходимой для предсказания, осуществляемого между изображениями, текущего элемента предсказания, предоставленного видеокодером. Альтернативно часть 230 для предсказания, осуществляемого между изображениями, может выполнять предсказание, осуществляемое между изображениями, на основании информации о частичной области, ранее восстановленной в текущем изображении, содержащем текущий элемент предсказания.
[93] Для выполнения предсказания, осуществляемого между изображениями, можно определить на основании элемента кодирования, является ли способ предсказания движения элемента предсказания, включенного в соответствующий элемент кодирования, режимом пропуска, режимом слияния, режимом предсказания вектора движения (режимом AMVP) или режимом копирования внутри блока.
[94] Часть 235 для внутреннего предсказания может генерировать блок предсказания на основании информации о пикселе в текущем изображении. Когда элемент предсказания представляет собой элемент предсказания, который выполнил внутреннее предсказание, внутреннее предсказание может быть выполнено на основании информации о режиме внутреннего предсказания элемента предсказания, предоставленного видеокодером. Часть 235 для внутреннего предсказания может содержать фильтр адаптивного внутреннего сглаживания (AIS), часть для интерполяции опорного пикселя и фильтр DC. Фильтр AIS представляет собой часть, которая выполняет фильтрацию в отношении опорного пикселя текущего блока, и может определять, следует применять или нет фильтр согласно режиму предсказания текущего элемента предсказания, и применять фильтр. Фильтрация AIS может выполняться в отношении опорного пикселя текущего блока за счет использования режима предсказания и информации о фильтре AIS элемента предсказания, предоставленного видеокодером. Когда режим предсказания текущего блока представляет собой режим, который не выполняет фильтрацию AIS, фильтр AIS может не применяться.
[95] Когда режим предсказания элемента предсказания представляет собой элемент предсказания, который выполняет внутреннее предсказание на основании значения пикселя, полученного посредством интерполяции опорного пикселя, часть для интерполяции опорного пикселя может генерировать опорный пиксель элемента, состоящего из пикселей, который имеет целое значение или меньше посредством интерполяции опорного пикселя. Когда режим предсказания текущего элемента предсказания представляет собой режим предсказания, который генерирует блок предсказания без интерполяции опорного пикселя, опорный пиксель может не быть интерполирован. Фильтр DC может генерировать блок предсказания посредством фильтрации, когда режим предсказания текущего блока представляет собой режим DC.
[96] Восстановленный блок или изображение могут быть предоставлены в часть 240 для фильтрации. Часть 240 для фильтрации может содержать деблочный фильтр, элемент для коррекции смещения и ALF.
[97] Информация о том, следует ли применять деблочный фильтр к соответствующему блоку или изображению, и информация о том, следует применять сильный фильтр или слабый фильтр, когда применяется деблочный фильтр, могут быть предоставлены видеокодером. В деблочный фильтр видеодекодера может быть предоставлена информация, связанная с деблочным фильтром, предоставленная видеокодером, и видеодекодер может выполнять фильтрацию для удаления блочности в отношении соответствующего блока.
[98] Элемент для коррекции смещения может выполнять коррекцию смещения в отношении восстановленного видео на основании типа коррекции смещения и информации о значении смещения, применяемых к видео при выполнении кодирования.
[99] ALF может применяться к элементу кодирования на основании информации о том, следует или нет применять ALF, и информации о коэффициентах ALF, предоставленной кодером. Информация об ALF может быть предоставлена для включения в набор конкретных параметров.
[100] Запоминающее устройство 245 может хранить восстановленное изображение или блок и использовать их в качестве опорного изображения или опорного блока и может предоставлять восстановленное изображение на элемент вывода.
[101]
[102] На фиг. 3 представлен вид, показывающий базовый элемент кодового дерева согласно одному варианту осуществления настоящего изобретения.
[103] Блок кодирования максимального размера может быть определен как блок кодового дерева. Изображение разбивается на множество элементов кодового дерева (CTU). Элемент кодового дерева представляет собой элемент кодирования, имеющий максимальный размер, и может называться большой элемент кодирования (LCU). На фиг. 3 представлен пример, в котором изображение разбивается на множество элементов кодового дерева.
[104] Размер элемента кодового дерева может быть определен на уровне изображения или уровне последовательности. Для этого информация, указывающая размер элемента кодового дерева, может быть передана посредством набора параметров изображения или набора параметров последовательности.
[105] Например, размер элемента кодового дерева для всего изображения в последовательности может быть установлен равным 128×128. Альтернативно на уровне изображения любой размер из 128×128 и 256×256 может быть определен как размер элемента кодового дерева. Например, размер элемента кодового дерева может быть установлен равным 128×128 в первом изображении, и размер элемента кодового дерева может быть установлен равным 256×256 во втором изображении.
[106] Блоки кодирования могут быть сгенерированы посредством разбиения элемента кодового дерева. Блок кодирования указывает базовый элемент для выполнения кодирования/декодирования. Например, предсказание или преобразование может выполняться для каждого блока кодирования, или режим кодирования с предсказанием может быть определен для каждого блока кодирования. В данном случае режим кодирования с предсказанием указывает способ генерирования изображения предсказания. Например, режим кодирования с предсказанием может включать предсказание в пределах изображения (внутреннее предсказание), предсказание между изображениями (предсказание, осуществляемое между изображениями), привязку к текущему изображению (CPR), или внутриблочное копирование (IBC), или комбинированное предсказание. Для блока кодирования блок предсказания может быть сгенерирован за счет использования по меньшей мере одного режима кодирования с предсказанием из внутреннего предсказания, предсказания, осуществляемого между изображениями, привязки к текущему изображению и комбинированного предсказания.
[107] Информация, указывающая режим кодирования с предсказанием текущего блока, может передаваться посредством битового потока. Например, информация может представлять собой 1-битный флаг, указывающий, является режим кодирования с предсказанием внутренним режимом или режимом, осуществляемым между изображениями. Только когда режим кодирования с предсказанием текущего блока определен как режим, осуществляемый между изображениями, может использоваться привязка к текущему изображению или комбинированное предсказание.
[108] Привязка к текущему изображению предназначена для установления текущего изображения как опорного изображения и получения блока предсказания текущего блока из области, которая уже была кодирована/декодирована в текущем изображении. В данном случае текущее изображение означает изображение, содержащее текущий блок. Информация, указывающая, применяется ли привязка к текущему изображению к текущему блоку, может быть передана посредством битового потока. Например, информация может представлять собой 1-битный флаг. Когда флаг является истинным, режим кодирования с предсказанием текущего блока может быть определен как привязка к текущему изображению, а когда флаг является ложным, режим предсказания текущего блока может быть определен как предсказание, осуществляемое между изображениями.
[109] Альтернативно режим кодирования с предсказанием текущего блока может быть определен на основании индекса опорного изображения. Например, когда индекс опорного изображения указывает текущее изображение, режим кодирования с предсказанием текущего блока может быть определен как привязка к текущему изображению. Когда индекс опорного изображения указывает изображение, отличающееся от текущего изображения, режим кодирования с предсказанием текущего блока может быть определен как предсказание, осуществляемое между изображениями. То есть, привязка к текущему изображению представляет собой способ предсказания, использующий информацию об области, в которой было осуществлено кодирование/декодирование, в текущем изображении, и предсказание, осуществляемое между изображениями, представляет собой способ предсказания, использующий информацию о другом изображении, в котором было осуществлено кодирование/декодирование.
[110] Комбинированное предсказание представляет режим кодирования, в котором объединены два или более из внутреннего предсказания, предсказания, осуществляемого между изображениями, и текущего опорного изображения. Например, при применении комбинированного предсказания первый блок предсказания может быть сгенерирован на основании одно из внутреннего предсказания, предсказания, осуществляемого между изображениями, и привязки к текущему изображению, а второй блок предсказания может быть сгенерирован на основании другого из них. При генерировании первого блока предсказания и второго блока предсказания, конечный блок предсказания может быть сгенерирован посредством операции усреднения или операции взвешенного суммирования первого блока предсказания и второго блока предсказания. Информация, указывающая, применяется или нет комбинированное предсказание, может быть передана посредством битового потока. Информация может представлять собой 1-битный флаг.
[111] На фиг. 4 представлен вид, показывающий различные типы разбиения блока кодирования.
[112] Блок кодирования может быть разбит на множество блоков кодирования на основании разбиения на основе четверичного дерева, разбиения на основе двоичного дерева или разбиения на основе троичного дерева. Разбитый блок кодирования может быть разбит снова на множество блоков кодирования на основании разбиения на основе четверичного дерева, разбиения на основе двоичного дерева или разбиения на основе троичного дерева.
[113] Разбиение на основе четверичного дерева относится к методу разбиения, который разбивает текущий блок на четыре блока. В результате разбиения на основе четвертичного дерева текущий блок может быть разбит на четыре раздела квадратной формы (см. «SPLIT_QT» на фиг. 4 (a)).
[114] Разбиение на основе двоичного дерева относится к методу разбиения, который разбивает текущий блок на два блока. Разбиение текущего блока на два блока вдоль вертикального направления (т.е. с использованием вертикальной линии, пересекающей текущий блок) может называться разбиением на основе двоичного дерева в вертикальном направлении, и разбиение текущего блока на два блока вдоль горизонтального направления (т.е. с использованием горизонтальной линии, пересекающей текущий блок) может называться разбиением на основе двоичного дерева в горизонтальном направлении. В результате разбиения на основе двоичного дерева текущий блок может быть разбит на два раздела неквадратной формы. «SPLIT_BT_VER» на фиг. 4 (b) представляет результат разбиения на основе двоичного дерева в вертикальном направлении, а «SPLIT_BT_HOR» на фиг. 4 (c) представляет результат разбиения на основе двоичного дерева в горизонтальном направлении.
[115] Разбиение на основе троичного дерева относится к методу разбиения, который разбивает текущий блок на три блока. Разбиение текущего блока на три блока вдоль вертикального направления (т.е. с использованием двух вертикальных линий, пересекающих текущий блок) может называться разбиением на основе троичного дерева в вертикальном направлении, и разбиение текущего блока на три блока вдоль горизонтального направления (т.е. с использованием двух горизонтальных линий, пересекающих текущий блок) может называться разбиением на основе троичного дерева в горизонтальном направлении. В результате разбиения на основе троичного дерева текущий блок может быть разбит на три раздела неквадратной формы. В этом случае ширина/высота раздела, расположенного в центре текущего блока, может быть вдвое больше ширины/высоты других разделов. «SPLIT_TT_VER» на фиг. 4 (d) представляет результат разбиения на основе троичного дерева в вертикальном направлении, а «SPLIT_TT_HOR» на фиг. 4 (e) представляет результат разбиения на основе троичного дерева в горизонтальном направлении.
[116] Количество разбиений элемента кодового дерева может быть определено как глубина разбиения. Максимальная глубина разбиения элемента кодового дерева может быть определена на уровне последовательности или уровне изображения. Соответственно, максимальная глубина разбиения элемента кодового дерева может отличаться для каждой последовательности или изображения.
[117] Альтернативно максимальная глубина разбиения для каждого метода разбиения может быть определена отдельно. Например, максимальная глубина разбиения, допускаемая для разбиения на основе четверичного дерева, может быть отличной от максимальной глубины разбиения, допускаемой для разбиения на основе двоичного дерева и/или разбиения на основе троичного дерева.
[118] Кодер может передавать информацию, указывающую по меньшей мере одно из типа разбиения и глубины разбиения текущего блока посредством битового потока. Декодер может определять тип разбиения и глубину разбиения элемента кодового дерева на основании информации, проанализированной из битового потока.
[119] На фиг. 5 представлен вид, показывающий схему разбиения элемента кодового дерева.
[120] Разбиение блока кодирования с использованием такого метода разбиения, как разбиение на основе четверичного дерева, разбиение на основе двоичного дерева и/или разбиение на основе троичного дерева, может называться разбиением на основе нескольких деревьев.
[121] Блоки кодирования, сгенерированные путем применения разбиения на основе нескольких деревьев к блоку кодирования, могут называться нижними блоками кодирования. Когда глубина разбиения блока кодирования представляет собой k, глубина разбиения нижних блоков кодирования установлена равной k + 1.
[122] И наоборот, для блоков кодирования, имеющих глубину разбиения k + 1, блок кодирования, имеющий глубину разбиения k, может называться верхним блоком кодирования.
[123] Тип разбиения текущего блока кодирования может быть определен на основании по меньшей мере одного из типа разбиения верхнего блока кодирования и типа разбиения соседнего блока кодирования. В данном случае соседний блок кодирования представляет собой блок кодирования, смежный с текущим блоком кодирования, и может включать по меньшей мере один из верхнего соседнего блока и левого соседнего блока текущего блока кодирования, и соседний блок, смежный с верхним левым углом. В данном случае тип разбиения может включать по меньшей мере одно из следующего: применялось ли разбиение на основе четверичного дерева, применялось ли разбиение на основе двоичного дерева, направление разбиения на основе двоичного дерева, применялось ли разбиение на основе троичного дерева и направление разбиения на основе троичного дерева.
[124] Чтобы определить тип разбиения блока кодирования, информация, указывающая то, может ли быть разбит блок кодирования, может быть передана посредством битового потока. Информация представляет собой 1-битный флаг «split_cu_flag», и, когда флаг является истинным, она указывает, что блок кодирования разбит с помощью метода разбиения на основе четверичного дерева.
[125] Когда split_cu_flag является истинным, информация, указывающая то, разбит ли блок кодирования на основе четверичного дерева, может быть передана посредством битового потока. Информация представляет собой 1-битный флаг в виде split_qt_flag, и, когда флаг является истинным, блок кодирования может быть разбит на четыре блока.
[126] Например, в примере, показанном на фиг. 5, когда элемент кодового дерева разбит на основе четвертичного дерева, генерируются четыре блока кодирования, имеющие глубину разбиения 1. Кроме того, показано, что разбиение на основе четвертичного дерева применяется снова к первому и четвертому блокам кодирования из четырех блоков кодирования, сгенерированных в результате разбиения на основе четвертичного дерева. В результате могут быть сгенерированы четыре блока кодирования, имеющие глубину разбиения 2.
[127] Кроме того, блоки кодирования, имеющие глубину разбиения, равную 3, могут быть сгенерированы путем повторного применения разбиения на основе четверичного дерева к блоку кодирования, имеющему глубину разбиения, равную 2.
[128] Когда разбиение на основе четверичного дерева не применяется к блоку кодирования, может быть определено то, выполняется ли разбиение на основе двоичного дерева или разбиение на основе троичного дерева в отношении блока кодирования, с учетом по меньшей мере одного из следующего: размера блока кодирования, расположен ли блок кодирования на границе изображения, максимальной глубины разбиения и типа разбиения соседнего блока. Когда определено, что следует выполнить разбиение на основе двоичного дерева или разбиение на основе троичного дерева в отношении блока кодирования, информация, указывающая направление разбиения, может быть передана посредством битового потока. Информация может представлять собой 1-битный флаг в виде mtt_split_cu_vertical_flag. На основании флага может быть определено, является направление разбиения вертикальным направлением или горизонтальным направлением. Дополнительно информация, указывающая то, применено ли разбиение на основе двоичного дерева или разбиение на основе троичного дерева к блоку кодирования, может быть передана посредством битового потока. Информация может представлять собой 1-битный флаг в виде mtt_split_cu_binary_flag. На основании флага может быть определено то, применено ли разбиение на основе двоичного дерева или разбиение на основе троичного дерева к блоку кодирования.
[129] Например, в примере, показанном на фиг. 5, показано, что разбиение на основе двоичного дерева в вертикальном направлении применено к блоку кодирования, имеющему глубину разбиения, равную 1, разбиение на основе троичного дерева в вертикальном направлении применено к левому блоку кодирования из блоков кодирования, сгенерированных в результате разбиения, и разбиение на основе двоичного дерева в вертикальном направлении применено к правому блоку кодирования.
[130]
[131] Предсказание, осуществляемое между изображениями, представляет собой режим кодирования с предсказанием, который предсказывает текущий блок путем использования информации о предшествующем изображении. Например, блок в том же положении, что и текущий блок в предшествующем изображении (далее - совмещаемый блок), может быть установлен как блок предсказания текущего блока. Далее блок предсказания, сгенерированный на основании блока в том же положении, что и текущий блок, будет называться совмещаемым блоком предсказания.
[132] С другой стороны, когда объект, находящийся в предшествующем изображении, переместился в другое положение в текущем изображении, текущий блок может быть эффективным образом предсказан путем использования движения объекта. Например, когда направление движения и размер объекта можно узнать путем сравнения предшествующего изображения и текущего изображения, блок предсказания (или изображение предсказания) текущего блока может быть сгенерирован с учетом информации о движении объекта. Далее блок предсказания, сгенерированный путем использования информации о движении, может называться блоком предсказания движения.
[133] Остаточный блок может быть сгенерирован путем вычитания блока предсказания из текущего блока. В этом случае, когда имеется движение объекта, энергия остаточного блока может быть уменьшена путем использования блока предсказания движения вместо совмещаемого блока предсказания, и, таким образом, эффективность сжатия остаточного блока может быть улучшена.
[134] Как описано выше, генерирование блока предсказания путем использования информации о движении может называться предсказанием с компенсацией движения. В большинстве предсказаний, осуществляемых между изображениями, блок предсказания может быть сгенерирован на основании предсказания с компенсацией движения.
[135] Информация о движении может содержать по меньшей мере одно из вектора движения, индекса опорного изображения, направления предсказания и двунаправленного весового индекса. Вектор движения указывает направление движения и размер объекта. Индекс опорного изображения указывает опорное изображение текущего блока из опорных изображений, включенных в список опорных изображений. Направление предсказания указывает любое из однонаправленного предсказания L0, однонаправленного предсказания L1 и двунаправленного предсказания (предсказания L0 и предсказания L1). Согласно направлению предсказания текущего блока может использоваться по меньшей мере одно из информации о движении в направлении L0 и информации о движении в направлении L1. Двунаправленный весовой индекс указывает значение взвешивания, примененное к блоку предсказания L0, и значение взвешивания, примененное к блоку предсказания L1.
[136] На фиг. 6 представлена блок-схема, изображающая способ предсказания, осуществляемого между изображениями, согласно одному варианту осуществления настоящего изобретения.
[137] Как показано на фиг. 6, способ предсказания, осуществляемого между изображениями, включает этапы определения (S601) режима предсказания, осуществляемого между изображениями, текущего блока, получения (S602) информации о движении текущего блока согласно определенному режиму предсказания, осуществляемого между изображениями, и выполнения (S603) предсказания с компенсацией движения для текущего блока на основании полученной информации о движении.
[138] В данном случае режим предсказания, осуществляемого между изображениями, представляет различные методы определения информации о движении текущего блока и может включать режим предсказания, осуществляемого между изображениями, который использует информацию о поступательном движении, и режим предсказания, осуществляемого между изображениями, который использует информацию об аффинном движении. Например, режим предсказания, осуществляемого между изображениями, который использует информацию о поступательном движении, может включать режим слияния и режим предсказания вектора движения, и режим предсказания, осуществляемого между изображениями, который использует информацию об аффинном движении, может включать аффинный режим слияния и режим предсказания вектора аффинного движения. Информация о движении текущего блока может быть определена на основании соседнего блока, смежного с текущим блоком, или информации, проанализированной из битового потока согласно режиму предсказания, осуществляемого между изображениями.
[139] Например, информация о движении текущего блока может быть получена на основании информации о движении соседнего в пространственном отношении блока, включенного в изображение, который является таким же, как текущий блок, или совмещаемого блока, включенного в изображение, который является отличным от текущего блока. Соседний в пространственном отношении блок включает по меньшей мере один из соседнего блока, смежного с верхней стороной текущего блока, соседнего блока, смежного с левой стороной, соседнего блока, смежного с верхним левым углом, соседнего блока, смежного с верхним правым углом, и соседнего блока, смежного с нижним левым углом. Совмещаемый блок может иметь такие же положение и размер, как и у текущего блока в совмещаемом изображении. Например, на фиг. 7 представлен вид, показывающий совмещаемый блок. Совмещаемое изображение может быть указано с помощью информации об индексах, указывающей любое из опорных изображений.
[140] Любое из множества кандидатных значений точности вектора движения может быть определено как значение точности вектора движения текущего блока. Например, кандидатное значение точности вектора движения может включать по меньшей мере одно из одной восьмой пикселя, четверти пикселя, половины пикселя, целого пикселя, 2 целых пикселей и 4 целых пикселей. Количество или тип кандидатных значений точности вектора движения можно определить с помощью элемента последовательности, слайса или блока. Например, информация для определения количества или типа кандидатных значений точности вектора движения может быть передана посредством битового потока. Альтернативно количество или тип кандидатных значений точности вектора движения можно определить на основании того, используется ли режим предсказания, осуществляемого между изображениями, или модель аффинного движения. Информация для указания любого из множества кандидатных значений точности вектора движения может быть передана посредством битового потока.
[141] Внутреннее предсказание предназначено для предсказания текущего блока с использованием восстановленных отсчетов, которые были кодированы/декодированы поблизости от текущего блока. В этом случае отсчеты, восстановленные до применения фильтра в контуре, могут использоваться для внутреннего предсказания текущего блока.
[142] Метод внутреннего предсказания включает внутреннее предсказание на основе матрицы и общее внутреннее предсказание, учитывающее направленность относительно соседних восстановленных отсчетов. Информация, указывающая метод внутреннего предсказания текущего блока, может передаваться посредством битового потока. Информация может представлять собой 1-битный флаг. Альтернативно метод внутреннего предсказания текущего блока может быть определен на основании по меньшей мере одного из положения текущего блока, размера текущего блока, формы текущего блока и метода внутреннего предсказания соседнего блока. Например, когда текущий блок находится на границе изображения, может быть установлено, что нет необходимости применять внутреннее предсказание на основе матрицы к текущему блоку.
[143] Внутреннее предсказание, представляющее собой внутреннее предсказание на основе матрицы, представляет собой способ получения блока предсказания текущего блока кодером и декодером на основании матричного произведения между ранее сохраненной матрицей и восстановленными отсчетами поблизости от текущего блока. Информация для указания любой из множества ранее сохраненных матриц может передаваться посредством битового потока. Декодер может определять матрицу для внутреннего предсказания текущего блока на основании информации и размера текущего блока.
[144] Общее внутреннее предсказание представляет собой способ получения блока предсказания для текущего блока на основании режима внутреннего предсказания, не основанного на информации об углах, или режима внутреннего предсказания, основанного на информации об углах. Далее процесс выполнения внутреннего предсказания на основании общего внутреннего предсказания будет описан более подробно со ссылкой на графические материалы.
[145] На фиг. 8 представлена блок-схема, изображающая способ внутреннего предсказания согласно одному варианту осуществления настоящего изобретения.
[146] Может быть определена (S801) линия опорных отсчетов текущего блока. Линия опорных отсчетов означает набор опорных отсчетов, включенных в k-ю линию от верхней и/или левой стороны текущего блока. Опорные отсчеты могут быть получены из восстановленных отсчетов, которые были кодированы/декодированы поблизости от текущего блока.
[147] Информация об индексах для идентификации линии опорных отсчетов текущего блока из множества линий опорных отсчетов может быть передана посредством битового потока. Например, информация об индексах intra_luma_ref_idx для указания линии опорных отсчетов текущего блока может быть передана посредством битового потока. Информация об индексах может быть передана элементом блока кодирования.
[148] Множество линий опорных отсчетов может содержать по меньшей мере одно из первой линии, второй линии, третьей линии и четвертой линии сверху и/или слева от текущего блока. Линия опорных отсчетов, состоящая из строки, смежной с верхней стороной текущего блока, и столбца, смежного с левой стороной текущего блока из множества линий опорных отсчетов, называется смежной линией опорных отсчетов, и другие линии опорных отсчетов могут называться несмежными линиями опорных отсчетов.
[149] На фиг. 9 представлен вид, показывающий опорные отсчеты.
[150] На фиг. 9 показана одна смежная линия опорных отсчетов, состоящая из строк и столбцов, смежных с текущим блоком, и три несмежные линии опорных отсчетов, состоящие из строк и столбцов, не смежных с текущим блоком.
[151] Только некоторые из множества линий опорных отсчетов могут быть выбраны как линия опорных отсчетов текущего блока. Например, остальные линии опорных отсчетов, за исключением второй несмежной линии опорных отсчетов, из линий опорных отсчетов, показанных на фиг. 9, могут быть установлены как кандидатные линии опорных отсчетов. В таблице 1 показаны индексы, соответственно присвоенные кандидатным линиям опорных отсчетов.
[152] [Таблица 1]
[153] Может быть установлено большее количество кандидатных линий опорных отсчетов или меньшее количество кандидатных линий опорных отсчетов, чем описанное выше количество кандидатных линий опорных отсчетов. Кроме того, количество или положения несмежных линий опорных отсчетов, установленных как кандидатные линии опорных отсчетов, не ограничиваются описанным выше примером. Например, первая несмежная линия опорных отсчетов и третья несмежная линия опорных отсчетов могут быть установлены как кандидатные линии опорных отсчетов, или вторая несмежная линия опорных отсчетов и третья несмежная линия опорных отсчетов могут быть установлены как кандидатные линии опорных отсчетов. Альтернативно все из первой несмежной линии опорных отсчетов, второй несмежной линии опорных отсчетов и третьей несмежной линии опорных отсчетов могут быть установлены как кандидатные линии опорных отсчетов.
[154] Количество или типы кандидатных линий опорных отсчетов могут быть определены на основании по меньшей мере одного из следующего: размера текущего блока, формы текущего блока, положения текущего блока, разбит ли текущий блок на подблоки и режима внутреннего предсказания текущего блока.
[155] Линия опорных отсчетов текущего блока может быть определена на основании по меньшей мере одного из положения текущего блока, размера текущего блока, формы текущего блока и режима кодирования с предсказанием соседнего блока. Например, когда текущий блок находится в контакте с границей изображения, тайла, слайса или элемента кодового дерева, смежная линия опорных отсчетов может быть определена как линия опорных отсчетов текущего блока.
[156] Альтернативно, когда текущий блок имеет неквадратную форму, смежная линия опорных отсчетов может быть определена как линия опорных отсчетов текущего блока. Альтернативно, когда соотношение ширины и высоты текущего блока больше, чем пороговое значение, или меньше, чем пороговое значение, смежная линия опорных отсчетов может быть определена как линия опорных отсчетов текущего блока.
[157] Линия опорных отсчетов может включать верхние опорные отсчеты, расположенные сверху от текущего блока, и левые опорные отсчеты, расположенные слева от текущего блока. Верхние опорные отсчеты и левые опорные отсчеты могут быть получены из восстановленных отсчетов поблизости от текущего блока. Восстановленные отсчеты могут быть в состоянии до применения фильтра в контуре.
[158] Количество опорных отсчетов, включенных в линию опорных отсчетов, может быть определено на основании расстояния между линиями опорных отсчетов. Например, количество опорных отсчетов, включенных в линию опорных отсчетов, имеющих расстояние i от текущего блока, может быть больше, чем количество опорных отсчетов, включенных в линию опорных отсчетов, имеющих расстояние i-1 от текущего блока. Соответственно, количество опорных отсчетов, включенных в несмежную линию опорных отсчетов, может быть больше, чем количество опорных отсчетов, включенных в смежную линию опорных отсчетов.
[159] Разница между количеством опорных отсчетов, включенных в несмежную линию опорных отсчетов, имеющих расстояние i от текущего блока, и количеством опорных отсчетов, включенных в смежную линию опорных отсчетов, может быть определена как смещение количества опорных отсчетов. В этом случае разница в количестве верхних опорных отсчетов, расположенных сверху от текущего блока, может быть определена как offsetX[i], и разница в количестве левых опорных отсчетов, расположенных слева от текущего блока, может быть определена как offsetY[i]. offsetX и offsetY могут быть определены на основании расстояния между текущим блоком и несмежной линией опорных отсчетов. Например, offsetX и offsetY могут быть установлены равными целому кратному i. Например, offsetX[i] и offset[i] могут равняться 2i.
[160] Альтернативно смещение количества опорных отсчетов может быть определено на основании соотношения ширины и высоты текущего блока. В уравнении 1 показан пример подсчета соотношения ширины и высоты текущего блока.
[161] [Уравнение 1]
[162] Также можно подсчитать соотношение ширины и высоты текущего блока способом, отличным от выраженного в уравнении 1.
[163] Значения offsetX и offsetY могут быть определены на основании соотношения ширины и высоты текущего блока. Например, когда значение whRatio больше чем 1, значение offsetX может быть установлено так, чтобы быть больше, чем значение offsetY. Например, значение offsetX может быть установлено равным 1, и значение offsetY может быть установлено равным 0. С другой стороны, когда значение whRatio меньше чем 1, значение offsetY может быть установлено так, чтобы быть больше, чем значение offsetX. Например, значение offsetX может быть установлено равным 0, и значение offsetY может быть установлено равным 1.
[164] За исключением верхнего левого опорного отсчета, имеющего одинаковые координаты по оси x и оси y, несмежная линия опорных отсчетов, имеющая расстояние i от текущего блока, может состоять из верхних опорных отсчетов в количестве вплоть до (refW + offsetX[i]) и левых опорных отсчетов в количестве вплоть до (refH + offsetY[i]). В данном случае refW и refH обозначают длину смежной линии опорных отсчетов и могут быть установлены так, как показано в уравнениях 2 и 3 соответственно.
[165] [Уравнение 2]
[166] [Уравнение 3]
[167] В уравнениях 2 и 3 nTbW обозначает ширину блока кодирования или блока преобразования, в отношении которого выполняют внутреннее предсказание, и nTbH обозначает высоту блока кодирования или блока преобразования, в отношении которого выполняют внутреннее предсказание.
[168] В результате линия опорных отсчетов, которая находится на расстоянии i от текущего блока, может состоять из опорных отсчетов в количестве вплоть до (refW + refH + offsetX[i] + offsetY[i] + 1).
[169] Согласно режиму внутреннего предсказания текущего блока отсчет предсказания может быть получен путем использования по меньшей мере одного из опорных отсчетов, принадлежащих к линии опорных отсчетов.
[170] Далее может быть определен (S802) режим внутреннего предсказания текущего блока. Что касается режима внутреннего предсказания текущего блока, по меньшей мере один из режима внутреннего предсказания, не основанного на информации об углах, и режима внутреннего предсказания, основанного на информации об углах, может быть определен как режим внутреннего предсказания текущего блока. Режим внутреннего предсказания, не основанный на информации об углах, включает планарный режим и режим DC, а режим внутреннего предсказания, основанный на информации об углах, включает 33 или 65 режимов между диагональным направлением вниз и влево и диагональным направлением вверх и вправо.
[171] На фиг. 10 представлен вид, показывающий режимы внутреннего предсказания.
[172] На фиг. 10 (a) показаны 35 режимов внутреннего предсказания, и на фиг. 10 (b) показаны 67 режимов внутреннего предсказания.
[173] Может быть определено большее или меньшее количество режимов внутреннего предсказания, чем показано на фиг. 10.
[174] Наиболее вероятный режим (MPM) может быть установлен на основании режима внутреннего предсказания соседнего блока, смежного с текущим блоком. В данном случае соседний блок может включать левый соседний блок, смежный с левой стороной текущего блока, и верхний соседний блок, смежный с верхней стороной текущего блока. Когда координаты верхнего левого отсчета текущего блока представляют собой (0, 0), левый соседний блок может содержать отсчет в положении (-1, 0), (-1, H-1) или (-1, (H-1)/2). В данном случае H обозначает высоту текущего блока. Верхний соседний блок может содержать отсчет в положении (0, -1), (W-1, -1) или ((W-1)/2, -1). В данном случае W обозначает ширину текущего блока.
[175] Когда соседний блок кодирован с помощью нормального внутреннего предсказания, MPM может быть получен на основании режима внутреннего предсказания соседнего блока. В частности, режим внутреннего предсказания левого соседнего блока может быть установлен как переменная candIntraPredModeA, а режим внутреннего предсказания верхнего соседнего блока может быть установлен как переменная candIntraPredModeB.
[176] В этом случае, когда соседний блок является недоступным (например, когда соседний блок еще не кодирован/декодирован или когда положение соседнего блока находится за границей изображения), когда соседний блок кодирован с помощью внутреннего предсказания на основе матрицы, когда соседний блок кодирован с помощью предсказания, осуществляемого между изображениями, или когда соседний блок включен в элемент кодового дерева, отличный от текущего блока, переменная candIntraPredModeX (в данном случае X представляет собой A или B), полученная на основании режима внутреннего предсказания соседнего блока, может быть установлена как режим по умолчанию. В данном случае режим по умолчанию может содержать по меньшей мере один из планарного режима, режима DC, режима в вертикальном направлении и режима в горизонтальном направлении.
[177] Альтернативно, когда соседний блок кодирован с помощью внутреннего предсказания на основе матрицы, режим внутреннего предсказания, соответствующий индексному значению для указания любой из матриц, может быть установлен равным candIntraPredModeX. Для этого в кодере и декодере может быть предварительно сохранена таблица поиска, показывающая взаимоотношение между индексными значениями для указания матрицы и режимов внутреннего предсказания.
[178] MPM могут быть получены на основании переменной candIntraPredModeA и переменной candIntraPredModeB. Например, candIntraPredModeA и candIntraPredModeB могут быть установлены как MPM, или режим внутреннего предсказания, подобный большему или меньшему значению candIntraPredModeA или candIntraPredModeB, может быть установлен как MPM. В данном случае режим внутреннего предсказания, подобный candIntraPredModeX (X представляет собой A или B), может представлять собой режим внутреннего предсказания, значение индексной разницы с candIntraPredModeX которого составляет ±1 или ±2.
[179] Количество MPM, включенных в список MPM, может быть заранее установлено в кодере и декодере. Количество MPM, включенных в список MPM, может быть задано в кодере и декодере. Например, количество MPM может быть равно 3, 4, 5 или 6. Альтернативно информация, указывающая количество MPM, может быть передана посредством битового потока. Альтернативно количество MPM может быть определено на основании по меньшей мере одного из режима кодирования с предсказанием соседнего блока и размера, формы и индекса линии опорных отсчетов текущего блока. Например, когда смежная линия опорных отсчетов определена как линия опорных отсчетов текущего блока, могут быть использованы N MPM, тогда как, когда несмежная линия опорных отсчетов определена как линия опорных отсчетов текущего блока, могут быть использованы M MPM. M представляет собой натуральное число, которое меньше, чем N, и, например, N может быть равно 6, и M может быть равно 5, 4 или 3. Соответственно, когда индекс линии опорных отсчетов текущего блока равен 0, и флаг MPM является истинным, любой из 6 кандидатных режимов внутреннего предсказания может быть определен как режим внутреннего предсказания текущего блока, тогда как, когда индекс линии опорных отсчетов текущего блока больше чем 0 и флаг MPM является истинным, любой из 5 кандидатных режимов внутреннего предсказания может быть определен как режим внутреннего предсказания текущего блока.
[180] Альтернативно фиксированное количество (например, 6 или 5) MPM-кандидатов может быть использовано независимо от индекса линии опорных отсчетов текущего блока.
[181] В вариантах осуществления, описанных ниже, предполагается, что количество MPM равно 6, и 6 MPM называются MPM[0], MPM[1], MPM[2], MPM[3], MPM[4] и MPM[5]. Вариант осуществления, в котором количество MPM меньше чем 6, может быть реализован путем использования только некоторых из 6 MPM, описанных в вариантах осуществления, описанных ниже. Альтернативно вариант осуществления, в котором количество MPM больше чем 6, может быть реализован так, чтобы включать 6 MPM, описанных в вариантах осуществления, описанных ниже.
[182] Исходные значения MPM могут быть установлены равными режиму внутреннего предсказания, не основанному на информации об углах, или режиму внутреннего предсказания, основанному на информации об углах, отличному от candIntraPredModeA и candIntraPredModeA. В данном случае режим внутреннего предсказания, основанный на информации об углах, который может быть установлен как MPM, может включать по меньшей мере один из режима внутреннего предсказания в вертикальном направлении, режима внутреннего предсказания в горизонтальном направлении, режима внутреннего предсказания в диагональном направлении вниз и влево, режима внутреннего предсказания в диагональном направлении вверх и влево и режима внутреннего предсказания в диагональном направлении вверх и вправо. Например, исходные значения MPM могут быть установлены следующим образом.
[183] MPM[0] = candIntraPredModeA
[184] MPM[1] = (candIntraPredModeA == INTRA_PLANAR) ? INTRA_DC : INTRA_PLANAR
[185] MPM[2] = INTRA_ANGULAR50
[186] MPM[3] = INTRA_ANGULAR18
[187] MPM[4] = INTRA_ANGULAR2
[188] MPM[5] = INTRA_ANGULAR34
[189] В примере, описанном выше, ((A) ? B : C) представляет функцию, которая возвращает значение B, когда условие, раскрытое в A, является истинным, и возвращает значение C, когда условие, раскрытое в A, является ложным.
[190] Когда candIntraPredModeA и candIntraPredModeB являются одинаковыми, и candIntraPredModeA представляет собой режим внутреннего предсказания, основанный на информации об углах, MPM[0] может быть установлен равным candIntraPredModeA, и MPM могут быть установлены равными режимам внутреннего предсказания, подобным candIntraPredModeA. Режим внутреннего предсказания, подобный candIntraPredModeA, может представлять собой режим внутреннего предсказания, значение индексной разницы с candIntraPredModeA которого составляет ±1 или ±2. Операция по модулю (%) и смещение могут быть использованы для получения режима внутреннего предсказания, подобного candIntraPredModeA. Кроме того, MPM может быть установлен равным по меньшей мере одному из режима внутреннего предсказания, не основанного на информации об углах, и режима внутреннего предсказания, угловая разница от candIntraPredModeA которого представляет собой предварительно заданное значение. В данном случае режим внутреннего предсказания, угловая разница от candIntraPredModeA которого представляет собой предварительно заданное значение, может представлять собой режим внутреннего предсказания, перпендикулярный candIntraPredModeA, или режим внутреннего предсказания в направлении, противоположном направлению candIntraPredModeA. Например, MPM могут быть получены следующим образом.
[191] MPM[0] = candIntraPredModeA
[192] MPM[1] = INTRA_PLANAR
[193] MPM[2] = INTRA_DC
[194] MPM[3] = 2 + ((candIntraPredModeA + 62) % 65)
[195] MPM[4] = 2 + ((candIntraPredModeA - 1) % 65)
[196] MPM[5] = 2 + ((candIntraPredModeA + 94) % 65)
[197] MPM[3] соответствует (candIntraPredModeA-1), и MPM[4] соответствует (candIntraPredModeA + 1). MPM[5] указывает режим внутреннего предсказания, перпендикулярный candIntraPredModeA.
[198] Когда candIntraPredModeA и candIntraPredModeB отличаются друг от друга, candIntraPredModeA и candIntraPredModeB могут быть установлены как MPM[0] и MPM[1] соответственно. Альтернативно candIntraPredA сравнивают с candIntraPredModeB, и максимальное значение может быть установлено как MPM[0], и минимальное значение может быть установлено как MPM[1]. И наоборот, также можно установить минимальное значение как MPM[0], а максимальное значение как MPM[1].
[199] В этом случае, когда как candIntraPredModeA, так и candIntraPredModeB представляют собой режимы внутреннего предсказания, основанные на информации об углах, режим внутреннего предсказания, не основанный на информации об углах, может быть установлен как MPM. Например, планарный режим и режим DC могут быть установлены как MPM[2] и MPM[3] соответственно.
[200] Дополнительно режим внутреннего предсказания, подобный любому из candIntraPredModeA и candIntraPredModeB, имеющий большее или меньшее значение, может быть установлен как MPM. Режим внутреннего предсказания, подобный candIntraPredModeX, может быть получен путем добавления смещения к candIntraPredModeX или вычитания из него. В этом случае максимальная величина смещения может быть определена на основании разницы между максимальным значением и минимальным значением candIntraPredModeA и candIntraPredModeB. Например, смещение может представлять собой натуральное число, такое как 1 или 2.
[201] Например, когда значение разницы, полученное путем вычитания MIN(candIntraPredModeA, candIntraPredModeB) из MAX(candIntraPredModeA, candIntraPredModeB), не равно 64 или 1, MPM[4] и MPM[5] могут быть получены следующим образом.
[202] MPM[4] = 2 + ((MAX(MPM[0], MPM[1]) + 62) % 65
[203] MPM[5] = 2 + ((MAX(MPM[0], MPM[1]) - 1) % 65
[204] В данном случае функция MAX(A, B) представляет собой функцию, которая возвращает большее значение из A и B, и функция MIN(A, B) представляет собой функцию, которая возвращает меньшее значение из A и B. MPM[4] соответствует (MAX(MPM[0], MPM[1]) - 1), и MPM[5] соответствует (MAX(MPM[0], MPM[1]) + 1). С другой стороны, когда значение разницы, полученное путем вычитания MIN (candIntraPredModeA, candIntraPredModeB) из MAX (candIntraPredModeA, candIntraPredModeB), равно 64 или 1, MPM[4] и MPM[5] могут быть получены следующим образом.
[205] MPM[4] = 2 + (MAX(MPM[0], MPM[1]) + 61) % 65
[206] MPM[5] = 2 + MAX(MPM[0], MPM[1]) % 65
[207] MPM[4] соответствует (MAX(MPM[0], MPM[1]) - 2), и MPM[5] соответствует (MAX(MPM[0], MPM[1]) + 2).
[208] Когда один из candIntraPredModeA и candIntraPredModeB представляет собой режим внутреннего предсказания, основанный на информации об углах, тогда как другой представляет собой режим внутреннего предсказания, не основанный на информации об углах, по меньшей мере один из режима внутреннего предсказания, не основанного на информации об углах, который не равен MIN(candIntraPredModeA, candIntrapredModeB), режима внутреннего предсказания, основанного на информации об углах, который подобен MAX(candIntraPredModeA, candIntraPredModeB), и режима внутреннего предсказания, угловая разница от MAX(candIntraPredModeA, candIntraPredModeB) которого представляет собой предварительно заданное значение, может быть установлен как MPM. Например, MPM[2]-MPM[5] могут быть получены следующим образом.
[209] MPM[2] = 1 MIN(MPM[0], MPM[1])
[210] MPM[3] = 2 + ((MAX(MPM[0], MPM[1]) + 62) % 65
[211] MPM[4] = 2 + ((MAX(MPM[0], MPM[1]) - 1) % 65
[212] MPM[5] = 2 + ((MAX(MPM[0], MPM[1]) + 94) % 65
[213] MPM[2] указывает режим внутреннего предсказания, не основанный на информации об углах, который не является таким же, как MPM[0] или MPM[1]. Например, когда MIN(MPM[0], MPM[1]) представляет собой режим DC, MPM[2] устанавливают в планарный режим, и, когда MIN(MPM[0], MPM[1]) представляет собой планарный режим, MPM[2] устанавливают в режим DC. MPM[3] соответствует ((MAX(MPM[0], MPM[1]) - 1), и MPM[4] соответствует ((MAX(MPM[0], MPM[1]) + 1). MPM[5] указывает режим внутреннего предсказания, перпендикулярный (MAX(MPM[0], MPM[1]). В отличие от примеров, перечисленных выше, MPM, полученный путем добавления 2 к MAX(MPM[0], MPM[1]) или вычитания из него, может быть добавлен в список MPM.
[214] Когда любой из candIntraPredA и candIntraPredB представляет собой внутренний режим, не основанный на информации об углах, а другой представляет собой режим внутреннего предсказания, основанный на информации об углах, т.е. любой из candIntraPredA и PredIntraPredB меньше чем 2, а другой равен или больше чем 2, максимальное значение из candIntraPredA и candIntraPredB может быть установлено как MPM. Кроме того, режим внутреннего предсказания, подобный максимальному значению, или режим внутреннего предсказания, перпендикулярный максимальному значению, может быть установлен как MPM. Например, MPM[0]-MPM[5] могут быть получены следующим образом.
[215] MPM[0] = MAX(candIntraPredA, candIntraPredB)
[216] MPM[1] = INTRA_PLANAR
[217] MPM[2] = INTRA_DC
[218] MPM[3] = 2 + ((MAX(candIntraPredA, candIntraPredB) + 62) % 65
[219] MPM[4] = 2 + ((MAX(candIntraPredA, candIntraPredB]) - 1) % 65
[220] MPM[5] = 2 + ((MAX(candIntraPredA, candIntraPredB) + 94) % 65
[221] MPM[3] соответствует (MAX(candIntraPredA, candIntraPredB) - 1), и MPM[4] соответствует (MAX(candIntraPredA, candIntraPredB) + 1). MPM[5] указывает режим внутреннего предсказания, перпендикулярный MAX(candIntraPredA, candIntraPredB). В отличие от примеров, перечисленных выше, MPM, полученный путем добавления 2 к MAX(candIntraPredA, candIntraPredB) или вычитания из него, может быть добавлен в список MPM.
[222] MPM могут быть получены с учетом индекса линии опорных отсчетов текущего блока. В частности, когда несмежная линия опорных отсчетов определена как линия опорных отсчетов текущего блока, режим предсказания, не основанный на информации об углах, такой как планарный режим или режим DC, может не быть установлен как MPM. Например, исходные значения MPM могут быть установлены следующим образом согласно тому, определена ли смежная линия опорных отсчетов как линия опорных отсчетов текущего блока.
[223] MPM[0] = (IntraLumaRefLineIdx == 0) ? candIntraPredModeA : INTRA_ANGULAR2
[224] MPM[1] = (IntraLumaRefLineIdx == 0) ? (candIntraPredModeA : == INTRA_PLANAR ? INTRA_DC : INTRA_PLANAR) : INTRA_ANGULAR18
[225] MPM[2] = INTRA_ANGULAR50
[226] MPM[3] = (IntraLumaRefLineIdx == 0) ? INTRA_ANGULAR18 : INTRA_ANGULAR34
[227] MPM[4] = (IntraLumaRefLineIdx == 0) ? INTRA_ANGULAR2 : INTRA_ANGULAR66
[228] MPM[5] = (IntraLumaRefLineIdx == 0) ? INTRA_ANGULAR34 : INTRA_ANGULAR42
[229] Когда линия опорных отсчетов текущего блока представляет собой несмежную линию опорных отсчетов, и как candIntraPredModeA, так и candIntraPredModeB представляют собой режимы внутреннего предсказания, основанные на информации об углах, MPM могут быть получены следующим образом.
[230] MPM[0] = candIntraPredModeA
[231] MPM[1] = candIntraPredModeB
[232] MPM[2] = INTRA_ANGULAR2
[233] MPM[3] = INTRA_ANGULAR18
[234] MPM[4] = INTRA_ANGULAR50
[235] MPM[5] = INTRA_ANGULAR34
[236] Когда линия опорных отсчетов текущего блока представляет собой несмежную линию опорных отсчетов, и любой из candIntraPredModeA и candIntraPredModeB представляет собой режим внутреннего предсказания, не основанный на информации об углах, а другой представляет собой режим внутреннего предсказания, основанный на информации об углах, MPM могут быть получены следующим образом.
[237] MPM[0] = MAX(candIntraPredModeA, candIntraPredModeB)
[238] MPM[1] = INTRA_ANGULAR2
[239] MPM[2] = INTRA_ANGULAR18
[240] MPM[3] = INTRA_ANGULAR50
[241] MPM[4] = INTRA_ANGULAR34
[242] MPM[5] = INTRA_ANGULAR66
[243] Генерируется список MPM, содержащий множество MPM, и информация, указывающая, включен ли MPM, который является таким же, как режим внутреннего предсказания текущего блока, в список MPM, может быть передана посредством битового потока. Информация представляет собой 1-битный флаг и может называться флагом MPM. Когда флаг MPM указывает, что MPM, являющийся таким же, как у текущего блока, включен в список MPM, информация об индексах, указывающая один из MPM, может быть передана посредством битового потока. Например, информация об индексах mpm_idx, указывающая любой из множества MPM, может быть передана посредством битового потока. MPM, указанный информацией об индексах, может быть установлен как режим внутреннего предсказания текущего блока. Когда флаг MPM указывает, что MPM, являющийся таким же, как у текущего блока, не включен в список MPM, информация об остаточных режимах, указывающая любой из остаточных режимов внутреннего предсказания, отличных от MPM, может быть передана посредством битового потока. Информация об остаточных режимах указывает индексное значение, соответствующее режиму внутреннего предсказания текущего блока, когда индексы повторно присвоены остаточным режимам внутреннего предсказания за исключением MPM. Декодер может располагать MPM в возрастающем порядке и определять режим внутреннего предсказания текущего блока путем сравнения информации об остаточных режимах с MPM. Например, когда информация об остаточных режимах меньше или равна MPM, режим внутреннего предсказания текущего блока может быть получен путем добавления 1 к информации об остаточных режимах.
[244] Когда получен режим внутреннего предсказания текущего блока, сравнение между некоторым из MPM и информацией об остаточных режимах может быть пропущено. Например, MPM режима внутреннего предсказания, не основанного на информации об углах, из MPM могут быть исключены из целей сравнения. Когда режимы внутреннего предсказания, не основанные на информации об углах, установлены как MPM, очевидно, что информация об остаточных режимах указывает режим внутреннего предсказания, основанный на информации об углах, и, таким образом, режим внутреннего предсказания текущего блока может быть получен посредством сравнения между остаточными MPM, за исключением режимов внутреннего предсказания, не основанных на информации об углах, и информацией об остаточных режимах. Вместо исключения режимов внутреннего предсказания, не основанных на информации об углах, из целей сравнения, количество режимов внутреннего предсказания, не основанных на информации об углах, добавляется в информацию об остаточных режимах, а затем полученное в результате значение сравнения может быть сравнено с остаточными MPM.
[245] Вместо установки режима по умолчанию как MPM, информация, указывающая, является ли режим внутреннего предсказания текущего блока режимом по умолчанию, может быть передана посредством битового потока. Информация представляет собой 1-битный флаг, и флаг может называться флагом режима по умолчанию. Флаг режима по умолчанию может быть передан только тогда, когда флаг MPM указывает, что MPM, являющийся таким же, как у текущего блока, включен в список MPM. Как описано выше, режим по умолчанию может содержать по меньшей мере один из планарного режима, режима DC, режима в вертикальном направлении и режима в горизонтальном направлении. Например, когда планарный режим установлен как режим по умолчанию, флаг режима по умолчанию может указывать, является ли режим внутреннего предсказания текущего блока планарным режимом. Когда флаг режима по умолчанию указывает, что режим внутреннего предсказания текущего блока не является режимом по умолчанию, один из MPM, указанных информацией об индексах, может быть установлен как режим внутреннего предсказания текущего блока.
[246] Когда используют флаг режима по умолчанию, он может быть установлен так, чтобы не устанавливать режим внутреннего предсказания, который является таким же, как режим по умолчанию, как MPM. Например, когда флаг режима по умолчанию указывает, является ли режим внутреннего предсказания текущего блока планарным режимом, MPM, соответствующий планарному режиму, из 6 MPM, описанных выше, заменяется другим режимом, или режим внутреннего предсказания текущего блока может быть получен путем использования 5 MPM, за исключением MPM, соответствующего планарному режиму.
[247] Когда множество режимов внутреннего предсказания установлены как режимы по умолчанию, информация об индексах, указывающая любой из режимов по умолчанию, может быть передана дальше. Режим внутреннего предсказания текущего блока может быть установлен как режим по умолчанию, указанный информацией об индексах.
[248] Когда индекс линии опорных отсчетов текущего блока не равен 0, может быть установлено не использовать режим по умолчанию. Например, может быть установлено не использовать режим внутреннего предсказания, не основанный на информации об углах, такой как режим DC или планарный режим, когда несмежная линия опорных отсчетов определена как линия опорных отсчетов текущего блока. Соответственно, когда индекс линии опорных отсчетов не равен 0, флаг режима по умолчанию не передается, и значение флага режима по умолчанию может быть установлено таким же, как предварительно заданное значение (т.е. ложное).
[249] Когда режим внутреннего предсказания текущего блока определен, отсчеты предсказания могут быть получены для текущего блока на основании определенного режима внутреннего предсказания (S803).
[250] Когда выбран режим DC, отсчеты предсказания генерируются для текущего блока на основании среднего значения опорных отсчетов. В частности, значения всех отсчетов в блоке предсказания могут быть сгенерированы на основании среднего значения опорных отсчетов. Среднее значение может быть получено с использованием по меньшей мере одного из верхних опорных отсчетов, расположенных сверху текущего блока, и левых опорных отсчетов, расположенных слева текущего блока.
[251] В зависимости от формы текущего блока, количество или диапазон опорных отсчетов, используемых для получения среднего значения, могут меняться. Например, когда текущий блок представляет собой блок неквадратной формы, ширина которого больше, чем высота, среднее значение может быть вычислено с использованием только верхних опорных отсчетов. С другой стороны, когда текущий блок представляет собой блок неквадратной формы, ширина которого меньше, чем высота, среднее значение может быть вычислено с использованием только левых опорных отсчетов. То есть, когда ширина и высота текущего блока различаются, среднее значение может быть вычислено с использованием только опорных отсчетов, смежных с тем, что больше. Альтернативно на основании соотношения ширины и высоты текущего блока можно определить, следует вычислять среднее значение с использованием только верхних опорных отсчетов или следует вычислять среднее значение с использованием только левых опорных отсчетов.
[252] Когда выбран планарный режим, отсчет предсказания может быть получен с использованием отсчета предсказания в горизонтальном направлении и отсчета предсказания в вертикальном направлении. В данном случае отсчет предсказания в горизонтальном направлении получают на основании левого опорного отсчета и правого опорного отсчета, расположенных на той же горизонтальной линии, что и отсчет предсказания, а отсчет предсказания в вертикальном направлении получают на основании верхнего опорного отсчета и нижнего опорного отсчета, расположенных на той же вертикальной линии, что и отсчет предсказания. В данном случае правый опорный отсчет может быть сгенерирован путем копирования опорного отсчета, смежного с верхним правым углом текущего блока, а нижний опорный отсчет может быть сгенерирован путем копирования опорного отсчета, смежного с нижним левым углом текущего блока. Отсчет предсказания в горизонтальном направлении может быть получен на основании операции взвешенного суммирования левого опорного отсчета и правого опорного отсчета, а отсчет предсказания в вертикальном направлении может быть получен на основании операции взвешенного суммирования верхнего опорного отсчета и нижнего опорного отсчета. В этом случае значение взвешивания, присвоенное каждому опорному отсчету, может быть определено согласно положению отсчета предсказания. Отсчет предсказания может быть получен на основании операции усреднения или операции взвешенного суммирования отсчета предсказания в горизонтальном направлении и отсчета предсказания в вертикальном направлении. Когда выполняется операция взвешенного суммирования, значения взвешивания, применяемые к отсчету предсказания в горизонтальном направлении и отсчету предсказания в вертикальном направлении, могут быть определены на основании положения отсчета предсказания.
[253] Когда выбран режим предсказания, основанный на информации об углах, может быть определен параметр, указывающий направление предсказания (или угол предсказания) выбранного режима предсказания, основанного на информации об углах. В таблице 2 показан параметр intraPredAng внутреннего направления каждого режима внутреннего предсказания.
[254] [Таблица 2]
[255] Когда определены 35 режимов внутреннего предсказания, в таблице 2 показан параметр внутреннего направления каждого режима внутреннего предсказания, имеющего любой индекс от 2 до 34. Когда определены более 33 режимов внутреннего предсказания, основанных на информации об углах, таблица 2 дополнительно поделена, чтобы установить параметр внутреннего направления каждого режима внутреннего предсказания, основанного на информации об углах.
[256] После размещения верхних опорных отсчетов и левых опорных отсчетов текущего блока в линию отсчет предсказания может быть получен на основании значения параметра внутреннего направления. В этом случае, когда значение параметра внутреннего направления представляет собой отрицательное значение, левые опорные отсчеты и верхние опорные отсчеты могут быть расположены в линию.
[257] На фиг. 11 и 12 представлены виды, показывающие пример одномерного массива, размещающего опорные отсчеты в линию.
[258] На фиг. 11 представлен вид, показывающий пример одномерного массива в вертикальном направлении, размещающего опорные отсчеты в вертикальном направлении, а на фиг. 12 представлен вид, показывающий пример одномерного массива в горизонтальном направлении, размещающего опорные отсчеты в горизонтальном направлении. Варианты осуществления, представленные на фиг. 11 и 12, будут описаны с предположением, что определены 35 режимов внутреннего предсказания.
[259] Когда индекс режима внутреннего предсказания является любым из 11-18, может быть применен одномерный массив в горизонтальном направлении, в котором верхние опорные отсчеты поворачиваются против часовой стрелки, а когда индекс режима внутреннего предсказания является любым из 19-25, может быть применен одномерный массив в вертикальном направлении, в котором левые опорные отсчеты поворачиваются по часовой стрелке. При расположении опорных отсчетов в линию можно учесть угол режима внутреннего предсказания.
[260] Параметр определения опорного отсчета может быть определен на основании параметра внутреннего направления. Параметр определения опорного отсчета может содержать индекс опорного отсчета для указания опорного отсчета и параметр значения взвешивания для определения значения взвешивания, применяемого к опорному отсчету.
[261] Индекс iIdx опорного отсчета и параметр ifact значения взвешивания могут быть получены с помощью уравнений 4 и 5, показанных ниже, соответственно.
[262] [Уравнение 4]
[263] [Уравнение 5]
[264] В уравнениях 4 и 5 Pang обозначает параметр внутреннего направления. Опорный отсчет, указанный индексом iIdx опорного отсчета, соответствует целому пикселю.
[265] По меньшей мере один или более опорных отсчетов могут быть указаны для получения отсчета предсказания. В частности, положение опорного отсчета, используемого для получения отсчета предсказания, может быть указано с учетом наклона режима предсказания. Например, опорный отсчет, используемый для получения отсчета предсказания, может быть указан с использованием индекса iIdx опорного отсчета.
[266] В этом случае, когда наклон режима внутреннего предсказания не выражен одним опорным отсчетом, отсчет предсказания может быть сгенерирован путем интерполяции множества опорных отсчетов. Например, когда наклон режима внутреннего предсказания представляет собой значение между наклоном между отсчетом предсказания и первым опорным отсчетом и наклоном между отсчетом предсказания и вторым опорным отсчетом, отсчет предсказания может быть получен путем интерполяции первого опорного отсчета и второго опорного отсчета. То есть, когда угловая линия, проходящая под углом внутреннего предсказания, не проходит сквозь опорный отсчет, расположенный в целом пикселе, отсчет предсказания может быть получен путем интерполяции опорных отсчетов, смежных с левой и правой или верхней или нижней сторонами положения, в котором угловая линия проходит сквозь.
[267] В уравнении 6 показан пример получения отсчета предсказания на основании опорных отсчетов.
[268] [Уравнение 6]
[269] В уравнении 6 P обозначает отсчет предсказания, а Ref_1D обозначает любой из одномерно размещенных опорных отсчетов. В этом случае положение опорного отсчета может быть определено посредством положения (x, y) отсчета предсказания и индекса iIdx опорного отсчета.
[270] Когда наклон режима внутреннего предсказания может быть выражен в виде одного опорного отсчета, параметр значения взвешивания ifact установлен равным 0. Соответственно, уравнение 6 может быть упрощено, как показано в уравнении 7.
[271] [Уравнение 7]
[272] Внутреннее предсказание для текущего блока может быть выполнено на основании множества режимов внутреннего предсказания. Например, режим внутреннего предсказания может быть получен для каждого отсчета предсказания, и отсчет предсказания может быть получен на основании режима внутреннего предсказания, присвоенного каждому отсчету предсказания.
[273] Альтернативно режим внутреннего предсказания может быть получен для каждого участка, и внутреннее предсказание для каждого участка может быть выполнено на основании режима внутреннего предсказания, присвоенного каждому участку. В данном случае участок может содержать по меньшей мере один отсчет. По меньшей мере одно из размера и формы участка может быть адаптивно определен на основании по меньшей мере одного из размера, формы и режима внутреннего предсказания текущего блока. Альтернативно по меньшей мере одно из размера и формы участка может быть предварительно задан в кодере и декодере, чтобы быть независимым от размера или формы текущего блока.
[274] Альтернативно внутреннее предсказание может быть выполнено на основании каждого из множества внутренних предсказаний, и конечный отсчет предсказания может быть получен на основании операции усреднения или операции взвешенного суммирования множества отсчетов предсказания, полученных с помощью множества внутренних предсказаний. Например, первый отсчет предсказания может быть получен путем выполнения внутреннего предсказания на основании первого режима внутреннего предсказания, а второй отсчет предсказания может быть получен путем выполнения внутреннего предсказания на основании второго режима внутреннего предсказания. После этого конечный отсчет предсказания может быть получен на основании операции усреднения или операции взвешенного суммирования первого отсчета предсказания и второго отсчета предсказания. В этом случае значение взвешивания, присвоенное каждому из первого отсчета предсказания и второго отсчета предсказания, может быть определено с учетом по меньшей мере одного из того, является ли первый режим внутреннего предсказания режимом предсказания, не основанным на информации об углах / режимом предсказания, основанным на информации об углах, того, является ли второй режим внутреннего предсказания режимом предсказания, не основанным на информации об углах / режимом предсказания, основанным на информации об углах, и режима внутреннего предсказания соседнего блока.
[275] Множество режимов внутреннего предсказания могут представлять собой комбинацию режима внутреннего предсказания, не основанного на информации об углах, и режима предсказания, основанного на информации об углах, комбинацию режимов предсказания, основанных на информации об углах, или комбинацию режимов предсказания, не основанных на информации об углах.
[276] На фиг. 13 представлен вид, показывающий пример углов, образованных между режимами внутреннего предсказания, основанными на информации об углах, и прямой линией, параллельной оси x.
[277] Как показано в примере на фиг. 13, режимы предсказания, основанные на информации об углах, могут существовать между диагональным направлением вниз и влево и диагональным направлением вверх и вправо. При описании в отношении угла, образованного осью x и режимом предсказания, основанным на информации об углах, режимы предсказания, основанные на информации об углах, могут существовать между 45 градусами (диагональным направлением вниз и влево) и -135 градусами (диагональным направлением вверх и вправо).
[278] Когда текущий блок имеет неквадратную форму, согласно режиму внутреннего предсказания текущего блока может иметь место случай получения отсчета предсказания благодаря использованию опорного отсчета дальше от отсчета предсказания вместо опорного отсчета еще ближе к отсчету предсказания из опорных отсчетов, расположенных на угловой линии, проходящей под углом внутреннего предсказания.
[279] На фиг. 14 представлен вид, показывающий вариант осуществления получения отсчетов предсказания, когда текущий блок имеет неквадратную форму.
[280] Например, как показано в примере на фиг. 14 (a), предполагается, что текущий блок имеет неквадратную форму, ширина которой больше, чем высота, и режим внутреннего предсказания текущего блока является режимом внутреннего предсказания, основанным на информации об углах, имеющим угол от 0 до 45 градусов. В приведенном выше случае, когда получают отсчет предсказания A возле правого столбца текущего блока, может иметь место случай использования левого опорного отсчета L далеко от отсчета предсказания вместо верхнего опорного отсчета T возле отсчета предсказания из опорных отсчетов, расположенных на угловом режиме, проходящим под углом.
[281] В качестве другого примера, как показано в примере на фиг. 14 (b), предполагается, что текущий блок имеет неквадратную форму, высота которой больше, чем ширина, и режим внутреннего предсказания текущего блока является режимом внутреннего предсказания, основанным на информации об углах, имеющим угол от -90 до -135 градусов. В приведенном выше случае, когда получают отсчет предсказания A возле нижней строки текущего блока, может иметь место случай использования верхнего опорного отсчета T далеко от отсчета предсказания вместо левого опорного отсчета L возле отсчета предсказания из опорных отсчетов, расположенных на угловом режиме, проходящим под углом.
[282] Для решения проблемы, описанной выше, когда текущий блок имеет неквадратную форму, режим внутреннего предсказания текущего блока может быть заменен режимом внутреннего предсказания в противоположном направлении. Соответственно, режимы предсказания, основанные на информации об углах, имеющие угол больше или меньше, чем у режимов предсказания, основанных на информации об углах, показанных на фиг. 10, могут быть использованы для блока неквадратной формы. Такой режим внутреннего предсказания, основанный на информации об углах, может быть определен как широкоугольный режим внутреннего предсказания. Широкоугольный режим внутреннего предсказания представляет режим внутреннего предсказания, основанный на информации об углах, который не принадлежит к диапазону от 45 до -135 градусов.
[283] На фиг. 15 представлен вид, показывающий широкоугольные режимы внутреннего предсказания.
[284] В примере, показанном на фиг. 15, режимы внутреннего предсказания с индексом от -1 до -14 и режимы внутреннего предсказания с индексом от 67 до 80 представляют широкоугольные режимы внутреннего предсказания.
[285] Хотя на фиг. 15 показаны 14 широкоугольных режимов внутреннего предсказания (от -1 до -14), имеющих угол, который больше 45 градусов, и 14 широкоугольных режимов внутреннего предсказания (от 67 до 80), имеющих угол, который меньше -135 градусов, может быть определено большее или меньшее количество широкоугольных режимов внутреннего предсказания.
[286] Когда используется широкоугольный режим внутреннего предсказания, длина верхних опорных отсчетов может быть установлена равной 2W + 1, а длина левых опорных отсчетов может быть установлена равной 2H + 1.
[287] Так как используется широкоугольный режим внутреннего предсказания, отсчет A, показанный на фиг. 14 (a), может быть предсказан с использованием опорного отсчета T, а отсчет A, показанный на фиг. 14 (b), может быть предсказан с использованием опорного отсчета L.
[288] Путем сложения существующих режимов внутреннего предсказания и N широкоугольных режимов внутреннего предсказания можно использовать суммарно 67+N режимов внутреннего предсказания. Например, в таблице 3 показаны параметры внутреннего направления режимов внутреннего предсказания, когда определены 20 широкоугольных режимов внутреннего предсказания.
[289] [Таблица 3]
[290] Когда текущий блок имеет неквадратную форму, и режим внутреннего предсказания текущего блока, полученный на этапе S802, принадлежит к диапазону преобразования, режим внутреннего предсказания текущего блока может быть преобразован в широкоугольный режим внутреннего предсказания. Диапазон преобразования может быть определен на основании по меньшей мере одного из размера, формы и соотношения текущего блока. В данном случае соотношение может представлять соотношение ширины и высоты текущего блока.
[291] Когда текущий блок имеет неквадратную форму, ширина которой больше, чем высота, диапазон преобразования может быть установлен от индекса режима внутреннего предсказания (например, 66) диагонального направления вверх и вправо (индекса режима внутреннего предсказания в диагональном направлении вверх и вправо - N). В данном случае N может быть определен на основании соотношения текущего блока. Когда режим внутреннего предсказания текущего блока принадлежит к диапазону преобразования, режим внутреннего предсказания может быть преобразован в широкоугольный режим внутреннего предсказания. Преобразование может представлять собой вычитание предварительно заданного значения из режима внутреннего предсказания, и предварительно заданное значение может представлять собой общее число (например, 67) режимов внутреннего предсказания за исключением широкоугольных режимов внутреннего предсказания.
[292] Согласно варианту осуществления, описанному выше, режимы внутреннего предсказания с 66-го по 53-й могут быть преобразованы в широкоугольные режимы внутреннего предсказания с -1-го по -14-й соответственно.
[293] Когда текущий блок имеет неквадратную форму, высота которой больше, чем ширина, диапазон преобразования может быть установлен от индекса режима внутреннего предсказания (например, 2) диагонального направления вниз и влево (индекса режима внутреннего предсказания в диагональном направлении вниз и влево + M). В данном случае M может быть определен на основании соотношения текущего блока. Когда режим внутреннего предсказания текущего блока принадлежит к диапазону преобразования, режим внутреннего предсказания может быть преобразован в широкоугольный режим внутреннего предсказания. Преобразование может представлять собой добавление предварительно заданного значения к режиму внутреннего предсказания, и предварительно заданное значение может представлять собой общее число (например, 65) режимов внутреннего предсказания, основанных на информации об углах, за исключением широкоугольных режимов внутреннего предсказания.
[294] Согласно варианту осуществления, описанному выше, режимы внутреннего предсказания со 2-го по 15-й могут быть преобразованы в широкоугольные режимы внутреннего предсказания с 67-го по 80-й соответственно.
[295] Далее режимы внутреннего предсказания, принадлежащие к диапазону преобразования, будут называться широкоугольными заменяющими режимами внутреннего предсказания.
[296] Диапазон преобразования может быть определен на основании соотношения текущего блока. Например, в таблицах 4 и 5 показан диапазон преобразования, когда определены 35 режимов внутреннего предсказания и 67 режимов внутреннего предсказания за исключением широкоугольных режимов внутреннего предсказания соответственно.
[297] [Таблица 4]
[298] [Таблица 5]
[299] Как показано в примерах из таблиц 4 и 5, количество широкоугольных заменяющих режимов внутреннего предсказания, принадлежащих к диапазону преобразования, может меняться согласно соотношению текущего блока.
[300] Диапазон преобразования, как показано в таблице 6, может быть установлен путем подразделения соотношения текущего блока.
[301] [Таблица 6]
[302] Может быть установлено не использовать широкоугольный режим внутреннего предсказания, когда несмежная линия опорных отсчетов определена как линия опорных отсчетов текущего блока или когда используется способ кодирования с внутренним предсказанием с несколькими линиями для выбора любой из множества линий опорных отсчетов. То есть, хотя текущий блок имеет неквадратную форму, и режим внутреннего предсказания текущего блока принадлежит к диапазону преобразования, режим внутреннего предсказания текущего блока может не быть преобразован в широкоугольный режим внутреннего предсказания.
[303] Альтернативно могут быть установлены несмежные линии опорных отсчетов как недоступные в качестве линии опорных отсчетов текущего блока, или может быть установлено не использовать способ кодирования с внутренним предсказанием с несколькими линиями для выбора любой из множества линий опорных отсчетов, когда режим внутреннего предсказания текущего блока определен как широкоугольный режим внутреннего предсказания. Когда способ кодирования с внутренним предсказанием с несколькими линиями не используется, смежная линия опорных отсчетов может быть определена как линия опорных отсчетов текущего блока.
[304] Когда широкоугольный режим внутреннего предсказания не используется, сумма nTbW и nTbH может быть установлена как refW и refH. Соответственно, за исключением верхнего левого опорного отсчета, несмежный опорный отсчет, находящийся на расстоянии i от текущего блока, может включать вплоть до (nTbW + nTbH + offsetX[i]) верхних опорных отсчетов и вплоть до (nTbW + nTbH + offsetY[i]) левых опорных отсчетов. То есть несмежный опорный отсчет, находящийся на расстоянии i от текущего блока, может включать вплоть до (2nTbW + 2nTbH + offsetX[i] + offsetY[i] + 1) опорных отсчетов. Например, когда значение whRatio больше чем 1, значение offsetX может быть установлено так, чтобы быть больше, чем значение offsetY. Например, значение offsetX может быть установлено равным 1, и значение offsetY может быть установлено равным 0. С другой стороны, когда значение whRatio меньше чем 1, значение offsetY может быть установлено так, чтобы быть больше, чем значение offsetX. Например, значение offsetX может быть установлено равным 0, и значение offsetY может быть установлено равным 1.
[305] Так как используются широкоугольные режимы внутреннего предсказания в дополнение к существующим режимам внутреннего предсказания, увеличиваются ресурсы, требуемые для кодирования широкоугольных режимов внутреннего предсказания, и, таким образом, эффективность кодирования может быть снижена. Соответственно, эффективность кодирования может быть улучшена за счет кодирования заменяющих режимов внутреннего предсказания для широкоугольных режимов внутреннего предсказания вместо кодирования широкоугольных режимов внутреннего предсказания как таковых.
[306] Например, когда текущий блок кодируется с использованием 67-го широкоугольного режима внутреннего предсказания, 2-й режим внутреннего предсказания, который представляет собой заменяющий режим внутреннего предсказания 67-го широкоугольного режима внутреннего предсказания, может быть закодирован с использованием режима внутреннего предсказания текущего блока. Кроме того, когда текущий блок кодируется с использованием -1-го широкоугольного режима внутреннего предсказания, 66-й режим внутреннего предсказания, который представляет собой заменяющий режим внутреннего предсказания -1-го широкоугольного режима внутреннего предсказания, может быть закодирован с использованием режима внутреннего предсказания текущего блока.
[307] Декодер может декодировать режим внутреннего предсказания текущего блока и определять, принадлежит ли декодированный режим внутреннего предсказания к диапазону преобразования. Когда декодированный режим внутреннего предсказания представляет собой широкоугольный заменяющий режим внутреннего предсказания, режим внутреннего предсказания может быть преобразован в широкоугольный режим внутреннего предсказания.
[308] Альтернативно, когда текущий блок кодируется с использованием широкоугольного режима внутреннего предсказания, широкоугольный режим внутреннего предсказания может быть закодирован как есть.
[309] Кодирование режима внутреннего предсказания может быть выполнено на основании списка MPM, описанного выше. В частности, когда соседний блок кодируется с использованием широкоугольного режима внутреннего предсказания, MPM может быть установлен на основании широкоугольного заменяющего режима внутреннего предсказания, соответствующего широкоугольному режиму внутреннего предсказания. Например, когда соседний блок кодируется в широкоугольном режиме внутреннего предсказания, переменная candIntraPredModeX (X представляет собой A или B) может быть установлена равной широкоугольному заменяющему режиму внутреннего предсказания.
[310] Альтернативно MPM может быть установлен на основании широкоугольного режима внутреннего предсказания соседнего блока. Например, когда соседний блок кодируется в широкоугольном режиме внутреннего предсказания, переменная candIntraPredModeX может быть установлена равной широкоугольному режиму внутреннего предсказания.
[311] MPM может быть получен на основании того, является ли линия опорных отсчетов текущего блока несмежной линией опорных отсчетов, или того, применяется ли способ кодирования с внутренним предсказанием с несколькими линиями для выбора одной из множества линий опорных отсчетов. Например, когда линия опорных отсчетов текущего блока представляет собой несмежную линию опорных отсчетов, и режим внутреннего предсказания соседнего блока, смежного с текущим блоком, представляет собой широкоугольный режим внутреннего предсказания, режим по умолчанию может быть установлен как MPM текущего блока.
[312] Например, когда candIntraPredModeA, полученный на основании режима внутреннего предсказания левого соседнего блока, и candIntraPredModeB, полученный на основании режима внутреннего предсказания верхнего соседнего блока, являются одинаковыми, и candIntraPredModeA представляет собой планарный режим или режим DC, MPM могут быть получены следующим образом с учетом того, равен ли индекс линии опорных отсчетов текущего блока 0.
[313] MPM[0] = (IntraLumaRefLineIdx = 0) ? Intra_Planar : INTRA_ANGULAR 50
[314] MPM[1] = (IntraLumaRefLineIdx = 0) ? Intra_DC : INTRA_ANGULAR 18
[315] MPM[2] = INTRA_ANGULAR 2
[316] То есть, когда индекс линии опорных отсчетов текущего блока равен 0, планарный режим и режим DC устанавливаются как MPM, тогда как, когда индекс линии опорных отсчетов текущего блока не равен 0, режим внутреннего предсказания в вертикальном направлении (INTRA_ANGULAR 50) и режим внутреннего предсказания в горизонтальном направлении (INTRA_ANGULAR 18) могут быть установлены как MPM.
[317] Когда индекс линии опорных отсчетов текущего блока не равен 0, и candIntraPredModeA и candIntraPredModeB являются одинаковыми, и candIntraPredModeA представляет собой широкоугольный режим внутреннего предсказания, MPM могут быть получены следующим образом.
[318] MPM[0] = INTRA_ANGULAR2
[319] MPM[1] = INTRA_ANGULAR18
[320] MPM[2] = INTRA_ANGULAR50
[321] Альтернативно MPM могут быть получены следующим образом.
[322] MPM[0] = INTRA_ANGULAR50
[323] MPM[1] = INTRA_ANGULAR18
[324] MPM[2] = INTRA_ANGULAR2
[325] То есть, когда индекс линии опорных отсчетов текущего блока не равен 0, широкоугольный режим внутреннего предсказания может не быть установлен как MPM.
[326] Когда candIntraPredModeA и candIntraPredModeB являются одинаковыми, и candIntraPredModeA представляет собой режим внутреннего предсказания, основанный на информации об углах, MPM могут быть получены следующим образом.
[327] MPM[0] = candIntraPredModeA
[328] MPM[1] = 2 + ((candIntraPredModeA + 61) % 64)
[329] MPM[2] = 2 + ((candIntraPredModeA - 1) % 64)
[330] Когда индекс линии опорных отсчетов текущего блока равен 0, и candIntraPredModeA и candIntraPredModeB отличаются, MPM[0] и MPM[1] могут быть установлены равными candIntraPredModeA и candIntraPredModeB соответственно. MPM[2] может быть установлен равным любому из планарного режима, режима DC или вертикального режима, который не является таким же, как режимы MPM[0] и MPM[1].
[331] Когда индекс линии опорных отсчетов текущего блока не равен 0, и один из candIntraPredModeA и candIntraPredModeB представляет собой планарный режим, а другой представляет собой режим DC, MPM могут быть получены следующим образом.
[332] MPM[0] = INTRA_ANGULAR2
[333] MPM[1] = INTRA_ANGULAR18
[334] MPM[2] = INTRA_ANGULAR50
[335] Когда индекс линии опорных отсчетов текущего блока не равен 0, и как candIntraPredModeA, так и candIntraPredModeB представляют собой широкоугольные режимы внутреннего предсказания, MPM могут быть получены следующим образом.
[336] MPM[0] = INTRA_ANGULAR2
[337] MPM[1] = INTRA_ANGULAR18
[338] MPM[2] = INTRA_ANGULAR50
[339] Когда индекс линии опорных отсчетов текущего блока не равен 0, и любой из candIntraPredModeA и candIntraPredModeB представляет собой широкоугольный режим внутреннего предсказания, любой, который не представляет собой широкоугольный режим внутреннего предсказания, из candIntrapredModeA и candIntraPredModeB может быть установлен как MPM[0], и режимы внутреннего предсказания, подобные MPM[0], могут быть установлены как MPM[1] и MPM[2]. Например, когда candIntraPredModeA не представляет собой широкоугольный режим внутреннего предсказания, и candIntraPredModeB представляет собой широкоугольный режим внутреннего предсказания, MPM могут быть получены следующим образом.
[340] MPM[0] = candIntraPredModeA
[341] MPM[1] = 2 + ((candIntraPredModeA + 61) % 64)
[342] MPM[2] = 2 + ((candIntraPredModeA - 1) % 64)
[343] С другой стороны, когда candIntraPredModeA представляет собой широкоугольный режим внутреннего предсказания, и candIntraPredModeB не представляет собой широкоугольный режим внутреннего предсказания, MPM могут быть получены следующим образом.
[344] MPM[0] = candIntraPredModeB
[345] MPM[1] = 2 + ((candIntraPredModeB + 61) % 64)
[346] MPM[2] = 2 + ((candIntraPredModeB - 1) % 64)
[347] Когда индекс линии опорных отсчетов текущего блока не равен 0, и любой из candIntraPredModeA и candIntraPredModeB представляет собой планарный режим или режим DC, а другой не представляет собой широкоугольный режим внутреннего предсказания, любой, который не представляет собой широкоугольный режим внутреннего предсказания, из candIntrapredModeA и candIntraPredModeB может быть установлен как MPM[0], и режимы внутреннего предсказания, подобные MPM[0], могут быть установлены как MPM[1] и MPM[2]. Например, когда candIntraPredModeA не представляет собой широкоугольный режим внутреннего предсказания, и candIntraPredModeB представляет собой планарный режим или режим DC, MPM могут быть получены следующим образом.
[348] MPM[0] = candIntraPredModeA
[349] MPM[1] = 2 + ((candIntraPredModeA + 61) % 64)
[350] MPM[2] = 2 + ((candIntraPredModeA - 1) % 64)
[351] С другой стороны, когда candIntraPredModeA представляет собой планарный режим или режим DC, и candIntraPredModeB не представляет собой широкоугольный режим внутреннего предсказания, MPM могут быть получены следующим образом.
[352] MPM[0] = candIntraPredModeB
[353] MPM[1] = 2 + ((candIntraPredModeB + 61) % 64)
[354] MPM[2] = 2 + ((candIntraPredModeB - 1) % 64)
[355] Когда индекс линии опорных отсчетов текущего блока не равен 0, и как candIntraPredModeA, так и candIntraPredModeB не представляют собой широкоугольные режимы внутреннего предсказания, candIntraPredModeA и candIntraPredModeB могут быть установлены как MPM[0] и MPM[1] соответственно. Любой режим, который не перекрывается с MPM[0] и MPM[1], из режима внутреннего предсказания в вертикальном направлении (INTRA_ANGULAR50), режима внутреннего предсказания в горизонтальном направлении (INTRA_ANGULAR18) и режима внутреннего предсказания в диагональном направлении вниз и влево (INTRA_ANGULAR2) может быть установлен как MPM[2].
[356] Блок кодирования или блок преобразования может быть разбит на множество подблоков (или подразделов). Когда блок кодирования или блок преобразования разбит на множество подблоков, предсказание, преобразование и квантование могут быть выполнены в отношении каждого подблока. Разбиение блока кодирования или блока преобразования на множество подблоков может быть определено как способ внутреннего кодирования с подразбиением.
[357] Информация, указывающая то, применяется ли способ внутреннего кодирования с подразбиением, может быть передана посредством битового потока. Информация может представлять собой 1-битный флаг. Например, элемент синтаксиса «intra_subpartitions_mode_flag», указывающий то, разбит ли блок кодирования или блок преобразования на множество подблоков, может быть передан посредством битового потока.
[358] Альтернативно то, применяется ли способ внутреннего кодирования с подразбиением, может быть определено на основании по меньшей мере одного из размера, формы и режима внутреннего предсказания блока кодирования или блока преобразования. Например, когда режим внутреннего предсказания блока кодирования представляет собой режим внутреннего предсказания, не основанный на информации об углах (например, планарный режим или режим DC) или предварительно заданный режим внутреннего предсказания, основанный на информации об углах (например, режим внутреннего предсказания в горизонтальном направлении, режим внутреннего предсказания в вертикальном направлении или режим внутреннего предсказания в диагональном направлении), способ внутреннего кодирования с подразбиением может не применяться. Альтернативно может быть установлено не использовать способ внутреннего кодирования с подразбиением, когда размер блока кодирования меньше, чем пороговое значение.
[359] Альтернативно, когда внутреннее предсказание выполняется в отношении подблока на основании режима внутреннего предсказания блока кодирования, тогда то, следует ли применять способ внутреннего кодирования с подразбиением, может быть определено на основании того, должен ли восстановленный отсчет, включенный в соседний подблок, использоваться как опорный отсчет, когда внутреннее предсказание выполняется в отношении подблока. Например, может быть установлено не использовать способ внутреннего кодирования с подразбиением, когда режим внутреннего предсказания блока кодирования представляет собой режим внутреннего предсказания в диагональном направлении или широкоугольный режим внутреннего предсказания, и соседний подблок может не использоваться как опорный отсчет, когда внутреннее предсказание выполняется в отношении подблока на основании режима внутреннего предсказания.
[360] Альтернативно может быть установлено не использовать способ внутреннего кодирования с подразбиением, когда соотношение высоты и ширины блока кодирования больше, чем пороговое значение, или меньше, чем пороговое значение. Альтернативно, когда по меньшей мере одно из высоты и ширины блока кодирования меньше, чем пороговое значение, или равняется ему, способ внутреннего кодирования с подразбиением может не использоваться. Например, когда как высота, так и ширина блока кодирования меньше, чем пороговое значение, или равняются ему, способ внутреннего кодирования с подразбиением может не использоваться. Пороговое значение может представлять собой значение, предварительно заданное в кодере и декодере. Альтернативно информация для определения порогового значения может быть передана посредством битового потока.
[361] Альтернативно то, следует ли передавать флаг, указывающий то, следует ли применять способ внутреннего кодирования с подразбиением, может быть определено на основании по меньшей мере одного из размера, формы и режима внутреннего предсказания блока кодирования или блока преобразования. Например, только когда как высота, так и ширина блока кодирования меньше, чем пороговое значение, или равняются ему, и/или размер блока кодирования больше, чем пороговое значение, или равняется ему, флаг, указывающий то, следует ли применять способ внутреннего кодирования с подразбиением, может быть кодирован и передан. Когда флаг, указывающий то, следует ли применять способ внутреннего кодирования с подразбиением, не кодируется, способ внутреннего кодирования с подразбиением может не применяться.
[362] Когда применяется способ внутреннего кодирования с подразбиением, может быть определен тип разбиения блока кодирования или блока преобразования. В данном случае тип разбиения указывает направление разбиения блока кодирования или блока преобразования. Например, разбиение в вертикальном направлении может означать разбиение блока кодирования или блока преобразования с использованием по меньшей мере одной вертикальной линии, и разбиение в горизонтальном направлении может означать разбиение блока кодирования или блока преобразования с использованием по меньшей мере одной горизонтальной линии.
[363] На фиг. 16 представлен вид, показывающий пример разбиения в вертикальном направлении и разбиения в горизонтальном направлении.
[364] На фиг. 16 (a) показан пример, в котором блок кодирования разбит на два подблока, и на фиг. 16 (b) показан пример, в котором блок кодирования разбит на четыре подблока.
[365] Информация для определения типа разбиения блока кодирования или блока преобразования может быть передана посредством битового потока. Например, может быть передана информация, указывающая то, применяется ли разбиение в вертикальном направлении или разбиение в горизонтальном направлении к блоку кодирования или блоку преобразования. Информация может представлять собой intra_subpart_type_flag 1-битного флага. Когда значение флага равно 1, это указывает, что блок кодирования или блок преобразования разбит в горизонтальном направлении, а когда значение флага равно 0, это указывает, что блок кодирования или блок преобразования разбит в вертикальном направлении.
[366] Альтернативно тип разбиения блока кодирования или блока преобразования может быть определен на основании размера, формы или режима внутреннего предсказания блока кодирования или блока преобразования. Например, тип разбиения блока кодирования может быть определен на основании соотношения ширины и высоты блока кодирования. Например, когда значение whRatio, указывающее соотношение высоты и ширины блока кодирования, больше, чем первое пороговое значение, или равняется ему, разбиение в вертикальном направлении может быть применено к блоку кодирования. В ином случае разбиение в горизонтальном направлении может быть применено к блоку кодирования.
[367] На фиг. 17 представлен вид, показывающий пример определения типа разбиения блока кодирования.
[368] Для удобства объяснения предполагается, что первое пороговое значение равняется 2. В примере, показанном на фиг. 17 (a), whRatio блока кодирования равняется 1, что меньше, чем первое пороговое значение. Соответственно, кодирование информации, указывающей тип разбиения блока кодирования, может быть пропущено, и разбиение в горизонтальном направлении может быть применено к блоку кодирования.
[369] В примере, показанном на фиг. 17 (b), whRatio блока кодирования равняется 2, что равняется первому пороговому значению. Соответственно, кодирование информации, указывающей тип разбиения блока кодирования, может быть пропущено, и разбиение в вертикальном направлении может быть применено к блоку кодирования.
[370] Тип разбиения блока кодирования может быть определен с использованием второго порогового значения, имеющего знак, противоположный знаку первого порогового значения. Например, когда значение whRatio меньше, чем второе пороговое значение, или равняется ему, разбиение в горизонтальном направлении может быть применено к блоку кодирования, а в ином случае разбиение в вертикальном направлении может быть применено к блоку кодирования. Абсолютные значения первого порогового значения и второго порогового значения являются одинаковыми, а их знаки могут отличаться. Например, когда первое пороговое значение представляет собой N (в данном случае N представляет собой целое, такое как 1, 2, 4 или т.п.), второе пороговое значение может представлять собой -N.
[371] На фиг. 18 представлен вид, показывающий пример определения типа разбиения блока кодирования.
[372] Для удобства объяснения предполагается, что второе пороговое значение равняется -2. В примере, показанном на фиг. 18 (a), whRatio блока кодирования равняется -1, что больше, чем второе пороговое значение. Соответственно, кодирование информации, указывающей тип разбиения блока кодирования, может быть пропущено, и разбиение в вертикальном направлении может быть применено к блоку кодирования.
[373] В примере, показанном на фиг. 18 (b), whRatio блока кодирования равняется -2, что равняется второму пороговому значению. Соответственно, кодирование информации, указывающей тип разбиения блока кодирования, может быть пропущено, и разбиение в горизонтальном направлении может быть применено к блоку кодирования.
[374] Альтернативно тип разбиения блока кодирования может быть определен на основании первого порогового значения и второго порогового значения. Например, когда значение whRatio больше, чем первое пороговое значение, или равняется ему, разбиение в горизонтальном направлении может быть применено к блоку кодирования, а когда значение whRatio меньше, чем второе пороговое значение, или равняется ему, разбиение в вертикальном направлении может быть применено к блоку кодирования. Когда значение whRatio находится между первым пороговым значением и вторым пороговым значением, тип разбиения текущего блока может быть определен путем анализа информации из битового потока.
[375] Первое пороговое значение и второе пороговое значение могут быть предварительно заданы в кодере и декодере. Альтернативно первое пороговое значение и второе пороговое значение могут быть определены для каждой последовательности, изображения или слайса.
[376] Альтернативно тип разбиения может быть определен на основании размера блока кодирования или блока преобразования. Например, когда размер блока кодирования составляет N×n, может быть применено разбиение в вертикальном направлении, а когда размер блока кодирования составляет n×N, может быть применено разбиение в горизонтальном направлении. В данном случае n может представлять собой натуральное число, которое меньше, чем N. N и/или n могут представлять собой значения, предварительно заданные в кодере и декодере. Альтернативно информация для определения N и/или n может быть передана посредством битового потока. Например, N может равняться 32, 64, 128 или 256. Соответственно, когда размер блока кодирования составляет 128×n (где n представляет собой натуральное число, такое как 16, 32 или 64), может быть применено разбиение в вертикальном направлении, а когда размер блока кодирования составляет n×128, может быть применено разбиение в горизонтальном направлении.
[377] Альтернативно тип разбиения блока кодирования или блока преобразования может быть определен на основании режима внутреннего предсказания блока кодирования или блока преобразования. Например, когда режим внутреннего предсказания блока кодирования имеет горизонтальное направление или направление, подобное горизонтальному направлению, разбиение в вертикальном направлении может быть применено к блоку кодирования. В данном случае режим внутреннего предсказания в направлении, подобном горизонтальному направлению, указывает режим внутреннего предсказания, значение индексной разницы от режима внутреннего предсказания в горизонтальном направлении (например, INTRA_ANGULAR18, как показано на фиг. 10 (b)) которого меньше, чем пороговое значение, или равняется ему (например, INTRA_ANGULAR18 ± N). С другой стороны, когда режим внутреннего предсказания блока кодирования имеет вертикальное направление или направление, подобное вертикальному направлению, разбиение в горизонтальном направлении может быть применено к блоку кодирования. В данном случае режим внутреннего предсказания в направлении, подобном вертикальному направлению, указывает режим внутреннего предсказания, значение индексной разницы от режима внутреннего предсказания в вертикальном направлении (например, INTRA_ANGULAR50, как показано на фиг. 10 (b)) которого меньше, чем пороговое значение, или равняется ему (например, INTRA_ANGULAR50 *± N). В данном случае пороговое значение N может представлять собой значение, предварительно заданное в кодере и декодере. Альтернативно информация для определения порогового значения N может быть передана на уровень последовательности, изображения или слайса.
[378] На фиг. 19 представлен вид, показывающий пример, в котором тип разбиения блока кодирования определяют на основании режима внутреннего предсказания блока кодирования.
[379] Как показано в примере на фиг. 19 (a), когда режим внутреннего предсказания блока кодирования имеет направление, подобное вертикальному направлению, разбиение в горизонтальном направлении может быть применено к блоку кодирования.
[380] С другой стороны, как показано в примере на фиг. 19 (b), когда режим внутреннего предсказания блока кодирования имеет направление, подобное горизонтальному направлению, разбиение в вертикальном направлении может быть применено к блоку кодирования.
[381] В отличие от примера, описанного выше, когда режим внутреннего предсказания блока кодирования имеет горизонтальное направление или направление, подобное горизонтальному направлению, применяется разбиение в горизонтальном направлении, а когда режим внутреннего предсказания блока кодирования имеет вертикальное направление или направление, подобное вертикальному направлению, может быть применено разбиение в вертикальном направлении.
[382] Когда применяется разбиение в вертикальном или горизонтальном направлении, тип разбиения блока кодирования или блока преобразования может быть определен на основании того, меньше ли по меньшей мере одна из ширины и высоты подблока, сгенерированного путем разбиения блока кодирования или блока преобразования, чем пороговое значение. В данном случае пороговое значение может представлять собой целое, такое как 2, 4 или 8.
[383] На фиг. 20 представлен вид для описания схемы разбиения блока кодирования.
[384] Когда разбиение в горизонтальном направлении применяется к блоку кодирования размером 4×8, как показано на фиг. 20 (a), блок кодирования разбивается на подблоки размером 2×8. В этом случае, поскольку ширина подблока меньше, чем пороговое значение, разбиение в горизонтальном направлении может не допускаться для блока кодирования. С другой стороны, когда разбиение в вертикальном направлении применяется к блоку кодирования размером 4×8, блок кодирования разбивается на подблоки размером 4×4. Поскольку как ширина, так и высота подблока равняются пороговому значению или больше него, разбиение в вертикальном направлении может быть использовано для блока кодирования. Поскольку только разбиение в вертикальном направлении допускается для блока кодирования, кодирование информации, указывающей тип разбиения для блока кодирования, может быть пропущено, и разбиение в вертикальном направлении может быть применено к блоку кодирования.
[385] Когда разбиение в вертикальном направлении применяется к блоку кодирования размером 8×4, как показано на фиг. 20 (b), блок кодирования разбивается на подблоки размером 8×2. В этом случае, поскольку высота подблока меньше, чем пороговое значение, разбиение в вертикальном направлении может не допускаться для блока кодирования. С другой стороны, когда разбиение в горизонтальном направлении применяется к блоку кодирования размером 8×4, блок кодирования разбивается на подблоки размером 4×4. Поскольку как ширина, так и высота подблока равняются пороговому значению или больше него, разбиение в горизонтальном направлении может быть использовано для блока кодирования. Поскольку только разбиение в горизонтальном направлении допускается для блока кодирования, кодирование информации, указывающей тип разбиения для блока кодирования, может быть пропущено, и разбиение в вертикальном направлении может быть применено к блоку кодирования.
[386] Когда могут быть использованы как разбиение в вертикальном направлении, так и разбиение в горизонтальном направлении, тип разбиения блока кодирования может быть определен путем анализа информации, указывающей тип разбиения блока кодирования.
[387] Количество подблоков может быть определено на основании по меньшей мере одного из размера и формы блока кодирования или блока преобразования. Например, когда любая из ширины и высоты блока кодирования равняется 8, а другая равняется 4, блок кодирования может быть разбит на два подблока. С другой стороны, когда как ширина, так и высота блока кодирования равняются 8 или больше, или любая из ширины и высоты блока кодирования больше чем 8, блок кодирования может быть разбит на 4 подблока. В итоге, когда блок кодирования имеет размер 4×4, блок кодирования может не быть разбит на подблоки. Когда блок кодирования имеет размер 4×8 или 8×4, блок кодирования может быть разбит на два подблока. В других случаях блок кодирования может быть разбит на четыре подблока.
[388] Альтернативно информация, указывающая размер, форму или количество подблоков, может быть передана посредством битового потока. Размер или форма подблоков могут быть определены с помощью информации, указывающей количество подблоков. Альтернативно количество подблоков может быть определено с помощью информации, указывающей размер или форму подблоков.
[389] Когда применяется способ внутреннего кодирования с подразбиением, подблоки, сгенерированные путем разбиения блока кодирования или блока преобразования, могут использовать одинаковый режим внутреннего предсказания. Например, MPM для блока кодирования могут быть получены на основании режимов внутреннего предсказания соседних блоков, смежных с блоком кодирования, и режим внутреннего предсказания для блока кодирования может быть определен на основании полученных MPM. Когда режим внутреннего предсказания блока кодирования определен, каждый подблок может выполнять внутреннее предсказание с использованием определенного режима внутреннего предсказания.
[390] Когда применяется способ внутреннего кодирования с подразбиением, любой из MPM может быть определен как режим внутреннего предсказания блока кодирования. То есть, когда применяется способ внутреннего кодирования с подразбиением, может считаться, что флаг MPM является истинным, хотя флаг MPM не передан.
[391] Альтернативно, когда применяется способ внутреннего кодирования с подразбиением, любой из предварительно заданных кандидатных режимов внутреннего предсказания может быть определен как режим внутреннего предсказания блока кодирования. Например, любой из режима внутреннего предсказания в горизонтальном направлении, режима внутреннего предсказания в вертикальном направлении, режима внутреннего предсказания в диагональном направлении (например, по меньшей мере одного из режима внутреннего предсказания в направлении вверх и влево, режима внутреннего предсказания в направлении вверх и вправо и режима внутреннего предсказания в направлении вниз и влево) и режима внутреннего предсказания, не основанного на информации об углах, (например, по меньшей мере одного из планарного режима и режима DC) может быть определен как режим внутреннего предсказания блока кодирования. Информация об индексах, указывающая любой из предварительно заданных кандидатных режимов внутреннего предсказания, может быть передана посредством битового потока.
[392] Согласно варианту осуществления настоящего изобретения режим внутреннего предсказания по меньшей мере одного из подблоков может быть установлен так, чтобы отличаться от режимов других подблоков. Например, режим внутреннего предсказания N-го подблока может быть получен путем добавления смещения к режиму внутреннего предсказания N-1-го подблока или вычитания из него. Смещение может быть предварительно задано в кодере и декодере. Альтернативно смещение может быть получено на основании по меньшей мере одного из размера, формы и режима внутреннего предсказания блока кодирования, размера, формы и количества подблоков, а также направления разбиения блока кодирования. Альтернативно информация для получения смещения может быть передана посредством битового потока.
[393] Альтернативно, когда режим внутреннего предсказания N-1-го подблока имеет режим, не основанный на информации об углах, режим внутреннего предсказания N-го подблока также установлен так, чтобы быть таким же, как режим внутреннего предсказания N-1-го подблока, а когда режим внутреннего предсказания N-1-го подблока имеет режим, основанный на информации об углах, режим внутреннего предсказания, полученный путем добавления смещения к режиму внутреннего предсказания N-1-го подблока или вычитания из него, может быть установлен так, чтобы быть таким же, как режим внутреннего предсказания N-го подблока.
[394] Альтернативно режим внутреннего предсказания, основанный на информации об углах, может быть применен к некоторым из множества подблоков, и режим внутреннего предсказания, не основанный на информации об углах, может быть применен к другим подблокам. Подблок, к которому применен режим внутреннего предсказания, не основанный на информации об углах, может быть определен с учетом по меньшей мере одного из размера, формы, положения и количества подблоков. Альтернативно, только когда режим внутреннего предсказания, основанный на информации об углах, примененный к любому из множества подблоков, представляет собой предварительно заданное значение, режим внутреннего предсказания, не основанный на информации об углах, может быть применен к другому подблоку.
[395] Альтернативно режим внутреннего предсказания каждого подблока может быть получен из MPM. Для этого информация об индексах, указывающая любой из MPM, может быть передана для каждого подблока.
[396] Альтернативно режим внутреннего предсказания каждого подблока может быть получен из предварительно заданных кандидатных режимов внутреннего предсказания. Для этого информация об индексах, указывающая любой из предварительно заданных кандидатных режимов внутреннего предсказания, может быть передана для каждого подблока.
[397] Альтернативно информация, указывающая то, равным ли образом установлены режимы внутреннего предсказания подблоков, может быть передана посредством битового потока.
[398] Параметры квантования подблоков могут быть определены по отдельности. Соответственно, значение параметра квантования каждого подблока может быть установлено по-разному. Чтобы определить параметр квантования каждого подблока, может быть кодирована информация, указывающая значение разницы от параметра квантования предыдущего подблока. Например, значение разницы между параметром квантования N-го подблока и параметром квантования N-1-го подблока может быть кодировано для N-го подблока.
[399] Внутреннее предсказание подблока может быть выполнено с использованием опорного отсчета. В этом случае опорный отсчет может быть получен из восстановленного отсчета соседнего блока, смежного с подблоком. Когда соседний блок, смежный с подблоком, представляет собой другой подблок, включенный в блок кодирования, который является таким же, как у подблока, опорный отсчет подблока может быть получен на основании восстановленного отсчета другого подблока. Например, когда первый подблок расположен слева или сверху от второго подблока, опорный отсчет второго подблока может быть получен из восстановленного отсчета первого подблока. Для этого параллельное внутреннее предсказание может не применяться между подблоками. То есть кодирование/декодирование может быть последовательно выполнено в отношении подблоков, включенных в блок кодирования. Соответственно, после завершения кодирования/декодирования первого подблока может быть выполнено внутреннее предсказание для второго подблока.
[400] Когда применяется способ внутреннего кодирования с подразбиением, может быть установлено не использовать способ кодирования с внутренним предсказанием с несколькими линиями для выбора любой из множества линий-кандидатов опорных отсчетов. Когда способ кодирования с внутренним предсказанием с несколькими линиями не используется, смежная линия опорных отсчетов, смежная с каждым подблоком, может быть определена как линия опорных отсчетов каждого подблока.
[401] Альтернативно способ кодирования с внутренним предсказанием с несколькими линиями может быть использован даже тогда, когда применяется способ внутреннего кодирования с подразбиением. Для этого информация об индексах для указания линии опорных отсчетов может быть передана для каждого подблока. Альтернативно информация об индексах для указания линии опорных отсчетов может быть передана только для любого одного из множества подблоков, и информация об индексах может также быть применена к остальным подблокам как есть. Альтернативно может быть установлено передавать информацию об индексах для указания линии опорных отсчетов для блока кодирования и совместно использовать информацию об индексах из множества подблоков, включенных в блок кодирования.
[402] Альтернативно может быть установлено допускать только подблок, имеющий предварительно заданное положение или предварительно заданный индекс раздела, из подблоков для использования способа кодирования с внутренним предсказанием с несколькими линиями. Например, информация об индексах, указывающая любую из линий-кандидатов опорных отсчетов, может быть передана только для подблока, имеющего индекс раздела, равный 0, из множества подблоков или подблока, который находится в контакте с верхней границей или левой границей блока кодирования. Способ кодирования с внутренним предсказанием с несколькими линиями может не применяться к остальным подблокам. Соответственно, остальные подблоки могут выполнять внутреннее предсказание с использованием смежных линий опорных отсчетов.
[403] Режим кодирования с предсказанием может быть установлен по-разному для каждого подблока. Например, внутреннее предсказание может быть применено к некоторым подблокам, и предсказание, осуществляемое между изображениями, привязка к текущему изображению или комбинированное предсказание может быть применено к другим подблокам.
[404] На фиг. 21 представлен вид, показывающий пример, в котором режим кодирования с предсказанием устанавливают по-разному для каждого подблока.
[405] Режим внутреннего предсказания может быть установлен по-разному для каждого подблока, или режим кодирования с предсказанием может быть установлен по-разному. Например, в примере, показанном на фиг. 21, показано, что внутреннее предсказание применяется к подблоку 0 и подблоку 1, и привязка к текущему изображению применяется к подблоку 1 и подблоку 2.
[406] Когда используется привязка к текущему изображению, блок предсказания подблока может быть получен из уже декодированного участка текущего изображения или слайса (или группы тайлов). Когда применяется привязка к текущему изображению, вектор движения может быть получен для указания блока предсказания подблока. Вектор движения с привязкой к текущему изображению может называться «вектором блока».
[407] Вектор движения может быть получен на основании вектора движения соседнего блока, смежного с блоком кодирования или подблоком. Альтернативно информация для определения вектора движения может быть передана посредством битового потока.
[408] В этом случае максимальное значение вектора движения подблока может быть определено согласно размеру подблока, или блока кодирования, или блока преобразования, к которому принадлежит подблок. Например, вектор движения подблока может быть установлен так, чтобы не отклоняться от границы блока кодирования или блока преобразования, к которому принадлежит подблок. То есть блок предсказания подблока может быть получен из участка, кодированного/декодированного перед подблоком в блоке кодирования, к которому принадлежит подблок.
[409] Информация об индексах, указывающая любой из ранее декодированных подблоков в блоке кодирования, может быть кодирована и передана вместо вектора движения. Блок предсказания подблока может быть определен как ранее декодированный подблок, указанный с помощью информации об индексах.
[410] В качестве еще одного примера может допускаться отклонение вектора движения подблока от границы блока кодирования или блока преобразования, к которому принадлежит подблок.
[411] Когда блок предсказания генерируется в результате выполнения внутреннего предсказания, отсчеты предсказания могут быть обновлены на основании положения каждого из отсчетов предсказания, включенных в блок предсказания. Такой способ обновления может называться способом внутреннего взвешенного предсказания на основе положения отсчетов (или комбинацией предсказания в зависимости от положения (PDPC)).
[412] То, следует ли использовать PDPC, может быть определено с учетом размера, формы и режима внутреннего предсказания текущего блока, линии опорных отсчетов текущего блока, размера текущего блока и цветовой компоненты. Например, PDPC может быть использована, когда режим внутреннего предсказания текущего блока представляет собой по меньшей мере один из планарного режима, режима DC, режима в вертикальном направлении, режима в горизонтальном направлении, режима, имеющего индексное значение, которое меньше, чем в режиме в вертикальном направлении, и режима, имеющего индексное значение, которое больше, чем в режиме в горизонтальном направлении. Альтернативно PDPC может быть использована только тогда, когда по меньшей мере одна из ширины и высоты текущего блока больше чем 4. Альтернативно PDPC может быть использована только тогда, когда индекс линии опорного изображения текущего блока равен 0. Альтернативно PDPC может быть использована только тогда, когда индекс линии опорного изображения текущего блока равен предварительно заданному значению или больше него. Альтернативно PDPC может быть использована только для компонента яркости. Альтернативно то, следует ли использовать PDPC, может быть определено согласно тому, удовлетворяются ли два или более из условий, перечисленных выше.
[413] Альтернативно то, следует ли использовать PDPC, может быть определено согласно тому, используется ли способ внутреннего кодирования с подразбиением. Например, может быть установлено не использовать PDPC, когда применяется способ внутреннего кодирования с подразбиением к блоку кодирования или блоку преобразования. Альтернативно, когда применяется способ внутреннего кодирования с подразбиением к блоку кодирования или блоку преобразования, PDPC может быть применена к по меньшей мере одному из множества подблоков. В этом случае подблок, к которому применена PDPC, может быть определен на основании по меньшей мере одного из размера, формы, положения, режима внутреннего предсказания и индекса линии опорных отсчетов блока кодирования или подблока. Например, PDPC может быть применена к подблоку, смежному с верхней и/или левой границами блока кодирования, или подблоку, смежному с нижней и/или правой границами блока кодирования. Альтернативно на основании размера или формы подблока может быть определено, что следует применить PDPC ко всем подблокам, включенным в блок кодирования, или что не следует применять PDPC ко всем подблокам, включенным в блок кодирования. В качестве еще одного примера PDPC может быть применена ко всем подблокам в блоке кодирования.
[414] Альтернативно то, следует ли применять PDPC к каждому подблоку, может быть определено согласно тому, удовлетворяет ли по меньшей мере одно из размера, формы, режима внутреннего предсказания и индекса опорного изображения подблоков, сгенерированных путем разбиения блока кодирования или блока преобразования, предварительно установленному условию. Например, когда по меньшей мере одна из ширины и высоты подблока больше чем 4, PDPC может быть применена к подблоку.
[415] В качестве еще одного примера информация, указывающая то, применяется ли PDPC, может быть передана посредством битового потока.
[416] Альтернативно участок, к которому применяется PDPC, может быть определен на основании по меньшей мере одного из размера, формы и режима внутреннего предсказания текущего блока и положения отсчета предсказания. Например, когда режим внутреннего предсказания текущего блока имеет индекс, который больше, чем в вертикальном направлении, отсчеты предсказания, по меньшей мере одна из координаты по оси x и координаты по оси y которых больше, чем пороговое значение, не откорректированы, и корректировка может быть выполнена только в отношении отсчетов предсказания, координата по оси x или координата по оси y которых меньше, чем пороговое значение, или равняется ему. Альтернативно, когда режим внутреннего предсказания текущего блока имеет индекс, который меньше, чем в горизонтальном направлении, отсчеты предсказания, по меньшей мере одна из координаты по оси x и координаты по оси y которых больше, чем пороговое значение, не откорректированы, и корректировка может быть выполнена только в отношении отсчетов предсказания, координата по оси x или координата по оси y которых меньше, чем пороговое значение, или равняется ему. В этом случае пороговое значение может быть определено на основании по меньшей мере одного из размера, формы и режима внутреннего предсказания текущего блока.
[417] Когда отсчет предсказания получен посредством отсчета внутреннего предсказания, опорный отсчет, используемый для корректировки отсчета предсказания, может быть определен на основании положения полученного отсчета предсказания. Для удобства объяснения в вариантах осуществления, описанных ниже, опорный отсчет, используемый для корректировки отсчета предсказания, будет называться опорным отсчетом PDPC. Кроме того, отсчет предсказания, полученный посредством внутреннего предсказания, называется первым отсчетом предсказания, и отсчет предсказания, полученный путем корректировки первого отсчета предсказания, называется вторым отсчетом предсказания.
[418] На фиг. 22 представлен вид, показывающий вариант осуществления применения PDPC.
[419] Первый отсчет предсказания может быть откорректирован с использованием по меньшей мере одного опорного отсчета PDPC. Опорный отсчет PDPC может включать по меньшей мере один из опорного отсчета, смежного с верхним левым углом текущего блока, верхнего опорного отсчета, расположенного сверху от текущего блока, и левого опорного отсчета, расположенного слева от текущего блока.
[420] По меньшей мере один из опорных отсчетов, принадлежащих к линии опорных отсчетов текущего блока, может быть установлен как опорный отсчет PDPC. Альтернативно, независимо от линии опорных отсчетов текущего блока, по меньшей мере один из опорных отсчетов, принадлежащих к линии опорных отсчетов, имеющей индекс 0, может быть установлен как опорный отсчет PDPC. Например, хотя первый отсчет предсказания получен с использованием опорного отсчета, включенного в линию опорных отсчетов с индексом 1 или индексом 2, второй отсчет предсказания может быть получен с использованием опорного отсчета, включенного в линию опорных отсчетов с индексом 0.
[421] Количество или положения опорных отсчетов PDPC, используемых для корректировки первого отсчета предсказания, могут быть определены с учетом по меньшей мере одного из режима внутреннего предсказания текущего блока, размера текущего блока, формы текущего блока и положения первого отсчета предсказания.
[422] Например, когда режим внутреннего предсказания текущего блока представляет собой планарный режим или режим DC, второй отсчет предсказания может быть получен с использованием верхнего опорного отсчета и левого опорного отсчета. В этом случае верхний опорный отсчет может представлять собой опорный отсчет, который является вертикальным относительно первого отсчета предсказания (например, опорный отсчет одинаковой координаты x), и левый опорный отсчет может представлять собой опорный отсчет, который является горизонтальным относительно первого отсчета предсказания (например, опорный отсчет одинаковой координаты y).
[423] Когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания в горизонтальном направлении, второй отсчет предсказания может быть получен с использованием верхнего опорного отсчета. В этом случае верхний опорный отсчет может представлять собой опорный отсчет, который является вертикальным относительно первого отсчета предсказания.
[424] Когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания в вертикальном направлении, второй отсчет предсказания может быть получен с использованием левого опорного отсчета. В этом случае левый опорный отсчет может представлять собой опорный отсчет, который является горизонтальным относительно первого отсчета предсказания.
[425] Когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания в диагональном направлении вниз и влево или режим внутреннего предсказания в диагональном направлении вверх и вправо, второй отсчет предсказания может быть получен на основании верхнего левого опорного отсчета, верхнего опорного отсчета и левого опорного отсчета. Верхний левый опорный отсчет может представлять собой опорный отсчет, смежный с верхним левым углом текущего блока (например, опорный отсчет в положении (-1, -1)). Верхний опорный отсчет может представлять собой опорный отсчет, расположенный в диагональном направлении вверх и вправо первого отсчета предсказания, и левый опорный отсчет может представлять собой опорный отсчет, расположенный в диагональном направлении вниз и влево первого отсчета предсказания.
[426] В итоге, когда положение первого отсчета предсказания представляет собой (x, y), R(-1, -1) может быть установлен как верхний левый опорный отсчет, и R(x + y + 1, -1) или R(x, -1) может быть установлен как верхний опорный отсчет. Кроме того, R(-1, x + y + 1) или R(-1, y) может быть установлен как левый опорный отсчет.
[427] В качестве еще одного примера положение левого опорного отсчета или верхнего опорного отсчета может быть определено с учетом по меньшей мере одного из формы текущего блока и того, применяется ли широкоугольный внутренний режим.
[428] В частности, когда режим внутреннего предсказания текущего блока представляет собой широкоугольный режим внутреннего предсказания, опорный отсчет, разнесенный от опорного отсчета, расположенного в диагональном направлении первого отсчета предсказания, на величину смещения, может быть установлен как опорный отсчет PDPC. Например, верхний опорный отсчет R(x + y + k + 1, -1) и левый опорный отсчет R(-1, x + y - k + 1) могут быть установлены как опорные отсчеты PDPC.
[429] В этом случае смещение k может быть определено на основании широкоугольного режима внутреннего предсказания. Уравнения 8 и 9 демонстрируют пример получения смещения на основании широкоугольного режима внутреннего предсказания.
[430] [Уравнение 8]
[431] [Уравнение 9]
[432] Второй отсчет предсказания может быть определен на основании операции взвешенного суммирования первого отсчета предсказания и опорных отсчетов PDPC. Например, второй отсчет предсказания может быть получен на основании уравнения 10, показанного ниже.
[433] [Уравнение 10]
[434] В уравнении 10 RL обозначает левый опорный отсчет, RT обозначает верхний опорный отсчет, и RTL обозначает верхний левый опорный отсчет. Pred(x, y) обозначает отсчет предсказания в положении (x, y). wL обозначает значение взвешивания, присвоенное левому опорному отсчету, wT обозначает значение взвешивания, присвоенное верхнему опорному отсчету, и wTL обозначает значение взвешивания, присвоенное верхнему левому опорному отсчету. Значения взвешивания, присвоенные первому отсчету предсказания, могут быть получены путем вычитания значений взвешивания, присвоенных опорным отсчетам, из максимального значения. Для удобства объяснения значение взвешивания, присвоенное опорному отсчету PDPC, называется значением взвешивания PDPC.
[435] Значение взвешивания, присвоенное каждому опорному отсчету, может быть определено на основании по меньшей мере одного из режима внутреннего предсказания текущего блока и положения первого отсчета предсказания.
[436] Например, по меньшей мере одно из wL, wT и wTL может иметь пропорциональную или обратно пропорциональную связь с по меньшей мере одним из значения координаты по оси x и значения координаты по оси y отсчета предсказания. Альтернативно по меньшей мере одно из wL, wT и wTL может иметь пропорциональную или обратно пропорциональную связь с по меньшей мере одной из ширины и высоты текущего блока.
[437] Когда режим внутреннего предсказания текущего блока представляет собой режим DC, значения взвешивания PDPC могут быть определены так, как показано в уравнении 11.
[438] [Уравнение 11]
[439] В уравнении 11 x и y обозначают положение первого отсчета предсказания.
[440] Переменная shift, используемая в операции битового сдвига, в уравнении 11 может быть получена на основании ширины или высоты текущего блока. Например, переменная shift может быть получена на основании уравнения 12 или 13, показанного ниже.
[441] [Уравнение 12]
[442] [Уравнение 13]
)
[443] Альтернативно переменная shift может быть получена с учетом параметра внутреннего направления текущего блока.
[444] Количество параметров или типов параметров, используемых для получения переменной shift, может быть определено по-разному согласно режиму внутреннего предсказания текущего блока. Например, когда режим внутреннего предсказания текущего блока представляет собой планарный режим, режим DC, режим в вертикальном направлении или режим в горизонтальном направлении, переменная shift может быть получена с использованием ширины (width) и высоты (height) текущего блока, как показано в примере уравнения 12 или уравнения 13. Когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, имеющий индекс, который больше, чем в режиме внутреннего предсказания в вертикальном направлении, переменная shift может быть получена с использованием высоты и параметра внутреннего направления текущего блока. Когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, имеющий индекс, который меньше, чем в горизонтальном режиме внутреннего предсказания, переменная shift может быть получена с использованием ширины и параметра внутреннего направления текущего блока.
[445] Когда режим внутреннего предсказания текущего блока представляет собой планарный режим, значение wTL может быть установлено равным 0. wL и wT могут быть получены на основании уравнения 14, показанного ниже.
[446] [Уравнение 14]
[447] Когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания в горизонтальном направлении, wT может быть установлено равным 0, и wTL и wL могут быть установлены равным образом. С другой стороны, когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания в вертикальном направлении, wL может быть установлено равным 0, и wTL и wT могут быть установлены равным образом.
[448] Когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, направленный вверх и вправо, имеющий индексное значение, которое больше, чем в режиме внутреннего предсказания в вертикальном направлении, значения взвешивания PDPC могут быть получены так, как показано в уравнении 15.
[449] [Уравнение 15]
[450] С другой стороны, когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, направленный вниз и влево, имеющий индексное значение, которое меньше, чем в режиме внутреннего предсказания в горизонтальном направлении, значения взвешивания PDPC могут быть получены так, как показано в уравнении 16.
[451] [Уравнение 16]
[452] Как показано в варианте осуществления, описанном выше, значения взвешивания PDPC могут быть определены на основании положения x и y отсчета предсказания.
[453] В качестве еще одного примера значение взвешивания, присвоенное каждому из опорных отсчетов PDPC, может быть определено элементом подблока. Отсчеты предсказания, включенные в подблок, могут совместно использовать одинаковые значения взвешивания PDPC.
[454] Размер подблока, который является базовым элементом для определения значения взвешивания, может быть предварительно задан в кодере и декодере. Например, значение взвешивания может быть определено для каждого подблока размером 2×2 или 4×4.
[455] Альтернативно размер, форма или количество подблоков могут быть определены согласно размеру или форме текущего блока. Например, независимо от размер блока кодирования, блок кодирования может быть разбит на четыре подблока. Альтернативно блок кодирования может быть разбит на 4 или 16 подблоков согласно размеру блока кодирования.
[456] Альтернативно размер, форма или количество подблоков могут быть определены на основании режима внутреннего предсказания текущего блока. Например, когда режим внутреннего предсказания текущего блока имеет горизонтальное направление, N столбцов (или N строк) установлены как один подблок, тогда как когда режим внутреннего предсказания текущего блока имеет вертикальное направление, N строк (или N столбцов) могут быть установлены как один подблок.
[457] Уравнения 17-19 демонстрируют примеры определения значения взвешивания PDPC для подблока размером 2×2. Уравнение 17 демонстрирует случай, в котором режим внутреннего предсказания текущего блока представляет собой режим DC.
[458] [Уравнение 17]
[459] В уравнении 17 K может быть определено на основании размера подблока.
[460] Уравнение 18 демонстрирует пример, в котором режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, направленный вверх и вправо, имеющий индексное значение, которое больше, чем в режиме внутреннего предсказания в вертикальном направлении.
[461] [Уравнение 18]
[462] Уравнение 19 демонстрирует пример, в котором режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, направленный вниз и влево, имеющий индексное значение, которое меньше, чем в режиме внутреннего предсказания в горизонтальном направлении.
[463] [Уравнение 19]
[464] В уравнениях 17-19 x и y обозначают положение опорного отсчета внутри подблока. Опорный отсчет может представлять собой любой из отсчета, расположенного сверху слева от подблока, отсчета, расположенного в центре подблока, и отсчета, расположенного снизу справа от подблока.
[465] Уравнения 20-22 демонстрируют примеры определения значения взвешивания PDPC для подблока размером 4×4. Уравнение 20 демонстрирует пример, в котором режим внутреннего предсказания текущего блока представляет собой режим DC.
[466] [Уравнение 20]
[467] Уравнение 21 демонстрирует пример, в котором режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, направленный вверх и вправо, имеющий индексное значение, которое больше, чем в режиме внутреннего предсказания в вертикальном направлении.
[468] [Уравнение 21]
[469] Уравнение 22 демонстрирует пример, в котором режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, направленный вниз и влево, имеющий индексное значение, которое меньше, чем в режиме внутреннего предсказания в горизонтальном направлении.
[470] [Уравнение 22]
[471] В вариантах осуществления, описанных выше, было описано, что значения взвешивания PDPC определены с учетом положений отсчетов предсказания, включенных в первый отсчет предсказания или подблок. Значения взвешивания PDPC могут быть определены путем дополнительного учета формы текущего блока.
[472] Например, в случае режима DC способ получения значения взвешивания PDPC может меняться в зависимости от того, имеет ли текущий блок неквадратную форму, ширина которой больше, чем высота, или неквадратную форму, высота которой больше, чем ширина.
[473] Уравнение 23 демонстрирует пример получения значения взвешивания PDPC, когда текущий блок имеет неквадратную форму, ширина которой больше, чем высота, и уравнение 24 демонстрирует пример получения значения взвешивания PDPC, когда текущий блок имеет неквадратную форму, высота которой больше, чем ширина.
[474] [Уравнение 23]
[475] [Уравнение 24]
[476] Когда текущий блок имеет неквадратную форму, текущий блок может быть предсказан с использованием широкоугольного режима внутреннего предсказания. Таким образом, даже когда применяется широкоугольный режим внутреннего предсказания, первый отсчет предсказания может быть обновлен путем применения PDPC.
[477] Когда широкоугольное внутреннее предсказание применяется к текущему блоку, значение взвешивания PDPC может быть определено с учетом формы блока кодирования.
[478] Например, когда текущий блок имеет неквадратную форму, ширина которой больше, чем высота, согласно положению первого отсчета предсказания, может быть случай, в котором верхний опорный отсчет, расположенный сверху справа от первого отсчета предсказания, ближе к первому отсчету предсказания, чем левый опорный отсчет, расположенный снизу слева от первого отсчета предсказания. Соответственно, при корректировке первого отсчета предсказания значение взвешивания, примененное к верхнему опорному отсчету, может быть установлено так, чтобы быть больше, чем значение взвешивания, примененное к левому опорному отсчету.
[479] С другой стороны, когда текущий блок имеет неквадратную форму, высота которой больше, чем ширина, согласно положению первого отсчета предсказания, может быть случай, в котором левый опорный отсчет, расположенный снизу слева от первого отсчета предсказания, ближе к первому отсчету предсказания, чем верхний опорный отсчет, расположенный сверху справа от первого отсчета предсказания. Соответственно, при корректировке первого отсчета предсказания значение взвешивания, примененное к левому опорному отсчету, может быть установлено так, чтобы быть больше, чем значение взвешивания, примененное к верхнему опорному отсчету.
[480] Уравнение 25 демонстрирует пример получения значения взвешивания PDPC, когда режим внутреннего предсказания текущего блока представляет собой широкоугольный режим внутреннего предсказания, имеющий индекс, который больше чем 66.
[481] [Уравнение 25]
[482] Уравнение 26 демонстрирует пример получения значения взвешивания PDPC, когда режим внутреннего предсказания текущего блока представляет собой широкоугольный режим внутреннего предсказания, имеющий индекс, который меньше чем 0.
[483] [Уравнение 26]
[484] Значение взвешивания PDPC может быть определено на основании соотношения текущего блока. Соотношение текущего блока представляет соотношение ширины и высоты текущего блока и может быть определено так, как показано в уравнении 27.
[485] [Уравнение 27]
[486] Согласно режиму внутреннего предсказания текущего блока способ получения значения взвешивания PDPC может быть определен различными путями.
[487] Например, уравнения 28 и 29 демонстрируют пример получения значения взвешивания PDPC, когда режим внутреннего предсказания текущего блока представляет собой режим DC. В частности, уравнение 28 представляет собой пример случая, в котором текущий блок имеет неквадратную форму, ширина которой больше, чем высота, и уравнение 29 представляет собой пример случая, в котором текущий блок имеет неквадратную форму, высота которой больше, чем ширина.
[488] [Уравнение 28]
[489] [Уравнение 29]
[490] Уравнение 30 демонстрирует пример получения значения взвешивания PDPC, когда режим внутреннего предсказания текущего блока представляет собой широкоугольный режим внутреннего предсказания, имеющий индекс, который больше чем 66.
[491] [Уравнение 30]
[492] Уравнение 31 демонстрирует пример получения значения взвешивания PDPC, когда режим внутреннего предсказания текущего блока представляет собой широкоугольный режим внутреннего предсказания, имеющий индекс, который меньше чем 0.
[493] [Уравнение 31]
[494] Полученное остаточное изображение может быть получено путем вычитания видео предсказания из первоначального видео. В этом случае, когда остаточное видео изменяется на частотную область, субъективное качество видео существенно не снижается, хотя высокочастотные компоненты удалены из частотных компонентов. Соответственно, когда значения высокочастотных компонентов конвертируются в небольшие или значения высокочастотных компонентов установлены равными 0, имеет место эффект увеличения эффективности сжатия без генерирования существенного визуального искажения. Отражая эту характеристику, текущий блок может быть преобразован для разложения остаточного видео на двумерные частотные компоненты. Преобразование может быть выполнено с использованием метода преобразования, такого как дискретное косинусное преобразование (DCT) или дискретное синусное преобразование (DST).
[495] DCT раскладывает (или преобразует) остаточное видео на двумерные частотные компоненты с использованием косинусного преобразования, а DST раскладывает (или преобразует) остаточное видео на двумерные частотные компоненты с использованием синусного преобразования. В результате преобразования остаточного видео частотные компоненты могут быть выражены в виде базового видео. Например, когда преобразование DCT выполнено в отношении блока размером N×N, могут быть получены компоненты базовой схемы в количестве N2. Размер каждого из компонентов базовой схемы, включенных в блок размером N×N, может быть получен посредством преобразования. Согласно методу преобразования, используемому для этого, значение компонента базовой схемы может называться коэффициентом DCT или коэффициентом DST.
[496] Метод преобразования DCT в основном используют для преобразования видео, в котором распределяют многие ненулевые низкочастотные компоненты. Метод преобразования DST в основном используют для видео, в которых распределяют многие высокочастотные компоненты.
[497] Остаточное видео может быть преобразовано с использованием метода преобразования, отличного от DCT или DST.
[498] Далее преобразование остаточного видео в двумерные частотные компоненты будет называться двумерным преобразованием видео. Кроме того, размер компонентов базовой схемы, полученный в результате преобразования, называется коэффициентом преобразования. Например, коэффициент преобразования может означать коэффициент DCT или коэффициент DST. Когда применены как первое преобразование, так и второе преобразование, описанные ниже, коэффициент преобразования может означать размер компонента базовой схемы, сгенерированного в результате второго преобразования.
[499] Метод преобразования может быть определен для каждого блока. Метод преобразования может быть определен на основании по меньшей мере одного из режима кодирования с предсказанием текущего блока, размера текущего блока и формы текущего блока. Например, когда текущий блок кодируется в режиме внутреннего предсказания, а размер текущего блока меньше, чем N×N, преобразование может быть выполнено с использованием метода преобразования DST. С другой стороны, когда приведенные выше условия не удовлетворяются, преобразование может быть выполнено с использованием метода преобразования DCT.
[500] Двумерное преобразование видео может не быть выполнено для некоторых блоков остаточного видео. Невыполнение двумерного преобразования видео может называться пропуском преобразования. Когда применен пропуск преобразования, квантование может быть применено к остаточным коэффициентам, которые не были преобразованы.
[501] После преобразования текущего блока с использованием DCT или DST преобразованный текущий блок может быть преобразован повторно. В этом случае преобразование на основании DCT или DST может быть определено как первое преобразование, а повторное преобразование блока, к которому применено первое преобразование, может быть определено как второе преобразование.
[502] Первое преобразование может быть выполнено с использованием любой из множества основ-кандидатов преобразования. Например, первое преобразование может быть выполнено с использованием любого из DCT2, DCT8 или DCT7.
[503] Разные основы преобразования могут быть использованы для горизонтального направления и вертикального направления. Информация, указывающая комбинацию основы преобразования в горизонтальном направлении и основы преобразования в вертикальном направлении, может быть передана посредством битового потока.
[504] Элементы для выполнения первого преобразования и второго преобразования могут быть разными. Например, первое преобразование может быть выполнено в отношении блока 8×8, а второе преобразование может быть выполнено в отношении подблока размером 4×4 из преобразованного блока 8×8. В этом случае коэффициенты преобразования остаточных участков, в отношении которых не было выполнено второе преобразование, могут быть установлены равными 0.
[505] Альтернативно первое преобразование может быть выполнено в отношении блока 4×4, а второе преобразование может быть выполнено в отношении участка размером 8×8, содержащего преобразованный блок 4×4.
[506] Информация, указывающая, было ли выполнено второе преобразование, может быть передана посредством битового потока.
[507] Альтернативно то, следует ли выполнять второе преобразование, может быть определено на основании того, являются ли одинаковыми основа преобразования в горизонтальном направлении и основа преобразования в вертикальном направлении. Например, второе преобразование может быть выполнено только тогда, когда основа преобразования в горизонтальном направлении и основа преобразования в вертикальном направлении являются одинаковыми. Альтернативно второе преобразование может быть выполнено только тогда, когда основа преобразования в горизонтальном направлении и основа преобразования в вертикальном направлении отличаются друг от друга.
[508] Альтернативно второе преобразование может быть допущено только тогда, когда преобразование в горизонтальном направлении и преобразование в вертикальном направлении используют предварительно заданную основу преобразования. Например, когда основа преобразования DCT2 используется для преобразования в горизонтальном направлении и преобразования в вертикальном направлении, второе преобразование может быть допущено.
[509] Альтернативно то, следует ли выполнять второе преобразование, может быть определено на основании количества ненулевых коэффициентов преобразования текущего блока. Например, может быть установлено не использовать второе преобразование, когда количество ненулевых коэффициентов преобразования текущего блока меньше, чем пороговое значение, или равняется ему, и может быть установлено использовать второе преобразование, когда количество ненулевых коэффициентов преобразования текущего блока больше, чем пороговое значение. Может быть установлено использовать второе преобразование только тогда, когда текущий блок кодирован с помощью внутреннего предсказания.
[510] На основании формы текущего блока, могут быть определены размер или форма подблока, в отношении которого будут выполнять второе преобразование.
[511] На фиг. 23 и 24 представлены виды, показывающие подблок, в отношении которого будут выполнять второе преобразование.
[512] Когда текущий блок имеет квадратную форму, второе преобразование может быть выполнено в отношении подблока, имеющего размер N×N, сверху слева от текущего блока после выполнения первого преобразования. Например, когда текущий блок представляет собой блок кодирования размером 8×8, второе преобразование может быть выполнено в отношении подблока, имеющего размер 4×4, сверху слева от текущего блока после выполнения первого преобразования в отношении текущего блока (см. фиг. 23).
[513] Когда текущий блок имеет неквадратную форму, ширина которой в по меньшей мере 4 раза больше, чем высота, второе преобразование может быть выполнено в отношении подблока размером (kN)×(4 kN) сверху слева от текущего блока после выполнения первого преобразования. Например, когда текущий блок имеет неквадратную форму размером 16×4, второе преобразование может быть выполнено в отношении подблока размером 2×8 сверху слева от текущего блока после выполнения первого преобразования в отношении текущего блока (см. фиг. 24 (a)).
[514] Когда текущий блок имеет неквадратную форму, высота которой в по меньшей мере 4 раза больше, чем ширина, второе преобразование может быть выполнено в отношении подблока размером (4 kN)×(kN) сверху слева от текущего блока после выполнения первого преобразования. Например, когда текущий блок имеет неквадратную форму размером 16×4, второе преобразование может быть выполнено в отношении подблока размером 2×8 сверху слева от текущего блока после выполнения первого преобразования в отношении текущего блока (см. фиг. 24 (b)).
[515] Декодер может выполнять обратное преобразование второго преобразования (второе обратное преобразование) и может выполнять обратное преобразование первого преобразования (первое обратное преобразование) в отношении результата второго обратного преобразования. В результате выполнения второго обратного преобразования и первого обратного преобразования могут быть получены остаточные сигналы для текущего блока.
[516]
[517] Информация, указывающая тип преобразования текущего блока, может быть передана посредством битового потока. Информация может представлять собой информацию об индексах tu_mts_idx, указывающую одну из комбинаций типа преобразования для горизонтального направления и типа преобразования для вертикального направления.
[518] Основа преобразования для вертикального направления и основа преобразования для горизонтального направления могут быть определены на основании типов-кандидатов преобразования, указанных с помощью информации об индексах tu_mts_idx. В таблицах 7 и 8 показаны комбинации типов преобразования согласно tu_mts_idx.
[519] [Таблица 7]
[520] [Таблица 8]
[521] Тип преобразования может быть определен как любое из следующих преобразований: DCT2, DST7, DCT8 и пропуск. Альтернативно комбинация-кандидат типов преобразования может быть составлена с использованием только основ преобразования, за исключением пропуска преобразования.
[522] В случае, в котором используется таблица 7, когда tu_mts_idx равняется 0, пропуск преобразования может быть применен в горизонтальном направлении и вертикальном направлении. Когда tu_mts_idx равняется 1, DCT2 может быть применен в горизонтальном направлении и вертикальном направлении. Когда tu_mts_idx равняется 3, DCT8 может быть применен в горизонтальном направлении, и DCT7 может быть применен в вертикальном направлении.
[523] В случае, в котором используется таблица 8, когда tu_mts_idx равняется 0, DCT2 может быть применен в горизонтальном направлении и вертикальном направлении. Когда tu_mts_idx равняется 1, пропуск преобразования может быть применен в горизонтальном направлении и вертикальном направлении. Когда tu_mts_idx равняется 3, DCT8 может быть применен в горизонтальном направлении, и DCT7 может быть применен в вертикальном направлении.
[524] То, следует ли кодировать информацию об индексах, может быть определено на основании по меньшей мере одного из размера, формы и количества ненулевых коэффициентов текущего блока. Например, когда количество ненулевых коэффициентов равняется пороговому значению или меньше него, информация об индексах не передается, и тип преобразования по умолчанию может быть применен к текущему блоку. В данном случае тип преобразования по умолчанию может представлять собой DST7. Альтернативно режим по умолчанию может меняться согласно размеру, форме или режиму внутреннего предсказания текущего блока.
[525] Пороговое значение может быть определено на основании размера или формы текущего блока. Например, когда размер текущего блока меньше чем 32×32 или равняется этому размеру, пороговое значение может быть установлено равным 2, а когда текущий блок больше чем 32×32 (например, когда текущий блок представляет собой блок кодирования размером 32×64 или 64×32), пороговое значение может быть установлено равным 4.
[526] Множество таблиц поиска могут быть ранее сохранены в кодере/декодере. Во множестве таблиц поиска по меньшей мере одно из индексного значения, присвоенного комбинациям-кандидатам типов преобразования, типа комбинаций-кандидатов типов преобразования и количества комбинаций-кандидатов типов преобразования может быть отличным.
[527] Таблица поиска для текущего блока может быть выбрана на основании по меньшей мере одного из размера текущего блока, формы текущего блока, режима кодирования с предсказанием текущего блока, режима внутреннего предсказания текущего блока, того, применено ли второе преобразование, и того, применен ли пропуск преобразования к соседнему блоку.
[528] Например, когда размер текущего блока составляет 4×4 или меньше или когда текущий блок кодирован с помощью предсказания, осуществляемого между изображениями, может быть использована таблица поиска по таблице 7, а когда размер текущего блока больше чем 4×4, или когда текущий блок кодирован с помощью внутреннего предсказания, может быть использована таблица поиска по таблице 8.
[529] Альтернативно информация, указывающая любую из множества таблиц поиска, может быть передана посредством битового потока. Декодер может выбирать таблицу поиска для текущего блока на основании информации.
[530] В качестве еще одного примера индекс, присвоенный комбинации-кандидату типов преобразования, может быть адаптивно определен на основании по меньшей мере одного из размера текущего блока, формы текущего блока, режима кодирования с предсказанием текущего блока, режима внутреннего предсказания текущего блока, того, применено ли второе преобразование, и того, применен ли пропуск преобразования к соседнему блоку. Например, когда размер текущего блока составляет 4×4, индекс, присвоенный пропуску преобразования, может иметь значение, которое меньше, чем значение индекса, присвоенного пропуску преобразования, когда размер текущего блока больше чем 4×4. В частности, когда размер текущего блока составляет 4×4, индекс 0 может быть присвоен пропуску преобразования, а когда текущий блок больше чем 4×4 и меньше чем 16×16 или равняется этому размеру, индекс, который больше чем 0 (например, индекс 1), может быть присвоен пропуску преобразования. Когда текущий блок больше чем 16×16, максимальное значение (например, 5) может быть присвоено индексу пропуска преобразования.
[531] Альтернативно, когда текущий блок кодирован с помощью предсказания, осуществляемого между изображениями, индекс 0 может быть присвоен пропуску преобразования. Когда текущий блок кодирован с помощью внутреннего предсказания, индекс, который больше чем 0 (например, индекс 1), может быть присвоен пропуску преобразования.
[532] Альтернативно, когда текущий блок представляет собой блок размером 4×4, кодированный с помощью предсказания, осуществляемого между изображениями, индекс 0 может быть присвоен пропуску преобразования. С другой стороны, когда текущий блок не кодирован с помощью предсказания, осуществляемого между изображениями, или текущий блок больше чем 4×4, индекс со значением, которое больше чем 0 (например, индекс 1), может быть присвоен пропуску преобразования.
[533] Могут быть определены и использованы комбинации-кандидаты типов преобразования, отличные от комбинаций-кандидатов типов преобразования, перечисленных в таблицах 7 и 8. Например, может быть использована комбинация-кандидат типов преобразования, в которой пропуск преобразования применяется к любому одному из преобразования в горизонтальном направлении и преобразования в вертикальном направлении, и основа преобразования, такая как DCT7, DCT8 или DST2, применяется к другому. В это время то, следует ли использовать пропуск преобразования как тип-кандидат преобразования для горизонтального направления или вертикального направления, может быть определено на основании по меньшей мере одного из размера (например, ширины и/или высоты), формы, режима кодирования с предсказанием и режима внутреннего предсказания текущего блока.
[534] Альтернативно информация, указывающая то, доступен ли конкретный тип-кандидат преобразования, может быть передана посредством битового потока. Например, может быть передан флаг, указывающий то, может ли быть использован пропуск преобразования как тип-кандидат преобразования для горизонтального направления и вертикального направления. Согласно флагу может быть определено то, включена ли конкретная комбинация-кандидат типов преобразования во множество комбинаций-кандидатов типов преобразования.
[535] Альтернативно то, применяется ли указанный тип-кандидат преобразования к текущему блоку, может быть передано посредством битового потока. Например, может быть передан флаг cu_mts_flag, указывающий то, следует ли применять DCT2 для горизонтального направления и вертикального направления. Когда значение cu_mts_flag равняется 1, DCT2 может быть установлен как основа преобразования для вертикального направления и горизонтального направления. Когда значение cu_mts_flag равняется 0, DCT8 или DST7 может быть установлен как основа преобразования для вертикального направления и горизонтального направления. Альтернативно, когда значение cu_mts_flag равняется 0, может быть передана информация tu_mts_idx, указывающая любую из множества комбинаций-кандидатов типов преобразования.
[536] Когда текущий блок имеет неквадратную форму, ширина которой больше, чем высота, или неквадратную форму, высота которой больше, чем ширина, кодирование cu_mts_flag может быть пропущено, и значение cu_mts_flag может быть расценено как 0.
[537] Количество доступных комбинаций-кандидатов типов преобразования может быть установлено по-разному согласно размеру, форме или режиму внутреннего предсказания текущего блока. Например, когда текущий блок имеет квадратную форму, могут быть использованы три или более комбинаций-кандидатов типов преобразования, а когда текущий блок имеет неквадратную форму, могут быть использованы две комбинации-кандидата типов преобразования. Альтернативно, когда текущий блок имеет квадратную форму, только комбинации-кандидаты типов преобразования, тип преобразования для горизонтального направления которых отличается от типа преобразования для вертикального направления, могут быть использованы из комбинаций-кандидатов типов преобразования.
[538] Когда имеются три или более комбинаций-кандидатов типов преобразования, которые может использовать текущий блок, может быть передана информация об индексах tu_mts_idx, указывающая одну из комбинаций-кандидатов типов преобразования. С другой стороны, когда имеются две комбинации-кандидата типов преобразования, которые может использовать текущий блок, может быть передан флаг mts_flag, указывающий любую из комбинаций-кандидатов типов преобразования. В таблице 9 показан процесс кодирования информации для указания комбинаций-кандидатов типов преобразования согласно форме текущего блока.
[539] [Таблица 9]
[540] Индексы комбинаций-кандидатов типов преобразования могут быть переставлены (или переупорядочены) согласно форме текущего блока. Например, индексы, присвоенные комбинациям-кандидатам типов преобразования, когда текущий блок имеет квадратную форму, могут отличаться от индексов, присвоенных комбинациям-кандидатам типов преобразования, когда текущий блок имеет неквадратную форму. Например, когда текущий блок имеет квадратную форму, комбинация типов преобразования может быть выбрана на основании таблицы 10, показанной ниже, а когда текущий блок имеет неквадратную форму, комбинация типов преобразования может быть выбрана на основании таблицы 11, показанной ниже.
[541] [Таблица 10]
[542] [Таблица 11]
[543] Тип преобразования может быть определен на основании количества ненулевых коэффициентов в горизонтальном направлении или количества ненулевых коэффициентов в вертикальном направлении текущего блока. В данном случае количество ненулевых коэффициентов в горизонтальном направлении указывает количество ненулевых коэффициентов, включенных в блок 1×N (где N представляет собой ширину текущего блока), и количество ненулевых коэффициентов в вертикальном направлении указывает количество ненулевых коэффициентов, включенных в блок N×1 (где N представляет собой высоту текущего блока). Когда максимальное значение ненулевого коэффициента в горизонтальном направлении меньше, чем пороговое значение, или равняется ему, первый тип преобразования может быть применен в горизонтальном направлении, а когда максимальное значение ненулевого коэффициента в горизонтальном направлении больше, чем пороговое значение, второй тип преобразования может быть применен в горизонтальном направлении. Когда максимальное значение ненулевого коэффициента в вертикальном направлении меньше, чем пороговое значение, или равняется ему, первый тип преобразования может быть применен в вертикальном направлении, а когда максимальное значение ненулевого коэффициента в вертикальном направлении больше, чем пороговое значение, второй тип преобразования может быть применен в вертикальном направлении.
[544] На фиг. 25 представлен вид для описания примеров определения типа преобразования текущего блока.
[545] Например, когда текущий блок кодирован с помощью внутреннего предсказания, и максимальное значение ненулевого коэффициента в горизонтальном направлении текущего блока равняется 2 или меньше (см. фиг. 25 (a)), тип преобразования в горизонтальном направлении может быть определен как DST7.
[546] Когда текущий блок кодирован с помощью внутреннего предсказания, и максимальное значение ненулевого коэффициента в вертикальном направлении текущего блока больше чем 2 (см. фиг. 25 (b)), DCT2 или DCT8 может быть определен как тип преобразования в вертикальном направлении.
[547]
[548] Информация, указывающая то, следует ли в явном виде определять тип преобразования текущего блока на основании информации, переданной из битового потока, может быть передана посредством битового потока. Например, информация sps_explicit_intra_mts_flag, указывающая то, допускается ли определение в явном виде типа преобразования для блока, кодированного с помощью внутреннего предсказания, и/или информация sps_explicit_inter_mts_flag, указывающая то, допускается ли определение в явном виде типа преобразования для блока, кодированного с помощью предсказания, осуществляемого между изображениями, могут быть переданы на уровне последовательности.
[549] Когда допускается определение в явном виде типа преобразования, тип преобразования текущего блока может быть определен на основании информации об индексах tu_mts_idx, переданной из битового потока. С другой стороны, когда определение в явном виде типа преобразования не допускается, тип преобразования может быть определен на основании по меньшей мере одного из размера текущего блока, формы текущего блока, того, допускается ли преобразование элемента подблока, и положения подблока, содержащего ненулевой коэффициент преобразования. Например, тип преобразования в горизонтальном направлении текущего блока может быть определен на основании ширины текущего блока, и тип преобразования в вертикальном направлении текущего блока может быть определен на основании высоты текущего блока. Например, когда ширина текущего блока меньше чем 4 или больше чем 16, тип преобразования в горизонтальном направлении может быть определен как DCT2. В ином случае тип преобразования в горизонтальном направлении может быть определен как DST7. Когда высота текущего блока меньше чем 4 или больше чем 16, тип преобразования в вертикальном направлении может быть определен как DCT2. В ином случае тип преобразования в вертикальном направлении может быть определен как DST7. В данном случае, чтобы определить тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении, пороговые значения, сравнимые с шириной и высотой, могут быть определены на основании по меньшей мере одного из размера, формы и режима внутреннего предсказания текущего блока.
[550] Альтернативно, когда текущий блок имеет квадратную форму, высота и ширина которой являются одинаковыми, тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении установлены так, чтобы быть одинаковыми, тогда как когда текущий блок имеет неквадратную форму, высота и ширина которой являются разными, тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении могут быть установлены так, чтобы отличаться друг от друга. Например, когда ширина текущего блока больше, чем высота, тип преобразования в горизонтальном направлении может быть определен как DST7, и тип преобразования в вертикальном направлении может быть определен как DCT2. Когда высота текущего блока больше, чем ширина, тип преобразования в вертикальном направлении может быть определен как DST7, и тип преобразования в горизонтальном направлении может быть определен как DCT2.
[551] Количество и/или тип типов-кандидатов преобразования или количество и/или тип комбинаций-кандидатов типов преобразования могут меняться согласно тому, допускается ли определение в явном виде типа преобразования. Например, когда допускается определение в явном виде типа преобразования, DCT2, DST7 и DCT8 могут быть использованы как типы-кандидаты преобразования. Соответственно, каждый из типа преобразования в горизонтальном направлении и типа преобразования в вертикальном направлении может быть установлен равным DCT2, DST8 или DCT8. Когда определение в явном виде типа преобразования не допускается, только DCT2 и DST7 могут быть использованы как типы-кандидаты преобразования. Соответственно, каждый из типа преобразования в горизонтальном направлении и типа преобразования в вертикальном направлении может быть определен как DCT2 или DST7.
[552] Блок кодирования или блок преобразования разбивается на множество подблоков, и преобразование может быть выполнено в отношении каждого из множества подблоков. Например, когда способ кодирования с внутренним предсказанием с подразбиением, описанный выше, применяется к блоку кодирования, блок кодирования разбивается на множество подблоков, и преобразование может быть выполнено в отношении каждого из множества подблоков.
[553] Типы преобразования подблоков могут быть одинаковыми. Например, когда определяется тип преобразования для первого подблока из множества подблоков, тип преобразования первого подблока может также быть применен к другим подблокам. Альтернативно определяется тип преобразования для блока кодирования, и тип преобразования блока кодирования может быть определен как тип преобразования подблоков.
[554] В качестве еще одного примера типы преобразования из множества подблоков могут быть определены по отдельности. Тип преобразования каждого подблока может быть определен на основании информации, переданной для каждого подблока. Например, информация об индексах tu_mts_idx может быть передана для каждого подблока. Информация об индексах tu_mts_idx может указывать любую из множества комбинаций типа преобразования для горизонтального направления и типа преобразования для вертикального направления. Согласно значению tu_mts_idx тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении могут быть определены как DCT2, DST7 или DCT8. На основании информации об индексах tu_mts_idx может быть определено то, являются ли одинаковыми тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении.
[555] Может быть передана информация, указывающая то, использует ли текущий подблок тип преобразования, который является таким же, как тип преобразования предыдущего подблока. Когда информация указывает, что используется тип преобразования, который является таким же, как у предыдущего подблока, кодирование информации об индексах tu_mts_idx для текущего подблока может быть пропущено, и тип преобразования предыдущего подблока может быть применен к текущему подблоку. С другой стороны, когда информация указывает, что используется тип преобразования, который отличается от того, который у предыдущего подблока, информация об индексах tu_mts_idx для текущего подблока может быть кодирована. В этом случае информация об индексах текущего подблока может указывать любую из оставшихся комбинаций типов преобразования, за исключением комбинации типов преобразования, указанной с помощью информации об индексах предыдущего подблока.
[556] Альтернативно может быть установлено не допускать определение в явном виде типа преобразования, когда блок кодирования разбит на множество подблоков. Когда допускается определение в явном виде типа преобразования, тип преобразования может быть определен на основании информации об индексах tu_mts_idx. С другой стороны, когда определение в явном виде типа преобразования не допускается, тип преобразования может быть определен с учетом по меньшей мере одного из размера, формы и положения подблока, содержащего ненулевой коэффициент.
[557] На фиг. 26 представлен вид, показывающий пример определения типа преобразования подблока.
[558] На фиг. 26 показан пример, в котором соотношение высоты и ширины подблока составляет 1:2 или 2:1.
[559] Тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении могут быть определены на основании ширины и высоты каждого подблока. Например, как показано в примерах на фиг. 26 (a) и 26 (b), когда ширина подблока меньше, чем пороговое значение, первый тип преобразования (например, DCT2) может быть использован как тип преобразования в горизонтальном направлении. С другой стороны, когда ширина подблока больше, чем пороговое значение, или равняется ему, второй тип преобразования (например, DST7) может быть использован как тип преобразования в горизонтальном направлении.
[560] Кроме того, когда высота подблока меньше, чем пороговое значение, первый тип преобразования (например, DCT2) может быть использован как тип преобразования в вертикальном направлении. С другой стороны, когда ширина подблока больше, чем пороговое значение, или равняется ему, второй тип преобразования (например, DST7) может быть использован как тип преобразования в вертикальном направлении.
[561] В данном случае пороговое значение может представлять собой натуральное число, такое как 2, 4 или 8. Пороговое значение может быть переменным образом определено на основании по меньшей мере одного из размера, формы, режима внутреннего предсказания и режима кодирования с предсказанием блока кодирования. Альтернативно информация для определения порогового значения может быть передана посредством битового потока.
[562] В примере, описанном выше, хотя случай сравнения ширины и высоты подблока с одним пороговым значением показан как пример, тип преобразования может быть определен путем сравнения ширины и высоты подблока с двумя пороговыми значениями. Например, когда ширина подблока меньше, чем первое пороговое значение, или больше, чем второе пороговое значение, тип преобразования в горизонтальном направлении может быть определен как DCT2. В ином случае тип преобразования в горизонтальном направлении может быть определен как DST7. Кроме того, когда высота подблока меньше, чем первое пороговое значение, или больше, чем второе пороговое значение, тип преобразования в вертикальном направлении может быть определен как DCT2. В ином случае тип преобразования в вертикальном направлении может быть определен как DST7. Второй порог представляет собой натуральное число, которое больше, чем первое пороговое значение, и первое пороговое значение может представлять собой натуральное число, такое как 2, 4 или 8, и второе пороговое значение может представлять собой натуральное число, такое как 8, 16 или 32.
[563] В качестве еще одного примера, когда подблок имеет квадратную форму, высота и ширина которой являются одинаковыми, тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении могут быть установлены так, чтобы быть одинаковыми, тогда как когда подблок имеет неквадратную форму, высота и ширина которой являются разными, тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении могут быть установлены так, чтобы отличаться друг от друга. Например, когда ширина подблока больше, чем высота, тип преобразования в горизонтальном направлении может быть определен как DST7, и тип преобразования в вертикальном направлении может быть определен как DCT2. Когда высота подблока больше, чем ширина, тип преобразования в вертикальном направлении может быть определен как DST7, и тип преобразования в горизонтальном направлении может быть определен как DCT2.
[564] Значения остаточных коэффициентов, включенных в по меньшей мере один из множества подблоков, могут быть установлены равными 0. В данном случае остаточный коэффициент относится к коэффициенту преобразования, сгенерированному посредством преобразования, коэффициенту пропуска преобразования, сгенерированному посредством пропуска преобразования, или квантованному коэффициенту, сгенерированному путем квантования коэффициента преобразования или коэффициента. Например, значения остаточных коэффициентов, включенных в подблок, разнесенный от границы блока кодирования на предварительно определенное расстояние или больше, могут быть установлены равными 0.
[565] На фиг. 27 представлен вид для описания примера, в котором остаточные коэффициенты подблоков устанавливают равными 0.
[566] В примере, показанном на фиг. 27, флаг кодированного блока (CBF) указывает то, имеется ли ненулевой остаточный коэффициент в подблоке. Когда значение CBF равняется 0, это указывает, что ненулевой остаточный коэффициент отсутствует в подблоке, а когда значение CBF равняется 1, это указывает, что имеется ненулевой остаточный коэффициент в подблоке.
[567] Когда расстояние от границы блока кодирования до подблока больше, чем пороговое значение, или равняется ему, остаточные коэффициенты, включенные в подблок, могут быть установлены равными 0. В этом случае расстояние от границы блока кодирования до подблока может быть получено на основании первого отсчета, расположенного на границе блока кодирования, и второго отсчета, включенного в подблок. Например, первый отсчет может представлять собой отсчет, расположенный в верхнем левом углу блока кодирования, отсчет, расположенный в нижнем левом углу, отсчет, расположенный слева посередине, отсчет, расположенный в верхнем правом углу, отсчет, расположенный в нижнем правом углу, отсчет, расположенный справа посередине, отсчет, расположенный сверху посередине, и отсчет, расположенный снизу посередине. Второй отсчет может представлять собой отсчет, расположенный в верхнем левом углу подблока, отсчет, расположенный в нижнем левом углу, отсчет, расположенный слева посередине, отсчет, расположенный в верхнем правом углу, отсчет, расположенный в нижнем правом углу, отсчет, расположенный справа посередине, отсчет, расположенный сверху посередине, и отсчет, расположенный снизу посередине.
[568] Пороговое значение может быть определено на основании по меньшей мере одного из размера и формы блока кодирования, количества подблоков, включенных в блок кодирования, и размера подблока. Альтернативно информация для определения порогового значения может быть передана посредством битового потока.
[569] Например, когда разбиение в вертикальном направлении применяется к текущему блоку, остаточные коэффициенты подблоков, расстояние от левой границы блока кодирования которых равняется пороговому значению или больше него, могут быть установлены равными 0. Когда размер блока кодирования равняется 64, и пороговое значение равняется 32, как показано в примере на фиг. 27 (a), остаточные коэффициенты подблоков (Sub-CU2 и Sub-CU3), имеющие расстояние, равное 32 или более, от левой границы блока кодирования, могут быть установлены равными 0.
[570] Альтернативно, когда разбиение в горизонтальном направлении применяется к текущему блоку, остаточные коэффициенты подблоков, расстояние от верхней границы блока кодирования которых равняется пороговому значению или больше него, могут быть установлены равными 0. Когда размер блока кодирования равняется 64, и пороговое значение равняется 32, как показано в примере на фиг. 27 (b), остаточные коэффициенты подблоков (Sub-CU2 и Sub-CU3), имеющие расстояние, равное 32 или более, от верхней границы блока кодирования, могут быть установлены равными 0.
[571] В отличие от примера, показанного на фигурах, остаточные коэффициенты, включенные в подблоки, расстояние от границы блока кодирования которых меньше, чем пороговое значение, могут быть установлены равными 0.
[572] Альтернативно остаточные коэффициенты остальных подблоков, за исключением подблока, расположенного в предварительно установленном положении, из множества подблоков могут быть установлены равными 0. Например, когда разбиения в вертикальном направлении применяется к блоку кодирования, остаточные коэффициенты остальных подблоков, за исключением самого левого или самого правого подблока, из множества подблоков могут быть установлены равными 0. Альтернативно, когда разбиение в горизонтальном направлении применяется к блоку кодирования, остаточные коэффициенты остальных подблоков, за исключением подблока, расположенного сверху или снизу, из множества подблоков могут быть установлены равными 0.
[573] Информация, указывающая то, имеется ли ненулевой коэффициент, например, кодирование CBF, может быть пропущена для подблоков. Когда кодирование CBF пропущено, тогда то, включен ли ненулевой остаточный коэффициент в каждый подблок, может быть определено с учетом расстояния между границей блока кодирования и подблоком или положением подблока. Например, в примере, показанном на фиг. 27, значения CBF подблока 0 и подблока 1 (sub-CU0, sub-CU1) могут быть получены как 1, и значения CBF подблока 2 и подблока 3 (sub-CU2, sub-CU3) могут быть получены как 0.
[574] Преобразование и/или квантование могут быть выполнены в отношении подблоков, содержащих ненулевой коэффициент, тогда как преобразование и квантование могут быть пропущены для подблоков, которые не содержат ненулевой коэффициент.
[575] В качестве еще одного примера может быть кодирована и передана информация, указывающая, что преобразование выполнено только в отношении частичного участка блока кодирования или блока преобразования. Информация может представлять собой cu_sbt_flag 1-битного флага. Когда флаг равняется 1, это указывает, что преобразование выполняется только в отношении некоторого из множества подблоков, сгенерированных путем разбиения блока кодирования или блока преобразования, а когда флаг равняется 0, это указывает, что преобразование выполняется без разбиения блока кодирования или блока преобразования на подблоки.
[576] Метод выполнения преобразования только в отношении частичного участка блока кодирования может быть допущен только тогда, когда способ внутреннего кодирования с подразбиением применяется к блоку кодирования. Соответственно, cu_sbt_flag может быть кодирован и передан только тогда, когда способ внутреннего кодирования с подразбиением применяется к блоку кодирования. Когда значение cu_sbt_flag равняется 1, преобразование выполняется только в отношении некоторых подблоков из множества подблоков, сгенерированных путем разбиения блока кодирования или блока преобразования, и остаточные коэффициенты остальных подблоков могут быть установлены равными 0. Когда значение cu_sbt_flag равняется 1, преобразование может быть выполнено в отношении всех подблоков.
[577] Альтернативно, когда способ внутреннего кодирования с подразбиением применяется к блоку кодирования, кодирование cu_sbt_flag может быть пропущено, и значение cu_sbt_flag может быть установлено равным 1.
[578] В качестве еще одного примера, только когда режим кодирования с предсказанием блока кодирования представляет собой предсказание, осуществляемое между изображениями, или привязку к текущему изображению, может быть допущен метод выполнения преобразования только в отношении частичного участка блока кодирования. Когда блок кодирования кодируется с помощью предсказания, осуществляемого между изображениями, или привязки к текущему изображению, может быть кодирована и передана информация, указывающая то, выполнено ли преобразование только в отношении частичного участка блока кодирования. Когда преобразование выполняется только в отношении частичного участка блока кодирования, может быть кодирована и передана информация, указывающая тип разбиения блока кодирования. Информация, указывающая тип разбиения блока кодирования, может включать по меньшей мере одно из информации, указывающей то, разбит ли блок кодирования на четыре подблока, информации, указывающей направление разбиения блока кодирования, и информации, указывающей количество подблоков. Например, когда cu_sbt_flag равняется 1, может быть передан флаг cu_sbt_quadtree_flag, указывающий то, разбит ли блок кодирования на четыре подблока. Когда cu_sbt_quadtree_flag равняется 1, это указывает, что блок кодирования разбит на четыре подблока. Например, блок кодирования может быть разбит на четыре подблока с использованием трех вертикальных линий или трех горизонтальных линий, или блок кодирования может быть разбит на четыре подблока с использованием одной вертикальной линии и одной горизонтальной линии. Когда cu_sbt_quadtree_flag равняется 0, это указывает, что блок кодирования разбит на два подблока. Например, блок кодирования может быть разбит на два подблока с использованием одной вертикальной линии и одной горизонтальной линии.
[579] Кроме того, флаг, указывающий направление разбиения блока кодирования, может быть передан посредством битового потока. Например, может быть кодирован и передан флаг cu_sbt_horizontal_flag, указывающий то, применяется ли разбиение в горизонтальном направлении к блоку кодирования. Когда значение cu_sbt_horizontal_flag равняется 1, это указывает, что разбиение в горизонтальном направлении применяется к блоку кодирования, а когда значение cu_sbt_horizontal_flag равняется 0, это указывает, что разбиение в вертикальном направлении применяется к блоку кодирования.
[580] Информация, указывающая положение подблока, в котором отсутствует ненулевой коэффициент, или подблока, в отношении которого не выполняется преобразование, может быть передана посредством битового потока. На основании информации могут быть определены подблок, в отношении которого выполняются преобразование и/или квантование, и подблок, для которого преобразование и/или квантование пропущены.
[581] На фиг. 28 представлен вид, показывающий пример, в котором положение подблока, в отношении которого были выполнены преобразование и/или квантование, указано на основании информации, переданной посредством битового потока.
[582] Может быть передан флаг sbt_upleft_flag, указывающий то, имеется ли ненулевой коэффициент в конкретном положении или в первом подблоке. Когда значение sbt_upleft_flag равняется 1, это указывает, что преобразование и/или квантование выполняются в отношении подблока, расположенного сверху или слева от блока кодирования, и преобразование и/или квантование не выполняются в отношении подблока, расположенного справа или снизу от блока кодирования. Когда значение sbt_upleft_flag равняется 0, это указывает, что преобразование и/или квантование выполняются в отношении подблока, расположенного сверху или слева от блока кодирования, и преобразование и/или квантование не выполняются в отношении подблока, расположенного справа или снизу от блока кодирования.
[583] Когда блок кодирования разбит на четыре подблока, sbt_upleft_flag может указывать, что преобразование и/или квантование выполняется в отношении N подблоков. Например, когда значение sbt_upleft_flag равняется 1, это указывает, что преобразование и/или квантование выполняются в отношении двух подблоков сверху или слева, а когда значение sbt_upleft_flag равняется 0, это указывает, что преобразование и/или квантование выполняются в отношении двух подблоков справа или снизу.
[584] В отличие от примера, показанного на фигуре, значение N может быть установлено равным 1 или 3.
[585] Остаточные коэффициенты подблока, в отношении которых преобразование и/или квантование не выполняются, могут быть установлены равными 0.
[586] Тип преобразования подблока может быть определен с учетом направления разбиения блока кодирования и положения подблока. Например, когда блок кодирования разбит в вертикальном направлении, и преобразование выполняется в отношении подблока, расположенного слева, из подблоков, тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении могут быть установлены так, чтобы отличаться. Например, тип преобразования в горизонтальном направлении может быть установлен равным DCT8, и тип преобразования в вертикальном направлении может быть установлен равным DST7. С другой стороны, когда блок кодирования разбит в вертикальном направлении, и преобразование выполняется в отношении подблока, расположенного справа, из подблоков, тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении подблока могут быть установлены равным образом. Например, тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении могут быть установлены равными DST7.
[587] Альтернативно, когда блок кодирования разбит в горизонтальном направлении, и преобразование выполняется в отношении подблока, расположенного сверху, из подблоков, тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении могут быть установлены так, чтобы отличаться. Например, тип преобразования в горизонтальном направлении может быть установлен равным DST7, и тип преобразования в вертикальном направлении может быть установлен равным DCT8. С другой стороны, когда блок кодирования разбит в горизонтальном направлении, и преобразование выполняется в отношении подблока, расположенного снизу, из подблоков, тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении подблока могут быть установлены равным образом. Например, тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении могут быть установлены равными DST7.
[588] Информация, указывающая то, имеется ли ненулевой коэффициент, например, кодирование CBF, может быть пропущена для подблоков. Когда кодирование CBF пропущено, тогда то, включен ли ненулевой остаточный коэффициент в каждый подблок, может быть определено с учетом положения блока, в отношении которого выполняется преобразование. Например, когда значение sbt_upleft_flag равняется 0, значения CBF подблоков, расположенных слева или сверху, могут быть получены как 0, и значение CBF подблоков, расположенных справа или снизу, может быть получено как 1. Альтернативно, когда значение sbt_upleft_flag равняется 1, значение CBF подблоков, расположенных слева или сверху, может быть получено как 1, и значение CBF подблоков, расположенных справа или снизу, может быть получено как 0.
[589] Восстановленный отсчет подблока, в отношении которого выполняется преобразование, может быть получен из суммы отсчета предсказания и остаточного отсчета. С другой стороны, в подблоке, в отношении которого пропущено преобразование, отсчет предсказания может быть установлен как восстановленный отсчет. Квантование предназначено для уменьшения энергии блока, и процесс квантования включает процесс разделения коэффициента преобразования на конкретное постоянное значение. Постоянное значение может быть получено с помощью параметра квантования, и параметр квантования может быть определен как значение от 1 до 63.
[590] Когда кодер выполняет преобразование и квантование, декодер может получать остаточный блок путем обратного квантования и обратного преобразования. Декодер может получать восстановленный блок для текущего блока путем добавления блока предсказания и остаточного блока.
[591]
[592] Когда получают восстановленный блок текущего блока, потеря информации, происходящая в процессе квантования и кодирования, может быть уменьшена посредством фильтрования в контуре. Фильтр в контуре может содержать по меньшей мере один из деблочного фильтра, фильтр адаптивного к отсчету смещения (SAO) и адаптивный контурный фильтр (ALF). Далее восстановленный блок перед применением фильтра в контуре называется первым восстановленным блоком, а восстановленный блок после применения фильтра в контуре называется вторым восстановленным блоком.
[593] Второй восстановленный блок может быть получен путем применения по меньшей мере одного из деблочного фильтра, SAO и ALF к первому восстановленному блоку. В этом случае SAO или ALF могут быть применены после применения деблочного фильтра.
[594] Деблочный фильтр предназначен для уменьшения ухудшения качества видео (блочного артефакта) на границе блока, которое происходит при выполнении квантования в отношении отдельных блоков. Для применения деблочного фильтра может быть определен качественный показатель блока (BS) между первым восстановленным блоком и соседним восстановленным блоком.
[595] На фиг. 29 представлена блок-схема, изображающая процесс определения качественного показателя блока.
[596] В примере, показанном на фиг. 29, P обозначает первый восстановленный блок, а Q обозначает соседний восстановленный блок. В данном случае соседний восстановленный блок может представлять собой блок, смежный с левой стороной или верхней стороной текущего блока.
[597] В примере, показанном на фиг. 29, показано, что качественный показатель блока определен с учетом режимов кодирования с предсказанием P и Q, того, включен ли ненулевой коэффициент преобразования, того, выполнено ли предсказание, осуществляемое между изображениями, с использованием того же опорного изображения, и того, является ли значение разницы векторов движения большей, чем пороговое значение, или равной ему.
[598] То, следует ли применять деблочный фильтр, можно определить на основании качественного показателя блока. Например, когда качественный показатель блока равен 0, фильтрование можно не выполнять.
[599] SAO предназначен для уменьшения явления в виде колец (артефакта в виде колец), которое происходит при выполнении квантования в частотной области. SAO может быть выполнено путем добавления или вычитания смещения, определенного с учетом схемы первого восстановленного видео. Способ определения смещения включает смещение по краю (EO) или смещение по полосам (BO). EO обозначает способ определения смещения текущего отсчета согласно схеме окружающих пикселей. BO обозначает способ применения обычного смещения к набору пикселей, имеющих похожие значения яркости на участке. В частности, яркость пикселей может быть разбита на 32 равные секции, и пиксели, имеющие похожие значения яркости, могут быть установлены как один набор. Например, четыре смежные полосы из 32 полос могут быть установлены как одна группа, и одинаковое значение смещения может быть применено к отсчетам, принадлежащим к четырем полосам.
[600] ALF представляет собой способ генерирования второго восстановленного видео путем применения фильтра, имеющего предварительно заданный размер/форму, к первому восстановленному видео или восстановленному видео, к которому был применен деблочный фильтр. В уравнении 32 показан пример применения ALF.
[601] [Уравнение 32]
[602] Любой из предварительно заданных фильтров-кандидатов может быть выбран элементом изображения, элементом кодового дерева, блоком кодирования, блоком предсказания или блоком преобразования. Каждый из фильтров-кандидатов может отличаться либо по размеру, либо по форме.
[603] На фиг. 30 представлен вид, показывающий предварительно заданные фильтры-кандидаты.
[604] Как показано в примере на фиг. 30, может быть выбрана по меньшей мере одна из ромбовидных форм 5×5, 7×7 и 9×9.
[605] Только ромбовидная форма размером 5×5 может быть использована для компонента цветности.
[606]
[607] Применение вариантов осуществления, описанных выше, сфокусированных на процессе декодирования или процессе кодирования, к процессу кодирования или процессу декодирования включено в объем настоящего изобретения. Изменение вариантов осуществления, описанных в предварительно определенном порядке, в порядке, отличном от описанного порядка, также включено в объем настоящего изобретения.
[608] Хотя приведенные выше варианты осуществления были описаны на основании ряда этапов или блок-схем, это не ограничивает порядок выполнения во времени настоящего изобретения, и они могут быть выполнены одновременно или в другом порядке при необходимости. Кроме того, каждый из компонентов (например, элементов, модулей или т.п.), составляющих структурную схему в вариантах осуществления, описанных выше, может быть реализован в виде аппаратного устройства или программного обеспечения, или множество компонентов могут быть скомбинированы для реализации в виде одного аппаратного устройства или программного обеспечения. Варианты осуществления, описанные выше, могут быть реализованы в форме программных команд, которые могут быть исполнены посредством различных компьютерных компонентов и записаны в машиночитаемом носителе данных. Машиночитаемый носитель данных может содержать программные команды, файлы данных, структуры данных и т.п. независимо или в комбинации. Машиночитаемый носитель данных включает, например, магнитные носители, такие как жесткий диск, гибкий диск и магнитную ленту, оптические носители данных, такие как CD-ROM и DVD, магнитно-оптические носители, такие как гибкий оптический диск, и аппаратные устройства, специально выполненные с возможностью хранения и исполнения программных команд, такие как ROM, RAM, флеш-память и т.п. Аппаратные устройства, описанные выше, могут быть выполнены с возможностью работы с использованием одного или более программных модулей для выполнения процесса согласно настоящему изобретению, и наоборот.
[609] Настоящее изобретение может быть применено к электронному устройству, которое кодирует и декодирует видео.
Claims (20)
1. Способ декодирования видео, включающий
определение линии опорных отсчетов текущего блока;
определение того, существует ли кандидатный режим внутреннего предсказания, который является таким же, как режим внутреннего предсказания текущего блока;
получение режима внутреннего предсказания текущего блока на основании определения;
выполнение внутреннего предсказания в отношении текущего блока на основании линии опорных отсчетов и режима внутреннего предсказания, при этом по меньшей мере один из кандидатных режимов внутреннего предсказания получают путем добавления смещения к максимальному значению из режима внутреннего предсказания верхнего соседнего блока текущего блока и режима внутреннего предсказания левого соседнего блока текущего блока или вычитания из него;
по меньшей мере один из кандидатных режимов внутреннего предсказания получают путем добавления 2 к максимальному значению или вычитания из него, когда разница между режимом внутреннего предсказания верхнего соседнего блока и режимом внутреннего предсказания левого соседнего блока составляет 64.
2. Способ по п. 1, отличающийся тем, что дополнительно включает этап определения того, следует или нет разбивать текущий блок на множество подблоков, при этом,
когда текущий блок разбивают на множество подблоков, множество подблоков совместно используют один режим внутреннего предсказания,
при этом тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении подблока определяют на основании формы подблока.
3. Способ по п. 2, отличающийся тем, что обратное преобразование пропускают для некоторых из множества подблоков.
4. Способ кодирования видео, включающий
определение линии опорных отсчетов текущего блока;
определение того, существует ли кандидатный режим внутреннего предсказания, который является таким же, как режим внутреннего предсказания текущего блока;
получение режима внутреннего предсказания текущего блока на основании определения; и
выполнение внутреннего предсказания в отношении текущего блока на основании линии опорных отсчетов и режима внутреннего предсказания, при этом по меньшей мере один из кандидатных режимов внутреннего предсказания получают путем добавления смещения к максимальному значению из режима внутреннего предсказания верхнего соседнего блока текущего блока и режима внутреннего предсказания левого соседнего блока текущего блока или вычитания из него;
по меньшей мере один из кандидатных режимов внутреннего предсказания получают путем добавления 2 к максимальному значению или вычитания из него, когда разница между режимом внутреннего предсказания верхнего соседнего блока и режимом внутреннего предсказания левого соседнего блока составляет 64.
5. Способ по п. 4, отличающийся тем, что дополнительно включает этап определения того, следует или нет разбивать текущий блок на множество подблоков, при этом,
когда текущий блок разбивают на множество подблоков, множество подблоков совместно используют один режим внутреннего предсказания,
при этом тип преобразования в горизонтальном направлении и тип преобразования в вертикальном направлении подблока определяют на основании формы подблока.
6. Способ по п. 5, отличающийся тем, что преобразование пропускают для некоторых из множества подблоков.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR0-2018121757 | 2018-10-12 | ||
KR0-2018-0121713 | 2018-10-12 | ||
KR0-20190006611 | 2019-01-18 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2021111110A Division RU2800133C2 (ru) | 2018-10-12 | 2019-10-11 | Способ и устройство для кодирования/декодирования сигналов изображений |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2023117248A RU2023117248A (ru) | 2023-07-05 |
RU2811980C2 true RU2811980C2 (ru) | 2024-01-22 |
Family
ID=
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2584498C2 (ru) * | 2011-11-04 | 2016-05-20 | Квэлкомм Инкорпорейтед | Видеокодирование интра-режима |
WO2017176030A1 (ko) * | 2016-04-06 | 2017-10-12 | 주식회사 케이티 | 비디오 신호 처리 방법 및 장치 |
RU2649787C1 (ru) * | 2012-07-06 | 2018-04-04 | Нтт Докомо, Инк. | Устройство кодирования видео с предсказанием, способ кодирования видео с предсказанием, программа кодирования видео с предсказанием, устройство декодирования видео с предсказанием, способ декодирования видео с предсказанием и программа декодирования видео с предсказанием |
EP3311571A1 (en) * | 2015-06-18 | 2018-04-25 | Qualcomm Incorporated | Intra prediction and intra mode coding |
EP3379829A1 (en) * | 2015-11-19 | 2018-09-26 | Electronics and Telecommunications Research Institute | Method and apparatus for encoding/decoding in-screen prediction mode |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2584498C2 (ru) * | 2011-11-04 | 2016-05-20 | Квэлкомм Инкорпорейтед | Видеокодирование интра-режима |
RU2649787C1 (ru) * | 2012-07-06 | 2018-04-04 | Нтт Докомо, Инк. | Устройство кодирования видео с предсказанием, способ кодирования видео с предсказанием, программа кодирования видео с предсказанием, устройство декодирования видео с предсказанием, способ декодирования видео с предсказанием и программа декодирования видео с предсказанием |
EP3311571A1 (en) * | 2015-06-18 | 2018-04-25 | Qualcomm Incorporated | Intra prediction and intra mode coding |
EP3379829A1 (en) * | 2015-11-19 | 2018-09-26 | Electronics and Telecommunications Research Institute | Method and apparatus for encoding/decoding in-screen prediction mode |
WO2017176030A1 (ko) * | 2016-04-06 | 2017-10-12 | 주식회사 케이티 | 비디오 신호 처리 방법 및 장치 |
Non-Patent Citations (1)
Title |
---|
C.-W. Hsu и др. Description of SDR video coding technology proposal by MediaTek, JVET-J0018, апрель 2018 г. K. CHOI и др. CE6: AMT with reduced transform types (Test1.5), JVET-K0171, июль 2018 г. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102555345B1 (ko) | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 | |
CN111149359B (zh) | 用于对图像进行编码/解码的方法和装置以及存储有比特流的记录介质 | |
JP7430716B2 (ja) | ビデオ信号の符号化方法および復号化方法並びにその装置 | |
JP7434486B2 (ja) | 画像復号化方法、画像符号化方法及びコンピュータ可読記録媒体 | |
RU2766152C1 (ru) | Способ и устройство для кодирования/декодирования сигнала изображения | |
CN112219397B (zh) | 用于对视频信号编码/解码的方法及其装置 | |
JP2022078048A (ja) | 画像復号方法及び画像符号化方法 | |
KR20230113261A (ko) | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한기록 매체 | |
KR20230038168A (ko) | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 | |
JP7459069B2 (ja) | 映像信号符号化/復号化方法及びその装置 | |
KR102619997B1 (ko) | 영상 신호 부호화/복호화 방법 및 이를 위한 장치 | |
CA3108468A1 (en) | Image encoding/decoding method and device, and recording medium storing bitstream | |
JP2022548220A (ja) | 映像信号符号化/復号化方法及びそのための装置 | |
CN113841399A (zh) | 图像编码/解码方法和设备 | |
RU2811980C2 (ru) | Способ и устройство для кодирования/декодирования сигналов изображений | |
RU2820118C2 (ru) | Способ и устройство для кодирования/декодирования сигналов изображений | |
RU2811985C2 (ru) | Способ и устройство для кодирования/декодирования сигналов изображений | |
RU2800133C2 (ru) | Способ и устройство для кодирования/декодирования сигналов изображений | |
RU2824448C1 (ru) | Способ и устройство для кодирования/декодирования сигналов изображений | |
RU2812857C2 (ru) | Способ и устройство для кодирования/декодирования сигналов изображений | |
RU2813667C2 (ru) | Способ и устройство для кодирования и декодирования видеосигналов | |
RU2819286C2 (ru) | Способ и устройство кодирования/декодирования сигналов изображений | |
RU2799588C2 (ru) | Способ и устройство для кодирования/декодирования сигналов изображений | |
RU2819393C2 (ru) | Способ и устройство кодирования/декодирования сигналов изображений | |
RU2819080C2 (ru) | Способ и устройство кодирования/декодирования сигналов изображений |