СПОСОБ И УСТРОЙСТВО ДЛЯ ВЫПОЛНЕНИЯ ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ИНТРА-ПРЕДСКАЗАНИЯ В СИСТЕМЕ КОДИРОВАНИЯ ИЗОБРАЖЕНИЙ
METHOD AND APPARATUS FOR PERFORMING IMAGE DECODING BASED ON INTRA PREDICTION IN AN IMAGE ENCODING SYSTEM

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ РАСКРЫТИЕ
[1] Настоящее раскрытие относится к методу кодирования видео, и более конкретно, к способу и устройству декодирования видео на основе интра-предсказания в системе кодирования видео.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
[2] Потребности в изображениях высокого разрешения и высокого качества, таких как изображения HD (высокого разрешения) и изображения UHD (сверхвысокого разрешения), возрастают в различных областях. Так как данные изображения имеют высокое разрешение и высокое качество, количество информации или битов, подлежащих передаче, увеличивается относительно унаследованных данных изображения. Поэтому, когда данные изображения передаются с использованием носителя, такого как традиционная проводная/беспроводная широкополосная линия, или данные изображения хранятся с использованием существующего носителя хранения, затраты на их передачу и хранение увеличиваются.
[3] Соответственно, существует потребность в высокоэффективном методе сжатия изображений для эффективной передачи, хранения и воспроизведения информации изображений высокого разрешения и высокого качества.
Краткое описание сущности изобретения
[4] Настоящее раскрытие обеспечивает способ и устройство для повышения эффективности кодирования изображений.
[5] Настоящее раскрытие также обеспечивает способ и устройство интра-предсказания для выбора интерполяционного фильтра для целевой выборки в текущем блоке.
[6] Настоящее раскрытие также обеспечивает способ и устройство для выполнения интра-предсказания на основе интерполяционного фильтра для выбранной целевой выборки.
[7] В одном аспекте, обеспечен способ декодирования видео, выполняемый устройством декодирования. Способ включает в себя выведение режима интра-предсказания текущего блока; выведение соседних выборок, включающих в себя левые соседние выборки и верхние соседние выборки текущего блока; выведение опорных выборок для предсказания целевой выборки текущего блока среди соседних выборок на основе положения целевой выборки и угла предсказания режима интра-предсказания; определение интерполяционного фильтра для целевой выборки; и выведение выборки предсказания целевой выборки на основе интерполяционного фильтра и опорных выборок.
[8] В другом аспекте, обеспечено устройство декодирования для выполнения декодирования изображения. Устройство декодирования включает в себя: энтропийный декодер, получающий информацию предсказания для текущего блока; и модуль предсказания, выводящий режим интра-предсказания текущего блока; выводящий соседние выборки, включающие в себя левые соседние выборки и верхние соседние выборки текущего блока, выводящий опорные выборки для предсказания целевой выборки среди соседних выборок на основе положения целевой выборки текущего блока и угла предсказания режима интра-предсказания, определяющий интерполяционный фильтр для целевой выборки и выводящий выборку предсказания целевой выборки на основе интерполяционного фильтра и опорных выборок.
[9] В другом аспекте, обеспечен способ кодирования видео, выполняемый устройством кодирования. Способ включает в себя: определение режима интра-предсказания для текущего блока; выведение соседних выборок, включающих в себя левые соседние выборки и верхние соседние выборки текущего блока; выведение опорных выборок для предсказания целевой выборки текущего блока среди соседних выборок на основе положения целевой выборки и угла предсказания режима интра-предсказания; определение интерполяционного фильтра для целевой выборки; выведение выборки предсказания целевой выборки на основе интерполяционного фильтра и опорных выборок; и генерирование информации предсказания для текущего блока, кодирование сгенерированной информации предсказания и выведение кодированной информации предсказания.
[10] В другом аспекте, обеспечено устройство кодирования видео. Устройство кодирования включает в себя: модуль предсказания, определяющий режим интра-предсказания для текущего блока, выводящий соседние выборки, включающие в себя левые соседние выборки и верхние соседние выборки текущего блока, выводящий опорные выборки для предсказания целевой выборки среди соседних выборок на основе положения целевой выборки текущего блока и угла предсказания режима интра-предсказания, определяющий интерполяционный фильтр для целевой выборки, и выводящий выборку предсказания целевой выборки на основе интерполяционного фильтра и опорных выборок; и энтропийный кодер, генерирующий информацию предсказания для текущего блока, кодирующий сгенерированную информацию предсказания и выводящий кодированную информацию предсказания.
[11] В соответствии с настоящим раскрытием, предсказание может выполняться на целевой выборке на основе интерполяционного фильтра, выбранного в соответствии с информацией размера текущего блока, информацией о расстоянии до опорной выборки, и/или информацией режима предсказания, причем опорная выборка в положении дробной выборки для целевой выборки может точно генерироваться, чтобы улучшить точность предсказания для текущего блока, и остаток для текущего блока может быть уменьшен, чтобы повысить эффективность кодирования.
[12] В соответствии с настоящим раскрытием, поскольку интерполяционный фильтр для целевой выборки может выбираться на основе различных условий, описанных выше, количество битов информации касательно выбора интерполяционного фильтра может быть уменьшено, тем самым увеличивая точность предсказания текущего блока и повышая эффективность кодирования текущего блока.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[13] Фиг. 1 представляет собой схематичную диаграмму, иллюстрирующую конфигурацию устройства кодирования видео, к которому применимо настоящее раскрытие.
[14] Фиг. 2 иллюстрирует другой пример устройства кодирования видео, к которому применимо настоящее раскрытие.
[15] Фиг. 3 иллюстрирует пример процесса выполнения интра-предсказания в устройстве кодирования.
[16] Фиг. 4 представляет собой схематичную диаграмму, иллюстрирующую конфигурацию устройства декодирования видео, к которому применимо настоящее раскрытие.
[17] Фиг. 5 иллюстрирует другой пример устройства декодирования видео, к которому применимо настоящее раскрытие.
[18] Фиг. 6 иллюстрирует пример процесса выполнения интра-предсказания в устройстве декодирования.
[19] Фиг. 7 иллюстрирует пример левых соседних выборок и верхних соседних выборок, используемых для интра-предсказания текущего блока.
[20] Фиг. 8 иллюстрирует пример интра-направленных режимов для 65 направлений предсказания.
[21] Фиг. 9 иллюстрирует пример, в котором выборки предсказания целевой выборки выводятся на основе целочисленных выборок, смежных слева и справа от опорной выборки, когда положение опорной выборки, расположенной в направлении предсказания направленного режима интра-предсказания, является положением дробной выборки.
[22] Фиг. 10 иллюстрирует пример выбора интерполяционного фильтра на основе размера текущего блока и режима интра-предсказания.
[23] Фиг. 11 иллюстрирует пример выбора интерполяционного фильтра на основе расстояния между целевой выборкой текущего блока и опорной выборкой.
[24] Фиг. 12 иллюстрирует пример выведения опорной выборки целевой выборки текущего блока на основе множества интерполяционных фильтров и выведения выборки предсказания целевой выборки на основе опорной выборки.
[25] Фиг. 13 схематично иллюстрирует способ кодирования видео в соответствии с настоящим раскрытием.
[26] Фиг. 14 схематично иллюстрирует способ декодирования видео в соответствии с настоящим раскрытием.
Описание примерных вариантов осуществления
[27] Настоящее раскрытие может быть модифицировано в различных формах, и его конкретные варианты осуществления будут описаны и проиллюстрированы на чертежах. Однако варианты осуществления не предназначены для ограничения раскрытия. Термины, применяемые в следующем описании, используются, чтобы описывать конкретные варианты осуществления, но не предназначены для ограничения раскрытия. Выражение в единственном числе включает в себя выражение во множественном числе, если это явно читается по-разному. Термины, такие как “включать в себя” и “иметь”, предназначены для указания, что признаки, числа, этапы, операции, элементы, компоненты или их комбинации, используемые в следующем описании, существуют, и, таким образом, должно быть понятно, что не исключена возможность существования или добавления одного или нескольких других признаков, чисел, этапов, операций, элементов, компонентов или их комбинаций.
[28] При этом, элементы на чертежах, описанные в раскрытии, показаны независимо в целях удобства для объяснения разных конкретных функций и не означают, что элементы воплощаются независимыми аппаратными средствами или независимым программным обеспечением. Например, два или более элементов из таких элементов могут комбинироваться, чтобы образовывать один элемент, или один элемент может разделяться на множество элементов. Варианты осуществления, в которых элементы комбинируются и/или разделяются, принадлежат раскрытию без отклонения от концепции раскрытия.
[29] Далее, варианты осуществления настоящего раскрытия будут описаны подробно со ссылкой на прилагаемые чертежи. Кроме того, аналогичные ссылочные позиции используются, чтобы указывать подобные элементы на всех чертежах, и одни и те же описания подобных элементов будут опущены.
[30] В настоящей спецификации, термин “картинка” обычно обозначает единицу, представляющую изображение в конкретное время, вырезка представляет собой единицу, составляющую часть картинки. Одна картинка может быть составлена из множества вырезок, и термины “картинка” и “вырезка” могут использоваться взаимозаменяемым образом, если требуют конкретные обстоятельства.
[31] Пиксел или пел (элемент изображения) может означать минимальную единицу, составляющую одну картинку (или изображение). Дополнительно, “выборка” может использоваться как термин, соответствующий пикселу. Выборка может, в общем, представлять пиксел или пиксельное значение, может представлять только пиксел (пиксельное значение) компонента яркости и может представлять только пиксел (пиксельное значение) компонента цветности.
[32] Единица указывает основную единицу обработки изображения. Единица может включать в себя по меньшей мере одно из конкретной области и информации, связанной с областью. Опционально, термин “единица” может использоваться взаимозаменяемым образом с такими терминами, как блок, область или тому подобное. В обычном случае, блок M×N может представлять набор выборок или коэффициентов преобразования, упорядоченных в M столбцов и N строк.
[33] Фиг. 1 кратко иллюстрирует структуру устройства кодирования видео, к которому применимо настоящее раскрытие.
[34] Со ссылкой на фиг. 1, устройство 100 кодирования видео может включать в себя модуль разделения 105 картинки, модуль предсказания 110, процессор 120 остатка, сумматор 150, фильтр 255 и память 160. Процессор 120 остатка включает в себя вычитатель 121, преобразователь 122, модуль квантования 123, модуль перегруппировки 124, модуль деквантования 125, обратный преобразователь 126.
[35] Модуль разделения 105 картинки может разделять входную картинку на по меньшей мере одну единицу обработки.
[36] В одном примере, единица обработки может упоминаться как единица кодирования (CU). В этом случае единица кодирования может рекурсивно разбиваться от наибольшей единицы кодирования (LCU) в соответствии со структурой квадродерева/двоичного дерева (QTBT). Например, одна единица кодирования может быть разбита на множество единиц кодирования большей глубины на основе структуры квадродерева и/или структуры двоичного дерева. В этом случае, например, структура квадродерева может применяться первой, и структура двоичного дерева может применяться позже. Альтернативно, структура двоичного дерева может применяться первой. Процедура кодирования в соответствии с настоящим раскрытием может выполняться на основе конечной единицы кодирования, которая далее не разбивается. В этом случае, наибольшая единица кодирования может использоваться в качестве конечной единицы кодирования на основе эффективности кодирования или тому подобного, в зависимости от характеристик изображения, или единица кодирования может рекурсивно разбиваться на единицы кодирования более низкой глубины при необходимости, и единица кодирования, имеющая оптимальный размер, может использоваться в качестве конечной единицы кодирования. Здесь, процедура кодирования может включать в себя процедуру, такую как предсказание, преобразование и реконструкция, которые будут описаны ниже.
[37] В другом примере, единица обработки может включать в себя единицу кодирования (CU), единицу предсказания (PU) или единицу преобразования (TU). Единица кодирования может разбиваться от наибольшей единицы кодирования (LCU) на единицы кодирования большей глубины в соответствии со структурой квадродерева. В этом случае, наибольшая единица кодирования может непосредственно использоваться в качестве конечной единицы кодирования на основе эффективности кодирования или тому подобного, в зависимости от характеристик изображения, или единица кодирования может рекурсивно разбиваться на единицы кодирования большей глубины при необходимости, и единица кодирования, имеющая оптимальный размер, может использоваться в качестве конечной единицы кодирования. Когда наименьшая единица кодирования (SCU) установлена, единица кодирования может не разбиваться на единицы кодирования меньшие, чем наименьшая единица кодирования. Здесь, конечная единица кодирования относится к единице кодирования, которая разделена или разбита до единицы предсказания или единицы преобразования. Единица предсказания представляет собой единицу, которая разделена из единицы кодирования и может представлять собой единицу предсказания выборки. Здесь, единица предсказания может разделяться на подблоки. Единица преобразования может быть разделена от единицы кодирования в соответствии со структурой квадродерева и может представлять собой единицу для выведения коэффициента преобразования и/или единицу для выведения остаточного сигнала из коэффициента преобразования. Далее, единица кодирования может упоминаться как блок кодирования (CB), единица предсказания может упоминаться как блок предсказания (PB), и единица преобразования может упоминаться как блок преобразования (TB). Блок предсказания или единица предсказания могут относиться к конкретной области в форме блока в картинке и могут включать в себя массив выборок предсказания. Также, блок преобразования или единица преобразования могут относиться к конкретной области в форме блока в картинке и могут включать в себя коэффициент преобразования или массив остаточных выборок.
[38] Модуль предсказания 110 может выполнять предсказание на целевом блоке обработки (далее, текущий блок) и может генерировать предсказанный блок, включающий в себя выборки предсказания для текущего блока. Единица предсказания, выполняемого в модуле предсказания 110, может представлять собой блок кодирования или может представлять собой блок преобразования или может представлять собой блок предсказания.
[39] Модуль предсказания 110 может определять, применяется ли внутрикадровое (интра-) предсказание или применяется межкадровое (интер-) предсказание к текущему блоку. Например, модуль предсказания 110 может определять, следует ли применять интра-предсказание или интер-предсказание в единице CU.
[40] В случае интра-предсказания, модуль предсказания 110 может выводить выборку предсказания для текущего блока на основе опорной выборки вне текущего блока в картинке, которой принадлежит текущий блок (далее, текущая картинка). В этом случае, модуль предсказания 110 может выводить выборку предсказания на основе среднего или интерполяции соседних опорных выборок текущего блока (случай (i)) или может выводить выборку предсказания на основе опорной выборки, существующей в конкретном направлении (предсказания), как выборку предсказания среди соседних опорных выборок текущего блока (случай (ii)). Случай (i) может называться ненаправленным режимом или не-угловым режимом, а случай (ii) может называться направленным режимом или угловым режимом. В интра-предсказании, режимы предсказания могут включать в себя, в качестве примера, 33 направленных режима и по меньшей мере два ненаправленных режима. Ненаправленные режимы могут включать в себя режим DC и планарный режим. Модуль предсказания 110 может определять режим предсказания, подлежащий применению к текущему блоку, с использованием режима предсказания, применимого к соседнему блоку.
[41] В случае интер-предсказания, модуль предсказания 110 может выводить выборку предсказания для текущего блока на основе выборки, заданной вектором движения на опорной картинке. Модуль предсказания 110 может выводить выборку предсказания для текущего блока путем применения любого одного из режима пропуска, режима объединения и режима предсказания вектора движения (MVP). В случае режима пропуска и режима объединения, модуль предсказания 110 может использовать информацию движения соседнего блока как информацию движения текущего блока. В случае режима пропуска, в отличие от режима объединения, разница (остаток) между выборкой предсказания и исходной выборкой не передается. В случае режима MVP, вектор движения соседнего блока используется в качестве предсказателя вектора движения и, таким образом, используется в качестве предсказателя вектора движения текущего блока, чтобы вывести вектор движения текущего блока.
[42] В случае интер-предсказания, соседний блок может включать в себя пространственный соседний блок, существующий в текущей картинке, и временной соседний блок, существующий в опорной картинке. Опорная картинка, включающая в себя временной соседний блок, может также называться соотнесенной (совмещенной) картинкой (colPic). Информация движения может включать в себя вектор движения и индекс опорной картинки. Информация, такая как информация режима предсказания и информация движения, может (энтропийно) кодироваться и затем выводиться в форме потока битов.
[43] Когда информация движения временного соседнего блока используется в режиме пропуска и режиме объединения, самая верхняя картинка в списке опорных картинок может использоваться в качестве опорной картинки. Опорные картинки, включенные в список опорных картинок, могут быть выровнены на основе разницы счета порядка картинок (POC) между текущей картинкой и соответствующей опорной картинкой. POC соответствует порядку отображения и может отличаться от порядка кодирования.
[44] Вычитатель 121 генерирует остаточную выборку, которая представляет собой разницу между исходной выборкой и выборкой предсказания. Если применяется режим пропуска, остаточная выборка может не генерироваться, как описано выше.
[45] Преобразователь 122 преобразует остаточные выборки в единицах блока преобразования, чтобы генерировать коэффициент преобразования. Преобразователь 122 может выполнять преобразование на основе размера соответствующего блока преобразования и режима предсказания, применяемого к блоку кодирования или блоку предсказания, пространственно перекрывающемуся с блоком преобразования. Например, остаточные выборки могут быть преобразованы с использованием ядра преобразования дискретного синусного преобразования (DST), если интра-предсказание применяется к блоку кодирования или блоку предсказания, перекрывающемуся с блоком преобразования, и блок преобразования представляет собой остаточный массив 4×4 и преобразуется с использованием ядра преобразования дискретного косинусного преобразования (DCT) в других случаях.
[46] Модуль квантования 123 может квантовать коэффициенты преобразования, чтобы генерировать квантованные коэффициенты преобразования.
[47] Модуль перегруппировки 124 перегруппировывает квантованные коэффициенты преобразования. Модуль перегруппировки 124 может перегруппировывать квантованные коэффициенты преобразования в форме блока в одномерный вектор посредством способа сканирования коэффициентов. Хотя модуль перегруппировки 124 описан как отдельный компонент, модуль перегруппировки 124 может представлять собой часть модуля квантования 123.
[48] Энтропийный кодер 130 может выполнять энтропийное кодирование на квантованных коэффициентах преобразования. Энтропийное кодирование может включать в себя способ кодирования, например, экспоненциальное кодирование Голомба, контекстно-адаптивное кодирование переменной длины (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC) или тому подобное. Энтропийный кодер 130 может выполнять кодирование совместно или отдельно на информации (например, значении синтаксического элемента или т.п.), требуемой для реконструкции видео, в дополнение к квантованным коэффициентам преобразования. Энтропийно-кодированная информация может передаваться или сохраняться в единице слоя сетевой абстракции (NAL) в форме потока битов.
[49] Модуль обратного квантования 125 обратно квантует значения (коэффициенты преобразования), квантованные модулем квантования 123, и обратный преобразователь 126 обратно преобразует значения, обратно квантованные модулем обратного квантования 125, чтобы сгенерировать остаточную выборку.
[50] Сумматор 140 суммирует остаточную выборку с выборкой предсказания, чтобы реконструировать картинку. Остаточная выборка может суммироваться с выборкой предсказания в единицах блока, чтобы сгенерировать реконструированный блок. Хотя сумматор 140 описан как отдельный компонент, сумматор 140 может представлять собой часть модуля предсказания 110. При этом сумматор 140 может упоминаться как модуль реконструкции или генератор реконструированных блоков.
[51] Фильтр 150 может применять фильтрацию устранения блочности и/или адаптивное к выборке смещение к реконструированной картинке. Артефакты на границе блока на реконструированной картинке или искажение при квантовании могут быть скорректированы посредством фильтрации устранения блочности и/или адаптивного к выборке смещения. Адаптивное к выборке смещение может применяться в единицах выборки после того, как фильтрация устранения блочности завершена. Фильтр 150 может применять адаптивный контурный фильтр (ALF) к реконструированной картинке. ALF может применяться к реконструированной картинке, к которой была применена фильтрация устранения блочности и/или адаптивное к выборке смещение.
[52] Память 160 может хранить реконструированную картинку (декодированную картинку) или информацию, необходимую для кодирования/декодирования. Здесь, реконструированная картинка может представлять собой реконструированную картинку, отфильтрованную фильтром 150. Сохраненная реконструированная картинка может использоваться в качестве опорной картинки для (интер-) предсказания других картинок. Например, память 160 может хранить (опорные) картинки, используемые для интер-предсказания. Здесь, картинки, используемые для интер-предсказания, могут указываться в соответствии с набором опорных картинок или списком опорных картинок.
[53] Фиг. 2 иллюстрирует другой пример устройства кодирования видео, к которому применимо настоящее раскрытие.
[54] Со ссылкой на фиг. 2, устройство кодирования видео включает в себя модуль интра-предсказания, опорный сглаживатель 200, модуль предсказания 210, постфильтр 220, преобразователь 230 и устройство квантования 240. Здесь, модуль интра-предсказания может включать в себя опорный сглаживатель 200, модуль предсказания 210 и постфильтр 220.
[55] Когда интра-предсказание применяется к текущему блоку, опорный сглаживатель 200 может выполнять процесс сглаживания на левых соседних выборках и верхних соседних выборках, используемых для интра-предсказания текущего блока в картинке (далее упоминается как текущая картинка), которой принадлежит текущий блок, на основе размера текущего блока, информации режима интра-предсказания и значения выборки. Соответственно, можно предотвратить визуальные артефакты в отношении выборок предсказания текущего блока, которые могут возникать из-за разницы между значениями выборки левых соседних выборок и верхних соседних выборок.
[56] Модуль предсказания 210 может (i) выводить выборку предсказания на основе среднего или интерполяции левых соседних выборок и верхних соседних выборок текущего блока или (ii) может выводить выборки предсказания на основе соседних выборок, присутствующих в конкретном направлении (предсказания) относительно выборок предсказания среди левых соседних выборок и верхних соседних выборок. Случай (i) может называться ненаправленным режимом или неугловым режимом, и случай (ii) может называться направленным режимом или угловым режимом. В интра-предсказании, режим предсказания может иметь 33 направленных режима предсказания и по меньшей мере два ненаправленных режима. Ненаправленный режим может включать в себя режим предсказания DC и планарный режим (Planar mode). Модуль предсказания 210 может также определять режим предсказания, применяемый к текущему блоку с использованием режима предсказания, применяемого к соседнему блоку.
[57] Модуль постфильтра 220 может избирательно выполнять фильтрацию пост-обработки, чтобы уменьшить прерывность между текущим блоком и соседними выборками в соответствии с режимом предсказания, в котором выводится выборка предсказания текущего блока. После этого, устройство кодирования может выводить, в качестве остаточной выборки, разницу между выборкой предсказания и исходной выборкой, и преобразователь 230 может преобразовывать остаточную выборку в единицы блоков, чтобы генерировать коэффициенты преобразования. Также, устройство квантования 240 может квантовать коэффициенты преобразования, чтобы генерировать квантованные коэффициенты преобразования.
[58] Фиг. 3 иллюстрирует пример процесса выполнения интра-предсказания в устройстве кодирования. Устройство кодирования может выполнять интра-предсказание, чтобы генерировать выборку предсказания текущего блока (S300). Выборка предсказания может называться сигналом предсказания или сигналом интра-предсказания. Конкретно, устройство кодирования может сглаживать левые соседние выборки и верхние соседние выборки (т.е., выполнять на них процесс сглаживания), используемые для интра-предсказания текущего блока, на основе размера текущего блока, информации режима и значения выборки (S310). После этого, как описано выше, устройство кодирования может выполнять предсказание в соответствии с режимом интра-предсказания, чтобы генерировать выборку предсказания (S320), и выполнять фильтрацию пост-обработки, чтобы уменьшить прерывность между текущим блоком и соседними выборками (S330). Устройство кодирования может генерировать, в качестве остаточной выборки, разницу между выборкой предсказания и исходной выборкой (S340) и преобразовывать остаточную выборку в единицы блоков, чтобы генерировать коэффициенты преобразования. Дополнительно, устройство кодирования может квантовать коэффициенты преобразования, чтобы генерировать квантованные коэффициенты преобразования (S360), и энтропийно кодировать квантованные коэффициенты преобразования, чтобы выполнить сигнализацию (S370).
[59] Фиг. 4 кратко иллюстрирует структуру устройства декодирования видео, к которому применимо настоящее раскрытие.
[60] Со ссылкой на фиг. 4, устройство декодирования видео 400 может включать в себя энтропийный декодер 410, процессор 420 остатка, модуль предсказания 430, сумматор 440, фильтр 450 и память 460. Процессор 420 остатка может включать в себя модуль перегруппировки 421, модуль обратного квантования 422, обратный преобразователь 423.
[61] Когда поток битов, включающий в себя информацию видео, введен, устройство 400 декодирования видео может реконструировать видео в ассоциации с процессом, посредством которого информация видео обрабатывается в устройстве кодирования видео.
[62] Например, устройство 400 декодирования видео может выполнять декодирование видео с использованием единицы обработки, применяемой в устройстве кодирования видео. Таким образом, блок единиц обработки декодирования видео может представлять собой, например, единицу кодирования и, в другом примере, единицу кодирования, единицу предсказания или единицу преобразования. Единица кодирования может разбиваться из наибольшей единицы кодирования в соответствии со структурой квадродерева и/или структурой двоичного дерева.
[63] Единица предсказания и единица преобразования могут дополнительно использоваться в некоторых случаях, и в этом случае, блок предсказания представляет собой блок, выводимый или разделяемый из единицы кодирования, и может представлять собой единицу предсказания выборки. Здесь, единица предсказания может разделяться на подблоки. Единица преобразования может разбиваться из единицы кодирования в соответствии со структурой квадродерева и может представлять собой единицу, которая выводит коэффициент преобразования, или единицу, которая выводит остаточный сигнал из коэффициента преобразования.
[64] Энтропийный декодер 410 может анализировать поток битов, чтобы вывести информацию, требуемую для реконструкции видео или реконструкции картинки. Например, энтропийный декодер 410 может декодировать информацию в потоке битов на основе способа кодирования, такого как экспоненциальное кодирование Голомба, CAVLC, CABAC или тому подобное, и может выводить значение синтаксического элемента, требуемое для реконструкции видео, и квантованное значение коэффициента преобразования в отношении остатка.
[65] Более конкретно, способ энтропийного кодирования CABAC может принимать бин, соответствующий каждому синтаксическому элементу в потоке битов, определять контекстную модель с использованием декодирования информации целевого синтаксического элемента и декодирования информации соседних и декодирования целевых блоков или информации символа/бина, декодированного на предыдущем этапе, предсказывать вероятность генерации бина в соответствии с определенной контекстной моделью и выполнять арифметическое декодирование бина, чтобы генерировать символ, соответствующий каждому значению синтаксического элемента. Здесь, способ энтропийного декодирования CABAC может обновлять контекстную модель с использованием информации символа/бина, декодированного для контекстной модели следующего символа/бина после определения контекстной модели.
[66] Информация о предсказании среди информации, декодированной в энтропийном декодере 410, может быть предоставлена на модуль предсказания 450, и остаточные значения, то есть, квантованные коэффициенты преобразования, на которых было выполнено энтропийное декодирование посредством энтропийного декодера 410, могут вводиться в модуль перегруппировки 421.
[67] Модуль перегруппировки 421 может перегруппировывать квантованные коэффициенты преобразования в форму двумерного блока. Модуль перегруппировки 421 может выполнять перегруппировку, соответствующую сканированию коэффициентов, выполняемому устройством кодирования. Хотя модуль перегруппировки 421 описан как отдельный компонент, модуль перегруппировки 421 может представлять собой часть модуля обратного квантования 422.
[68] Модуль обратного квантования 422 может деквантовать квантованные коэффициенты преобразования на основе параметра (де)квантования, чтобы вывести коэффициент преобразования. В этом случае, информация для вывода параметра квантования может сигнализироваться от устройства кодирования.
[69] Обратный преобразователь 423 может обратно преобразовывать коэффициенты преобразования, чтобы вывести остаточные выборки.
[70] Модуль предсказания 430 может выполнять предсказание на текущем блоке и может генерировать предсказанный блок, включающий в себя выборки предсказания для текущего блока. Единица предсказания, выполняемого в модуле предсказания 430, может представлять собой блок кодирования или может представлять собой блок преобразования или может представлять собой блок предсказания.
[71] Модуль предсказания 430 может определять, следует ли применить интра-предсказание или интер-предсказание, на основе информации о предсказании. В этом случае, единица для определения того, что будет использовано из интра-предсказания и интер-предсказания, может отличаться от единицы для генерирования выборки предсказания. К тому же, единица для генерирования выборки предсказания может также отличаться в интер-предсказании и интра-предсказании. Например, то, что будет применяться из интер-предсказания и интра-предсказания, может определяться в единице CU. Дополнительно, например, в интер-предсказании, выборка предсказания может генерироваться посредством определения режима предсказания в единице PU, а в интра-предсказании выборка предсказания может генерироваться в единице TU путем определения режима предсказания в единице PU.
[72] В случае интра-предсказания, модуль предсказания 430 может выводить выборку предсказания для текущего блока на основе соседней опорной выборки на текущей картинке. Модуль предсказания 430 может выводить выборку предсказания для текущего блока путем применения направленного режима или ненаправленного режима на основе соседней опорной выборки текущего блока. В этом случае, режим предсказания, подлежащий применению к текущему блоку, может определяться путем использования режима интра-предсказания соседнего блока.
[73] В случае интер-предсказания, модуль предсказания 430 может выводить выборку предсказания для текущего блока на основе выборки, заданной в опорной картинке в соответствии с вектором движения. Модуль предсказания 430 может выводить выборку предсказания для текущего блока с использованием одного из режима пропуска, режима объединения и режима MVP. Здесь, информация движения, требуемая для интер-предсказания текущего блока, обеспечиваемая посредством устройства кодирования видео, например, вектор движения и информация об индексе опорной картинки, может быть получена или выведена на основе информации о предсказании.
[74] В режиме пропуска и режиме объединения, информация движения соседнего блока может использоваться в качестве информации движения текущего блока. Здесь, соседний блок может включать в себя пространственный соседний блок и временной соседний блок.
[75] Модуль предсказания 430 может конструировать список кандидатов объединения с использованием информации движения доступных соседних блоков и использовать информацию, указанную индексом объединения в списке кандидатов объединения, в качестве вектора движения текущего блока. Индекс объединения может сигнализироваться посредством устройства кодирования. Информация движения может включать в себя вектор движения и опорную картинку. Когда информация движения временного соседнего блока используется в режиме пропуска и режиме объединения, самая верхняя картинка в списке опорных картинок может использоваться в качестве опорной картинки.
[76] В случае режима пропуска, разница (остаток) между выборкой предсказания и исходной выборкой не передается, в отличие от режима объединения.
[77] В случае режима MVP, вектор движения текущего блока может выводиться с использованием вектора движения соседнего блока в качестве модуля предсказания вектора движения. Здесь, соседний блок может включать в себя пространственный соседний блок и временной соседний блок.
[78] Когда применяется режим объединения, например, список кандидатов объединения может генерироваться с использованием вектора движения реконструированного пространственного соседнего блока и/или вектора движения, соответствующего блоку Col, который представляет собой временной соседний блок. Вектор движения блока-кандидата, выбранного из списка кандидатов объединения, используется в качестве вектора движения текущего блока в режиме объединения. Вышеупомянутая информация о предсказании может включать в себя индекс объединения, указывающий блок-кандидат, имеющий лучший вектор движения, выбранный из блоков-кандидатов, включенных в список кандидатов объединения. Здесь, модуль предсказания 430 может выводить вектор движения текущего блока с использованием индекса объединения.
[79] Когда режим MVP (предсказание вектора движения) применяется в качестве другого примера, список кандидатов модуля предсказания вектора движения может генерироваться с использованием вектора движения реконструированного пространственного соседнего блока и/или вектора движения, соответствующего блоку Col, который представляет собой временной соседний блок. То есть, вектор движения реконструированного пространственного соседнего блока и/или вектор движения, соответствующий блоку Col, который представляет собой временной соседний блок, могут использоваться в качестве кандидатов вектора движения. Вышеупомянутая информация о предсказании может включать в себя индекс вектора движения предсказания, указывающий лучший вектор движения, выбранный из кандидатов вектора движения, включенных в список. Здесь, модуль предсказания 430 может выбирать вектор движения предсказания текущего блока из кандидатов вектора движения, включенных в список кандидатов вектора движения, с использованием индекса вектора движения. Модуль предсказания устройства кодирования может получать разницу векторов движения (MVD) между вектором движения текущего блока и модулем предсказания вектора движения, кодировать MVD и выводить закодированную MVD в форме потока битов. То есть, MVD может быть получена путем вычитания модуля предсказания вектора движения из вектора движения текущего блока. Здесь, модуль предсказания 430 может получать вектор движения, включенный в информацию о предсказании, и выводить вектор движения текущего блока путем сложения разницы векторов движения с модулем предсказания вектора движения. К тому же, модуль предсказания может получать или выводить индекс опорной картинки, указывающий опорную картинку, из вышеупомянутой информации о предсказании.
[80] Сумматор 440 может суммировать остаточную выборку с выборкой предсказания, чтобы реконструировать текущий блок или текущую картинку. Сумматор 440 может реконструировать текущую картинку путем суммирования остаточной выборки с выборкой предсказания в единицах блока. Когда применяется режим пропуска, остаток не передается, и, таким образом, выборка предсказания может становиться реконструированной выборкой. Хотя сумматор 440 описан как отдельный компонент, сумматор 440 может представлять собой часть модуля предсказания 430. При этом сумматор 440 может упоминаться как модуль реконструкции или генератор реконструированных блоков.
[81] Фильтр 450 может применять фильтрацию устранения блочности, адаптивное смещение выборки и/или ALF к реконструированной картинке. Здесь, адаптивное смещение выборки может применяться в единицах выборки после фильтрации устранения блочности. ALF может применяться после фильтрации устранения блочности и/или применения адаптивного смещения выборки.
[82] Память 460 может хранить реконструированную картинку (декодированную картинку) или информацию, необходимую для декодирования. Здесь, реконструированная картинка может представлять собой реконструированную картинку, отфильтрованную посредством фильтра 450. Например, память 460 может хранить картинки, используемые для интер-предсказания. Здесь, картинки, используемые для интер-предсказания, могут указываться в соответствии с набором опорных картинок или списком опорных картинок. Реконструированная картинка может использоваться в качестве опорной картинки для других картинок. Память 460 может выводить реконструированные картинки в порядке вывода.
[83] Фиг. 5 иллюстрирует другой пример устройства декодирования видео, к которому применяется настоящее раскрытие.
[84] Со ссылкой на фиг. 5, устройство кодирования видео включает в себя модуль интра-предсказания, опорный сглаживатель 500, модуль предсказания 810, постфильтр 520, модуль обратного квантования 530 и обратный преобразователь 540. Здесь, модуль интра-предсказания может включать в себя опорный сглаживатель 500, модуль предсказания 510 и постфильтр 520. Модуль интра-предсказания может выводить выборку предсказания для текущего блока путем применения направленного режима или ненаправленного режима на основе соседней опорной выборки текущего блока. Здесь, режим предсказания, подлежащий применению к текущему блоку, может определяться с использованием режима интра-предсказания соседнего блока.
[85] Конкретно, когда интра-предсказание применяется к текущему блоку, опорный сглаживатель 500 может выполнять процесс сглаживания на левых соседних выборках и верхних соседних выборках, используемых для интра-предсказания текущего блока в картинке (далее упоминаемой как текущая картинка), которой принадлежит текущий блок, на основе размера текущего блока, режима предсказания и значения выборки. Таким образом, возможно предотвратить визуальные артефакты в отношении выборок предсказания текущего блока, которые могут возникать из-за разниц между значениями выборки левых соседних выборок и верхних соседних выборок.
[86] Модуль предсказания 510 может выводить выборку предсказания на основе среднего или интерполяции левых соседних выборок и верхних соседних выборок текущего блока (случай (i)) или может выводить выборку предсказания на основе соседней выборки, присутствующей в конкретном направлении (предсказания) относительно выборки предсказания среди левых соседних выборок и верхних соседних выборок (случай (ii)). Случай (i) может называться ненаправленным режимом или неугловым режимом, а случай (ii) может называться направленным режимом или угловым режимом. В интра-предсказании, режим предсказания может включать в себя, например, 33 направленных режима предсказания и по меньшей мере два ненаправленных режима. Ненаправленные режимы могут включать в себя режим предсказания DC и планарный режим. Модуль предсказания 510 может определять режим предсказания, подлежащий применению к текущему блоку, с использованием режима предсказания, применяемого к соседнему блоку.
[87] Модуль постфильтра 520 может избирательно выполнять фильтрацию пост-обработки, чтобы уменьшить прерывность между текущим блоком и соседними выборками в соответствии с режимом предсказания, в котором выводится выборка предсказания текущего блока. После этого, модуль обратного квантования 530 может обратно квантовать квантованные коэффициенты преобразования, принятые от устройства кодирования, и обратный преобразователь 540 может обратно преобразовывать обратно квантованные коэффициенты преобразования, чтобы генерировать остаточные выборки в единицах блоков. Устройство декодирования может восстанавливать текущий блок, закодированный на основе интра-предсказания, на основе остаточной выборки и выборки предсказания.
[88] Фиг. 6 иллюстрирует пример процесса выполнения интра-предсказания в устройстве декодирования. Устройство декодирования энтропийно декодирует энтропийно закодированную информацию, принятую посредством потока битов, чтобы получить квантованные коэффициенты преобразования (S600). Далее, устройство декодирования может обратно квантовать квантованные коэффициенты преобразования, чтобы получить коэффициенты преобразования (S610), и обратно преобразовывать коэффициенты преобразования, чтобы генерировать остаточную выборку в единицах блоков (S620). Далее, устройство декодирования может выполнять интра-предсказание, чтобы генерировать выборку предсказания текущего блока (S630). Выборка предсказания может упоминаться как сигнал предсказания или сигнал интра-предсказания. Конкретно, устройство декодирования может выполнять процесс сглаживания на левых соседних выборках и верхних соседних выборках, используемых для интра-предсказания текущего блока, на основе размера текущего блока, режима предсказания и значения выборки (S640). После этого, устройство декодирования может выполнять предсказание в соответствии с режимом интра-предсказания, чтобы генерировать выборку предсказания, как описано выше (S650), и выполнять фильтрацию пост-обработки, чтобы уменьшить прерывность между текущим блоком и соседними выборками (S660). Устройство декодирования может суммировать выборку предсказания и остаточную выборку, чтобы генерировать реконструированную выборку текущего блока (S670).
[89] Когда предсказание выполняется на текущем блоке, как описано выше, предсказание может выполняться на основе режима интра-предсказания. Например, интра-предсказание может выполняться на основе соседней выборки, которая уже была закодирована/декодирована во время декодирования текущего блока. То есть, выборка предсказания текущего блока может быть реконструирована с использованием левых соседних выборок и верхних соседних выборок текущего блока. Левые соседние выборки и верхние соседние выборки могут быть представлены, как показано на фиг. 7.
[90] Фиг. 7 иллюстрирует пример левых соседних выборок и верхних соседних выборок, используемых для интра-предсказания текущего блока. Когда интра-предсказание выполняется на текущем блоке, режим интра-предсказания в отношении текущего блока может выводиться, и выборка предсказания в отношении текущего блока может генерироваться с использованием по меньшей мере одной из левых соседних выборок и верхних соседних выборок в соответствии с режимом интра-предсказания. Левые соседние выборки и верхние соседние выборки, используемые для интра-предсказания текущего блока, могут подвергаться процессу сглаживания на основе размера текущего блока, режима предсказания и значения выборки. То есть, фильтрация может выполняться, чтобы уменьшить разницу между значениями выборки левых соседних выборок и верхних соседних выборок на основе размера текущего блока, режима предсказания и значений выборки. Таким образом, можно предотвратить визуальные артефакты в отношении выборок предсказания текущего блока, которые могут возникать из-за разниц между значениями выборки левых соседних выборок и верхних соседних выборок.
[91] Здесь, режима интра-предсказания может включать в себя два ненаправленных режима интра-предсказания и 33 направленных режима интра-предсказания. Ненаправленные режимы интра-предсказания могут включать в себя планарный режим интра-предсказания и режим интра-предсказания DC, и направленные режимы интра-предсказания могут включать в себя режимы интра-предсказания #2-#34. Планарный режим интра-предсказания может упоминаться как планарный режим, и режим интра-предсказания DC может упоминаться как режим DC. Режим интра-предсказания #10 может указывать горизонтальный режим интра-предсказания или горизонтальный режим, режим интра-предсказания #26 указывает вертикальный режим интра-предсказания или вертикальный режим, на основе которого направление предсказания направленного интра-режима может быть выражено углом. Другими словами, относительный угол, соответствующий каждому режиму интра-предсказания, может быть выражен со ссылкой на горизонтальный опорный угол 0°, соответствующий режиму интра-предсказания #10, и относительный угол, соответствующий каждому режиму интра-предсказания, может быть выражен со ссылкой на вертикальный опорный угол 0°, соответствующий режиму интра-предсказания #26.
[92] Дополнительно, требование для видео высокого качества повышается, и чтобы повысить эффективность кодека видео, число направлений направленного интра-предсказания может увеличиваться до 65. То есть, режим интра-предсказания может включать в себя два ненаправленных режима интра-предсказания и 65 направленных режимов интра-предсказания. Ненаправленные режимы интра-предсказания могут включать в себя планарный режим интра-предсказания и режим интра-предсказания DC, и направленные режимы интра-предсказания могут включать в себя режимы интра-предсказания #2-#66.
[93] Фиг. 8 иллюстрирует интра-направленные режимы 65 направлений предсказания.
[94] Со ссылкой на фиг. 8, режимы интра-предсказания, имеющие горизонтальную направленность, и режимы интра-предсказания, имеющие вертикальную направленность, могут быть классифицированы на основе режима интра-предсказания #34, имеющего верхнее левое диагональное направление предсказания. H и V на фиг. 8 представляют горизонтальную направленность и вертикальную направленность, соответственно, и числа от -32 до 32 представляют смещения на 1/32 единицы в положениях сетки выборок. Режимы интра-предсказания #2-#33 имеют горизонтальную направленность, и режимы интра-предсказания #34-#66 имеют вертикальную направленность. Режим интра-предсказания #18 и режим интра-предсказания #50 представляют горизонтальный режим интра-предсказания и вертикальный режим интра-предсказания, соответственно, на основе чего направление предсказания углового режима интра-предсказания может быть выражено углом. Другими словами, относительный угол, соответствующий каждому режиму интра-предсказания, может быть выражен на основе горизонтального опорного угла 0°, соответствующего режиму интра-предсказания #18, и относительный угол, соответствующий каждому режиму интра-предсказания, может быть выражен на основе вертикального опорного угла 0°, соответствующего режиму интра-предсказания #50.
[95] В случае, когда направленный режим интра-предсказания применяется к текущему блоку, выборка предсказания целевой выборки может выводиться на основе опорной выборки, расположенной в направлении предсказания направленного режима интра-предсказания относительно целевой выборки, на которой интра-предсказание выполняется в текущем блоке. То есть, опорная выборка, расположенная в направлении предсказания, может копироваться и выводиться в качестве выборки предсказания. Здесь, опорная выборка может представлять соседнюю выборку, расположенную в направлении предсказания направленного режима интра-предсказания относительно целевой выборки среди верхних соседних выборок и левых соседних выборок текущего блока. При этом, когда отсутствует опорная выборка в единицах целых выборок в направлении целевой выборки на основе предсказания направленного режима интра-предсказания, то есть, когда положение опорной выборки, расположенной в направлении предсказания направленного режима интра-предсказания, представляет собой положение дробной выборки на основе целевой выборки, значение выборки опорной выборки может выводиться через интерполяцию между целыми выборками, смежными слева и справа от опорной выборки, и выборка предсказания целевой выборки может выводиться на основе опорной выборки. Например, интерполяция между целыми выборками может выполняться на основе отношения расстояния опорной выборки и целых выборок.
[96] Фиг. 9 представляет собой вид, иллюстрирующий пример, в котором, когда положение опорной выборки, расположенной в направлении предсказания направленного режима интра-предсказания, представляет собой положение дробной выборки, выборка предсказания целевой выборки выводится на основе целых выборок, смежных слева и справа от опорной выборки.
[97] Со ссылкой на фиг. 9, положение дробной выборки опорной выборки, расположенной в направлении предсказания направленного режима интра-предсказания на основе целевой выборки, может выводиться как tanθ*(y+1). Значение tanθ для каждого угла θ каждого направленного режима интра-предсказания для вычисления положения дробной выборки может масштабироваться заранее в единицах целых и определяться, чтобы облегчить вычисление. Значения tanθ соответственных масштабированных направленных режимов интра-предсказания могут выводиться, как показано в следующей таблице.
[98] [Таблица 1]
-1
[99] Здесь, predModeIntra может представлять каждый направленный режим интра-предсказания, и intraPredAngle может представлять угол предсказания каждого направленного режима интра-предсказания или масштабированное приблизительное значение tanθ каждого направленного режима интра-предсказания. Приблизительное значение tanθ в соответствии с предопределенным режимом интра-предсказания может выводиться на основе Таблицы 1. При этом значение tanθ каждого масштабированного направленного режима интра-предсказания может выводиться, как показано в следующей таблице.
[100] [Таблица 2]
-1
-1
[101] Здесь, predModeIntra может представлять каждый направленный режим интра-предсказания, intraPredAngle может представлять обратный угол предсказания каждого направленного режима интра-предсказания или масштабированное приблизительное значение tanθ каждого направленного режима интра-предсказания. Приблизительное значение tanθ может выводиться в соответствии с предопределенным режимом интра-предсказания на основе Таблицы 2.
[102] При этом, ненаправленный режим интра-предсказания может применяться к текущему блоку. Ненаправленные режимы интра-предсказания могут включать в себя планарный режим интра-предсказания и режим интра-предсказания DC. Планарный режим интра-предсказания может упоминаться как планарный режим, и режим интра-предсказания DC может упоминаться как режим DC. В режиме DC, выборка предсказания текущего блока может выводиться на основе среднего значения соседних выборок текущего блока. Интра-предсказание на основе режима DC может эффективно выполняться, когда значения выборок текущего блока аналогичны. При этом, когда интра-предсказание выполняется на основе режима DC, когда значения выборок текущего блока варьируются, прерывность может возникать между предсказанным блоком текущего блока и соседними выборками. В аналогичном случае, даже когда интра-предсказание выполняется на основе направленного режима интра-предсказания, может возникать ненамеренное видимое оконтуривание. Планарный режим был разработан, чтобы преодолеть эту проблему. Планарный режим указывает режим предсказания, в котором горизонтальное линейное предсказание и вертикальное линейное предсказание выполняются на основе опорных выборок в отношении целевой выборки, и выведенные значения после этого усредняются, чтобы сгенерировать выборку предсказания целевой выборки.
[103] Когда предсказание выполняется на текущем блоке на основе направленного режима интра-предсказания, если опорная выборка в единицах целых выборок не присутствует в направлении предсказания направленного режима интра-предсказания текущего блока относительно целевой выборки текущего блока, как описано выше, то есть, когда положение опорной выборки, расположенной в направлении предсказания направленного режима интра-предсказания относительно целевой выборки, представляет собой положение дробной выборки, значение выборки опорной выборки может выводиться через интерполяцию левой и правой целых выборок опорной выборки, и выборка предсказания целевой выборки может выводиться на основе выведенной опорной выборки. Целые выборки могут указывать соседние выборки положения целой выборки, расположенного около опорной выборки.
[104] В этом случае, интерполяция между целыми выборками слева и справа от опорной выборки может быть получена на основе одного из различных интерполяционных фильтров. Например, интерполяция может выполняться на основе интерполяционного фильтра, имеющего эффект фильтра нижних частот, или интерполяция может выполняться на основе сложного интерполяционного фильтра. Интерполяционный фильтр, имеющий эффект фильтра нижних частот, может представлять линейный фильтр или гауссов фильтр, а сложный интерполяционный фильтр может представлять сплайн-фильтр. Сплайн-фильтр может также называться кубическим фильтром. Интерполяционные фильтры могут представлять собой 4-отводные интерполяционные фильтры. 4-отводный интерполяционный фильтр может представлять фильтр, на котором интерполяция выполняется для четырех целых выборок на основе четырех весов. Интерполяция между целыми выборками, выполняемая на основе интерполяционного фильтра, может быть выражена посредством следующего уравнения.
[105] [Уравнение 1]
[106] Здесь, p[x][y] может обозначать выборку предсказания целевой выборки, f[0], f[1], f[2] и f[3] могут обозначать коэффициенты фильтрации интерполяционного фильтра, ref[n] может обозначать n-ую соседнюю выборку, и iIdx может обозначать целый индекс положения дробной выборки, расположенной в направлении предсказания режима интра-предсказания текущего блока относительно целевой выборки. Целый индекс положения дробной выборки может представлять целое значение, исключающее остаток положения дробной выборки.
[107] При этом, коэффициент фильтрации кубического фильтра, который представляет собой один из фильтров нижних частот, и коэффициент фильтрации гауссова фильтра, который представляет собой один из интерполяционных фильтров, имеющих эффект фильтра нижних частот, могут выводиться, как показано в следующей таблице.
[108] [Таблица 3]
[109] Здесь, суб-пел (суб-пиксельное) положение n/32 может представлять значение остатка положения дробной выборки, расположенной в направлении предсказания режима интра-предсказания текущего блока относительно целевой выборки. На основе положения дробной выборки целевой выборки и вышеприведенной Таблицы 3, могут выводиться коэффициенты фильтрации кубического фильтра или коэффициенты фильтрации гауссова фильтра.
[110] Когда предсказание выполняется на текущем блоке на основе направленного режима интра-предсказания, как описано выше, расстояние между целевой выборкой текущего блока и опорной выборкой может увеличиваться в соответствии с углом предсказания направленного режима интра-предсказания, и с увеличением расстояния точность предсказания может ухудшаться. Может быть предложен способ выбора подходящего интерполяционного фильтра в соответствии с расстоянием между целевой выборкой и опорной выборкой и выполнения предсказания на основе опорной выборки, выведенной путем применения выбранного интерполяционного фильтра, чтобы улучшить точность предсказания. Способ выбора подходящего интерполяционного фильтра в соответствии с расстоянием между целевой выборкой и опорной выборкой может быть следующим.
[111] Например, интерполяционный фильтр может выбираться на основе размера текущего блока или режима интра-предсказания текущего блока. Как описано выше, расстояние между целевой выборкой текущего блока и опорной выборкой может выводиться в соответствии с наклоном угла предсказания режима интра-предсказания для текущего блока. Поскольку опорная выборка текущего блока выводится на основе левых соседних выборок и верхних соседних выборок текущего блока, расстояние между целевой выборкой и опорной выборкой может увеличиваться по мере того, как положение целевой выборки становится ближе к нижнему правому концу текущего блока. Также, по мере увеличения значения intraPredAngle направленного режима интра-предсказания, определенного в Таблице 1, наклон угла предсказания может быть близок к 45°. Так как наклон угла предсказания близок к 45°, расстояние между целевой выборкой и опорной выборкой может увеличиваться, и соответственно, по мере увеличения значения intraPredAngle, расстояние между целевой выборкой и опорной выборкой может увеличиваться.
[112] Кроме того, расстояние между целевой выборкой и опорной выборкой может выводиться на основе размера текущего блока. То есть, по мере увеличения размера текущего блока, расстояние между целевой выборкой и опорной выборкой может увеличиваться. Поэтому, размер текущего блока рассматривается как тесно связанный с точностью предсказания целевой выборки.
[113] Если значение intraPredAngle больше, чем 0, и меньше, чем 32, как описано выше, целевая выборка может быть предсказана на основе опорной выборки положения дробной выборки, как показано на фиг. 9. В этом случае, поскольку представлено только целое значение выборки вблизи положения дробной выборки, устройство кодирования может предсказывать местоположение дробной выборки опорной выборки на основе интерполяционного фильтра, и значение опорной выборки предсказанного положения дробной выборки может копироваться как значение выборки для выборки предсказания целевой выборки. Таким образом, точность предсказанного блока текущего блока может определяться в соответствии с точностью интерполяционного фильтра.
[114] Когда интра-предсказание применяется к текущему блоку, информация, которая может использоваться для интра-предсказания, может быть ограничена левыми соседними выборками и верхними соседними выборками текущего блока, которые уже были реконструированы во время декодирования текущего блока, и по мере увеличения расстояния между целевой выборкой текущего блока и опорной выборкой, корреляция между целевой выборкой и опорными выборками, выведенными на основе левых соседних выборок и верхних соседних выборок, может значительно уменьшаться.
[115] Соответственно, когда расстояние между целевой выборкой и опорной выборкой слишком велико, может использоваться способ вывода опорной выборки на основе интерполяционного фильтра, имеющего эффект фильтра нижних частот, так что артефакты или шум опорной выборки не распространяются, чтобы повысить точность предсказания и эффективность кодирования. Напротив, когда расстояние между целевой выборкой и опорной выборкой близко друг к другу, корреляция между целевой выборкой и опорной выборкой высока, и таким образом, может преимущественно использоваться способ вывода опорной выборки на основе точной интерполяции, так что сходство между выборкой предсказания целевой выборки и опорной выборкой поддерживается в наибольшей возможной степени. То есть, когда расстояние между целевой выборкой и опорной выборкой близко друг к другу, способ вывода опорной выборки на основе сложного интерполяционного фильтра может повысить точность предсказания и эффективность кодирования.
[116] Поэтому, текущий блок может выбираться на основе только размера текущего блока для вывода опорной выборки для целевой выборки текущего блока, может выбираться на основе только режима интра-предсказания текущего блока или выбираться на основе режима интра-предсказания текущего блока.
[117] Например, когда размер текущего блока представляет собой размер 4×4 и интра-предсказание выполняется на текущем блоке, корреляция текущего блока, имеющего размер 4×4, с соседними выборками текущего блока может быть очень высока, и таким образом, опорная выборка может выводиться на основе сложного интерполяционного фильтра независимо от режима интра-предсказания. Альтернативно, если значение intraPredAngle, выведенное из режима интра-предсказания текущего блока, представляет собой 11 или более независимо от размера текущего блока, расстояние между целевой выборкой и опорной выборкой может увеличиваться, и таким образом, опорная выборка может выводиться на основе интерполяционного фильтра, имеющего эффект интерполяционного фильтра. Альтернативно, когда размер текущего блока меньше, чем конкретный размер, и значение intraPredAngle режима интра-предсказания текущего блока меньше, чем конкретное значение, опорная выборка целевой выборки может выводиться на основе сложного интерполяционного фильтра, а в других случаях, опорная выборка целевой выборки может выводиться на основе интерполяционного фильтра, имеющего эффект фильтра нижних частот.
[118] Кроме того, когда режим, такой как наиболее вероятный режим (MPM), применяется к текущему блоку, чтобы вывести режим интра-предсказания текущего блока на основе режима интра-предсказания соседнего блока текущего блока, и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, не планарный режим или режим DC, интерполяционный фильтр, используемый в соседнем блоке, выбранном через режим MPM, может выводиться как интерполяционный фильтр текущего блока. Здесь, в случае, когда режим MPM применяется к текущему блоку, устройство кодирования может определять список MPM на основе режима интра-предсказания в отношении левого или верхнего соседних блоков текущего блока и определять режим интра-предсказания на основе списка MPM.
[119] Кроме того, когда интерполяционный фильтр выбирается на основе режима интра-предсказания текущего блока, опора режима интра-предсказания, то есть, опора для определения, используется ли интерполяционный фильтр, имеющий эффект фильтра нижних частот, или используется ли сложный интерполяционный фильтр, может изменяться в соответствии с размерами или формами текущего блока.
[120] В случае, когда текущий блок представляет собой квадратный блок, ширина и высота блока равны, то есть, размер текущего блока представляет собой N×N, и таким образом, размер опорного блока при выборе интерполяционного фильтра может представлять собой N для направленного режима интра-предсказания любого направления. При этом, в случае, когда текущий блок имеет неквадратную форму, т.е., в случае, когда размер текущего блока представляет собой M×N, если режим, выбранный в качестве режима предсказания текущего блока, представляет собой направленный режим интра-предсказания, и этот режим представляет собой вертикальный направленный режим предсказания, размер опорного блока для выбора интерполяционного фильтра может быть представлен посредством M. Здесь, вертикальный направленный режим предсказания может указывать режимы интра-предсказания #34-#66, когда режим интра-предсказания включает в себя 65 направленных режимов интра-предсказания и два ненаправленных режима интра-предсказания. Аналогично, когда размер текущего блока представляет собой M×N, режим, выбранный в качестве режима предсказания текущего блока, представляет собой направленный режим, и этот режим представляет собой горизонтальный направленный режим предсказания, размер текущего блока, служащего опорным для выбора интерполяционного фильтра, может представлять собой N. Здесь, горизонтальный направленный режим предсказания может представлять режимы интра-предсказания #2-#33, когда режим интра-предсказания включает в себя 65 направленных режимов интра-предсказания и два ненаправленных режима интра-предсказания.
[121] Альтернативно, если текущий блок представляет собой неквадратный блок, имеющий размер M×N, и режим предсказания текущего блока представляет собой вертикальный направленный режим предсказания, интерполяционный фильтр текущего блока может выбираться на основе N, и аналогично, если текущий блок представляет собой неквадратный блок, имеющий размер M×N, и режим предсказания текущего блока представляет собой горизонтальный направленный режим предсказания, интерполяционный фильтр текущего блока может выбираться на основе M. Однако, в конкретном примере, который будет описан ниже, когда вертикальный направленный режим предсказания применяется к текущему блоку, имеющему размер M×N, размер текущего блока, служащего опорным для выбора интерполяционного фильтра, может быть представлен посредством M. Аналогично, когда горизонтальный направленный режим предсказания применяется к текущему блоку, имеющему размер M×N, размер текущего блока, служащего в качестве опоры для выбора интерполяционного фильтра, может быть представлен посредством N. Конкретно, например, если значение размера блока меньше или равно 8, сложный интерполяционный фильтр может выбираться, и опорная выборка блока может выводиться на основе сложного интерполяционного фильтра, и в этом случае, если размер текущего блока равен 8×4 и режим интра-предсказания текущего блока представляет собой один из режимов интра-предсказания, имеющих вертикальную направленность, сложный интерполяционный фильтр может выбираться в качестве интерполяционного фильтра для текущего блока, и опорная выборка текущего блока может выводиться на основе сложного интерполяционного фильтра.
[122] Также, если значение intraPredAngle режима интра-предсказания текущего блока меньше или равно 11, выбирается сложный интерполяционный фильтр, и опорная выборка может выводиться на основе сложного интерполяционного фильтра. Если значение intraPredAngle режима интра-предсказания текущего блока больше, чем 11, выбирается интерполяционный фильтр, имеющий эффект фильтра нижних частот, и опорная выборка может выводиться на основе интерполяционного фильтра, имеющего эффект фильтра нижних частот.
[123] В случае, когда значение размера текущего блока равно или больше, чем 16, если значение intraPredAngle режима интра-предсказания текущего блока меньше или равно 5, выбирается сложный интерполяционный фильтр, и опорная выборка может выводиться на основе сложного интерполяционного фильтра. Если значение intraPredAngle значения интра-предсказания текущего блока больше, чем 5, выбирается интерполяционный фильтр, имеющий эффект фильтра нижних частот, и опорная выборка может выводиться на основе интерполяционного фильтра, имеющего эффект фильтра нижних частот.
[124] Фиг. 10 иллюстрирует пример выбора интерполяционного фильтра на основе размера текущего блока и режима интра-предсказания. Устройство кодирования/устройство декодирования может выводить режим интра-предсказания для текущего блока и может определять, является ли режим интра-предсказания направленным режимом интра-предсказания (S1000). Направленный режим интра-предсказания может упоминаться как угловое предсказание. Если режим интра-предсказания является ненаправленным режимом интра-предсказания, устройство кодирования/декодирования может выполнять интра-предсказание текущего блока на основе режима интра-предсказания.
[125] Когда режим интра-предсказания представляет собой направленный режим интра-предсказания, устройство кодирования/устройство декодирования может определять, является ли размер текущего блока меньшим, чем первый порог (S1010). Когда текущий блок представляет собой неквадратный блок, имеющий размер M×N, и режим, выбранный в качестве режима интра-предсказания текущего блока, включает в себя режим интра-предсказания, имеющий вертикальную направленность, то есть, когда режим интра-предсказания включает в себя 65 направленных режимов интра-предсказания и два ненаправленных режима интра-предсказания, если режим интра-предсказания текущего блока представляет собой один из режимов интра-предсказания #34-#66, опора для выбора интерполяционного фильтра может быть представлена шириной текущего блока, т.е., M. Аналогично, в случае, когда текущий блок представляет собой неквадратный блок, имеющий размер MxN, и режим, выбранный в качестве режима интра-предсказания текущего блока, представляет собой режим интра-предсказания, имеющий горизонтальную направленность, то есть, когда режим интра-предсказания включает в себя 65 направленных режимов интра-предсказания и два ненаправленных режима интра-предсказания, если режим интра-предсказания текущего блока представляет собой один из режимов интра-предсказания #2-#33, опора для выбора интерполяционного фильтра может быть представлена высотой текущего блока, т.е., N. Альтернативно, когда рассматривается только блок, имеющий квадратную форму, и размер текущего блока равен N×N, значение размера текущего блока может быть представлено посредством N. Первый порог может быть установлен в 4, 8, 16, 32 или тому подобное.
[126] Если размер текущего блока не меньше, чем значение первого порога, то есть, если размер текущего блока больше или равен значению первого порога, устройство кодирования/устройство декодирования может выбирать гауссов фильтр в качестве интерполяционного фильтра текущего блока и выводить опорную выборку целевой выборки в текущем блоке на основе гауссова фильтра (S1020). Здесь, гауссов фильтр представляет собой один из интерполяционных фильтров, имеющих эффект фильтра нижних частот, и опорная выборка целевой выборки может выводиться на основе интерполяционного фильтра, имеющего эффект фильтра нижних частот, отличного от гауссова фильтра. Например, если размер текущего блока больше или равен первому порогу, устройство кодирования/устройство декодирования может выбирать интерполяционный фильтр текущего блока как линейный фильтр и выводить опорную выборку целевой выборки в текущем блоке на основе линейного фильтра. Здесь, опорная выборка может указывать соседнюю выборку, расположенную в направлении предсказания направленного режима интра-предсказания текущего блока на основе целевой выборки.
[127] Если размер текущего блока не меньше, чем значение первого порога, может определяться, является ли intraPredAngle направленного режима интра-предсказания текущего блока меньшим, чем значение второго порога (S1030). intraPredAngle может указывать угол предсказания направленного режима интра-предсказания. Например, второй порог может быть установлен в 11.
[128] Если intraPredAngle направленного режима интра-предсказания текущего блока не меньше, чем значение второго порога, устройство кодирования/устройство декодирования может выбирать гауссов фильтр в качестве интерполяционного фильтра текущего блока и выводить опорную выборку целевой выборки в текущем блоке на основе гауссова фильтра (S1020). Здесь, гауссов фильтр представляет собой один из интерполяционных фильтров, имеющих эффект фильтра нижних частот, как описано выше, и опорная выборка целевой выборки может выводиться на основе интерполяционного фильтра, имеющего эффект фильтра нижних частот, отличного от гауссова фильтра.
[129] Если intraPredAngle направленного режима интра-предсказания текущего блока меньше, чем значение второго порога, устройство кодирования/устройство декодирования может выбирать кубический фильтр в качестве интерполяционного фильтра текущего блока и выводить опорную выборку целевой выборки в текущем блоке на основе кубического фильтра (S1040). Здесь, кубический фильтр может представлять собой один из сложных интерполяционных фильтров, как описано выше, и опорная выборка целевой выборки может выводиться на основе сложного интерполяционного фильтра, отличного от кубического фильтра. Дополнительно, кубический фильтр может называться сплайн-фильтром.
[130] Устройство кодирования/устройство декодирования может генерировать выборку предсказания целевой выборки на основе выведенной опорной выборки целевой выборки (S1050). Устройство кодирования/устройство декодирования может генерировать выборку предсказания путем копирования опорной выборки. Опорная выборка может копироваться и использоваться в качестве выборки предсказания, и таким образом, может быть указано, что выборка предсказания сгенерирована на основе интерполяционного фильтра.
[131] При этом, в дополнение к вышеупомянутым примерам, способ разделения текущего блока на произвольные области и выбора интерполяционного фильтра для каждой области может быть предложен в качестве способа выбора интерполяционного фильтра.
[132] Например, если размер текущего блока больше или равен конкретному размеру, текущий блок может разделяться на множество областей, и интерполяционный фильтр каждой области может выбираться с учетом расстояния между каждой областью и соседними выборками текущего блока. Размер разделенных областей текущего блока может представлять собой фиксированное значение, определенное ранее (т.е., установленное ранее) между устройством кодирования и устройством декодирования, или может выводиться на основе размера текущего блока, режима интра-предсказания и тому подобного. Например, в случае, когда режим интра-предсказания текущего блока представляет собой режим интра-предсказания, имеющий вертикальную направленность, и номер режима для режима интра-предсказания больше, чем #34, размер разделенных областей текущего блока может выводиться как 4×4. Другими словами, в случае, когда режим интра-предсказания текущего блока представляет собой один из режимов интра-предсказания #35-#66, размер разделенных областей текущего блока может выводиться как 4×4. В случае, когда текущий блок представляет собой блок, имеющий размер 16×16, текущий блок может разделяться на области, имеющие размер 4×4, вышеописанный сложный интерполяционный фильтр может выбираться в качестве интерполяционного фильтра для областей от #0 по #7 в порядке растрового сканирования, и интерполяционный фильтр, имеющий эффект фильтра нижних частот, может выбираться в качестве интерполяционных фильтров для других областей. Здесь, номера 16 областей, имеющих размер 4×4 в соответствии с порядком растрового сканирования, могут последовательно выводиться в порядке от верхней строки к нижней строке и последовательно выводиться в порядке слева направо в каждой строке. То есть, области, включенные в первую строку среди 16 областей, имеющих размер 4×4 текущего блока, могут быть представлены как область #0, область #1, область #2 и область #3 в порядке слева направо, области, включенные во вторую строку, могут быть представлены как область #4, область #5, область #6 и область #7 в порядке слева направо, области, включенные в третью строку, могут быть представлены как область #8, область #9, область #10 и область #11 в порядке слева направо, и области, включенные в четвертую строку, могут быть представлены как область #12, область #13, область #14 и область #15 в порядке слева направо. При этом могут сигнализироваться размеры разделенных областей текущего блока и информация, указывающая интерполяционный фильтр для каждой из областей. В этом случае, устройство декодирования может разделять текущий блок на множество областей на основе информации и выбирать интерполяционный фильтр каждой области.
[133] Альтернативно, интерполяционный фильтр может выбираться на основе расстояния между целевой выборкой текущего блока и опорной выборкой. То есть, интерполяционный фильтр может выбираться на основе того, является ли расстояние между целевой выборкой и опорной выборкой большим или равным конкретному значению порога. Здесь, опорная выборка может указывать соседнюю выборку, расположенную в направлении предсказания режима интра-предсказания текущего блока, на основе целевой выборки.
[134] Например, в случае, когда размер текущего блока равен N×N, если расстояние между целевой выборкой текущего блока и опорной выборкой составляет N/2 или более, опорная выборка может выводиться на основе интерполяционного фильтра, имеющего эффект фильтра нижних частот, и опорная выборка может выводиться на основе сложного интерполяционного фильтра в других случаях. Конкретное значение порога для выбора интерполяционного фильтра может выводиться на основе размера текущего блока, как описано выше, или может выводиться на основе режима интра-предсказания текущего блока, в зависимости от того, является ли текущий блок квадратным блоком/неквадратным блоком, или тому подобного. Альтернативно, информация о конкретном значении порога может передаваться от устройства кодирования, и устройство декодирования может выводить конкретное значение порога текущего блока на основе информации о принятом конкретном значении порога.
[135] Фиг. 11 иллюстрирует пример выбора интерполяционного фильтра на основе расстояния между целевой выборкой текущего блока и опорной выборкой. Устройство кодирования/устройство декодирования может выводить режим интра-предсказания для текущего блока и определять, является ли режим интра-предсказания направленным режимом интра-предсказания (S1100). Направленный режим интра-предсказания может называться угловым предсказанием. Если режим интра-предсказания является ненаправленным режимом интра-предсказания, устройство кодирования/декодирования может выполнять интра-предсказание текущего блока на основе режима интра-предсказания.
[136] Если режим интра-предсказания является направленным режимом интра-предсказания, устройство кодирования/устройство декодирования может определять, является ли расстояние между целевой выборкой текущего блока и опорной выборкой меньшим, чем порог (S1110). Опорная выборка может представлять соседнюю выборку, расположенную в направлении предсказания режима интра-предсказания текущего блока, на основе целевой выборки. Также, значение порога может выводиться на основе размера текущего блока, режима интра-предсказания текущего блока, того, является ли блок квадратным/неквадратным блоком, и тому подобного, как описано выше. Кроме того, информация о значении порога может сигнализироваться, и значение порога текущего блока может выводиться на основе информации о сигнализированном значении порога.
[137] Если расстояние между целевой выборкой текущего блока и опорной выборкой не меньше, чем значение порога, то есть, если расстояние между целевой выборкой и опорной выборкой больше или равно значению порога, устройство кодирования/устройство декодирования может выбирать гауссов фильтр в качестве интерполяционного фильтра текущего блока и выводить опорную выборку целевой выборки в текущем блоке на основе гауссова фильтра (S1120). Здесь, гауссов фильтр представляет собой один из интерполяционных фильтров, имеющих эффект фильтра нижних частот, и опорная выборка целевой выборки может выводиться на основе интерполяционного фильтра, имеющего эффект фильтра нижних частот, отличного от гауссова фильтра. Например, если размер текущего блока больше или равен значению порога, устройство кодирования/устройство декодирования может выбирать интерполяционный фильтр текущего блока в качестве линейного фильтра и выводить опорную выборку целевой выборки в текущем блоке на основе линейного фильтра.
[138] Если расстояние между целевой выборкой текущего блока и опорной выборкой меньше, чем значение порога, устройство кодирования/устройство декодирования может выбирать кубический фильтр в качестве интерполяционного фильтра текущего блока и выводить опорную выборку на основе кубического фильтра (S1130). Здесь, кубический фильтр может представлять собой один из сложных интерполяционных фильтров, как описано выше, и опорная выборка целевой выборки может выводиться на основе сложного интерполяционного фильтра, отличного от кубического фильтра. Дополнительно, кубический фильтр может называться сплайн-фильтром.
[139] Устройство кодирования/устройство декодирования может генерировать выборку предсказания целевой выборки на основе выведенной опорной выборки целевой выборки (S1140). Устройство кодирования/устройство декодирования может генерировать выборку предсказания путем копирования опорной выборки. Опорная выборка может копироваться и использоваться в качестве выборки предсказания, и таким образом, может указываться, что выборка предсказания сгенерирована на основе интерполяционного фильтра.
[140] Также, как описано выше, один из интерполяционных фильтров может выбираться, чтобы выводить опорную выборку целевой выборки, но множество интерполяционных фильтров может также использоваться, чтобы выводить опорную выборку
[141] Например, когда положение опорной выборки целевой выборки текущего блока представляет собой положение дробной выборки, то есть, когда опорная выборка целевой выборки представляет собой дробную выборку, первая опорная выборка может генерироваться на основе первого интерполяционного фильтра, который представляет собой сложный интерполяционный фильтр, вторая опорная выборка может генерироваться на основе второго интерполяционного фильтра, который представляет собой интерполяционный фильтр, имеющий вышеописанный эффект фильтра нижних частот, и третья опорная выборка может генерироваться на основе третьего интерполяционного фильтра, который представляет собой интерполяционный фильтр, отличный от первого интерполяционного фильтра и второго интерполяционного фильтра. Когда первая опорная выборка, вторая опорная выборка и третья опорная выборка сгенерированы, выборка предсказания целевой выборки может генерироваться на основе первой опорной выборки, второй опорной выборки и третьей опорной выборки. Например, среднее первой опорной выборки и второй опорной выборки может выводиться в качестве выборки предсказания целевой выборки, среднее первой опорной выборки и третьей опорной выборки может выводиться в качестве выборки предсказания целевой выборки, среднее второй опорной выборки и третьей опорной выборки может выводиться в качестве выборки предсказания целевой выборки, или среднее первой опорной выборки, второй опорной выборки и третьей опорной выборки может выводиться в качестве выборки предсказания целевой выборки.
[142] Альтернативно, выборка предсказания целевой выборки может выводиться через взвешенное среднее первой опорной выборки и второй опорной выборки, то есть, взвешенную сумму первой опорной выборки и второй опорной выборки. Альтернативно, выборка предсказания целевой выборки может выводиться через взвешенную сумму первой опорной выборки и третьей опорной выборки, через взвешенную сумму второй опорной выборки и третьей опорной выборки или через взвешенную сумму первой опорной выборки, второй опорной выборки и третьей опорной выборки. Альтернативно, выборка предсказания целевой выборки может выводиться через взвешенную сумму первой опорной выборки, второй опорной выборки и третьей опорной выборки. Выборка предсказания целевой выборки может генерироваться на основе вышеописанных примеров и комбинаций первой опорной выборки, второй опорной выборки и/или третьей опорной выборки, отличных от вышеописанных примеров.
[143] Конкретно, например, выборка предсказания целевой выборки может генерироваться следующим образом. Если направленный режим интра-предсказания, в котором интра-предсказание выполняется на основе опорной выборки положения дробной выборки, выполняется на текущем блоке, соседние выборки положения целой выборки могут интерполироваться на основе кубического фильтра, так что может выводиться первая опорная выборка, соседние выборки положения целой выборки могут интерполироваться на основе гауссова фильтра, так что может выводиться вторая опорная выборка целевой выборки, и выборка предсказания целевой выборки может генерироваться на основе первой опорной выборки и второй опорной выборки. Здесь, направленный режим интра-предсказания, в котором интра-предсказание выполняется на основе опорной выборки положения дробной выборки, может представлять один из направленных режимов интра-предсказания за исключением режимов интра-предсказания #2, #18, #34, #50 и #66. Кроме того, соседние выборки в положении целой выборки могут представлять соседние выборки около положения дробной выборки, расположенной в направлении предсказания направленного режима интра-предсказания текущего блока, на основе целевой выборки среди соседних выборок текущего блока.
[144] В другом примере, точность предсказания интра-предсказания повышается по мере уменьшения расстояния между целевой выборкой и опорной выборкой, и таким образом, может быть предложен способ вывода первого веса для первой опорной выборки, сгенерированной на основе первого интерполяционного фильтра, который представляет собой сложный интерполяционный фильтр, и второго веса для второй опорной выборки, сгенерированной на основе второго интерполяционного фильтра, который представляет собой интерполяционный фильтр, имеющий эффект фильтра нижних частот, на основе расстояния между целевой выборкой и опорной выборкой, и взвешенного суммирования первой опорной выборки и второй опорной выборки на основе первого веса и второго веса, чтобы сгенерировать выборку предсказания целевой выборки. Например, первый вес может выводиться как находящийся в обратной пропорции с расстоянием между целевой выборкой и опорной выборкой, и второй вес может выводиться как значение, полученное путем вычитания первого веса из 1. Альтернативно, первый вес и второй вес, используемые здесь, могут масштабироваться с повышением в единицах целых во избежание вычисления с десятичной запятой. Соответственно, первый вес может выводиться как большее значение по мере увеличения расстояния между целевой выборкой и опорной выборкой, и по мере того как расстояние между целевой выборкой и опорной выборкой увеличивается, первый вес может выводиться как меньшее значение. Расстояние между целевой выборкой и опорной выборкой может вычисляться на основе угла предсказания режима интра-предсказания текущего блока и положения целевой выборки. Альтернативно, таблица для размера блока и режима интра-предсказания может сохраняться, и расстояние между целевой выборкой и опорной выборкой может выводиться со ссылкой на таблицу. При этом может избирательно применяться способ для вывода опорной выборки целевой выборки на основе множества интерполяционных фильтров, раскрытый в вышеописанных вариантах осуществления. Например, то, следует ли выводить опорную выборку целевой выборки на основе множества интерполяционных фильтров, может выводиться на основе размера текущего блока, режима интра-предсказания текущего блока, отклонения (дисперсии) значений соседних выборок текущего блока и тому подобного. Альтернативно, может передаваться метка, указывающая, следует ли выводить опорную выборку целевой выборки на основе множества интерполяционных фильтров из устройства кодирования, и то, следует ли выводить опорную выборку целевой выборки на основе множества интерполяционных фильтров, может определяться на основе метки.
[145] Фиг. 12 иллюстрирует пример выведения опорной выборки для целевой выборки текущего блока на основе множества интерполяционных фильтров и выведения выборки предсказания целевой выборки на основе опорной выборки. Устройство кодирования/устройство декодирования может выводить режим интра-предсказания для текущего блока и определять, является ли режим интра-предсказания направленным режимом интра-предсказания (S1200). Направленный режим интра-предсказания может упоминаться как угловое предсказание.
[146] Если режим интра-предсказания представляет собой ненаправленный режим интра-предсказания, устройство кодирования/декодирования может выполнять интра-предсказание текущего блока на основе ненаправленного режима интра-предсказания (S1210).
[147] Когда режим интра-предсказания является направленным режимом интра-предсказания, устройство кодирования/устройство декодирования может интерполировать соседние выборки в положениях целой выборки на основе кубического фильтра, чтобы вывести первую опорную выборку целевой выборки (S1220). Здесь, соседние выборки положений целой выборки могут представлять соседние выборки около положения дробной выборки, расположенного в направлении предсказания направленного режима интра-предсказания текущего блока относительно целевой выборки среди соседних выборок текущего блока. Устройство кодирования/устройство декодирования может выполнять интра-предсказание целевой выборки на основе первой опорной выборки (S1230). Устройство кодирования/устройство декодирования может генерировать первую временную выборку предсказания путем копирования первой опорной выборки.
[148] Когда режим интра-предсказания представляет собой направленный режим интра-предсказания, устройство кодирования/устройство декодирования интерполирует соседние выборки положений целой выборки на основе гауссова фильтра, чтобы вывести вторую опорную выборку целевой выборки (S1240). Устройство кодирования/устройство декодирования может выполнять интра-предсказание целевой выборки на основе второй опорной выборки (S1240). Устройство кодирования/устройство декодирования может генерировать вторую временную выборку предсказания путем копирования второй опорной выборки.
[149] Устройство кодирования/устройство декодирования может взвешенно суммировать первую временную выборку предсказания и вторую временную выборку предсказания, чтобы вывести выборку предсказания целевой выборки (S1250). Выборка предсказания может выводиться как сумма значения, полученного путем умножения первого веса α первой временной выборки предсказания на первую временную выборку предсказания, и значения, полученного путем умножения 1-α второй временной выборки предсказания на вторую временную выборку предсказания. Первый вес может выводиться как находящийся в обратной пропорции с расстоянием между целевой выборкой и опорными выборками, как описано выше, и второй вес может выводиться как значение, полученное путем вычитания первого веса из 1. Альтернативно, первый вес и второй вес, используемые в настоящем документе, могут масштабироваться с повышением в единицах целых и выводиться во избежание вычисления с десятичной запятой. Расстояние между целевой выборкой и опорными выборками может быть вычислено на основе угла предсказания режима интра-предсказания текущего блока и положения целевой выборки. Альтернативно, таблица касательно размера блока и режима интра-предсказания может быть сохранена заранее, и расстояние между целевой выборкой и опорными выборками может выводиться со ссылкой на таблицу.
[150] Фиг. 13 схематично иллюстрирует способ кодирования видео посредством устройства кодирования в соответствии с настоящим раскрытием. Способ, раскрытый на фиг. 13, может выполняться устройством кодирования, раскрытым на фиг. 1. Конкретно, например, этапы S1300-S1340 согласно фиг. 13 могут выполняться модулем предсказания устройства кодирования, и S1350 может выполняться устройством энтропийного кодирования устройства кодирования.
[151] Устройство кодирования определяет режим интра-предсказания для текущего блока (S1300). Устройство кодирования может выполнять различные режимы интра-предсказания, чтобы вывести режим интра-предсказания, имеющий оптимальную стоимость RD, в качестве режима интра-предсказания для текущего блока. Режим интра-предсказания может являться одним из двух ненаправленных режимов предсказания и 33 направленных режимов предсказания. Как описано выше, два ненаправленных режима предсказания могут включать в себя режим интра-DC и интра-планарный режим. Альтернативно, режим интра-предсказания может являть одним из двух ненаправленных режимов интра-предсказания и 65 направленных режимов интра-предсказания. Как описано выше, два ненаправленных режима предсказания могут включать в себя режим интра-DC и интра-планарный режим. Кроме того, 65 направленных режимов интра-предсказания могут включать в себя вертикальные направленные режимы интра-предсказания и горизонтальные направленные режимы интра-предсказания. Вертикальные направленные режимы интра-предсказания могут включать в себя от режима интра-предсказания #34 до режима интра-предсказания #66, и горизонтальные направленные режимы интра-предсказания могут включать в себя от режима интра-предсказания #2 до режима интра-предсказания #33.
[152] Устройство кодирования выводит соседние выборки, включающие в себя левые соседние выборки и верхние соседние выборки текущего блока (S1310). Устройство кодирования может выводить соседние выборки текущего блока. Соседние выборки могут включать в себя левые соседние выборки и верхние соседние выборки. Кроме того, соседние выборки могут включать в себя левые верхние выборки. Левые соседние выборки, левые верхние соседние выборки и верхние соседние выборки могут выводиться из соседних блоков, уже реконструированных во время декодирования текущего блока. Могут выводиться 2N верхних соседних выборок, левых верхних соседних выборок и 2N левых соседних выборок текущего блока. Если размер текущего блока составляет N×N и компонент x верхней левой выборки текущего блока равен 0, и его компонент y равен 0, левые соседние выборки могут представлять собой от p[-1][0] до p[-1][2N-1], левая верхняя соседняя выборка может представлять собой p[-1][-1], и верхние соседние выборки могут представлять собой от p[0][-1] до p[2N-1][-1].
[153] Альтернативно, когда размер текущего блока составляет M×N, и компонент x верхней левой выборки текущего блока равен 0, и его компонент y равен 0, могут выводиться M+N верхних соседних выборок, левые верхние соседние выборки и M-N левых соседних выборок текущего блока. Если размер текущего блока имеет неквадратную форму M×N, и компонент x верхней левой выборки текущего блока равен 0, и его компонент y равен 0, левые соседние выборки могут представлять собой от p[-1][0] до p[-1][M+N-1], левая верхняя соседняя выборка может представлять собой p[-1][-1], и верхние соседние выборки могут представлять собой от p[0][-1] до p[M+N-1][-1].
[154] Устройство кодирования выводит опорные выборки для предсказания целевой выборки среди соседних выборок на основе положения целевой выборки текущего блока и угла предсказания режима интра-предсказания (S1320). Устройство кодирования может выводить положение опорной выборки относительно целевой выборки на основе положения целевой выборки текущего блока и угла предсказания режима интра-предсказания, и когда положение опорной выборки представляет собой положение дробной выборки, устройство кодирования может выводить соседние выборки, расположенные около положения, выведенного на основе положения целевой выборки текущего блока и угла предсказания режима интра-предсказания, в качестве опорных выборок целевой выборки. То есть, устройство кодирования может выводить множество соседних выборок в качестве опорных выборок целевой выборки на основе положения целевой выборки текущего блока и угла предсказания режима интра-предсказания. Например, четыре соседних выборки могут выводиться в качестве опорных выборок целевой выборки. Здесь, целевая выборка может представлять выборку в текущем блоке, на котором выполняется интра-предсказание. Угол предсказания режима интра-предсказания может выводиться на основе Таблицы 1, описанной выше, и intraPredAngle может представлять собой переменную, указывающую угол предсказания, выведенный из режима интра-предсказания.
[155] Устройство кодирования определяет интерполяционный фильтр для целевой выборки (S1330). Устройство кодирования может определять интерполяционный фильтр для целевой выборки на основе размера текущего блока и/или режима интра-предсказания текущего блока. Также, например, интерполяционный фильтр может определяться, когда положение опорной выборки представляет собой положение дробной выборки, т.е., когда выводится множество опорных выборок.
[156] Например, интерполяционный фильтр для целевой выборки может определяться на основе размера текущего блока. Например, если размер текущего блока равен 4×4, сложный интерполяционный фильтр может определяться в качестве интерполяционного фильтра для целевой выборки. Конкретно, когда размер текущего блока равен 4×4, кубический фильтр может определяться в качестве интерполяционного фильтра для целевой выборки. Кубический фильтр представляет собой один из сложных интерполяционных фильтров, и кубический фильтр может называться сплайн-фильтром.
[157] Если текущий блок представляет собой квадратный блок, ширина и высота равны друг другу. То есть, поскольку текущий блок представляет собой квадратный блок, имеющий размер N×N, опорный размер (т.е., опорное значение) при выборе интерполяционного фильтра может представлять собой N для направленного режима интра-предсказания любого направления предсказания. При этом, если текущий блок является неквадратным блоком, то есть, если текущий блок является неквадратным блоком, имеющим размер M×N, когда режим интра-предсказания текущего блока является режимом интра-предсказания, имеющим вертикальную направленность, размер опорного блока (т.е., опорное значение) для выбора интерполяционного фильтра может составлять M. Аналогично, если текущий блок является неквадратным блоком, имеющим размер M×N, и режим интра-предсказания текущего блока является режимом интра-предсказания, имеющим горизонтальную направленность, размер текущего блока (т.е., опорное значение) в качестве опорного для выбора интерполяционного фильтра может составлять N. Альтернативно, напротив, если текущий блок является неквадратным блоком, имеющим размер M×N, и режим интра-предсказания текущего блока является режимом интра-предсказания, имеющим вертикальную направленность, интерполяционный фильтр текущего блока может выбираться на основе N, и аналогично, если текущий блок является неквадратным блоком, имеющим размер M×N, и режим интра-предсказания текущего блока является режимом интра-предсказания, имеющим горизонтальную направленность, интерполяционный фильтр текущего блока может выбираться на основе M. Однако, в конкретном примере, который будет описан далее, когда режим интра-предсказания, имеющий вертикальную направленность, применяется к текущему блоку, имеющему размер M×N, размер текущего блока в качестве опоры для выбора интерполяционного фильтра может быть представлен посредством M, и аналогично, если режим интра-предсказания, имеющий горизонтальную направленность, применяется к текущему блоку, размер текущего блока может быть представлен посредством N. Здесь, когда режим интра-предсказания включает в себя 65 направленных режимов интра-предсказания и два ненаправленных режима интра-предсказания, режим интра-предсказания, имеющий вертикальную направленность, может представлять режимы интра-предсказания #34-#66, и режим интра-предсказания, имеющий горизонтальную направленность, может представлять режимы интра-предсказания #2-#33.
[158] Например, может определяться, является ли размер текущего блока, указанный формой текущего блока и направленностью режима интра-предсказания, меньшим, чем конкретное значение. Если размер текущего блока меньше, чем конкретное значение, сложный интерполяционный фильтр может определяться в качестве интерполяционного фильтра для целевой выборки, а если размер текущего блока не меньше, чем конкретное значение, интерполяционный фильтр, имеющий эффект фильтра нижних частот, может определяться в качестве интерполяционного фильтра для целевой выборки. Конкретно, когда размер текущего блока меньше, чем конкретное значение, кубический фильтр может определяться в качестве интерполяционного фильтра для целевой выборки. Если размер текущего блока не меньше, чем конкретное значение, гауссов фильтр может определяться в качестве интерполяционного фильтра для целевой выборки. Альтернативно, когда размер текущего блока не меньше, чем конкретное значение, линейный фильтр может определяться в качестве интерполяционного фильтра для целевой выборки. Интерполяционный фильтр, имеющий эффект фильтра нижних частот, может включать в себя гауссов фильтр и линейный фильтр. Здесь, конкретное значение может быть установлено в 4, 8, 16, 32 или тому подобное.
[159] Конкретно, когда ширина и высота текущего блока равны (т.е., когда текущий блок представляет собой квадратный блок), может определяться, является ли ширина текущего блока меньшей, чем конкретное значение, и когда ширина текущего блока меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как кубический фильтр для целевой выборки, а когда ширина текущего блока не меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как гауссов фильтр.
[160] Кроме того, когда ширина и высота текущего блока отличаются (то есть, когда текущий блок является неквадратным блоком) и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий вертикальную направленность, может определяться, является ли ширина текущего блока меньшей, чем конкретное значение. Когда ширина текущего блока меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как кубический фильтр, а когда ширина текущего блока не меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как гауссов фильтр.
[161] Кроме того, когда ширина и высота текущего блока отличаются (то есть, когда текущий блок является неквадратным блоком) и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий горизонтальную направленность, может определяться, является ли высота текущего блока меньшей, чем конкретное значение. Когда высота текущего блока меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как кубический фильтр, а когда высота текущего блока не меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как гауссов фильтр.
[162] Кроме того, когда ширина и высота текущего блока отличаются (то есть, когда текущий блок является неквадратным блоком) и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий вертикальную направленность, может определяться, является ли высота текущего блока меньшей, чем конкретное значение. Когда высота текущего блока меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как кубический фильтр, а когда высота текущего блока не меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как гауссов фильтр.
[163] Кроме того, когда ширина и высота текущего блока отличаются (то есть, когда текущий блок является неквадратным блоком) и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий горизонтальную направленность, может определяться, является ли ширина текущего блока меньшей, чем конкретное значение. Когда ширина текущего блока меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как кубический фильтр, а когда ширина текущего блока не меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как гауссов фильтр.
[164] В другом примере, интерполяционный фильтр для целевой выборки может определяться на основе режима интра-предсказания текущего блока.
[165] Например, может определяться, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем конкретное значение. Если угол предсказания режима интра-предсказания меньше, чем конкретное значение, сложный интерполяционный фильтр может определяться в качестве интерполяционного фильтра для целевой выборки, а если угол предсказания режима интра-предсказания не меньше, чем конкретное значение, интерполяционный фильтр, имеющий эффект фильтра нижних частот, может определяться в качестве интерполяционного фильтра для целевой выборки. Конкретно, когда угол предсказания режима интра-предсказания меньше, чем конкретное значение, кубический фильтр может определяться в качестве интерполяционного фильтра для целевой выборки, а когда угол предсказания режима интра-предсказания не меньше, чем конкретное значение, гауссов фильтр может определяться в качестве интерполяционного фильтра для целевой выборки. Альтернативно, когда угол предсказания режима интра-предсказания не меньше, чем конкретное значение, линейный фильтр может определяться в качестве интерполяционного фильтра для целевой выборки. Интерполяционный фильтр, имеющий эффект фильтра нижних частот, может включать в себя гауссов фильтр и линейный фильтр. Здесь, конкретное значение может быть установлено в 4, 8, 16, 32 или тому подобное. Угол предсказания режима интра-предсказания может выводиться на основе Таблицы 1, описанной выше, и intraPredAngle может указывать угол предсказания режима интра-предсказания. Также, например, конкретное значение может быть установлено в 11.
[166] В другом примере, интерполяционный фильтр для целевой выборки может определяться на основе размера текущего блока и режима интра-предсказания. Если текущий блок является квадратным блоком, ширина и высота одинаковы. Если текущий блок является квадратным блоком, ширина и высота равны друг другу. То есть, поскольку текущий блок является квадратным блоком, имеющим размер N×N, опорный размер (т.е., опорное значение) при выборе интерполяционного фильтра может представлять собой N для направленного режима интра-предсказания любого направления предсказания. При этом, если текущий блок является неквадратным блоком, то есть, если текущий блок является неквадратным блоком, имеющим размер M×N, когда режим интра-предсказания текущего блока является режимом интра-предсказания, имеющим вертикальную направленность, размер опорного блока (т.е., опорное значение) для выбора интерполяционного фильтра может представлять собой M. Аналогично, если текущий блок является неквадратным блоком, имеющим размер M×N, и режим интра-предсказания текущего блока является режимом интра-предсказания, имеющим горизонтальную направленность, размер текущего блока (т.е., опорное значение) в качестве опоры для выбора интерполяционного фильтра может представлять собой N. Альтернативно, напротив, если текущий блок является неквадратным блоком, имеющим размер M×N, и режим интра-предсказания текущего блока является режимом интра-предсказания, имеющим вертикальную направленность, интерполяционный фильтр текущего блока может выбираться на основе N, и аналогично, если текущий блок является неквадратным блоком, имеющим размер M×N, и режим интра-предсказания текущего блока является режимом интра-предсказания, имеющим горизонтальную направленность, интерполяционный фильтр текущего блока может выбираться на основе M. Однако, в конкретном примере, который будет описан далее, когда режим интра-предсказания, имеющий вертикальную направленность, применяется к текущему блоку, имеющему размер M×N, размер текущего блока в качестве опоры для выбора интерполяционного фильтра может быть представлен посредством M, и аналогично, если режим интра-предсказания, имеющий горизонтальную направленность, применяется к текущему блоку, размер текущего блока может быть представлен посредством N. Здесь, когда режим интра-предсказания включает в себя 65 направленных режимов интра-предсказания и два ненаправленных режима интра-предсказания, режим интра-предсказания, имеющий вертикальную направленность, может представлять режимы интра-предсказания #34-#66, и режим интра-предсказания, имеющий горизонтальную направленность, может представлять режимы интра-предсказания #2-#33.
[167] Например, устройство кодирования может определять, является ли размер текущего блока меньшим, чем первое конкретное значение, и когда размер текущего блока не меньше, чем первое конкретное значение, устройство кодирования может определять интерполяционный фильтр, имеющий эффект фильтра нижних частот, в качестве интерполяционного фильтра для целевой выборки. Конкретно, когда размер текущего блока не меньше, чем первое конкретное значение, устройство кодирования может определять гауссов фильтр в качестве интерполяционного фильтра. Альтернативно, когда размер текущего блока не меньше, чем первое конкретное значение, устройство кодирования может определять линейный фильтр в качестве интерполяционного фильтра.
[168] Конкретно, когда ширина и высота текущего блока равны друг другу, устройство кодирования может определять, является ли ширина текущего блока меньшей, чем первое конкретное значение. Когда ширина текущего блока не меньше, чем первое конкретное значение, устройство кодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра для целевой выборки.
[169] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока является направленным режимом интра-предсказания, имеющим вертикальную направленность, устройство кодирования может определять, является ли ширина текущего блока меньшей, чем первое конкретное значение. Когда ширина текущего блока не меньше, чем первое конкретное значение, устройство кодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра для целевой выборки.
[170] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока является направленным режимом интра-предсказания, имеющим горизонтальную направленность, устройство кодирования может определять, является ли высота текущего блока меньшей, чем первое конкретное значение. Когда высота текущего блока не меньше, чем первое конкретное значение, устройство кодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра для целевой выборки.
[171] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока является направленным режимом интра-предсказания, имеющим вертикальную направленность, устройство кодирования может определять, является ли высота текущего блока меньшей, чем первое конкретное значение. Когда высота текущего блока не меньше, чем первое конкретное значение, устройство кодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра для целевой выборки.
[172] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока является направленным режимом интра-предсказания, имеющим горизонтальную направленность, устройство кодирования может определять, является ли ширина текущего блока меньшей, чем первое конкретное значение. Когда ширина текущего блока не меньше, чем первое конкретное значение, устройство кодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра для целевой выборки.
[173] Если размер текущего блока меньше, чем первое конкретное значение, устройство кодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство кодирования может определять сложный интерполяционный фильтр в качестве интерполяционного фильтра для целевой выборки. Конкретно, когда размер текущего блока меньше, чем первое конкретное значение, устройство кодирования может определять кубический фильтр в качестве интерполяционного фильтра.
[174] Конкретно, когда ширина и высота текущего блока равны и ширина текущего блока меньше, чем первое конкретное значение, устройство кодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение, и когда угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство кодирования может определять кубический фильтр в качестве интерполяционного фильтра.
[175] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока является направленным режимом интра-предсказания, имеющим вертикальную направленность, устройство кодирования может определять, является ли ширина текущего блока меньшей, чем первое конкретное значение. Если ширина текущего блока меньше, чем первое конкретное значение, устройство кодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство кодирования может определять кубический фильтр в качестве интерполяционного фильтра.1
[176] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока является направленным режимом интра-предсказания, имеющим горизонтальную направленность, устройство кодирования может определять, является ли высота текущего блока меньшей, чем первое конкретное значение. Если высота текущего блока меньше, чем первое конкретное значение, устройство кодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство кодирования может определять кубический фильтр в качестве интерполяционного фильтра.
[177] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока является направленным режимом интра-предсказания, имеющим вертикальную направленность, устройство кодирования может определять, является ли высота текущего блока меньшей, чем первое конкретное значение. Если высота текущего блока меньше, чем первое конкретное значение, устройство кодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство кодирования может определять кубический фильтр в качестве интерполяционного фильтра.
[178] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока является направленным режимом интра-предсказания, имеющим горизонтальную направленность, устройство кодирования может определять, является ли ширина текущего блока меньшей, чем первое конкретное значение. Если ширина текущего блока меньше, чем первое конкретное значение, устройство кодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство кодирования может определять кубический фильтр в качестве интерполяционного фильтра.
[179] Если угол предсказания режима интра-предсказания не меньше, чем второе конкретное значение, устройство кодирования может определять интерполяционный фильтр, имеющий эффект фильтра нижних частот, в качестве интерполяционного фильтра для целевой выборки. Конкретно, если угол предсказания режима интра-предсказания не меньше, чем второе конкретное значение, устройство кодирования может определять гауссов фильтр в качестве интерполяционного фильтра. Альтернативно, если угол предсказания режима интра-предсказания не меньше, чем второе конкретное значение, устройство кодирования может определять линейный фильтр в качестве интерполяционного фильтра.
[180] Конкретно, если ширина и высота текущего блока равны и ширина текущего блока меньше, чем первое конкретное значение, устройство кодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем конкретное значение, и если угол предсказания режима интра-предсказания не меньше, чем второе конкретное значение, устройство кодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра.
[181] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока является направленным режимом интра-предсказания, имеющим вертикальную направленность, устройство кодирования может определять, является ли ширина текущего блока меньшей, чем первое конкретное значение. Если ширина текущего блока меньше, чем первое конкретное значение, устройство кодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания не меньше, чем второе конкретное значение, устройство кодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра.
[182] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока является направленным режимом интра-предсказания, имеющим горизонтальную направленность, устройство кодирования может определять, является ли высота текущего блока меньшей, чем первое конкретное значение. Если высота текущего блока меньше, чем первое конкретное значение, устройство кодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания не меньше, чем второе конкретное значение, устройство кодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра.
[183] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока является направленным режимом интра-предсказания, имеющим вертикальную направленность, устройство кодирования может определять, является ли высота текущего блока меньшей, чем первое конкретное значение. Если высота текущего блока меньше, чем первое конкретное значение, устройство кодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания не меньше, чем второе конкретное значение, устройство кодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра.
[184] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока является направленным режимом интра-предсказания, имеющим горизонтальную направленность, устройство кодирования может определять, является ли ширина текущего блока меньшей, чем первое конкретное значение. Если ширина текущего блока меньше, чем первое конкретное значение, устройство кодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока не меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство кодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра.
[185] В другом примере, текущий блок может разделяться на множество областей, и интерполяционный фильтр каждой области может определяться на основе расстояния между каждой областью и соседними выборками текущего блока. В этом случае, интерполяционный фильтр для целевой выборки может выводиться в качестве интерполяционного фильтра области, включающей в себя целевую выборку. Кроме того, если размер текущего блока больше или равен конкретному размер, текущий блок может разделяться на множество областей. Конкретно, интерполяционные фильтры для областей, более близких к соседним выборкам текущего блока, чем конкретное значение, среди областей, могут определяться как сложные интерполяционные фильтры, и интерполяционные фильтры для областей, более далеких от соседних выборок текущего блока, чем конкретное значение, среди областей, могут определяться в качестве интерполяционных фильтров, имеющих эффект фильтра нижних частот.
[186] При этом, размер множества областей, разделенных из текущего блока, может быть установлен предварительно. Альтернативно, размер множества областей может выводиться на основе размера текущего блока, режима интра-предсказания или тому подобного. Например, в случае, когда режим интра-предсказания текущего блока является одним из режимов интра-предсказания #35-#66, размер разделенных областей текущего блока может выводиться как размер 4×4. Здесь, если текущий блок является блоком, имеющим размер 16×16, текущий блок может разделяться на области, имеющие размер 4×4, сложный интерполяционный фильтр может определяться в качестве интерполяционного фильтра для областей с #0 по #7 в порядке растрового сканирования, и интерполяционный фильтр, имеющий эффект фильтра нижних частот, может определяться в качестве интерполяционных фильтров для других областей. Например, интерполяционные фильтры для областей #0-#7 в порядке растрового сканирования, среди областей, могут определяться как кубические фильтры, и интерполяционные фильтры для других областей могут определяться как гауссовы фильтры или линейные фильтры. Здесь, номера 16 областей, имеющих размер 4×4 в соответствии с порядком растрового сканирования, могут последовательно выводиться в порядке от верхней строки к нижней строке и последовательно выводиться в порядке слева направо в каждой строке. То есть, области, включенные в первую строку среди 16 областей, имеющих размер 4×4 текущего блока, могут быть представлены как область #0, область #1, область #2 и область #3 в порядке слева направо, области, включенные во вторую строку, могут быть представлены как область #4, область #5, область #6 и область #7 в порядке слева направо, области, включенные в третью строку, могут быть представлены как область #8, область #9, область #10 и область #11 в порядке слева направо, и области, включенные в четвертую строку, могут быть представлены как область #12, область #13, область #14 и область #15 в порядке слева направо. При этом могут генерироваться размеры разделенных областей текущего блока и информация, указывающая интерполяционный фильтр для каждой из областей.
[187] В другом примере, интерполяционный фильтр для целевой выборки может определяться на основе расстояния между целевой выборкой и опорными выборками. Расстояние между целевой выборкой и опорными выборками может выводиться на основе положения целевой выборки и угла предсказания режима интра-предсказания текущего блока. Например, расстояние может быть вычислено на основе положения целевой выборки и значения тригонометрической функции (например, tanƟ) в соответствии с углом предсказания режима интра-предсказания. Альтернативно, расстояние может выводиться на основе предопределенной таблицы для размера блока и режима интра-предсказания. Альтернативно, расстояние между целевой выборкой и опорными выборками может указывать вертикальное расстояние или горизонтальное расстояние. То есть, расстояние между целевой выборкой и опорными выборками может выводиться на основе вертикального расстояния, или расстояние между целевой выборкой и опорными выборками может выводиться на основе горизонтального расстояния. Например, если расстояние между целевой выборкой и опорными выборками указывает вертикальное расстояние, расстояние может выводиться на основе компонента y целевой выборки. Также, если расстояние между целевой выборкой и опорными выборками указывает горизонтальное расстояние, расстояние может выводиться на основе компонента x целевой выборки.
[188] Например, устройство кодирования может выводить расстояние между целевой выборкой и опорными выборками и определять, является ли расстояние меньшим, чем конкретное значение. Если расстояние меньше, чем конкретное значение, устройство кодирования может определять сложный интерполяционный фильтр в качестве интерполяционного фильтра для целевой выборки, а если расстояние не меньше, чем конкретное значение, устройство кодирования может определять интерполяционный фильтр, имеющий эффект фильтра нижних частот, в качестве интерполяционного фильтра для целевой выборки. Конкретно, если расстояние меньше, чем конкретное значение, устройство кодирования может определять кубический фильтр в качестве интерполяционного фильтра для целевой выборки, а если расстояние не меньше, чем конкретное значение, устройство кодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра для целевой выборки. Конкретное значение может выводиться на основе размера текущего блока. Альтернативно, конкретное значение может выводиться на основе режима интра-предсказания текущего блока, определения, является ли текущий блок квадратным/неквадратным блоком, или тому подобного. Например, когда размер текущего блока равен N×N, конкретное значение может выводиться как N/2. Дополнительно, информация о конкретном значении может генерироваться, энтропийно кодироваться и передаваться.
[189] В другом примере, множество интерполяционных фильтров может определяться как интерполяционный фильтр для целевой выборки. Например, интерполяционные фильтры для целевой выборки могут включать в себя один из сложных интерполяционных фильтров и один из интерполяционных фильтров, имеющих эффект фильтра нижних частот. Альтернативно, интерполяционные фильтры для целевой выборки могут включать в себя один из сложных интерполяционных фильтров и два из интерполяционных фильтров, имеющих эффект фильтра нижних частот. Альтернативно, интерполяционные фильтры для целевой выборки могут включать в себя два из сложных интерполяционных фильтров и один из интерполяционных фильтров, имеющих эффект фильтра нижних частот. Конкретно, интерполяционные фильтры для целевой выборки могут включать в себя кубический фильтр и гауссов фильтр.
[190] Устройство кодирования выводит выборку предсказания целевой выборки на основе интерполяционного фильтра и опорных выборок (S1340). Устройство кодирования может выводить коэффициенты фильтрации интерполяционного фильтра на основе положения целевой выборки и угла предсказания режима интра-предсказания и выводить выборку предсказания целевой выборки на основе коэффициентов фильтрации и опорных выборок. Например, четыре соседних выборки среди соседних выборок текущего блока могут выводиться как опорные выборки, и могут выводиться четыре коэффициента фильтрации интерполяционного фильтра. Устройство кодирования может интерполировать опорные выборки на основе коэффициентов фильтрации, чтобы вывести выборку предсказания. Выборка предсказания может выводиться на основе уравнения 1, описанного выше.
[191] Дополнительно, когда множество интерполяционных фильтров определены в качестве интерполяционных фильтров для целевой выборки, устройство кодирования может выводить (временные) выборки предсказания на основе каждого интерполяционного фильтра и выводить выборку предсказания целевой выборки на основе выведенной (временной) выборки предсказания. Например, выборка предсказания целевой выборки может выводиться путем усреднения (временных) выборок предсказания или может выводиться путем взвешенного суммирования (временных) выборок предсказания. Причем, то, определено ли множество интерполяционных фильтров в качестве интерполяционного фильтра для целевой выборки, может быть выведено на основе размера текущего блока, режима интра-предсказания текущего блока, отклонения (дисперсии) значений соседних выборок текущего блока и тому подобного. Кроме того, может генерироваться метка, указывающая, определено ли множество интерполяционных фильтров в качестве интерполяционных фильтров для целевой выборки.
[192] Например, интерполяционные фильтры для целевой выборки могут включать в себя кубический фильтр и гауссов фильтр. В этом случае, устройство кодирования может выводить коэффициенты фильтрации кубического фильтра на основе положения целевой выборки и угла предсказания режима интра-предсказания и может выводить коэффициенты фильтрации гауссова фильтра на основе положения целевой выборки и угла предсказания режима интра-предсказания. Устройство кодирования может выводить первую выборку предсказания для целевой выборки на основе коэффициентов фильтра кубического фильтра и опорных выборок, выводить вторую выборку предсказания для целевой выборки на основе коэффициентов фильтрации гауссова фильтра и опорных выборок и выводить выборку предсказания целевой выборки на основе первой выборки предсказания и второй выборки предсказания. Выборка предсказания целевой выборки может выводиться путем усреднения первой выборки предсказания и второй выборки предсказания. Альтернативно, выборка предсказания целевой выборки может выводиться путем взвешенного суммирования первой выборки предсказания и второй выборки предсказания. В этом случае, вес для первой выборки предсказания может находиться в обратной пропорции с расстоянием между целевой выборкой и опорными выборками, и вес для второй выборки предсказания может выводиться как значение, полученное путем вычитания веса для первой выборки предсказания из 1. Альтернативно, первый вес и второй вес, используемые здесь, могут масштабироваться с повышением в единицах целых и выводиться во избежание вычисления с десятичной запятой.
[193] Также, например, интерполяционные фильтры для целевой выборки могут включать в себя кубический фильтр и линейный фильтр. В этом случае, устройство кодирования может выводить коэффициенты фильтрации кубического фильтра на основе положения опорной выборки и может выводить коэффициенты фильтрации линейного фильтра на основе положения опорной выборки. Устройство кодирования может выводить первую выборку предсказания для целевой выборки на основе коэффициентов фильтрации кубического фильтра и опорных выборок, выводить вторую выборку предсказания для целевой выборки на основе коэффициентов фильтрации линейного фильтра и опорных выборок и выводить выборку предсказания целевой выборки на основе первой выборки предсказания и второй выборки предсказания. Выборка предсказания целевой выборки может выводиться путем усреднения первой выборки предсказания и второй выборки предсказания. Альтернативно, выборка предсказания целевой выборки может выводиться путем взвешенного суммирования первой выборки предсказания и второй выборки предсказания. В этом случае, вес для первой выборки предсказания может находиться в обратной пропорции с расстоянием между целевой выборкой и опорными выборками, и вес для второй выборки предсказания может выводиться как значение, получаемое путем вычитания веса для первой выборки предсказания из 1. Альтернативно, первый вес и второй вес, используемые здесь, могут масштабироваться с повышением в единицах целых и выводиться во избежание вычисления с десятичной запятой.
[194] В другом примере, если режим MPM (наиболее вероятный режим) применяется к текущему блоку, чтобы вывести режим интра-предсказания текущего блока на основе режима интра-предсказания соседнего блока текущего блока, и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, а не планарный режим или режим DC, интерполяционный фильтр для целевой выборки может определяться на основе соседних блоков, выбранных через соседний режим MPM. То есть, интерполяционный фильтр, используемый в соседнем блоке, может выводиться в качестве интерполяционного фильтра для целевой выборки. Если режим MPM применяется к текущему блоку, устройство кодирования может определять список MPM на основе режима интра-предсказания для левого или верхнего соседнего блока текущего блока и определять режим интра-предсказания на основе списка MPM.
[195] Устройство кодирования генерирует информацию предсказания для текущего блока, кодирует информацию предсказания и выводит кодированную информацию предсказания (S1350). Устройство кодирования может кодировать информацию предсказания для текущего блока и выводить кодированную информацию в форме потока битов. Информация предсказания может включать в себя информацию о режиме интра-предсказания текущего блока. Устройство кодирования может генерировать информацию о режиме интра-предсказания, указывающую режим интра-предсказания, кодировать информацию режима интра-предсказания и выводить информацию в виде потока битов. Информация режима интра-предсказания может включать в себя информацию, непосредственно указывающую режим интра-предсказания для текущего блока, или может включать в себя информацию, указывающую любой один кандидат в списке кандидатов режима интра-предсказания, полученном на основе режима интра-предсказания левого или верхнего блока текущего блока. Список кандидатов режима интра-предсказания может указывать список MPM.
[196] Кроме того, когда текущий блок разделяется на множество областей, информация предсказания может включать в себя информацию, указывающую размер разделенных областей текущего блока и интерполяционный фильтр каждой области. Кроме того, когда интерполяционный фильтр для целевой выборки выбирается на основе размера текущего блока, режима интра-предсказания текущего блока или расстояния между целевой выборкой и опорными выборками, информация предсказания может включать в себя информацию касательно конкретного значения, используемого для выбора интерполяционного фильтра для целевой выборки. Когда интерполяционный фильтр выбирается на основе размера текущего блока и режима интра-предсказания текущего блока, информация предсказания может включать в себя информацию касательно первого конкретного значения и информацию касательно второго конкретного значения. Также, информация предсказания может включать в себя метку, указывающую, определено ли множество интерполяционных фильтров в качестве интерполяционных фильтров для целевой выборки. Когда метка указывает, что множество интерполяционных фильтров определено в качестве интерполяционных фильтров для целевой выборки, выборка предсказания для целевой выборки может выводиться на основе множества интерполяционных фильтров, и когда метка указывает, что множество интерполяционных фильтров не определено в качестве интерполяционных фильтров для целевой выборки, выборка предсказания для целевой выборки может не выводиться на основе множества интерполяционных фильтров. Например, когда значение метки представляет собой 1, метка может указывать, что множество интерполяционных фильтров определено в качестве интерполяционных фильтров для целевой выборки, и когда значение метки представляет собой 0, метка может указывать, что множество интерполяционных фильтров не определено в качестве интерполяционных фильтров для целевой выборки. Информация предсказания может сигнализироваться через набор параметров видео (VPS), набор параметров последовательности (SPS), набор параметров картинки (PPS) или заголовок сегмента вырезки или может сигнализироваться на основе блока.
[197] Фиг. 14 схематично иллюстрирует способ декодирования видео посредством устройства декодирования в соответствии с настоящим раскрытием. Способ, раскрытый на фиг. 14, может выполняться посредством устройства декодирования, раскрытого на фиг. 4. Конкретно, например, этапы S1400-S1440 согласно фиг. 14 могут выполняться посредством модуля предсказания устройства декодирования.
[198] Устройство декодирования выводит режим интра-предсказания для текущего блока (S1400). Устройство декодирования может получать информацию предсказания о текущем блоке через поток битов. Информация предсказания может включать в себя информацию, непосредственно указывающую режим интра-предсказания для текущего блока, или включать в себя информацию, указывающую любой из кандидатов в списке кандидатов режима интра-предсказания, выведенном на основе режима интра-предсказания левого или верхнего блока текущего блока. Список кандидатов режима интра-предсказания может называться списком кандидатов MPM. Устройство декодирования может выводить режим интра-предсказания для текущего блока на основе полученной информации предсказания. Режим интра-предсказания может представлять собой один из двух ненаправленных режимов предсказания и 33 направленных режимов предсказания. Как описано выше, два ненаправленных режима предсказания могут включать в себя режим интра-DC и интра-планарный режим. Альтернативно, режим интра-предсказания может представлять собой один из двух ненаправленных режимов интра-предсказания и 65 направленных режимов интра-предсказания. Как описано выше, два ненаправленных режима предсказания могут включать в себя режим интра-DC и интра-планарный режим. Кроме того, 65 направленных режимов интра-предсказания могут включать в себя вертикально направленные режимы интра-предсказания и горизонтально направленные режимы интра-предсказания. Вертикально направленные режимы интра-предсказания могут включать в себя от режима интра-предсказания #34 до режима интра-предсказания #66, и горизонтально направленные режимы интра-предсказания могут включать в себя от режима интра-предсказания #2 до режима интра-предсказания #33.
[199] Устройство декодирования выводит соседние выборки, включающие в себя левые соседние выборки и верхние соседние выборки текущего блока (S1410). Устройство декодирования может выводить соседние выборки текущего блока. Соседние выборки могут включать в себя левые соседние выборки и верхние соседние выборки. Кроме того, соседние выборки могут включать в себя левые верхние выборки. Левые соседние выборки, левая верхняя соседняя выборка и верхние соседние выборки могут выводиться из соседних блоков, уже реконструированных во время декодирования текущего блока. Могут выводиться 2N верхних соседних выборок, левые верхние соседние выборки и 2N левых соседних выборок текущего блока. Если размер текущего блока равен N×N, и компонент x верхней левой выборки текущего блока представляет собой 0, и его компонент y представляет собой 0, левые соседние выборки могут представлять собой от p[-1][0] до p[-1][2N-1], левая верхняя соседняя выборка может представлять собой p[-1][-1], и верхние соседние выборки могут представлять собой от p[0][-1] до p[2N-1][-1].
[200] Альтернативно, когда размер текущего блока равен M×N, и компонент x верхней левой выборки текущего блока представляет собой 0, и его компонент y представляет собой 0, могут выводиться M+N верхних соседних выборок, левые верхние соседние выборки и M-N левых соседних выборок текущего блока. Если размер текущего блока имеет неквадратную форму M×N, и компонент x верхней левой выборки текущего блока представляет собой 0, и его компонент y представляет собой 0, левые соседние выборки могут представлять собой от p[-1][0] до p[-1][M+N-1], левая верхняя соседняя выборка может представлять собой p[-1][-1], и верхние соседние выборки могут представлять собой от p[0][-1] до p[M+N-1][-1].
[201] Устройство декодирования выводит опорные выборки для предсказания целевой выборки среди соседних выборок на основе положения целевой выборки текущего блока и угла предсказания режима интра-предсказания (S1420). Устройство декодирования может выводить положение опорной выборки относительно целевой выборки на основе положения целевой выборки текущего блока и угла предсказания режима интра-предсказания, и когда положение опорной выборки представляет собой положение дробной выборки, устройство декодирования может выводить соседние выборки, расположенные около положения, выведенного на основе положения целевой выборки текущего блока и угла предсказания режима интра-предсказания, в качестве опорных выборок целевой выборки. То есть, устройство декодирования может выводить множество соседних выборок в качестве опорных выборок целевой выборки на основе положения целевой выборки текущего блока и угла предсказания режима интра-предсказания. Например, четыре соседних выборки могут выводиться как опорные выборки целевой выборки. Здесь, целевая выборка может представлять выборку в текущем блоке, на котором выполняется интра-предсказание. Угол предсказания режима интра-предсказания может выводиться на основе Таблицы 1, описанной выше, и intraPredAngle может представлять собой переменную, указывающую угол предсказания, выведенный из режима интра-предсказания.
[202] Устройство декодирования определяет интерполяционный фильтр для целевой выборки (S1430). Устройство декодирования может определять интерполяционный фильтр для целевой выборки на основе размера текущего блока и/или режима интра-предсказания текущего блока. Также, например, интерполяционный фильтр может определяться, когда положение опорной выборки представляет собой положение дробной выборки.
[203] Например, интерполяционный фильтр для целевой выборки может определяться на основе размера текущего блока. Например, если размер текущего блока равен 4×4, сложный интерполяционный фильтр может определяться в качестве интерполяционного фильтра для целевой выборки. Конкретно, когда размер текущего блока равен 4×4, кубический фильтр может определяться в качестве интерполяционного фильтра для целевой выборки. Кубический фильтр представляет собой один из сложных интерполяционных фильтров, и кубический фильтр может называться сплайн-фильтром.
[204] Также, если текущий блок является квадратным блоком, ширина и высота равны друг другу. То есть, поскольку текущий блок является квадратным блоком, имеющим размер N×N, опорный размер (т.е., опорное значение) при выборе интерполяционного фильтра может представлять собой N для направленного режима интра-предсказания любого направления предсказания. При этом, если текущий блок является неквадратным блоком, то есть, если текущий блок является неквадратный блок, имеющим размер M×N, когда режим интра-предсказания текущего блока представляет собой режим интра-предсказания, имеющий вертикальную направленность, размер опорного блока (т.е., опорное значение) для выбора интерполяционного фильтра может представлять собой M. Аналогично, если текущий блок является неквадратным блоком, имеющим размер M×N, и режим интра-предсказания текущего блока представляет собой режим интра-предсказания, имеющий горизонтальную направленность, размер текущего блока (т.е., опорное значение) в качестве опоры для выбора интерполяционного фильтра может представлять собой N. Альтернативно, напротив, если текущий блок является неквадратным блоком, имеющий размер M×N, и режим интра-предсказания текущего блока представляет собой режим интра-предсказания, имеющий вертикальную направленность, интерполяционный фильтр текущего блока может выбираться на основе N, и аналогично, если текущий блок является неквадратным блоком, имеющим размер M×N, и режим интра-предсказания текущего блока представляет собой режим интра-предсказания, имеющий горизонтальную направленность, интерполяционный фильтр текущего блока может выбираться на основе M. Однако, в конкретном примере, который будет описан далее, когда режим интра-предсказания, имеющий вертикальную направленность, применяется к текущему блоку, имеющему размер M×N, размер текущего блока в качестве опоры для выбора интерполяционного фильтра может быть представлен посредством M, и аналогично, если режим интра-предсказания, имеющий горизонтальную направленность, применяется к текущему блоку, размер текущего блока может быть представлен посредством N. Здесь, когда режим интра-предсказания включает в себя 65 направленных режимов интра-предсказания и два ненаправленных режима интра-предсказания, режим интра-предсказания, имеющий вертикальную направленность, может представлять режимы интра-предсказания #34-#66, и режим интра-предсказания, имеющий горизонтальную направленность, может представлять режимы интра-предсказания #2-#33.
[205] Также, например, может быть определено, является ли размер текущего блока, указанный формой текущего блока и направленностью режима интра-предсказания, меньшим, чем конкретное значение. Если размер текущего блока меньше, чем конкретное значение, сложный интерполяционный фильтр может определяться в качестве интерполяционного фильтра для целевой выборки, и если размер текущего блока не меньше, чем конкретное значение, интерполяционный фильтр, имеющий эффект фильтра нижних частот, может определяться в качестве интерполяционного фильтра для целевой выборки. Конкретно, когда размер текущего блока меньше, чем конкретное значение, кубический фильтр может определяться в качестве интерполяционного фильтра для целевой выборки. Если размер текущего блока не меньше, чем конкретное значение, гауссов фильтр может определяться в качестве интерполяционного фильтра для целевой выборки. Альтернативно, когда размер текущего блока не меньше, чем конкретное значение, линейный фильтр может определяться в качестве интерполяционного фильтра для целевой выборки. Интерполяционный фильтр, имеющий эффект фильтра нижних частот, может включать в себя гауссов фильтр и линейный фильтр. Здесь, конкретное значение может быть установлено в 4, 8, 16, 32 или тому подобное. Также, информация предсказания для текущего блока может включать в себя информацию о конкретном значении. В этом случае, конкретное значение может выводиться на основе информации о конкретном значении.
[206] Конкретно, когда ширина и высота текущего блока равны по величине (т.е., когда текущий блок является квадратным блоком), может определяться, является ли ширина текущего блока, меньшей, чем конкретное значение, и когда ширина текущего блока меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как кубический фильтр для целевой выборки, и когда ширина текущего блока не меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как гауссов фильтр.
[207] Кроме того, когда ширина и высота текущего блока отличаются (то есть, когда текущий блок является неквадратным блоком), и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий вертикальную направленность, может определяться, является ли ширина текущего блока меньшей, чем конкретное значение. Когда ширина текущего блока меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как кубический фильтр, а когда ширина текущего блока не меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как гауссов фильтр.
[208] Кроме того, когда ширина и высота текущего блока отличаются (то есть, когда текущий блок является неквадратным блоком) и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий горизонтальную направленность, может определяться, является ли высота текущего блока меньшей, чем конкретное значение. Когда высота текущего блока меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как кубический фильтр, а когда высота текущего блока не меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как гауссов фильтр.
[209] Кроме того, когда ширина и высота текущего блока отличаются (то есть, когда текущий блок является неквадратным блоком) и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий вертикальную направленность, может определяться, является ли высота текущего блока меньшей, чем конкретное значение. Когда высота текущего блока меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как кубический фильтр, и когда высота текущего блока не меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как гауссов фильтр.
[210] Кроме того, когда ширина и высота текущего блока отличаются (то есть, когда текущий блок представляет собой неквадратный блок) и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий горизонтальную направленность, может определяться, является ли ширина текущего блока меньшей, чем конкретное значение. Когда ширина текущего блока меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как кубический фильтр, а когда ширина текущего блока не меньше, чем конкретное значение, интерполяционный фильтр для целевой выборки может выводиться как гауссов фильтр.
[211] В другом примере, интерполяционный фильтр для целевой выборки может определяться на основе режима интра-предсказания текущего блока.
[212] Например, может определяться, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем конкретное значение. Если угол предсказания режима интра-предсказания меньше, чем конкретное значение, сложный интерполяционный фильтр может определяться в качестве интерполяционного фильтра для целевой выборки, а если угол предсказания режима интра-предсказания не меньше, чем конкретное значение, интерполяционный фильтр, имеющий эффект фильтра нижних частот, может определяться в качестве интерполяционного фильтра для целевой выборки. Конкретно, когда угол предсказания режима интра-предсказания меньше, чем конкретное значение, кубический фильтр может определяться в качестве интерполяционного фильтра для целевой выборки, а когда угол предсказания режима интра-предсказания не меньше, чем конкретное значение, гауссов фильтр может определяться в качестве интерполяционного фильтра для целевой выборки. Альтернативно, когда угол предсказания режима интра-предсказания не меньше, чем конкретное значение, линейный фильтр может определяться в качестве интерполяционного фильтра для целевой выборки. Интерполяционный фильтр, имеющий эффект фильтра нижних частот, может включать в себя гауссов фильтр и линейный фильтр. Здесь, конкретное значение может быть установлено в 4, 8, 16, 32 или тому подобное. Угол предсказания режима интра-предсказания может выводиться на основе Таблицы 1, описанной выше, и intraPredAngle может указывать угол предсказания режима интра-предсказания. Также, например, конкретное значение может быть установлено в 11. Также, информация предсказания для текущего блока может включать в себя информацию о конкретном значении. В этом случае, конкретное значение может выводиться на основе информации о конкретном значении.
[213] В другом примере, интерполяционный фильтр для целевой выборки может определяться на основе размера текущего блока и режима интра-предсказания.
[214] Например, устройство декодирования может определять, является ли размер текущего блока меньшим, чем первое конкретное значение, и когда размер текущего блока не меньше, чем первое конкретное значение, устройство декодирования может определять интерполяционный фильтр, имеющий эффект фильтра нижних частот, в качестве интерполяционного фильтра для целевой выборки. Конкретно, когда размер текущего блока не меньше, чем первое конкретное значение, устройство декодирования может определять гауссов фильтр в качестве интерполяционного фильтра. Альтернативно, когда размер текущего блока не меньше, чем первое конкретное значение, устройство декодирования может определять линейный фильтр в качестве интерполяционного фильтра.
[215] Конкретно, когда ширина и высота текущего блока равны друг другу, устройство декодирования может определять, является ли ширина текущего блока меньшей, чем первое конкретное значение. Когда ширина текущего блока не меньше, чем первое конкретное значение, устройство декодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра для целевой выборки.
[216] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий вертикальную направленность, устройство декодирования может определять, является ли ширина текущего блока меньшей, чем первое конкретное значение. Когда ширина текущего блока не меньше, чем первое конкретное значение, устройство декодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра для целевой выборки.
[217] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий горизонтальную направленность, устройство декодирования может определять, является ли высота текущего блока меньшей, чем первое конкретное значение. Когда высота текущего блока не меньше, чем первое конкретное значение, устройство декодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра для целевой выборки.
[218] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий вертикальную направленность, устройство декодирования может определять, является ли высота текущего блока меньшей, чем первое конкретное значение. Когда высота текущего блока не меньше, чем первое конкретное значение, устройство декодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра для целевой выборки.
[219] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий горизонтальную направленность, устройство декодирования может определять, является ли ширина текущего блока меньшей, чем первое конкретное значение. Когда ширина текущего блока не меньше, чем первое конкретное значение, устройство декодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра для целевой выборки.
[220] Если размер текущего блока меньше, чем первое конкретное значение, устройство декодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство декодирования может определять сложный интерполяционный фильтр в качестве интерполяционного фильтра для целевой выборки. Конкретно, когда угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство декодирования может определять кубический фильтр в качестве интерполяционного фильтра.
[221] Конкретно, когда ширина и высота текущего блока равны и ширина текущего блока меньше, чем первое конкретное значение, устройство декодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение, и когда угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство декодирования может определять кубический фильтр в качестве интерполяционного фильтра.
[222] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий вертикальную направленность, устройство декодирования может определять, является ли ширина текущего блока меньшей, чем первое конкретное значение. Если ширина текущего блока меньше, чем первое конкретное значение, устройство декодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство декодирования может определять кубический фильтр в качестве интерполяционного фильтра.
[223] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий горизонтальную направленность, устройство декодирования может определять, является ли высота текущего блока меньшей, чем первое конкретное значение. Если высота текущего блока меньше, чем первое конкретное значение, устройство декодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство декодирования может определять кубический фильтр в качестве интерполяционного фильтра.
[224] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий вертикальную направленность, устройство декодирования может определять, является ли высота текущего блока меньшей, чем первое конкретное значение. Если высота текущего блока меньше, чем первое конкретное значение, устройство декодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство декодирования может определять кубический фильтр в качестве интерполяционного фильтра.
[225] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий горизонтальную направленность, устройство декодирования может определять, является ли ширина текущего блока меньшей, чем первое конкретное значение. Если ширина текущего блока меньше, чем первое конкретное значение, устройство декодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство декодирования может определять кубический фильтр в качестве интерполяционного фильтра.
[226] Если угол предсказания режима интра-предсказания не меньше, чем второе конкретное значение, устройство декодирования может определять интерполяционный фильтр, имеющий эффект фильтра нижних частот, в качестве интерполяционного фильтра для целевой выборки. Конкретно, если угол предсказания режима интра-предсказания не меньше, чем второе конкретное значение, устройство декодирования может определять гауссов фильтр в качестве интерполяционного фильтра. Альтернативно, если угол предсказания режима интра-предсказания не меньше, чем второе конкретное значение, устройство декодирования может определять линейный фильтр в качестве интерполяционного фильтра.
[227] Конкретно, если ширина и высота текущего блока равны и ширина текущего блока меньше, чем первое конкретное значение, устройство декодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем конкретное значение, и если угол предсказания режима интра-предсказания не меньше, чем второе конкретное значение, устройство декодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра.
[228] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий вертикальную направленность, устройство декодирования может определять, является ли ширина текущего блока меньшей, чем первое конкретное значение. Если ширина текущего блока меньше, чем первое конкретное значение, устройство декодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания не меньше, чем второе конкретное значение, устройство декодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра.
[229] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий горизонтальную направленность, устройство декодирования может определять, является ли высота текущего блока меньшей, чем первое конкретное значение. Если высота текущего блока меньше, чем первое конкретное значение, устройство декодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания не меньше, чем второе конкретное значение, устройство декодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра.
[230] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий вертикальную направленность, устройство декодирования может определять, является ли высота текущего блока меньшей, чем первое конкретное значение. Если высота текущего блока меньше, чем первое конкретное значение, устройство декодирования может определять, является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания не меньше, чем второе конкретное значение, устройство декодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра.
[231] Если ширина и высота текущего блока отличаются друг от друга и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, имеющий горизонтальную направленность, устройство декодирования может определять, является ли ширина текущего блока меньшей, чем первое конкретное значение. Если ширина текущего блока меньше, чем первое конкретное значение, устройство декодирования может определять, не является ли угол предсказания режима интра-предсказания текущего блока меньшим, чем второе конкретное значение. Если угол предсказания режима интра-предсказания меньше, чем второе конкретное значение, устройство декодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра.
[232] При этом, информация предсказания для текущего блока может включать в себя информацию касательно первого конкретного значения и информацию касательно второго конкретного значения. В этом случае, первое конкретное значение может выводиться на основе информации касательно первого конкретного значения, и второе конкретное значение может выводиться на основе информации касательно второго конкретного значения. Альтернативно, первое конкретное значение и второе конкретное значение могут выводиться на основе предварительно установленных значений.
[233] В другом примере, текущий блок может разделяться на множество областей, и интерполяционный фильтр каждой области может определяться на основе расстояния между каждой областью и соседними выборками текущего блока. В этом случае, интерполяционный фильтр для целевой выборки может выводиться в качестве интерполяционного фильтра области, включающей в себя целевую выборку. Кроме того, если размер текущего блока больше или равен конкретному размеру, текущий блок может разделяться на множество областей. Конкретно, интерполяционные фильтры для областей, более близких к соседним выборкам текущего блока, чем конкретное значение, среди областей, могут определяться как сложные интерполяционные фильтры, и интерполяционные фильтры для областей, более удаленных от соседних выборок текущего блока, чем конкретное значение, среди областей, могут определяться как интерполяционные фильтры, имеющие эффект фильтра нижних частот.
[234] При этом, размер множества областей, выведенных из текущего блока, может быть предварительно установлен. Альтернативно, размер множества областей может выводиться на основе размера текущего блока, режима интра-предсказания или тому подобного. Например, в случае, когда режим интра-предсказания текущего блока представляет собой один из режимов интра-предсказания #35-#66, размер разделенных областей текущего блока может выводиться как размер 4×4. Здесь, если текущий блок представляет собой блок, имеющий размер 16×16, текущий блок может разделяться на области, имеющие размер 4×4, сложный интерполяционный фильтр может определяться в качестве интерполяционного фильтра для областей с #0 по #7 в порядке растрового сканирования, и интерполяционный фильтр, имеющий эффект фильтра нижних частот, может определяться в качестве интерполяционных фильтров для других областей. Например, интерполяционные фильтры для областей #0-#7 в порядке растрового сканирования, среди областей, могут определяться как кубические фильтры, и интерполяционные фильтры для других областей могут определяться как гауссовы фильтры или линейные фильтры. Здесь, номера 16 областей, имеющих размер 4×4 в соответствии с порядком растрового сканирования, могут последовательно выводиться в порядке от верхней строки к нижней строке и последовательно выводиться в порядке слева направо в каждой строке. То есть, области, включенные в первую строку среди 16 областей, имеющих размер 4×4 текущего блока, могут быть представлены как область #0, область #1, область #2 и область #3 в порядке слева направо, области, включенные во вторую строку, могут быть представлены как область #4, область #5, область #6 и область #7 в порядке слева направо, области, включенные в третью строку, могут быть представлены как область #8, область #9, область #10 и область #11 в порядке слева направо, и области, включенные в четвертую строку, могут быть представлены как область #12, область #13, область #14 и область #15 в порядке слева направо. При этом информация предсказания для текущего блока может приниматься, и информация предсказания может включать в себя информацию, указывающую размер каждой из разделенных областей текущего блока, и информацию, указывающую интерполяционный фильтр каждой области. В этом случае, размеры разделенных областей текущего блока и интерполяционные фильтры для соответственных областей могут выводиться на основе информации, указывающей размеры разделенных областей текущего блока, и информации, указывающей интерполяционные фильтры соответственных областей.
[235] В другом примере, интерполяционный фильтр для целевой выборки может определяться на основе расстояния между целевой выборкой и опорными выборками. Расстояние между целевой выборкой и опорными выборками может выводиться на основе положения целевой выборки и угла предсказания режима интра-предсказания текущего блока. Например, расстояние может быть вычислено на основе положения целевой выборки и значения тригонометрической функции (например, tanƟ) в соответствии с углом предсказания режима интра-предсказания. Альтернативно, расстояние может выводиться на основе предопределенной таблицы для размера блока и режима интра-предсказания. Альтернативно, расстояние между целевой выборкой и опорными выборками может указывать вертикальное расстояние или горизонтальное расстояние. Если расстояние между целевой выборкой и опорными выборками указывает вертикальное расстояние, расстояние может выводиться на основе компонента y целевой выборки. Также, если расстояние между целевой выборкой и опорными выборками указывает горизонтальное расстояние, расстояние может выводиться на основе компонента x целевой выборки.
[236] Например, устройство декодирования может выводить расстояние между целевой выборкой и опорными выборками и определять, является ли расстояние меньшим, чем конкретное значение. Если расстояние меньше, чем конкретное значение, устройство декодирования может определять сложный интерполяционный фильтр в качестве интерполяционного фильтра для целевой выборки, а если расстояние не меньше, чем конкретное значение, устройство декодирования может определять интерполяционный фильтр, имеющий эффект фильтра нижних частот, в качестве интерполяционного фильтра для целевой выборки. Конкретно, если расстояние меньше, чем конкретное значение, устройство декодирования может определять кубический фильтр в качестве интерполяционного фильтра для целевой выборки, и если расстояние не меньше, чем конкретное значение, устройство декодирования может определять гауссов фильтр или линейный фильтр в качестве интерполяционного фильтра для целевой выборки. Конкретное значение может выводиться на основе размера текущего блока. Альтернативно, конкретное значение может выводиться на основе режима интра-предсказания текущего блока, является ли текущий блок квадратным/неквадратным блоком, или тому подобного. Например, когда размер текущего блока равен N×N, конкретное значение может выводиться как N/2. Также, информация предсказания для текущего блока может приниматься, и информация предсказания может включать в себя информацию касательно конкретного значения. В этом случае, конкретное значение может выводиться на основе информации касательно конкретного значения.
[237] В другом примере, множество интерполяционных фильтров может определяться в качестве интерполяционных фильтров для целевой выборки. Например, интерполяционные фильтры для целевой выборки могут включать в себя один из сложных интерполяционных фильтров и один из интерполяционных фильтров, имеющих эффект фильтра нижних частот. Альтернативно, интерполяционные фильтры для целевой выборки могут включать в себя один из сложных интерполяционных фильтров и два из интерполяционных фильтров, имеющих эффект фильтра нижних частот. Альтернативно, интерполяционные фильтры для целевой выборки могут включать в себя два из сложных интерполяционных фильтров и один из интерполяционных фильтров, имеющих эффект фильтра нижних частот. Конкретно, интерполяционные фильтры для целевой выборки могут включать в себя кубический фильтр и гауссов фильтр. При этом информация предсказания для текущего блока может приниматься, и информация предсказания может включать в себя метку, указывающую, определено ли множество интерполяционных фильтров в качестве интерполяционных фильтров для целевой выборки. То, определено ли множество интерполяционных фильтров, может определяться на основе метки. Например, когда метка указывает, что множество интерполяционных фильтров определено в качестве интерполяционных фильтров для целевой выборки, выборка предсказания для целевой выборки может выводиться на основе множества интерполяционных фильтров, а когда метка указывает, что множество интерполяционных фильтров не определено в качестве интерполяционных фильтров для целевой выборки, выборка предсказания для целевой выборки может не выводиться на основе множества интерполяционных фильтров. Например, когда значение метки представляет собой 1, метка может указывать, что множество интерполяционных фильтров определено в качестве интерполяционных фильтров для целевой выборки, а когда значение метки представляет собой 0, метка может указывать, что множество интерполяционных фильтров не определено в качестве интерполяционных фильтров для целевой выборки.
[238] Устройство декодирования выводит выборку предсказания целевой выборки на основе интерполяционного фильтра и опорных выборок (S1440). Устройство декодирования может выводить коэффициенты фильтрации интерполяционного фильтра на основе положения целевой выборки и угла предсказания режима интра-предсказания и выводить выборку предсказания целевой выборки на основе коэффициентов фильтрации опорных выборок. Например, четыре соседние выборки среди соседних выборок текущего блока могут выводиться как опорные выборки, и могут выводиться четыре коэффициента фильтрации интерполяционного фильтра. Устройство декодирования может интерполировать опорные выборки на основе коэффициентов фильтрации, чтобы вывести выборку предсказания. Выборка предсказания может выводиться на основе уравнения 1, описанного выше.
[239] Дополнительно, когда множество интерполяционных фильтров определено в качестве интерполяционных фильтров для целевой выборки, устройство декодирования может выводить (временные) выборки предсказания на основе каждого интерполяционного фильтра и выводить выборку предсказания целевой выборки на основе выведенной (временной) выборки предсказания. Например, выборка предсказания целевой выборки может выводиться путем усреднения (временных) выборок предсказания или может выводиться путем взвешенного суммирования (временных) выборок предсказания. То, определено ли множество интерполяционных фильтров в качестве интерполяционного фильтра для целевой выборки, может выводиться на основе размера текущего блока, режима интра-предсказания текущего блока, отклонения значений соседних выборок текущего блока и тому подобного. Кроме того, может приниматься метка, указывающая, определено ли множество интерполяционных фильтров в качестве интерполяционных фильтров для целевой выборки, и то, определено ли множество интерполяционных фильтров в качестве интерполяционных фильтров для целевой выборки, может определяться на основе метки.
[240] Например, интерполяционные фильтры для целевой выборки могут включать в себя кубический фильтр и гауссов фильтр. В этом случае, устройство декодирования может выводить коэффициенты фильтрации кубического фильтра на основе положения целевой выборки и угла предсказания режима интра-предсказания и может выводить коэффициенты фильтрации гауссова фильтра на основе положения целевой выборки и угла предсказания режима интра-предсказания. Устройство декодирования может выводить первую выборку предсказания для целевой выборки на основе коэффициентов фильтрации кубического фильтра и опорных выборок, выводить вторую выборку предсказания для целевой выборки на основе коэффициентов фильтрации гауссова фильтра и опорных выборок и выводить выборку предсказания целевой выборки на основе первой выборки предсказания и второй выборки предсказания. Выборка предсказания целевой выборки может выводиться путем усреднения первой выборки предсказания и второй выборки предсказания. Альтернативно, выборка предсказания целевой выборки может выводиться путем взвешенного суммирования первой выборки предсказания и второй выборки предсказания. В этом случае, вес для первой выборки предсказания может находиться в обратной пропорции с расстоянием между целевой выборкой и опорными выборками, и вес для второй выборки предсказания может выводиться как значение, получаемое путем вычитания веса для первой выборки предсказания из 1. Альтернативно, первый вес и второй вес, используемые здесь, могут масштабироваться с повышением в единицах целых и выводиться во избежание вычисления с десятичной запятой.
[241] Также, например, интерполяционные фильтры для целевой выборки могут включать в себя кубический фильтр и линейный фильтр. В этом случае, устройство декодирования может выводить коэффициенты фильтрации кубического фильтра на основе положения опорной выборки и может выводить коэффициенты фильтрации линейного фильтра на основе положения опорной выборки. Устройство декодирования может выводить первую выборку предсказания для целевой выборки на основе коэффициентов фильтрации кубического фильтра и опорных выборок, выводить вторую выборку предсказания для целевой выборки на основе коэффициентов фильтрации линейного фильтра и опорных выборок и выводить выборку предсказания целевой выборки на основе первой выборки предсказания и второй выборки предсказания. Выборка предсказания целевой выборки может выводиться путем усреднения первой выборки предсказания и второй выборки предсказания. Альтернативно, выборка предсказания целевой выборки может выводиться путем взвешенного суммирования первой выборки предсказания и второй выборки предсказания. В этом случае, вес для первой выборки предсказания может находиться в обратной пропорции с расстоянием между целевой выборкой и опорными выборками, и вес для второй выборки предсказания может выводиться как значение, получаемое путем вычитания веса для первой выборки предсказания из 1. Альтернативно, первый вес и второй вес, используемые здесь, могут масштабироваться с повышением в единицах целых и выводиться во избежание вычисления с десятичной запятой.
[242] В другом примере, если режим MPM (наиболее вероятный режим) применяется к текущему блоку, чтобы вывести режим интра-предсказания текущего блока на основе режима интра-предсказания соседнего блока текущего блока, и режим интра-предсказания текущего блока представляет собой направленный режим интра-предсказания, а не планарный режим или режим DC, интерполяционный фильтр для целевой выборки может определяться на основе соседних блоков, выбранных через соседний режим MPM. То есть, интерполяционный фильтр, используемый в соседнем блоке, может выводиться в качестве интерполяционного фильтра для целевой выборки. Если режим MPM применяется к текущему блоку, устройство декодирования может определять список MPM на основе режима интра-предсказания для левого или верхнего соседнего блока текущего блока и определять режим интра-предсказания на основе списка MPM.
[243] Хотя не показано на чертеже, устройство декодирования может использовать выборку предсказания в качестве реконструированной выборки в соответствии с режимом предсказания или суммировать остаточную выборку с выборкой предсказания, чтобы генерировать реконструированную выборку. Когда существует остаточная выборка для целевого блока, устройство декодирования может принимать информацию касательно остатка для целевого блока, и информация касательно остатка может быть включена в информацию касательно реконструированной выборки. Информация касательно остатка может включать в себя коэффициент преобразования, относящийся к остаточной выборке. Устройство декодирования может выводить остаточную выборку (или массивы остаточных выборок) для целевого блока на основе информации остатка. Устройство декодирования может генерировать реконструированную выборку на основе выборки предсказания и остаточной выборки и может выводить реконструированный блок или реконструированную картинку на основе реконструированной выборки. После этого, чтобы повысить субъективное/объективное качество изображения, как это необходимо, устройство декодирования может применять процедуру контурной фильтрации, такую как фильтрация устранения блочности и/или процедура SAO, к реконструированной картинке, как описано выше.
[244] Кроме того, устройство декодирования может принимать информацию предсказания для текущего блока через поток битов и может энтропийно кодировать ее. Информация предсказания может включать в себя информацию о режиме интра-предсказания текущего блока. Устройство декодирования может получать информацию касательно режима интра-предсказания, указывающую режим интра-предсказания. Информация режима интра-предсказания может включать в себя информацию, непосредственно указывающую режим интра-предсказания для текущего блока, или может включать в себя информацию, указывающую любой один кандидат в списке кандидатов режима интра-предсказания, полученном на основе режима интра-предсказания левого или верхнего блока текущего блока. Список кандидатов режима интра-предсказания может указывать список MPM.
[245] Кроме того, когда текущий блок разделяется на множество областей, информация предсказания может включать в себя информацию, указывающую размер разделенных областей текущего блока и интерполяционный фильтр каждой области. Кроме того, когда интерполяционный фильтр для целевой выборки выбирается на основе размера текущего блока, режима интра-предсказания текущего блока или расстояния между целевой выборкой и опорными выборками, информация предсказания может включать в себя информацию касательно конкретного значения, используемого для выбора интерполяционного фильтра для целевой выборки. Когда интерполяционный фильтр выбирается на основе размера текущего блока и режима интра-предсказания текущего блока, информация предсказания может включать в себя информацию касательно первого конкретного значения и информацию касательно второго конкретного значения. Также, информация предсказания может включать в себя метку, указывающую, определено ли множество интерполяционных фильтров в качестве интерполяционных фильтров для целевой выборки. Когда метка указывает, что множество интерполяционных фильтров определено в качестве интерполяционных фильтров для целевой выборки, выборка предсказания целевой выборки может выводиться на основе множества интерполяционных фильтров, а когда метка указывает, что множество интерполяционных фильтров не определено в качестве интерполяционных фильтров для целевой выборки, выборка предсказания целевой выборки может не выводиться на основе множества интерполяционных фильтров. Например, когда значение метки представляет собой 1, метка может указывать, что множество интерполяционных фильтров определено в качестве интерполяционных фильтров для целевой выборки, а когда значение метки представляет собой 0, метка может указывать, что множество интерполяционных фильтров не определено в качестве интерполяционных фильтров для целевой выборки. Информация предсказания может сигнализироваться через набор параметров видео (VPS), набор параметров последовательности (SPS), набор параметров картинки (PPS) или заголовок сегмента вырезки или может сигнализироваться на основе блока.
[246] В соответствии с настоящим раскрытием, описанным выше, предсказание может выполняться на целевой выборке на основе интерполяционного фильтра, выведенного в соответствии с размером текущего блока, расстоянием между целевой выборкой и опорной выборкой и/или режимом предсказания (углом предсказания), причем опорная выборка положения дробной выборки для целевой выборки может точно генерироваться, чтобы повысить точность предсказания для текущего блока, и остаток для текущего блока может быть уменьшен, чтобы повысить эффективность кодирования.
[247] Также, в соответствии с настоящим раскрытием, поскольку интерполяционный фильтр для целевой выборки может выбираться на основе различных условий, описанных выше, количеств битов информации о выборе интерполяционного фильтра может быть уменьшено, причем точность предсказания для текущего блока может быть повышена, и эффективность кодирования текущего блока может быть повышена.
[248] В вышеописанном варианте осуществления, способы описаны на основе блок-схемы, имеющей последовательность этапов или блоков. Настоящее раскрытие не ограничено порядком вышеописанных этапов или блоков. Некоторые этапы или блоки могут происходить одновременно или в другом порядке относительно других этапов или блоков, как описано выше. Дополнительно, специалисты в данной области техники поймут, что этапы, показанные в блок-схеме последовательности операций выше, не являются исключительными, что дополнительные этапы могут быть включены или что один или несколько этапов в блок-схеме последовательности операций могут быть удалены без влияния на объем настоящего раскрытия.
[249] Способ в соответствии с настоящим раскрытием, описанным выше, может быть реализован в программном обеспечении. Устройство кодирования и/или устройство декодирования в соответствии с настоящим раскрытием может быть включено в устройство, которое выполняет обработку изображений, например, для TV, компьютера, смартфона, телевизионной приставки или устройства отображения.
[250] Когда варианты осуществления настоящего раскрытия реализованы в программном обеспечении, вышеописанный способ может быть реализован посредством модулей (процессов, функций и так далее), которые выполняют функции, описанные выше. Такие модули могут храниться в памяти и исполняться процессором. Память может быть внутренней или внешней по отношению к процессору, и память может быть соединена с процессором с использованием различных хорошо известных средств. Процессор может содержать специализированную интегральную схему (ASIC), другие чипсеты, логическую схему и/или устройство обработки данных. Память может включать в себя ROM (постоянную память), RAM (память с произвольным доступом), флэш-память, карту памяти, носитель хранения и/или другое устройство хранения.