Системы и способы применения фильтров деблокирования к восстановленным видеоданным

Изобретение относится к области кодирования видеосигналов, в частности к методикам выполнения деблокирования восстановленных видеоданных. Технический результат заключается в повышении эффективности кодирования. Указанный результат достигается тем, что способ фильтрации восстановленных видеоданных включает: прием переменной типа края, указывающей, фильтруется ли вертикальный или горизонтальный край; получение максимальной длины фильтра на основании переменной типа края; и выполнение фильтрации деблокирования для текущего блока на основании максимальной длины фильтра. 15 з.п. ф-лы, 18 ил., 11 табл.

 

Область техники

[0001] Настоящее описание относится к кодированию видеосигналов, и в частности к методикам выполнения деблокирования восстановленных видеоданных.

Предпосылки создания изобретения

[0002] Возможности цифрового видео можно применять в широком спектре устройств, включая цифровые телевизоры, ноутбуки или настольные компьютеры, планшетные компьютеры, устройства цифровой записи, цифровые медиаплееры, устройства для видеоигр, сотовые телефоны, включая так называемые смартфоны, медицинские устройства визуализации и т. п. Цифровое видео может быть закодировано в соответствии со стандартом кодирования видеосигналов. Стандарты кодирования видеосигналов могут включать в себя методики сжатия видео. Примеры стандартов кодирования видеосигналов включают в себя ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), а также высокоэффективное кодирование видеоизображений (HEVC). HEVC описан в документе High Efficiency Video Coding (HEVC), Rec. ITU-T H.265, декабрь 2016 г., включенном в настоящий документ путем ссылки и далее называемом в настоящем документе ITU-T H.265. В настоящее время рассматриваются расширения и усовершенствования ITU-T H.265 для разработки стандартов кодирования видеосигналов следующего поколения. Например, Экспертная группа по кодированию видеосигналов ITU-T (VCEG) и ISO/IEC (Экспертная группа по вопросам движущихся изображений (MPEG)) (совместно именуемые Объединенной группой по исследованию видео (JVET)) изучают потенциальную потребность в стандартизации будущей технологии кодирования видеосигналов с возможностью сжатия, которая значительно превышает возможности сжатия нынешнего стандарта HEVC. В документе The Joint Exploration Model 7 (JEM 7), Algorithm Description of Joint Exploration Test Model 7 (JEM 7), ISO/IEC JTC1/SC29/WG11: JVET-G1001, июль 2017 г., Турин, Италия, который включен в настоящий документ путем ссылки, описаны функции кодирования, являющиеся предметом скоординированного исследования тестовой модели JVET, как способные усовершенствовать технологию кодирования видеосигналов сверх возможностей ITU-T H.265. Следует отметить, что функции кодирования JEM 7 реализованы в эталонном программном обеспечении JEM. Употребляемый в настоящем документе термин JEM можно использовать для общей ссылки на алгоритмы, включенные в JEM 7, и реализации эталонного программного обеспечения JEM.

[0003] Благодаря методикам сжатия видео снижаются требования к данным для хранения и передачи видеоданных за счет использования присущей избыточности в видеопоследовательности. Методики сжатия видео могут предусматривать подразделение видеопоследовательности на последовательно меньшие части (т. е. группы кадров в видеопоследовательности, кадр в группе кадров, срезы в кадре, блоки кодового дерева (например, макроблоки) в срезе, блоки кодирования в элементе кодового дерева и т. д.). Методики кодирования с внутренним прогнозированием (например, внутрикадровое (пространственное)) и методики внешнего прогнозирования (т. е. межкадровое (временное)) можно использовать для генерирования значений разности между кодируемым элементом видеоданных и опорным элементом видеоданных. Значения разности могут называться остаточными данными. Остаточные данные могут быть закодированы как квантованные коэффициенты преобразования. Элементы синтаксиса могут относиться к остаточным данным и опорному блоку кодирования (например, индексам режима внутреннего прогнозирования, векторам движения и векторам блоков). Остаточные данные и элементы синтаксиса можно подвергать энтропийному кодированию. Энтропийно закодированные остаточные данные и элементы синтаксиса могут быть включены в совместимый битовый поток. Совместимые битовые потоки и соответствующие метаданные можно форматировать в соответствии со структурами данных.

Изложение сущности изобретения

[0004] В одном примере способ фильтрации восстановленных видеоданных, включающий: прием переменной типа края, указывающей на то, какой тип края отфильтрован: вертикальный или горизонтальный; получение максимальной длины фильтра на основании переменной типа края; и выполнение фильтрации деблокирования для текущего блока на основании максимальной длины фильтра.

Краткое описание чертежей

[0005] [ФИГ. 1] На ФИГ. 1 приведена концептуальная схема, иллюстрирующая пример группы изображений, кодируемых в соответствии с разделением двоичного дерева четверичного дерева в соответствии с одной или более методиками настоящего описания.

[ФИГ. 2] На ФИГ. 2 приведена концептуальная схема, иллюстрирующая пример формата выборки видеокомпонента в соответствии с одной или более методиками настоящего описания.

[ФИГ. 3] На ФИГ. 3 приведена концептуальная схема, иллюстрирующая возможные структуры кодирования для блока видеоданных в соответствии с одной или более методиками настоящего описания.

[ФИГ. 4А] На ФИГ. 4А приведена концептуальная схема, иллюстрирующая пример кодирования блока видеоданных в соответствии с одной или более методиками настоящего описания.

[ФИГ. 4B] На ФИГ. 4B приведена концептуальная схема, иллюстрирующая пример кодирования блока видеоданных в соответствии с одной или более методиками настоящего описания.

[ФИГ. 5A] На ФИГ. 5A приведена концептуальная схема, иллюстрирующая блок видеоданных, включая границу деблокирования, в соответствии с одной или более методиками настоящего описания.

[ФИГ. 5B] На ФИГ. 5B приведена концептуальная схема, иллюстрирующая блок видеоданных, включая границу деблокирования, в соответствии с одной или более методиками настоящего описания.

[ФИГ. 6A] На ФИГ. 6A приведен пример таблицы, которую можно использовать для определения параметров деблокирования в соответствии с одной или более методиками настоящего описания.

[ФИГ. 6B] На ФИГ. 6B приведен пример таблицы, которую можно использовать для определения параметров деблокирования в соответствии с одной или более методиками настоящего описания.

[ФИГ. 7] На ФИГ. 7 приведена блок-схема, иллюстрирующая пример системы, которая может быть выполнена с возможностью кодирования и декодирования видеоданных в соответствии с одной или более методиками настоящего описания.

[ФИГ. 8] На ФИГ. 8 приведена блок-схема, иллюстрирующая пример видеокодера, который может быть выполнен с возможностью кодирования видеоданных в соответствии с одной или более методиками настоящего описания.

[ФИГ. 9] На ФИГ. 9 приведена блок-схема, иллюстрирующая пример видеодекодера, который может быть выполнен с возможностью декодирования видеоданных в соответствии с одной или более методиками настоящего описания.

[ФИГ. 10] На ФИГ. 10 приведена блок-схема, иллюстрирующая пример выполнения деблокирования в соответствии с одной или более методиками настоящего описания.

[ФИГ. 11] На ФИГ. 11 приведена блок-схема, иллюстрирующая пример выполнения деблокирования в соответствии с одной или более методиками настоящего описания.

[ФИГ. 12] На ФИГ. 12 приведена блок-схема, иллюстрирующая пример выполнения деблокирования в соответствии с одной или более методиками настоящего описания.

[ФИГ. 13] На ФИГ. 13 приведен пример таблицы, которую можно использовать для определения параметров деблокирования в соответствии с одной или более методиками настоящего описания.

[ФИГ. 14A] На ФИГ. 14A приведена концептуальная схема, иллюстрирующая блок видеоданных, включая границу деблокирования, в соответствии с одной или более методиками настоящего описания.

[ФИГ. 14B] На ФИГ. 14B приведена концептуальная схема, иллюстрирующая блок видеоданных, включая границу деблокирования, в соответствии с одной или более методиками настоящего описания.

Описание вариантов осуществления

[0006] В целом в настоящем описании представлены различные методики кодирования видеоданных. В частности, в настоящем описании представлены методики выполнения деблокирования восстановленных видеоданных. Следует отметить, что, хотя методики настоящего описания описаны применительно к ITU-T H.264, ITU-T H.265 и JEM, они в целом применимы к кодированию видеосигналов. Например, описанные в настоящем документе методики кодирования могут быть использованы в системах кодирования видеосигналов (включая системы кодирования видеосигналов на основании будущих стандартов кодирования видеосигналов), включая блочные структуры, методики внутреннего прогнозирования, методики внешнего прогнозирования, методики преобразования, методики фильтрации и/или методики энтропийного кодирования, отличные от включенных в ITU-T H.265. Таким образом, ссылка на ITU-T H.264, ITU-T H.265 и JEM предназначена для описательных целей и не должна толковаться как ограничивающая объем методик, описанных в настоящем документе. Следует дополнительно отметить, что включение документов путем ссылки в настоящий документ не должно толковаться как ограничение или создание двусмысленности в отношении употребляемых в настоящем документе терминов. Например, в случае, если включенная ссылка содержит определение термина, отличное от другой включенной ссылки и/или от определения, используемого в настоящем документе, термин следует интерпретировать таким образом, что он в широком смысле включает в себя каждое соответствующее определение и/или каждое из конкретных определений в виде альтернативы.

[0007] В одном примере способ фильтрации восстановленных видеоданных включает в себя прием массива значений выборки, включая смежные восстановленные видеоблоки, для компонента видеоданных и изменение значений выборки в смежных восстановленных видеоблоках в соответствии со множеством проходов через фильтр деблокирования.

[0008] В одном примере устройство для кодирования видеосигналов содержит один или более процессоров, выполненных с возможностью приема массива значений выборки, включая смежные восстановленные видеоблоки, для компонента видеоданных и изменения значений выборки в смежных восстановленных видеоблоках в соответствии со множеством проходов через фильтр деблокирования.

[0009] В одном примере энергонезависимый машиночитаемый носитель данных содержит сохраненные на нем команды, при исполнении которых один или более процессоров устройства принимает массив значений выборки, включая смежные восстановленные видеоблоки, для компонента видеоданных, и изменяет значения выборки в смежных восстановленных видеоблоках в соответствии со множеством проходов через фильтр деблокирования.

[0010] В одном примере устройство содержит средства для приема массива значений выборки, включая смежные восстановленные видеоблоки, для компонента видеоданных, и средства для изменения значений выборки в смежных восстановленных видеоблоках в соответствии со множеством проходов через фильтр деблокирования.

[0011] Подробности одного или более примеров изложены в приведенном ниже описании и на сопроводительных чертежах. Прочие признаки, объекты и преимущества будут понятны из описания, и чертежей, и формулы изобретения.

[0012] Видеосодержимое обычно включает в себя видеопоследовательности, состоящие из ряда кадров. Последовательность кадров может также называться группой изображений (GOP). Каждый видеокадр или изображение может включать в себя множество срезов или мозаичных фрагментов, причем срез или мозаичный фрагмент включает в себя множество видеоблоков. Используемый в настоящем описании термин «видеоблок» может по существу относиться к области изображения, или может, в частности, относиться к самому большому массиву значений выборки, которые могут быть кодированы с прогнозированием, их подразделам и/или соответствующим структурам. Термин «текущий видеоблок» может дополнительно относиться к кодируемой или декодируемой области изображения. Видеоблок может быть определен как массив значений выборки, которые могут быть кодированы с прогнозированием. Следует отметить, что в некоторых случаях значения пикселей (Pic) могут быть описаны как включающие значения выборки соответствующих компонентов видеоданных, которые могут также называться цветовыми компонентами (например, компонентами яркости (Y) и цветности (Cb и Cr) или красным, зеленым и синим компонентами). Следует отметить, что в некоторых случаях термины «значения пикселей» и «значения выборки» используют взаимозаменяемо. Видеоблоки могут быть упорядочены в изображении в соответствии с типом сканирования (например, растровое сканирование). Видеокодер может выполнять кодирование с прогнозированием для видеоблоков и их подразделов. Видеоблоки и их подразделы могут называться узлами.

[0013] ITU-T H.264 определяет макроблок, включающий в себя 16 × 16 выборок яркости. Таким образом, согласно ITU-T H.264 изображение сегментируют на макроблоки. ITU-T H.265 определяет аналогичную структуру элемента кодового дерева (CTU), которая может также называться наибольшим блоком кодирования (LCU). В ITU-T H.265 изображения сегментируют согласно CTU. В ITU-T H.265 для изображения размер CTU может быть выбран таким образом, что он будет включать в себя 16 × 16, 32 × 32 или 64 × 64 выборок яркости. В ITU-T H.265 CTU состоит из соответствующих блоков кодового дерева (CTB) для каждого компонента видеоданных (например, яркости (Y) и цветности (Cb и Cr)). В ITU-T H.265 CTU может быть дополнительно разделен в соответствии со структурой разделения квадродерева (QT), что обеспечивает разделение блоков CTB элемента CTU на блоки кодирования (CB). Таким образом, в ITU-T H.265 CTU может быть разделен на концевые узлы квадродерева. В ITU-T H.265 один CB яркости вместе с двумя соответствующими CB цветности и связанными с ними элементами синтаксиса называются блоком кодирования (CU). В ITU-T H.265 посредством сигнализации может быть указан минимально допустимый размер CB. В ITU-T H.265 наименьший минимально допустимый размер CB яркости составляет 8 × 8 выборок яркости. В ITU-T H.265 решение о кодировании области изображения с использованием внутреннего прогнозирования или внешнего прогнозирования принимают на уровне CU.

[0014] В ITU-T H.265 CU связан со структурой элемента прогнозирования (PU) с корнем в CU. В ITU-T H.265 за счет структур PU можно разделять CB яркости и цветности для генерирования соответствующих опорных выборок. Таким образом, согласно ITU-T H.265 CB яркости и цветности могут быть разделены на соответствующие блоки прогнозирования (PB) яркости и цветности, причем PB включает в себя блок значений выборки, для которых применяют одно и то же прогнозирование. В ITU-T H.265 CB может быть разделен на 1, 2 или 4 PB. В ITU-T H.265 поддерживаются размеры PB от 64 × 64 до 4 × 4 выборок. В ITU-T H.265 поддерживаются квадратные PB для внутреннего прогнозирования, причем CB может формировать PB, или CB может быть разделен на четыре квадратных PB (т. е. типы размеров PB внутреннего прогнозирования включают в себя M × M или M/2 × M/2, где M представляет собой высоту и ширину квадрата CB). Помимо квадратных PB в ITU-T H.265 поддерживаются прямоугольные PB для внешнего прогнозирования, причем CB может быть уменьшен вдвое по вертикали или горизонтали для формирования PB (т. е. типы PB с внешним прогнозированием включают в себя M × M, M/2 × M/2, M/2 × M или M × M/2). Следует отметить, что в ITU-T H.265 для внешнего прогнозирования дополнительно поддерживаются четыре асимметричных разделения PB, причем CB разделяют на два PB на одной четверти высоты (вверху или внизу) или ширины (слева или справа) CB (т. е. асимметричные разделения включают в себя M/4 × M слева, M/4 × M справа, M × M/4 сверху и M × M/4 снизу). Данные внутреннего прогнозирования (например, элементы синтаксиса режима внутреннего прогнозирования) или данные внешнего прогнозирования (например, элементы синтаксиса данных движения), соответствующие PB, используют для создания опорных и/или прогнозированных значений выборки для PB.

[0015] JEM определяет CTU, имеющий максимальный размер 256 × 256 выборок яркости. JEM определяет структуру блоков квадродерева и двоичного дерева (QTBT). В JEM структура QTBT позволяет осуществлять дополнительное разделение концевых узлов квадродерева в соответствии со структурой двоичного дерева (BT). Таким образом, в JEM структура двоичного дерева позволяет рекурсивно разделять концевые узлы квадродерева по вертикали или горизонтали. На ФИГ. 1 приведен пример разделения CTU (например, CTU, имеющий размер 256 × 256 выборок яркости) на концевые узлы квадродерева, а концевые узлы квадродерева дополнительно разделяют в соответствии с двоичным деревом. Таким образом, на ФИГ. 1 пунктирными линиями обозначены дополнительные разделения двоичного дерева в квадродереве. Таким образом, структура двоичного дерева в JEM допускает квадратные и прямоугольные концевые узлы, причем каждый концевой узел включает в себя CB. Как показано на ФИГ. 1, изображение, включенное в GOP, может включать в себя срезы, причем каждый срез включает в себя последовательность CTU, а каждый CTU может быть разделен в соответствии со структурой QTBT. На ФИГ. 1 показан пример разделения QTBT для одного CTU, включенного в срез. Таким образом, структура двоичного дерева в JEM допускает квадратные и прямоугольные концевые узлы, причем каждый концевой узел включает в себя CB. В JEM CB используют для прогнозирования без какого-либо дальнейшего разделения. Таким образом, в JEM CB может быть блоком значений выборки, к которым применяют такое же прогнозирование. Таким образом, концевой узел JEM QTBT может быть аналогом PB в ITU-T H.265.

[0016] Формат выборки видео, который может также называться форматом цветности, может определять количество выборок цветности, включенных в CU, по отношению к количеству выборок яркости, включенных в CU. Например, в случае формата выборки 4:2:0 частота дискретизации для компонента яркости в два раза выше, чем для компонентов цветности, как в горизонтальном, так и в вертикальном направлениях. В результате у CU, сформатированного в соответствии с форматом 4:2:0, ширина и высота массива выборок компонента яркости в два раза больше, чем для каждого массива выборок компонентов цветности. На ФИГ. 2 представлена концептуальная схема, иллюстрирующая пример блока кодирования, сформатированного в соответствии с форматом выборки 4:2:0. На ФИГ. 2 проиллюстрировано положение выборок цветности относительно выборок яркости в CU. Как описано выше, CU обычно определяют в соответствии с количеством выборок яркости по горизонтали и вертикали. Таким образом, как показано на ФИГ. 2, CU 16 × 16, сформатированный в соответствии с форматом выборки 4:2:0, включает в себя 16 × 16 выборок компонентов яркости и 8 × 8 выборок для каждого компонента цветности. В примере, приведенном на ФИГ. 2, дополнительно проиллюстрировано положение выборок цветности относительно выборок яркости для видеоблоков, смежных с CU 16 × 16. В CU, сформатированном в соответствии с форматом 4:2:2, ширина массива выборок компонента яркости в два раза больше ширины массива выборок для каждого компонента цветности, но высота массива выборок для компонента яркости равна высоте массива выборок для каждого компонента цветности. В CU, сформатированном в соответствии с форматом 4:4:4, массив выборок для компонента яркости дополнительно имеет ту же ширину и высоту, что и массив выборок для каждого компонента цветности.

[0017] Как описано выше, данные внутреннего прогнозирования или данные внешнего прогнозирования используют для получения опорных значений выборки для блока значений выборки. Разница между значениями выборки, включенными в текущий PB или структуру области изображения другого типа, и соответствующими опорными выборками (например, полученными с использованием прогнозирования) может называться остаточными данными. Остаточные данные могут включать в себя соответствующие массивы разностных значений, соответствующие каждому компоненту видеоданных. Остаточные данные могут находиться в области пикселей. Для получения коэффициентов преобразования к массиву разностных значений можно применять преобразование, такое как дискретное косинусное преобразование (DCT), дискретное синусное преобразование (DST), целочисленное преобразование, вейвлет-преобразование или концептуально подобное преобразование. Следует отметить, что в ITU-T H.265 CU связан со структурой элемента преобразования (TU) с корнем на уровне CU. Таким образом, в ITU-T H.265 массив разностных значений может быть подразделен для получения коэффициентов преобразования (например, четыре преобразования 8 × 8 можно применять к массиву остаточных значений 16 × 16). Для каждого компонента видеоданных такие подразделы разностных значений могут называться блоками преобразования (TB). Следует отметить, что в ITU-T H.265 TB необязательно совмещают с PB. На ФИГ. 3 проиллюстрированы примеры альтернативных комбинаций PB и TB, которые можно использовать для кодирования конкретного CB. Следует отметить, что согласно ITU-T H.265 TB могут дополнительно иметь следующие размеры: 4 × 4, 8 × 8, 16 × 16 и 32 × 32. В JEM соответствующие CB остаточные значения используют для получения коэффициентов преобразования без дополнительного разделения. Таким образом, в JEM концевой узел QTBT может быть аналогичен как PB, так и TB в ITU-T H.265. Следует отметить, что в JEM основное преобразование и последующие вторичные преобразования можно применять (в видеокодере) для получения коэффициентов преобразования. В видеодекодере используют обратный порядок преобразований. В JEM применение вторичного преобразования для получения коэффициентов преобразования может дополнительно зависеть от режима прогнозирования.

[0018] Коэффициенты преобразования могут быть квантованы в соответствии с процессом квантования. Квантованием аппроксимируют коэффициенты преобразования по амплитудам, ограниченным набором указанных значений. Квантование можно использовать, чтобы варьировать объем данных, требуемых для представления группы коэффициентов преобразования. Квантование может быть в целом описано как реализуемое путем деления коэффициентов преобразования на коэффициент масштабирования и применения соответствующих функций округления (например, округление до ближайшего целого числа). Таким образом, обратное квантование (или «деквантование») может включать в себя умножение значений уровня коэффициента на коэффициент масштабирования. Следует отметить, что используемый в настоящем документе термин «процесс квантования» в некоторых случаях может по существу относиться к делению на коэффициент масштабирования для получения значений уровня или умножению на коэффициент масштабирования для восстановления коэффициентов преобразования в некоторых случаях. Таким образом, в некоторых случаях процесс квантования может относиться к квантованию, а в некоторых - к обратному квантованию. Текущий блок видеоданных восстанавливают путем выполнения обратного квантования значений уровня, обратного преобразования и добавления набора значений прогнозирования к полученному в результате остатку. Значения выборки восстановленного блока могут отличаться от значений выборки текущего видеоблока, подвергнутых процессу кодирования. Таким образом, можно сказать, что кодирование сопряжено с потерями. Однако следует отметить, что разницу в значениях выборки можно считать приемлемой для зрителя, просматривающего восстановленное видео.

[0019] Квантованные коэффициенты преобразования (которые могут называться значениями уровня) могут быть энтропийно кодированы согласно методике энтропийного кодирования (например, контентно-адаптивное кодирование с переменной длиной (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), энтропийное кодирование с разделением по интервалам вероятности (PIPE) и т. д.). Элементы синтаксиса, такие как элемент синтаксиса, обозначающий режим прогнозирования, могут также быть дополнительно энтропийно кодированы. Энтропийно кодированные квантованные коэффициенты преобразования и соответствующие энтропийно кодированные элементы синтаксиса могут формировать совместимый битовый поток, который можно использовать для воспроизведения видеоданных. Процесс бинаризации может быть выполнен с элементами синтаксиса в рамках процесса энтропийного кодирования. Бинаризация означает процесс преобразования синтаксиса в последовательность из одного или более битов. Эти биты могут называться «двоичными значениями».

На ФИГ. 4A-4В приведены концептуальные схемы, иллюстрирующие примеры кодирования блока видеоданных. Как показано на ФИГ. 4A, текущий блок видеоданных (например, CB, соответствующий видеокомпоненту) кодируют посредством получения остатка путем вычитания набора значений прогнозирования из текущего блока видеоданных, преобразования остатка и квантования коэффициентов преобразования для получения значений уровня. Как показано на ФИГ. 4B, текущий блок видеоданных декодируют путем выполнения обратного квантования значений уровня, обратного преобразования и добавления набора значений прогнозирования к полученному в результате остатку. Следует отметить, что в примерах на ФИГ. 4A-4B значения выборки восстановленного блока отличаются от значений выборки текущего кодируемого видеоблока. Таким образом, можно сказать, что кодирование сопряжено с потерями. Однако разницу в значениях выборки можно считать приемлемой или незаметной для зрителя, просматривающего восстановленное видео.

[0020] Как показано на ФИГ. 4A, квантованные коэффициенты преобразования кодируют в битовый поток. Квантованные коэффициенты преобразования и элементы синтаксиса (например, элементы синтаксиса, указывающие структуру кодирования для видеоблока) могут быть энтропийно кодированы согласно методике энтропийного кодирования. Примеры методик энтропийного кодирования включают в себя контентно-адаптивное кодирование с переменной длиной (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), энтропийное кодирование с разделением по интервалам вероятностей (PIPE) и т. п. Энтропийно кодированные квантованные коэффициенты преобразования и соответствующие энтропийно кодированные элементы синтаксиса могут формировать совместимый битовый поток, который можно использовать для воспроизведения видеоданных в видеодекодере. Процесс энтропийного кодирования может включать в себя бинаризацию элементов синтаксиса. Бинаризация означает процесс преобразования значения синтаксиса в последовательность из одного или более битов. Эти биты могут называться «двоичными значениями». Бинаризация представляет собой процесс без потерь и может включать в себя одну из следующих методик кодирования или их комбинацию: кодирование с фиксированной длиной, унарное кодирование, усеченное унарное кодирование, усеченное кодирование Райса, кодирование Голомба, экспоненциальное кодирование Голомба k-го порядка и кодирование Голомба - Райса. Например, бинаризация может включать в себя представление целочисленного значения 5 для элемента синтаксиса как 00000101 с использованием методики 8-битной бинаризации с фиксированной длиной или представление целочисленного значения 5 как 11110 с использованием методики бинаризации унарного кодирования. Каждый из используемых в настоящем документе терминов «кодирование с фиксированной длиной», «унарное кодирование», «усеченное унарное кодирование», «усеченное кодирование Райса», «кодирование Голомба», «экспоненциальное кодирование Голомба k-го порядка» и «кодирование Голомба - Райса» может относиться к общим реализациям этих методик и/или более конкретным вариантам осуществления этих методик кодирования. Например, вариант реализации кодирования Голомба - Райса может быть конкретно определен в соответствии со стандартом кодирования видеосигналов, например ITU-T H.265. Процесс энтропийного кодирования дополнительно включает в себя кодирование двоичных значений с использованием алгоритмов сжатия данных без потерь. В примере CABAC для конкретного двоичного значения контекстная модель может быть выбрана из набора доступных контекстных моделей, связанных с двоичным значением. В некоторых примерах контекстная модель может быть выбрана на основании предыдущего двоичного значения и/или значений предыдущих элементов синтаксиса. Контекстная модель может идентифицировать вероятность того, что двоичное значение представляет собой конкретное значение. Например, в контекстной модели может быть обозначена вероятность 0,7 для кодирования двоичного значения 0 и вероятность 0,3 для кодирования двоичного значения 1. Следует отметить, что в некоторых случаях вероятность кодирования двоичного значения 0 и вероятность кодирования двоичного значения 1 могут не быть равными 1. После выбора доступной контекстной модели энтропийный кодер CABAC может арифметически кодировать двоичное значение на основании идентифицированной контекстной модели. Контекстная модель может быть обновлена на основании значения кодированного двоичного значения. Контекстная модель может быть обновлена на основании связанной переменной, сохраненной с контекстом, например размером окна адаптации, количеством двоичных значений, кодированных с использованием контекста. Следует отметить, что согласно ITU-T H.265 энтропийный кодер CABAC может быть реализован так, что некоторые элементы синтаксиса могут быть энтропийно кодированы с использованием арифметического кодирования без применения явно назначенной контекстной модели, и такое кодирование может называться обходным кодированием.

[0021] Как описано выше, данные внутреннего прогнозирования или данные внешнего прогнозирования могут связывать область изображения (например, PB или CB) с соответствующими опорными выборками. Для кодирования с внутренним прогнозированием режим внутреннего прогнозирования может сообщать местоположение опорных выборок в изображении. В ITU-T H.265 определенные возможные режимы внутреннего прогнозирования включают в себя режим планарного (т. е. подбор поверхности) прогнозирования (predMode: 0), режим прогнозирования DC (т. е. плоское полное усреднение) (predMode: 1) и 33 режимов углового прогнозирования (predMode: 2-34). В JEM определенные возможные режимы внутреннего прогнозирования включают в себя режим планарного прогнозирования (predMode: 0), режим прогнозирования DC (predMode: 1) и 65 режимов углового прогнозирования (predMode: 2-66). Следует отметить, что режимы планарного прогнозирования и прогнозирования DC могут называться режимами ненаправленного прогнозирования, а режимы углового прогнозирования могут называться режимами направленного прогнозирования. Следует отметить, что методики, описанные в настоящем документе, могут быть в целом применимы, независимо от количества определенных возможных режимов прогнозирования.

[0022] В случае кодирования с внешним прогнозированием вектор движения (MV) идентифицирует опорные выборки в изображении, отличном от изображения кодируемого видеоблока, и тем самым использует временную избыточность в видео. Например, текущий видеоблок может быть спрогнозирован из опорного (-ых) блока (-ов), находящегося (-ихся) в ранее кодированном (-ых) кадре (-ах), и вектор движения может быть использован для указания местоположения опорного блока. Вектор движения и связанные данные могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, точность в одну четверть пикселя, половину пикселя, один пиксель, два пикселя, четыре пикселя), направление прогнозирования и/или значение индекса опорного кадра. Стандарт кодирования, такой как, например, ITU-T H.265, может дополнительно поддерживать прогнозирование вектора движения. Прогнозирование вектора движения позволяет задавать вектор движения с использованием векторов движения соседних блоков. Примеры прогнозирования вектора движения включают в себя расширенное прогнозирование вектора движения (AMVP), временное прогнозирование вектора движения (TMVP), так называемый режим «слияния», а также «пропуск» и «прямое» логическое определение движения. JEM дополнительно поддерживает расширенное временное прогнозирование вектора движения (ATMVP), пространственно- Временное прогнозирование вектора движения (STMVP), режим извлечения вектора движения с сравнением с образцом (PMMVD), который представляет собой специальный режим слияния, основанный на методиках преобразования с повышением частоты кадров (FRUC), и методики прогнозирования с компенсацией движения путем аффинного преобразования.

[0023] Как описано выше, квантование может быть реализовано посредством деления коэффициентов преобразования на коэффициент масштабирования и может быть дополнительно использовано для изменения объема данных, требуемых для представления группы коэффициентов преобразования. Таким образом, при увеличении коэффициента масштабирования (или степени квантования) уменьшается объем данных, необходимых для представления коэффициентов группы. В ITU-T H.265 степень квантования может быть определена параметром квантования (QP). В ITU-T H.265 при значении битовой глубины 8 бит QP может принимать 52 значения от 0 до 51, и изменение QP на 1 обычно соответствует изменению значения коэффициента масштабирования квантования приблизительно на 12%. Следует отметить, что в целом в ITU-T H.265 действительный диапазон значений QP для исходной битовой глубины составляет: от -6 * (битовая глубина -8) до +51 (включительно). Таким образом, например, при битовой глубине в 10 битов QP может принимать 64 значения от -12 до 51, которые могут быть сопоставлены со значениями от 0 до 63 в процессе деквантования. В ITU-T H.265 параметр квантования может быть обновлен для каждого CU, и соответствующий параметр квантования может быть получен для каждого из компонентов яркости и цветности. Следует отметить, что по мере увеличения степени квантования (например, коэффициенты преобразования делятся на большее значение коэффициента масштабирования), величина искажения может увеличиваться (например, восстановленные видеоданные могут казаться пользователю более «блочными»).

[0024] В некоторых случаях блочные артефакты могут приводить к тому, что границы блоков кодирования восстановленных видеоданных будут визуально заметны для пользователя. Для уменьшения блочных артефактов восстановленные значения выборки могут быть изменены таким образом, чтобы минимизировать артефакты, вносимые процессом кодирования видеосигналов. Такие изменения в целом могут называться фильтрацией. Следует отметить, что фильтрация может происходить в рамках процесса фильтрации в цикле или процесса фильтрации после цикла. Для процесса фильтрации в цикле полученные значения выборки процесса фильтрации могут быть использованы для прогнозируемых видеоблоков (например, сохранены в буфере опорного кадра для последующего кодирования в видеокодере и последующего декодирования в видеодекодере). Для процесса фильтрации после цикла вывод полученных значений выборки процесса фильтрации происходит только в рамках процесса декодирования (например, их не используют для последующего кодирования). Например, для процесса фильтрации в цикле значения выборки, полученные в результате фильтрации восстановленного блока, будут использованы для последующего декодирования (например, сохранены в опорном буфере) и будут выведены (например, на дисплей). Для процесса фильтрации после цикла восстановленный блок без изменения будет использован для последующего декодирования, а значения выборки, полученные в результате фильтрации восстановленного блока, будут выведены.

[0025] В приведенных в настоящем документе уравнениях могут быть использованы следующие арифметические операторы:

+ сложение;

- вычитание;

* умножение, включая умножение матриц;

/ целочисленное деление с округлением результата в сторону нуля. Например, результат деления 7/4 и -7 / -4 округляется до 1, а -7/4 и 7 / -4 - до -1.

Суммирование f (i), где i принимает все целочисленные значения от x до y включительно.

[0026] Дополнительно могут быть использованы следующие математические функции:

Clip 1c( x ) = Clip3( 0, ( 1 « BitDepthc ) - 1,x ), где BitDepthc - битовая глубина канала цветности,

abs(x) представляет собой абсолютное значение x.

[0027] Дополнительно можно применять следующие определения логических операторов:

x && y - булево логическое «и» для x и y;

х | | у - булево логическое «или» для х и у;

! - булево логическое «не»;

x ? y : z - если x равен TRUE (истина) или не равен 0, вычисляют значение y; в противном случае оценивают значение z.

[0028] Дополнительно могут быть применены следующие реляционные операторы:

> больше;

>= больше или равно;

< меньше;

<= меньше или равно;

== равно;

!= не равно.

[0029] Могут дополнительно применяться следующие побитовые операторы:

x >> y арифметический сдвиг вправо целочисленного представления поразрядного дополнения до двух x на y двоичных разрядов. Эта функция определена только для неотрицательных целых значений y. Биты, сдвинутые до наиболее значащих битов (MSB) в результате правого сдвига, имеют значение, равное MSB x до операции сдвига.

x >> y арифметический сдвиг влево целочисленного представления поразрядного дополнения до двух x на y двоичных разрядов. Эта функция определена только для неотрицательных целых значений y. Биты, сдвинутые до наименее значащих биты (LSB) в результате сдвига влево, имеют значение, равное 0.

[0030] Деблокирование (или устранение блочности), фильтрация деблокирования, выполнение деблокирования или применение фильтра деблокирования относится к способу сглаживания границ видеоблоков со смежными восстановленными видеоблоками (т. е. создание менее заметных для зрителя границ). Сглаживание границ соседних восстановленных видеоблоков может включать изменение значений выборки, включенных в строки или столбцы, смежные с границей. В ITU-T H.265 предусмотрено, что фильтр деблокирования применяют в отношении восстановленных значений выборки в рамках процесса фильтрации в цикле. ITU-T H.265 включает в себя два типа фильтров деблокирования, которые могут быть использованы для изменения выборок яркости: сильный фильтр, который изменяет значения выборки в трех смежных с границей строках или столбцах, и слабый фильтр, который изменяет значения выборки в непосредственно примыкающих к границе строке или столбце и при определенных условиях изменяет значения выборки во вторых строке или столбце относительно границы. ITU-T H.265 дополнительно включает в себя один тип фильтра, который может быть использован для изменения выборок цветности, т. е. нормальный фильтр.

[0031] На ФИГ. 5A-5B проиллюстрированы значения выборки, включенные в видеоблоки P и Q, имеющие границу. В настоящем документе видеоблоки P и Q используют для обозначения смежных видеоблоков, имеющих границу блока, к которой можно применять деблокирование. Способ изменения значений выборки может быть основан на определенных фильтрах, в которых pi и qi обозначают соответствующие значения выборки в столбце для вертикальной границы и значения выборки в строке для горизонтальной границы, а pi’ и qi’ представляют измененные значения выборки. Заданные фильтры могут определять выборки, которые должны быть изменены (или отфильтрованы), и выборки, которые используют для определения способа изменения выборок. Например, как показано на ФИГ. 5A, в одном примере значения выборки в каждом из первых трех столбцов, смежных с границей деблокирования, могут быть изменены (проиллюстрированы как отфильтрованные выборки) на основании значений выборки, включенных в каждый из первых четырех столбцов, смежных с границей деблокирования (проиллюстрированных как опорные выборки).

[0032] Как описано выше, ITU-T H.265 включает в себя два типа фильтров, которые могут быть использованы для изменения выборки яркости: сильный фильтр и слабый фильтр. Упрощенные определения уравнений сильного фильтра и слабого фильтра для изменения значений выборки яркости приведены ниже. Упрощение определений заключается в том, что они не включают в себя операции отсечения, предусмотренные в ITU-T H.265 (т. е. согласно ITU-T H.265 отфильтрованные значения отсекают на основании значения tC, описанного ниже), однако дана ссылка на раздел 8.7.2.5.7 ITU-T H.265, в котором приведены полные определения.

Сильный фильтр

p0’ = (p2+2 * p1+2 * p0+2 * q0+q1+4) / 8;

p1’ = (p2+p1+p0+q0+2) / 4;

p2’ = (2 * p3+3 * p2+p1+p0+q0+4) / 8;

q0’ = (p1+2 * p0+2 * q0+2 * q1+q2+4) / 8;

q1’ = (p0+q0+q1+q2+2) / 4;

q2’ = (p0+q0+q1+3 * q2+2 * q3+4) / 8.

Слабый фильтр

∆ = (9 * (q0 - p0) - 3 * (q1 - p1) + 8) / 16;

p0’ = p0 + ∆;

q0’ = q0 - Δ,

где p1 и q1 условно модифицированы, как описано ниже, следующим образом:

∆p = ((p2+p0+1) / 2 - p1 + ∆) / 2;

∆q = ((q2+p0+1) / 2 - q1 - ∆) / 2;

p1’ = p1 + ∆p;

q1’ = q1 + ∆q.

[0033] ITU-T H.265 дополнительно включает в себя один тип фильтра, который может быть использован для изменения выборок цветности: нормальный фильтр. Упрощенные определения уравнений нормального фильтра для изменения значений выборки цветности приведены ниже.

Нормальный фильтр

Δ = ((q0 ~ p0)*4+p1 - q1+4) / 8;

p0’ = po+Δ;

q0’ = q0 - Δ.

[0034] Деблокирование может быть выполнено на основании степени гранулярности деблокирования. ITU-T H.265 обеспечивает гранулярность деблокирования 8 × 8. Таким образом, в ITU-T H.265 для области изображения каждый край, расположенный на сетке 8 × 8, оценивают для определения того, существует ли граница. В ITU-T H.265 для каждой границы дополнительно определяют интенсивность границы (Bs). В ITU-T H.265 Bs определяют как одно из 0, 1 или 2 следующим образом:

если P и Q являются двумя смежными блоками кодирования, силу фильтра Bs определяют следующим образом:

если один из блоков (P или Q) имеет режим внутреннего прогнозирования, то Bs=2;

иначе, если P и Q принадлежат разным TB, и P или Q имеют по меньшей мере один ненулевой

коэффициент преобразования, то Bs=1;

иначе, если опорные кадры P и Q не эквивалентны, то Bs=1;

иначе, если разность между компонентом вектора движения x или y P и Q равна одной целочисленной выборке или более, то Bs=1;

иначе Bs=0.

[0035] В ITU-T H.265 переменные tC’ и β’ определяют на основании QP, используемого для кодирования CB, включая видеоблоки P и Q (которые могут называться QPP и QPQ). На ФИГ. 6A представлена таблица для определения tС’ и β’. В ITU-T H.265 индекс Q определяют следующим образом.

Для сигнала яркости:

Для β':

Q=Clip3(0, 51, qPL + (slice_beta_offset_div2 << 1))

Для tC'

Q=Clip3(0, 53, qPL+2 * (bS - 1) + (slice_tc_offset_div2 << 1)),

где

qPL = (QPQ+QPp+1) / 2;

slice_beta_offset_div2 представляет собой значение смещения, применяемое к срезу видеоданных, который включает в себя выборку q0,0; и

slice_tc_offset_div2 представляет собой значение смещения, применяемое к срезу видеоданных, который включает в себя выборку q0,0.

[0036] Согласно ITU-T H.265 переменные β и tC определяют следующим образом:

β=β' * (1 << ( BitDepthy - 8 ))

tC=tC' * (1 <<(BitDepthY - 8 )),

где BitDepthy означает битовую глубину выборок яркости.

[0037] ITU-T H.265 определяет переменную d, причем d определяется на основании значений выборки яркости следующим образом:

dp0=abs(p2,0-2 * p1,0+p0,0);

dp3=abs(p2,3-2 * p1,3+p0,3);

dq0=abs(q2,0-2 * q1,0+q0,0);

dq3=abs(q2,3-2 * q1,3+q0,3);

dpq0=dp0+dq0;

dpq3=dp3+dq3;

dp=dp0+dp3;

dq=dq0+dq3;

d=dpq0+dpq3.

[0038] В ITU-T H.265 переменной dpq дополнительно присваивается значение, основанное на значениях d и β. Наконец, согласно ITU-T H.265 каждый из Bs, tC, β и d используют для определения того, фильтр какого типа следует применять (например, сильный фильтр или слабый фильтр). Кроме того, в ITU-T H.265 для компонента цветности нормальный фильтр применяют, только когда Bs равно 2. Таким образом, согласно ITU-T H.265 деблокирование происходит для компонента цветности, только если один из блоков P или Q генерируют с использованием режима внутреннего прогнозирования.

[0039] Следует отметить, что может быть полезно в общих чертах описать фильтр деблокирования с точки зрения набора параметров фильтра. Например, для набора значений выборки {a…b} в строке или столбце соответствующее значение деблокированной выборки, y[n], может быть определено на основании следующего уравнения:

где

длина фильтра определяется как abs(a - b+1);

coeff[m] предоставляет значение отвода фильтра (также называемое коэффициентом фильтра). Например, для {a...b} = {0...4} набор значений отвода может представлять собой {1, 2, 3, 2, 1};

С помощью x [n+m] получают входные значения выборки, соответствующие опорным выборкам; следует отметить, что размер опорной выборки может быть больше длины фильтра или равен ей.

[0040]

Кроме того, в ITU-T H.265 фильтр деблокирования можно по-разному применять к границам CTU, которые совпадают с границами среза и мозаичного фрагмента, по сравнению с границами CTU, не совпадающими с границами среза и мозаичного фрагмента. В частности, ITU-T H.265 определяет флаг, slice_loop_filter_across_slices_enabled_flag, присутствующий в заголовке сегмента среза, который включает/выключает фильтр деблокирования на границах CTU, совпадающих с верхней и левой границами среза. ITU-T H.265 предусматривает следующее определение для slice_loop_filter_across_slices_enabled_flag:

slice_loop_filter_across_slices_enabled_flag, равный 1, обозначает, что операции фильтрации в цикле могут быть выполнены на левой и верхней границе текущего среза, а slice_loop_filter_across_slices_enabled_flag, равный 0, обозначает, что операции в цикле не выполняют на левой и верхней границах текущего среза. Операции фильтрации в цикле включают в себя фильтр деблокирования и адаптивный фильтр смещения выборки. Когда slice_loop_filter_across_slices_enabled_flag отсутствует, предполагается, что он равен pps_loop_filter_across_slices_enabled_flag,

где pps_loop_filter_across_slices_enabled_flag присутствует в наборе параметров изображения (PPS) и ITU-T H.265 предоставляет следующее определение для pps_loop_filter_across_slices_enabled_flag:

pps_loop_filter_across_slices_enabled_flag, равный 1, обозначает, что операции фильтрации в цикле могут быть выполнены на левой и верхней границах срезов, относящихся к PPS. pps_loop_filter_across_slices_enabled_flag, равный 0, обозначает, что операции фильтрации в цикле не выполняют на левой и верхней границах срезов, относящихся к PPS. Операции фильтрации в цикле включают в себя фильтр деблокирования и операции адаптивного фильтра смещения выборки.

ПРИМЕЧАНИЕ. Циклическая фильтрация на границах среза может быть включена, тогда как циклическая фильтрация на границах фрагмента выключена, и наоборот.

[0041]

Аналогично флаг loop_filter_across_tiles_enabled_flag, присутствующий в PPS, включает/выключает фильтр деблокирования на границах CTU, совпадающих с границами мозаичных фрагментов. В ITU-T H.265 предусмотрено следующее определение для loop_filter_across_tiles_enabled_flag:

loop_filter_across_tiles_enabled_flag, равный 1, обозначает, что операции фильтрации в цикле могут быть выполнены на границах мозаичных элементов изображений, относящихся к PPS. loop_filter_across_tiles_enabled_flag, равный 0, обозначает, что операции фильтрации в цикле не выполняют на границах мозаичных элементов изображений, относящихся к PPS. Операции фильтрации в цикле включают в себя фильтр деблокирования и операции адаптивного фильтра смещения выборки. При его отсутствии предполагаемое значение loop_filter_across_tiles_enabled_flag равно 1.

[0042]

Как описано выше, для деблокирования индекс Q определяют на основании slice_beta_offset_div2 и slice_tc_offset_div2. В ITU-T H.265 значения slice_beta_offset_div2 и slice_tc_offset_div2 могут быть включены в заголовок сегмента среза и имеют следующие определения:

slice_beta_offset_div2 и slice_tc_offset_div2 определяют смещения параметров деблокирования для β и tС (деленные на 2) для текущего среза. Значения как slice_beta_offset_div2, так и slice_tc_offset_div2 должны находиться в диапазоне от -6 до 6 включительно. При их отсутствии предполагаемые значения slice_beta_offset_div2 и slice_tc_offset_div2 равны pps_beta_offset_div2 и pps_tc_offset_div2 соответственно,

причем pps_beta_offset_div2 и pps_tc_offset_div2 присутствуют в PPS, и в ITU-T H.265 предусмотрено следующее определение для pps_beta_offset_div2 и pps_tc_off set_div2:

pps_beta_offset_div2 и pps_tc_offset_div2 определяют смещения параметров деблокирования по умолчанию для β и tС (деленные на 2), которые применяют для срезов, относящихся к PPS, если только смещения параметров деблокирования по умолчанию не переопределены смещениями параметров деблокирования, присутствующими в заголовках срезов, относящихся к PPS. Значения как pps_beta_offset_div2, так и pps_tc_offset_div2 должны находиться в диапазоне от -6 до 6 включительно. При их отсутствии предполагаемые значения pps_beta_offset_div2 и pps_tc_offset_div2 равны 0.

[0043] Как описано выше, ITU-T H.265 обеспечивает гранулярность деблокирования 8 × 8. В JEM деблокирование выполняют в соответствии с сеткой, заданной переменной minCUWidth для горизонтальной границы или переменной minCUHeight для вертикальной границы, причем значения по умолчанию minCUWidth и minCUHeight равны 4. В JEM также определяют значение d, причем вычисление d такое же, как и в ITU-T H.265. На основании значения d, приведенного выше, определяют, выполнять ли деблокирование на границе. Таким образом, если d < β, фильтр деблокирования используют для текущей границы, в противном случае на этой границе деблокирование не выполняют. Кроме того, в JEM определение того, следует ли использовать сильный или слабый фильтр, такое же, как в ITU-T H.265. Наконец, в эталонном программном обеспечении JEM коэффициенты фильтра яркости для сильных фильтров деблокирования идентичны коэффициентам, используемым в ITU-T H.265. Деблокирование, выполняемое в ITU-T H.265 и JEM, может быть неидеальным. В частности, при деблокировании, выполняемом в ITU-T H.265 и JEM, не учитываются различные параметры кодирования и свойства восстановленных видеоданных при выполнении деблокирования.

[0044] На ФИГ. 7 представлена блок-схема, иллюстрирующая пример системы, которая может быть выполнена с возможностью кодирования (т. е. кодирования и/или декодирования) видеоданных в соответствии с одной или более методиками согласно настоящему описанию. Система 100 представляет собой пример системы, которая может инкапсулировать видеоданные в соответствии с одной или более методиками настоящего описания. Как показано на ФИГ. 7, система 100 включает в себя устройство-источник 102, среду 110 связи и устройство 120 назначения. В показанном на ФИГ. 7 примере устройство-источник 102 может включать в себя любое устройство, выполненное с возможностью кодирования видеоданных и передачи закодированных видеоданных в среду 110 связи. Устройство 120 назначения может включать в себя любое устройство, выполненное с возможностью приема кодированных видеоданных через среду 110 связи и декодирования кодированных видеоданных. Устройство-источник 102 и/или устройство 120 назначения могут включать в себя вычислительные устройства, оборудованные для проводной и/или беспроводной связи, и могут включать в себя, например, телевизионные приставки, цифровые видеомагнитофоны, телевизоры, настольные компьютеры, ноутбуки или планшетные компьютеры, игровые консоли, медицинские устройства визуализации и мобильные устройства, включая, например, смартфоны, сотовые телефоны, персональные игровые устройства.

[0045] Среда 110 связи может включать в себя любую комбинацию средств беспроводной и проводной связи и/или запоминающих устройств. Среда 110 связи может включать в себя коаксиальные кабели, оптоволоконные кабели, кабели витой пары, беспроводные передатчики и приемники, маршрутизаторы, коммутаторы, ретрансляторы, базовые станции или любое другое оборудование, которое может обеспечивать связь между различными устройствами и объектами. Среда 110 связи может включать в себя одну или более сетей. Например, среда 110 связи может включать в себя сеть, выполненную с возможностью обеспечения доступа к Всемирной паутине, например Интернету. Сеть может работать в соответствии с комбинацией одного или более телекоммуникационных протоколов. Телекоммуникационные протоколы могут включать в себя служебные аспекты и/или могут включать в себя стандартизированные телекоммуникационные протоколы. Примеры стандартизированных телекоммуникационных протоколов включают в себя стандарты: цифрового видеовещания (DVB), Комитета по усовершенствованным телевизионным системам (ATSC), цифрового вещания с комплексными услугами (ISDB), спецификации интерфейса передачи данных по кабелю (DOCSIS), глобальной системы мобильной связи (GSM), множественного доступа с кодовым разделением (CDMA), партнерского проекта по системам 3-го поколения (3GPP), Европейского института телекоммуникационных стандартов (ETSI), Интернет-протокола (IP), протокола беспроводных приложений (WAP) и Института инженеров по электротехнике и электронике (IEEE).

[0046] Запоминающие устройства могут включать в себя устройства или носители любого типа, выполненные с возможностью хранения данных. Носитель данных может включать в себя материальные или энергонезависимые машиночитаемые носители. Машиночитаемый носитель может представлять собой оптические диски, электрически перепрограммируемое постоянное запоминающее устройство, магнитное запоминающее устройство или любой другой пригодный цифровой носитель данных. В некоторых примерах запоминающее устройство или его части могут быть описаны как энергонезависимое запоминающее устройство, а в других примерах части запоминающих устройств могут быть описаны как энергозависимое запоминающее устройство. Примеры энергозависимых запоминающих устройств могут включать в себя оперативные запоминающие устройства (RAM), динамические оперативные запоминающие устройства (DRAM) и статические оперативные запоминающие устройства (SRAM). Примеры энергонезависимых запоминающих устройств могут включать в себя жесткие магнитные диски, оптические диски, дискеты, флеш-память или виды электрически программируемых запоминающих устройств (EPROM) или электрически стираемых и программируемых (EEPROM) запоминающих устройств. Запоминающее (-ие) устройство (-а) может (могут) включать в себя карты памяти (например, карту памяти Secure Digital (SD)), внутренние/внешние жесткие диски и/или внутренние/внешние твердотельные накопители. Данные могут храниться в запоминающем устройстве в соответствии с определенным форматом файла.

[0047] Как показано на ФИГ. 7, устройство-источник 102 включает в себя источник 104 видео, видеокодер 106, инкапсулятор 107 данных и интерфейс 108. Источник 104 видео может включать в себя любое устройство, выполненное с возможностью захвата и/или хранения видеоданных. Например, источник 104 видео может включать в себя видеокамеру и запоминающее устройство, функционально связанное с ней. Видеокодер 106 может включать в себя любое устройство, выполненное с возможностью приема видеоданных и генерирования совместимого битового потока, представляющего видеоданные. Совместимый битовый поток может относиться к битовому потоку, который видеодекодер может принимать и из которого он может воспроизводить видеоданные. Аспекты совместимого битового потока могут быть определены в соответствии со стандартом кодирования видеосигналов. При формировании совместимого битового потока видеокодер 106 может сжимать видеоданные. Сжатие может происходить с потерями (заметными или незаметными для зрителя) или без потерь.

[0048] На ФИГ. 8 представлена блок-схема, иллюстрирующая пример видеокодера 200, выполненного с возможностью реализации методик кодирования видеоданных, описанных в настоящем документе. Следует отметить, что, хотя приведенный в качестве примера видеокодер 200 показан как имеющий различные функциональные блоки, такая иллюстрация представлена исключительно для описания и не ограничивает видеокодер 200 и/или его подкомпоненты конкретной архитектурой аппаратного или программного обеспечения. Функции видеокодера 200 могут быть реализованы с использованием любой комбинации аппаратных, программно-аппаратных и/или программных вариантов реализации. В одном примере видеокодер 200 может быть выполнен с возможностью кодирования видеоданных в соответствии с описанными в настоящем документе методиками. Видеокодер 200 может выполнять кодирование с внутренним прогнозированием и кодирование с внешним прогнозированием областей изображения и, таким образом, может называться гибридным видеокодером. В примере, показанном на ФИГ. 8, видеокодер 200 принимает исходные видеоблоки. В некоторых примерах исходные видеоблоки могут включать в себя области изображения, разделенные в соответствии со структурой кодирования. Например, исходные видеоданные могут включать в себя макроблоки, CTU, CB, их подразделы и/или другой эквивалентный блок кодирования. В некоторых примерах видеокодер может быть выполнен с возможностью выполнения дополнительных подразделений исходных видеоблоков. Следует отметить, что описанные в настоящем документе методики в целом применимы к кодированию видеосигналов, независимо от методов разделения исходных видеоданных до и/или во время кодирования. В приведенном на ФИГ. 9 примере видеокодер 200 включает в себя сумматор 202, генератор 204 коэффициента преобразования, блок 206 квантования коэффициента, блок 208 обработки обратного квантования/преобразования, сумматор 210, блок 212 обработки внутреннего прогнозирования, блок 214 обработки внешнего прогнозирования, блок 216 фильтрации и блок 218 энтропийного кодирования. Как показано на ФИГ. 8, видеокодер 200 принимает исходные видеоблоки и выводит битовый поток.

[0049] В примере, показанном на ФИГ. 8, видеокодер 200 может генерировать остаточные данные путем вычитания прогнозируемого видеоблока из исходного видеоблока. Сумматор 202 представляет собой компонент, выполненный с возможностью выполнения данной операции вычитания. В одном примере вычитание видеоблоков происходит в пиксельной области. Генератор 204 коэффициента преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT), дискретное синусное преобразование (DST) или концептуально подобное преобразование, к остаточному блоку или его подразделам (например, четыре преобразования 8 × 8 можно применять к массиву остаточных значений 16 × 16) для получения набора остаточных коэффициентов преобразования. Генератор 204 коэффициента преобразования может быть выполнен с возможностью выполнения любых и всех комбинаций преобразований, включенных в семейство дискретных тригонометрических преобразований. Генератор 204 коэффициента преобразования выполнен с возможностью вывода коэффициентов преобразования в блок 206 квантования коэффициента.

[0050] Блок 206 квантования коэффициента может быть выполнен с возможностью осуществления квантования коэффициентов преобразования. Как описано выше, степень квантования может быть изменена путем регулировки коэффициента масштабирования квантования, который может быть определен параметрами квантования. Блок 206 квантования коэффициента может быть дополнительно выполнен с возможностью определения значений квантования и вывода данных QP, которые может использовать видеодекодер для восстановления параметра квантования для выполнения обратного квантования в процессе декодирования видеосигналов. Например, сигнализируемые данные QP могут включать в себя значения дельты QP. В ITU-T H.265 степень квантования, применяемая к набору коэффициентов преобразования, может зависеть от параметров уровня среза, параметров, унаследованных от предыдущего блока кодирования, и/или необязательно сигнализируемых значений дельты уровня CU.

[0051] Как показано на ФИГ. 8, квантованные коэффициенты преобразования выводят в блок 208 обработки обратного квантования/преобразования. Блок 208 обработки обратного квантования/преобразования может быть выполнен с возможностью применения обратного квантования и/или обратного преобразования для генерирования восстановленных остаточных данных. Как показано на ФИГ. 8, в сумматоре 210 восстановленные остаточные данные могут быть добавлены к прогнозируемому видеоблоку. Таким образом, кодированный видеоблок может быть восстановлен, и полученный восстановленный видеоблок может быть использован для оценивания качества кодирования для данного прогнозирования, типа преобразования и/или уровня квантования. Видеокодер 200 может быть выполнен с возможностью осуществления множества проходов кодирования (например, выполнения кодирования с изменением одного или более параметров кодирования). Связанное со скоростью передачи данных искажение битового потока или других системных параметров может быть оптимизировано на основании оценки восстановленных видеоблоков. Восстановленные видеоблоки можно дополнительно сохранять и использовать в качестве опорных для прогнозирования последующих блоков.

[0052] Как описано выше, можно кодировать видеоблок с использованием внутреннего прогнозирования. Блок 212 обработки внутреннего прогнозирования может быть выполнен с возможностью выбора режима внутреннего прогнозирования для кодируемого видеоблока. Блок 212 обработки внутреннего прогнозирования может быть выполнен с возможностью оценивания кадра и/или его области и определения режима внутреннего прогнозирования, используемого при кодировании текущего блока. Как показано на ФИГ. 8, блок 212 обработки внутреннего прогнозирования выводит данные внутреннего прогнозирования (например, элементы синтаксиса) в блок 216 фильтрации и блок 218 энтропийного кодирования.

[0053] Блок 214 обработки внешнего прогнозирования может быть выполнен с возможностью кодирования с внешним прогнозированием для текущего видеоблока. Блок 214 обработки внешнего прогнозирования может быть выполнен с возможностью приема исходных видеоблоков и вычисления вектора движения для PU или т. п. видеоблока. Вектор движения может обозначать смещение в PU или т. п. видеоблока внутри текущего видеокадра относительно прогнозируемого блока в опорном кадре. В кодировании с внешним прогнозированием можно использовать одно или более опорных изображений. Прогнозирование движения может дополнительно быть однонаправленным (с использованием одного вектора движения) или двунаправленным (с использованием двух векторов движения). Блок 214 обработки внешнего прогнозирования может быть выполнен с возможностью выбора прогнозируемого блока путем вычисления разности пикселей, определяемой, например, суммой абсолютной разности (SAD), суммой квадратов разностей (SSD) или другими метрическими показателями разности. Вектор движения и связанные данные могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, точность в одну четверть пикселя), направление прогнозирования и/или значение индекса опорного кадра. Стандарт кодирования, такой как, например, ITU-T H.265, может дополнительно поддерживать прогнозирование вектора движения. Прогнозирование вектора движения позволяет задавать вектор движения с использованием векторов движения соседних блоков. Примеры прогнозирования вектора движения включают в себя расширенное прогнозирование вектора движения (AMVP), временное прогнозирование вектора движения (TMVP), так называемый режим «слияния», а также «пропуск» и «прямое» логическое определение движения. Блок 214 обработки внешнего прогнозирования может быть выполнен с возможностью прогнозирования вектора движения в соответствии с одной или более описанными выше методиками. Блок 214 обработки внешнего прогнозирования может быть выполнен с возможностью генерирования прогнозируемого блока с использованием данных прогнозирования движения. Например, блок 214 обработки внешнего прогнозирования может размещать прогнозируемый видеоблок в буфере кадра (не показан на ФИГ. 8). Следует отметить, что блок 214 обработки внешнего прогнозирования может быть дополнительно выполнен с возможностью применения одного или более интерполяционных фильтров к восстановленному остаточному блоку для вычисления субцелочисленных значений пикселей для использования при оценивании движения. Блок 214 обработки внешнего прогнозирования может выводить данные прогнозирования движения для вычисленного вектора движения в блок 216 фильтрации и блок 218 энтропийного кодирования.

[0054] Как описано выше, деблокирование относится к процессу сглаживания границ восстановленных видеоблоков. Как показано на ФИГ. 8, блок 216 фильтрации принимает восстановленные видеоблоки и параметры кодирования (например, данные внутреннего прогнозирования, данные внешнего прогнозирования и данные QP) и выводит модифицированные восстановленные видеоданные. Блок 216 фильтрации может быть выполнен с возможностью выполнения деблокирования и/или фильтрации с адаптивным смещением отсчетов (SAO). SAO-фильтрация представляет собой нелинейное сопоставление амплитуды, которое можно использовать для улучшения восстановления путем добавления смещения к восстановленным видеоданным. Следует отметить, что, как показано на ФИГ. 8, блок 212 обработки внутреннего прогнозирования и блок 214 обработки внешнего прогнозирования могут принимать измененный восстановленный видеоблок посредством блока 216 фильтрации. Таким образом, в некоторых случаях деблокирование может происходить в цикле, т. е. прогнозируемые видеоблоки, сохраненные в опорном буфере, могут быть отфильтрованы. В некоторых случаях деблокирование может происходить после цикла, т. е. после восстановления видеоданных и, например, до их вывода на дисплей. Описанные в настоящем документе методики могут быть применимыми в деблокировании в цикле, деблокировании после цикла и/или их комбинации.

[0055] Как описано выше, деблокирование, выполняемое в ITU-T H.265 и JEM, может быть неидеальным. В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выбора разных линий фильтрации (в некоторых случаях количество выборок, деблокируемых на каждой стороне границы, может быть различным) на основании одного или более из: размера блока на каждой стороне границы (одной или обеих), интенсивности границы, режима прогнозирования, используемого блоками на каждой стороне границы, режима прогнозирования (например, внутренний, внешний, пропуск) деблокируемой выборки (например, использование более слабого фильтра для границы, близкой к опорным выборкам), значения QP деблокируемой выборки, размера блока, соответствующего деблокируемой выборке, размера блока, соответствующего выборкам, используемым для деблокирования, векторов движения для блоков на каждой стороне деблокируемой границы, векторов движения для деблокируемой выборки и/или векторов движения для выборки, используемой для деблокирования.

[0056] Выборки на каждой стороне границы блока (перпендикулярно краю границы) могут быть представлены следующим образом:

… p8 p7 p6 p5 p4 p3 p2 p1 p0 | q0 q1 q2 q3 q4 q5 q6 q7 q8 …,

где

| отображает край границы блока.

Выборки px, где x представляет собой положительное целое число, начиная с 0, обозначает сторону P границы.

Выборки qy, где y представляет собой положительное целое число, начиная с 0, обозначает сторону Q границы.

[0057] В примере сторона P представляет выборки вне текущего CU, сторона Q обозначает выборки внутри текущего CU.

[0058] В примере сторона P представляет выборки внутри текущего CU, сторона Q обозначает выборки вне текущего CU.

[0059] В примере сторона P представляет выборки вне текущего блока, сторона Q обозначает выборки внутри текущего блока.

[0060] В примере сторона P представляет выборки внутри текущего блока, сторона Q обозначает выборки вне текущего блока.

[0061] Касательно ФИГ. 5А выборки Py, x и qy, x соответствуют линии R[x] при деблокировании вертикального края.

[0062] Касательно ФИГ. 5B выборки Py, x и qy, x соответствуют линии R[y] при деблокировании горизонтального края.

[0063] Один пример более широкого (т. е. с большим количеством деблокированных выборок) более сильного фильтра для стороны P границы, называемого фильтром WS00P стороны P, представляет собой:

p6’ = (7 * p7+2 * p6+p5+p4+p3+p2+p1+p0+q0+8) >> 4;

p5’ = (6 * p7+p6+2 * p5+p4+p3+p2+p1+p0+q0+q1+8) >> 4;

p4’ = (5 * p7+p6+p5+2 * p4+p3+p2+p1+p0+q0+q1+q2+8) >> 4;

p3’ = (4 * p7+p6+p5+p4+2 * p3+p2+p1+p0+q0+q1+q2+q3+8) >> 4;

p2’ = (3 * p7+p6+p5+p4+p3+2 * p2+p1+p0+q0+q1+q2+q3+q4+8) >> 4;

p1’ = (2 * p7+p6+p5+p4+p3+p2+2 * p1+p0+q0+q1+q2+q3+q4+q5+8) >> 4;

p0’ = (p7+p6+p5+p4+p3+p2+p1+2 * p0+q0+q1+q2+q3+q4+q5+q6+8)>> 4,

где px’ представляет значение выборки после деблокирования в положении, соответствующем px.

[0064] Один пример более широкого (т. е. с большим количеством деблокированных выборок), более сильного фильтра для стороны Q границы, называемого фильтром WS00Q стороны Q, представляет собой:

p6’ = (7 * q7+2 * q6+q5+q4+q3+q2+q1+q0+p0+8) >> 4;

p5’ = (6 * q7+q6+2 * q5+q4+q3+q2+q1+q0+p0+p1+8) >> 4;

p4’ = (5 * q7+q6+q5+2 * q4+q3+q2+q1+q0+p0+p1+p2+8) >> 4;

p3’ = (4 * q7+q6+q5+q4+2 * q3+q2+q1+q0+p0+p1+p2+p3+8) >> 4;

p2’ = (3 * q7+q6+q5+q4+q3+2 * q2+q1+q0+p0+p1+p2+p3+p4+8) >> 4;

p1’ = (2 * q7+q6+q5+q4+q3+q2+2 * q1+q0+p0+p1+p2+p3+p4+p5+8) >> 4;

p0’ = (q7+q6+q5+q4+q3+q2+q1+2 * q0+p0+p1+p2+p3+p4+p5+p6+8)>> 4,

где qх’ представляет значение выборки после деблокирования в позиции, соответствующей qх.

[0065] Один из примеров узкого (т. е. с меньшим количеством деблокированных выборок) сильного фильтра для стороны P границы, называемого фильтром HEVC_P стороны Р, представляет собой:

p0' = ( p2+2 * p1+2 * p0+2 * q0+q1+4) >> 3;

P1' = (p2+p1+p0+q0+2) >> 2;

p2' = (2 * p3+3 * p2+p1+p0+q0+4) >> 3,

где px' представляет значение выборки после деблокирования в положении, соответствующем px.

[0066] Один из примеров узкого (т. е. с меньшим количеством деблокированных выборок) сильного фильтра для стороны Q границы, называемого фильтром HEVC_Q стороны Q, представляет собой:

q0' = (p1+2 * p0+2 * q0+2 * q1+q2+4) >> 3;

q1' = (p0+q0+2 * q1+q2+2) >> 2;

q1' = (p0+q0+q1+3 * q2+2 * q3+4) >> 3,

где qх’ представляет значение выборки после деблокирования в позиции, соответствующей qх.

[0067] Один из примеров узкого (с меньшим количеством деблокированных выборок) сильного фильтра для стороны P границы, называемого фильтром NS00P стороны Р, представляет собой:

p0' = ( p2+2 * p1+2 * p0+2 * q0+q1+4) >> 3;

p1' = (p2+p1+p0+q0+4) >> 2;

p2' = (p4+2 * p3+3 * p2+p1+p0+4) >> 3,

где px' представляет значение выборки после деблокирования в положении, соответствующем px.

[0068] Один из примеров узкого (с меньшим количеством деблокированных выборок) сильного фильтра для стороны Q границы, называемого фильтром NS00Q стороны Q, представляет собой:

q0’ = (q2+2 * q1+2 * q0+2 * p0+p1+4) >> 3;

q1 = (q2+q1+q0+p0+4) >> 3;

q2' = (q4+2 * q3+3 * q2+q1+q0+4) >> 3,

где qх’ представляет значение выборки после деблокирования в позиции, соответствующей qх.

[0069] Один из примеров узкого (с меньшим количеством деблокированных выборок) сильного фильтра для стороны P границы, называемого фильтром NS00P стороны Р, представляет собой:

p0' = (p2+2 * p1+2 * p0+2 * q0+q1+4) >> 3;

p1' = (p2+p1+p0+q0+2) >> 2;

p2' = (p4+2 * p3+3 * p2+p1+p0+4) >> 3,

[0070] Один из примеров узкого (с меньшим количеством деблокированных выборок) сильного фильтра для стороны Q границы, называемого фильтром NS00Q стороны Q, представляет собой:

q0’ = (q2+2 * q1+2 * q0+2 * p0+p1+4) >> 3;

q1 = (q2+q1+q0+p0+4) >> 3;

q2' = (q4+2 * q3+3 * q2+q1+q0+4) >> 3,

[0071] Один из примеров узкого (с меньшим количеством деблокированных выборок) сильного фильтра для стороны P границы, называемого фильтром NS00P стороны Р, представляет собой:

p0' = (p2+2 * p1+2 * p0+2 * q0+q1+4) >> 3;

p1' = (p2+p1+p0+q0+2) >> 2;

p2' = (p4+2 * p3+3 * p2+p1+p0+4) >> 3,

[0072] Один из примеров узкого (с меньшим количеством деблокированных выборок) сильного фильтра для стороны Q границы, называемого фильтром NS00Q стороны Q, представляет собой:

q0’ = (q2+2 * q1+2 * q0+2 * p0+p1+4) >> 3;

q1 = (q2+q1+q0+p0+4) >> 2;

q2' = (2 * q3+3 * q2+q1+q0+4) >> 3.

[0073] Один из примеров узкого (с меньшим количеством деблокированных выборок) слабого фильтра для стороны P границы, называемого фильтром стороны Р NW00P, представляет собой:

Δ=Clip3(-tC, tC,((((q0 - p0) << 2) + p1 - q1+4) >> 3));

p0' = Clip1c(p0+Δ),

где px' представляет значение выборки после деблокирования в положении, соответствующем px.

[0074] Один из примеров узкого (с меньшим количеством деблокированных выборок) слабого фильтра для стороны Q границы, называемого фильтром NW00Q стороны Q, представляет собой:

Δ-Clip3(-tC, tC,((((q0 - p0) << 2) + p1 - q1+4) >> 3));

q0' = Clip1c(q0+Δ),

где qх’ представляет значение выборки после деблокирования в позиции, соответствующей qх.

[0075] Один пример фильтра для стороны P границы, называемого фильтром F0P стороны P, представляет собой:

p0’ = (136 * p8+120 * q8+128) >> 8;

p1’ = (151 * p7+105 * q9+128) >> 8;

p2’ = (166 * p6+90 * q10+128) >> 8;

p3’ = (181 * p5+75 * q11+128) >> 8;

p4’ = (196 * p4+60 * q12+128) >> 8;

p5’ = (211 * p3+45 * q13+128) >> 8;

p6’ = (226 * p2+30 * q14+128) >> 8;

p7’ = (241 * p1+15 * q15+128) >> 8.

[0076] Один пример фильтра для стороны Q границы, называемого фильтром F0Q стороны Q, представляет собой:

q0’ = (120 * p8+136 * q8+128) >> 8;

q1’ = (105 * p7+151 * q9+128) >> 8;

q2’ = (90 * p6+166 * q10+128) >> 8;

q3’ = (75 * p5+181 * q11+128) >> 8;

q4’ = (60 * p4+196 * q12+128) >> 8;

q5’ = (45 * p3+211 * q13+128) >> 8;

q6’ = (30 * p2+226 * q14+128) >> 8;

q7’ = (15 * p1+241 * q15+128) >> 8;

[0077] Один пример фильтра для стороны P границы, называемого фильтром F1P стороны P, представляет собой:

p0' = (2 * p1+4 * p0+q0+q1+4) >> 3;

p1' = (2 * p2+4 * p1+p0+q0+4) >> 3;

p2' = (p3+p2+p1+p0+2) >> 3;

p3' = (p4+p3+p2+p1+2) >> 2;

[0078] Один пример фильтра для стороны Q границы, называемого фильтром F1Q стороны Q, представляет собой:

q0’ = (2 * q1+4 * q0+p0+p1+4) >> 3;

q1’ = (2 * q2+4 * q1+q0+p0+4) >> 3;

q2'= (q3+q2+q1+q0+2) >> 2;

q2'= (q4+q3+q2+q1+2) >> 2.

[0079] В одном примере расстояние деблокируемой выборки от границы может быть обратно пропорционально расстоянию между опорной выборкой, которой назначено наибольшее значение отвода, и деблокируемой выборкой. Расстояние второго наибольшего значения отвода от деблокируемой выборки может дополнительно быть пропорционально расстоянию между выборкой и границей. Фильтры F2P и F2Q, описанные ниже, обеспечивают примеры реализации такой фильтрации. Один пример фильтра для стороны P границы, называемого фильтром F2P стороны P, представляет собой:

p0’ = (136 * p8+2 * p0+120 * q8+256) >> 9;

p1’ = (151 * p7+4 * p1+105 * q9+256) >> 9;

p2’ = (166 * p6+8 * p2+90 * q10+256) >> 9;

p3’ = (181 * p5+16 * p3+75 * q11+256) >> 9;

p4’ = (196 * p4+32 * p4+60 * q12+256) >> 9;

p5’ = (211 * p3+64 * p5+45 * q13+256) >> 9;

p6’ = (226 * p2+128 * p6+30 * q14+256) >> 9;

p7’ = (241 * p1+256 * p7+15 * q15+256) >> 9.

[0080] Один пример фильтра для стороны Q границы, называемого фильтром F2Q стороны Q, представляет собой:

q0’ = (120 * q9+2 * q0+136 * q7+256) >> 9;

q1’ = (151 * q10+4 * q1+151 * q6+256) >> 9;

q2’ = (166 * q11+8 * q2+166 * q5+256) >> 9;

q3’ = (181 * q12+16 * q3+181 * q4+256) >> 9;

q4’ = (196 * q13+32 * q4+196 * q3+256) >> 9;

q5’ = (211 * q14+64 * q5+211 * q2+256) >> 9;

q6’ = (226 * q15+128 * q6+226 * q1+256) >> 9;

q7’ = (241 * q16+1256 * q7+241 * q0+256) >> 9.

[0081] Один пример фильтра для стороны P границы, называемого фильтром F4P стороны P, представляет собой:

p6’ = (7 * p7+2 * p6+p5+p4+p3+p2+p1+p0+q0+8) >> 4;

p5’ = (6 * p7+p6+2 * p5+p4+p3+p2+p1+p0+q0+q1+8) >> 4;

p4’ = (5 * p7+p6+p5+2 * p4+p3+p2+p1+p0+q0+q1+q2+8) >> 4;

p3’ = (4 * p7+p6+p5+p4+2 * p3+p2+p1+p0+q0+q1+q2+q3+8) >> 4;

p2’ = (3 * p7+p6+p5+p4+p3+2 * p2+p1+p0+q0+q1+q2+q3+q4+8) >> 4;

p1’ = (2 * p7+p6+p5+p4+p3+p2+2 * p1+p0+q0+q1+q2+q3+q4+q5+8) >> 4;

p0’ = (p7+p6+p5+p4+p3+p2+p1+2 * p0+q0+q1+q2+q3+q4+q5+q6+8) >> 4.

[0082] Один пример фильтра для стороны Q границы, называемого фильтром F4Q стороны Q, представляет собой:

q6’ = (7 * q7+2 * q6+q5+q4+q3+q2+q1+q0+p0+8) >> 4;

q5’ = (6 * q7+q6+2 * q5+q4+q3+q2+q1+q0+p0+p1+8) >> 4;

q4’ = (5 * q7+q6+q5+2 * q4+q3+q2+q1+q0+p0+p1+p2+8) >> 4;

q3’ = (4 * q7+q6+q5+q4+2 * q3+q2+q1+q0+p0+p1+p2+p3+8) >> 4;

q2’ = (3 * q7+q6+q5+q4+q3+2 * q2+q1+q0+p0+p1+p2+p3+p4+8) >> 4;

q1’ = (2 * q7+q6+q5+q4+q3+q2+2 * q1+q0+p0+p1+p2+p3+p4+p5+8) >> 4;

q0’ = (q7+q6+q5+q4+q3+q2+q1+2 * q0+p0+p1+p2+p3+p4+p5+p6+8) >> 4.

[0083] Один пример фильтра для стороны P границы, называемого фильтром CL_ стороны P, представляет собой:

p2’ = (3 * p3+2 * p2+p1+p0+q0+4) >> 3;

p1’ = (2 * p3+p2+2 * p1+p0+q0+q1+4) >> 3;

p0’ = (p3+p2+p1+2 * p0+q0+q1+q2+4) >> 3.

[0084] Один пример фильтра для стороны Q границы, называемого фильтром Cl_q стороны Q, представляет собой:

q2’ = (3 * q3+2 * q2+q1+q0+p0+4) >> 3;

q1’ = (2 * q3+q2+2 * q1+q0+p0+p1+4) >> 3;

q0’ = (q3+q2+q1+2 * q0+p0+p1+p2+4) >> 3.

[0085] В одном примере в соответствии с методиками, описанными в настоящем документе, вычисление градиента можно использовать при выборе параметров фильтра, количества деблокируемых выборок на одной (или обеих) стороне (-ах) границы блока. Градиент может быть вычислен с использованием выборок в линии R[x].

[0086] В примере множество градиентов могут быть вычислены с использованием выборок в линии R[x] и использованы при выборе параметров фильтра, количества деблокируемых выборок на одной (или обеих) стороне (-ах) границы блока. В другом примере множество градиентов могут быть вычислены с использованием выборок в линии R[x], и такие операции, как усреднение градиентов, максимальный градиент, минимальный градиент, можно использовать при выборе параметров фильтра, количества деблокируемых выборок на одной (или обеих) стороне (-ах) границы блока.

[0087] В одном примере вызов функции xCalDQp(R[x]) вычисляет градиент следующим образом:

abs(p2-2 * p1+p0)

[0088] В одном примере вызов функции xCalDQq(R[x]) вычисляет градиент следующим образом:

abs(q2-2 * q1+q0)

[0089] В одном примере вызов функции xCalDQpLargeBlock(R[x]) вычисляет градиент следующим образом:

Max(Max(Max(Max(Max( abs(p2-2*p1+p0),

abs(p3-2 * p2+p1)),

abs(p4-2 * p3+p2)),

abs(p5-2 * p4+p3)),

abs(p6-2 * p5+p4)),

abs(p7-2 * p6+p5)).

[0090] В одном примере вызов функции xCalDQqLargeBlock(R[x]) вычисляет градиент следующим образом:

Max(Max(Max(Max(Max( abs(q2-2 * q1+q0),

abs(q3-2 * q2+q1)),

abs(q4-2 * q3+q2)),

abs(q5-2 * q4+q3)),

abs(q6-2 * q5+q4)),

abs(q7-2 * q6+q5)).

[0091] В одном примере вызов функции xCalDQpLargeBlock(R[x]) вычисляет градиент следующим образом:

(abs(p2-2 * p1+p0) + abs(p3-2 * p2+p1) + abs(p5-2 * p4+p3) + abs(p7-2 * p6+p5) + 4) >> 2

[0092] В одном примере вызов функции xCalDQqLargeBlock(R[x]) вычисляет градиент следующим образом:

(abs(q2-2 * q1+q0) + abs(q3-2 * q2+q1) + abs(q5-2 * q4+q3) + abs(q7-2 * q6+q5) + 4) >> 2

[0093] В одном примере вызов функции xCalDQpLargeBlock(R[x]) вычисляет градиент следующим образом:

(abs(p2-2 * p1+p0) + abs(p3-2 * p2+p1) + abs(p5-2 * p4+p3) + abs(p7-2 * p6+p5) + 2) >> 2

[0094] В одном примере вызов функции xCalDQqLargeBlock(R[x]) вычисляет градиент следующим образом:

(abs(p2-2 * p1+p0) + abs(p3-2 * p2+p1) + abs(p5-2 * p4+p3) + abs(p7-2 * p6+p5) + 4) >> 2

[0095] В одном примере вызов функции xCalDQpLargeBlock(R[x]) вычисляет градиент следующим образом:

(abs(p2-2 * p1+p0) + abs(p3-2 * p2+p1) + abs(p4-2 * p3+p2) + abs(p5-2 * p4+p3) + 4) >> 2

[0096] В одном примере вызов функции xCalDQqLargeBlock(R[x]) вычисляет градиент следующим образом:

(abs(q2-2 * q1+q0) + abs(q3-2 * q2+q1) + abs(q4-2 * q3+q2) + abs(q5-2 * q4+q3) + 4) >> 2

[0097] В одном примере вызов функции xCalDQpLargeBlock(R[x]) вычисляет градиент следующим образом:

(abs(p2-2 * p1+p0) + abs(p3-2 * p2+p1) + abs(p4-2 * p3+p2) + abs(p5-2 * p4+p3) + 2) >> 2

[0098] В одном примере вызов функции xCalDQqLargeBlock(R[x]) вычисляет градиент следующим образом:

(abs(q2-2 * q1+q0) + abs(q3-2 * q2+q1) + abs(q4-2 * q3+q2) + abs(q5-2 * q4+q3) + 2) >> 2

[0099] В одном примере вызов функции xCalDQpLargeBlock(R[x]) вычисляет градиент следующим образом:

(abs(p2-2 * p1+p0) + abs(p5-2 * p4+p3) + 1) >> 1

[0100] В одном примере вызов функции xCalDQqLargeBlock(R[x]) вычисляет градиент следующим образом:

(abs(q2-2 * q1+q0) + abs(q5-2 * q4+q3) + 1) >> 1

[0101] В одном примере подмножество разностей второго порядка, вычисленное при p1, p2,...,p6, может быть использовано для вычисления xCalDQpLargeBlock(R[x]), причем разность второго порядка при pn представляет собой abs(pn-1-2 * pn+pn+1). Аналогично подмножество разностей второго порядка, вычисленное при q1, q2,…,q6, можно использовать для вычисления xCalDQqLargeBlock(R[x]). В одном примере смещение округления в вызове функций xCalDQpLargeBlock(R[x]) и xCalDQqLargeBlock(R[x]) может быть опущено.

[0102] В одном примере вызов функции xUseStrongFilteringLargeBlock (R[x], d, bSidePisLargeBlk, bSideQisLargeBlk) вычисляет булеву переменную следующим образом, причем ниже приведены примеры для определенных bSidePisLargeBlk, bSideQisLargeBlk:

((abs((bSidePisLargeBlk? p7: p4) · p0) + abs((bSideQisLargeBlk? q7: q4) · q0) < (β >> 3)) && (d < (β >> 2)) && (abs(q0- p0) < ((tC * 5+1)>> 1)))? ИСТИНА : ЛОЖЬ, где β и tС являются пороговыми значениями.

[0103] В одном примере вызов функции xUseStrongFilteringLargeBlock (R[x], d, bSidePisLargeBlk, bSideQisLargeBlk) вычисляет булеву переменную следующим образом:

sp3=Abs(p3 - p0),

если (bSidePisLargeblk)

{

sp3= max( sp3, max(Abs( p7 - p3), Abs( p7 - p0))

}

sq3=Abs(q0 - q3)

если (bSideQisLargeblk)

{

sq3=max(sq3, max(Abs(q7 - q3), Abs(q7 - q0)))

}

xUseStrongFilteringLargeBlock: sp3+sq3 < (β >> 3) && (d < (β >> 2)) && (abs(q0 - p0) < ((tC * 5+1) >> 1)))? ИСТИНА : ЛОЖЬ.

[0104] В одном примере вызов функции xUseStrongFilteringLargeBlock (R[x], d, bSidePisLargeBlk, bSideQisLargeBlk) вычисляет булеву переменную следующим образом:

sp3=Abs(p3 - p0),

если (bSidePisLargeblk)

{

sp3 = (sp3 + (Abs(p7 - p3) + 1 >>1

}

sq3=Abs(q0 - q3)

если (bSideQisLargeblk)

{

sq3 = (sq3 + (Abs(q7 - q3)) + 1) >>1

}

xUseStrongFilteringLargeBlock: sp3+sq3 < (β >> 3) && (d < (β >> 2)) && (abs(q0 - p0) < ((tC * 5+1) >> 1)))? ИСТИНА : ЛОЖЬ.

[0105] В одном примере вызов функции xUseStrongFilteringLargeBlock (R[x], d, bSidePisLargeBlk, bSideQisLargeBlk) вычисляет булеву переменную следующим образом:

sp3=Abs(p3 - p0),

если (bSidePisLargeblk)

{

sp3 = (sp3 + (Abs(p7 - p3) + 1 >>1

}

sq3=Abs(q0 - q3)

если (bSideQisLargeblk)

{

sq3 = (sq3 + (Abs(q7 - q3)) + 1) >>1

}

xUseStrongFilteringLargeBlock: sp3+sq3 < (β >> 3) && (d < (β >> 2)) && (abs(q0 - p0) < ((tC * 5+1) >> 1)))? ИСТИНА : ЛОЖЬ.

[0106] В одном примере смещение округления в вызове функции xUseStrongFilteringLargeBlock может быть опущено.

[0107] В одном примере условие, используемое при выборе количества деблокируемых выборок на одной (или обеих) стороне (-ах) границы, соответствует размеру (текущего и/или соседнего блока), перпендикулярному границе блока, превышающей пороговое значение. В некоторых случаях, когда подмножество коэффициентов преобразования устанавливают равным нулю для блока на основании размера блока, пороговое значение, используемое при сравнении, может быть основано на свойствах подмножества нулевых коэффициентов. Например, когда коэффициенты преобразования установлены равными нулю для коэффициентов в позиции столбца, равной 32 или более, и позиции строки, равной 32 или более (при индексации строк и столбцов, начинающейся с 0), размер, перпендикулярный границе блока, сравнивают с пороговым значением 32.

[0108] В примере в битовом потоке может быть принят сигнал, сообщающий, равны ли все коэффициенты преобразования нулю для блока выборок. Такой сигнал может быть принят, например, для каждого цветового компонента, группы цветовых компонентов, для некоторого пространственного разделения выборок, для некоторого пространственно- Временного разделения выборок. В HEVC для каждого цветового компонента был сигнализирован флаг кодированного блока (CBF) (явно или неявно с помощью правила вывода в случае отсутствия явного сигнала) - cbf_luma, cbf_cb, cbf_cr; кроме того, также был сигнализирован флаг (явно и неявно), сообщающий, содержал ли какой-либо из цветовых компонентов в дереве преобразования ненулевые коэффициенты преобразования, и он назывался корнем остаточного квадродерева CBF - rqt_root_cbf.

[0109] В одном примере количество деблокируемых выборок на одной (или обеих) стороне (-ах) границы может быть основано на типе деблокируемого края (например, вертикальный край блока, горизонтальный край блока), типе канала (например, яркость, цветность), в отношение того, равны ли все коэффициенты преобразования нулю для блока выборок на одной (или обеих) стороне (-ах) границы, использует ли блок выборок на одной (или обеих) стороне (-ах) границы режимы кодирования, такие как локальная компенсация освещения (LIC), которые могут быть основаны на линейной модели изменения освещения, использует ли блок выборок на одной (или обеих) стороне (-ах) границы межкомпонентное прогнозирование (которое может быть основано на линейной модели), использует ли блок выборок на одной (или обеих) стороне (-ах) границы прогнозирование, которое определено для блоков, меньших, чем преобразование, использует ли блок выборок на одной (или обеих) стороне (-ах) границы методики, в которых большой блок (например, CU) разделен на подблоки (например, суб-CU) и для этих подблоков получают информацию о движении.

[0110] В одном примере в соответствии с методиками, описанными в настоящем документе, большее количество выборок (например, 7) деблокируют на каждой стороне границы блока, когда размер текущего блока, перпендикулярный границе блока, больше порогового значения или равен ему (например, 32), и меньшее количество выборок (например, 3) деблокируют на каждой стороне границы блока, когда размер текущего блока, перпендикулярный границе блока, меньше порогового значения (например, 32). Например, если ((ширина текущего блока >= 32 и тип края вертикальный) или (высота текущего блока >= 32 и тип края горизонтальный)), деблокируют большее количество выборок на каждой стороне границы блока.

[0111] В одном примере в соответствии с методиками, описанными в настоящем документе, большее количество выборок (например, 7) деблокируют на стороне границы блока, если размер блока, перпендикулярный границе блока, больше порогового значения или равен ему (например, 32), и меньшее количество выборок (например, 3) деблокируют на стороне границы блока, если размер блока, перпендикулярный границе блока, меньше порогового значения (например, 32). Например: если ((ширина одного блока >= 32 и тип края вертикальный) или (высота одного блока >= 32 и тип края горизонтальный)), выполняют деблокирование большего количество выборок для этого блока на границе блока. В этом случае, если левая сторона вертикального края границы имеет размер блока 4 (строки) × 64 (столбца), а правая сторона имеет размер блока 4 (строки) × 16 (столбцов), можно выполнять деблокирование большего количества выборок на левой стороне по сравнению с правой стороной.

[0112] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выбора параметров фильтра (включая, например, количество коэффициентов), используемых для деблокирования, на основании одного или более из: расстояния деблокируемой выборки (в количестве выборок) от границы, размера (-ов) блока (-ов) на каждой стороне границы, интенсивности границы, режима прогнозирования, используемого блоками на каждой стороне границы, режима прогнозирования деблокируемой выборки (например, использование более слабого фильтра для границы, близкой к опорным выборкам), QP деблокируемой выборки (например, использование более сильных фильтров для больших QP), размера блока, соответствующего деблокируемой выборке (например, использование более сильных фильтров для большего размера блока), размера блока, соответствующего выборкам, используемым для деблокирования, векторов движения для блоков на каждой стороне деблокируемой границы (например, если разность MV больше порогового значения, деблокирование не выполняют, поскольку выборки на разных сторонах границы могут принадлежать разным объектам) и/или векторов движения для деблокируемой выборки; векторов движения для выборки, используемой для деблокирования. Следует отметить, что размер блока, соответствующий выборке, может включать в себя размер блока CU, к которому принадлежит выборка, размер блока TU, к которому принадлежит выборка, или размер блока PU, к которому принадлежит выборка.

[0113] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выбора параметров фильтра (включая, например, количество коэффициентов), используемых для деблокирования, на основании типа деблокируемого края (например, вертикальный край блока, горизонтальный край блока), типа канала (например, яркость, цветность), того, равны ли все коэффициенты преобразования нулю для блока выборок на одной (или обеих) стороне (-ах) границы, использует ли блок выборок на одной (или обеих) стороне (-ах) границы режимы кодирования, такие как локальная компенсация освещения (LIC), которые могут быть основаны на линейной модели изменения освещения, использует ли блок выборок на одной (или обеих) стороне (-ах) границы межкомпонентное прогнозирование (которое может быть основано на линейной модели), использует ли блок выборок на одной (или обеих) стороне (-ах) границы прогнозирование, которое определено для блоков, меньших, чем преобразование, использует ли блок выборок на одной (или обеих) стороне (-ах) границы методики, в которых большой блок (например, CU) разделен на подблоки (например, суб-CU) и для этих подблоков получают информацию о движении.

[0114] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выбора параметров фильтра (включая, например, количество коэффициентов), используемых для деблокирования, на основании типа деблокируемого края (например, вертикальный край блока, горизонтальный край блока), типа канала (например, яркость, цветность), того, равны ли все коэффициенты преобразования нулю для блока выборок на одной (или обеих) стороне (-ах) границы, использует ли блок выборок на одной (или обеих) стороне (-ах) границы режимы кодирования, такие как локальная компенсация освещения (LIC), которые могут быть основаны на линейной модели изменения освещения, использует ли блок выборок на одной (или обеих) стороне (-ах) границы межкомпонентное прогнозирование (которое может быть основано на линейной модели), использует ли блок выборок на одной (или обеих) стороне (-ах) границы прогнозирование, которое определено для блоков, меньших, чем преобразование, использует ли блок выборок на одной (или обеих) стороне (-ах) границы методики, в которых большой блок (например, CU) разделен на подблоки (например, суб-CU) и для этих подблоков получают информацию о движении.

[0115] В одном примере выбор параметров фильтра может включать в себя выбор более широкой более сильной фильтрации.

[0116] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выбора набора параметров фильтра деблокирования (например, более широкой более сильной фильтрации) для обеих сторон, когда размер текущего блока, перпендикулярный границе блока, больше порогового значения или равен ему (например, 32). Например, если ((ширина текущего блока >= 32 и тип края вертикальный) или (высота текущего блока >= 32 и тип края горизонтальный)), выбирают более широкую более сильную фильтрацию для каждой стороны границы блока.

[0117] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью независимого выбора параметров фильтра для каждой стороны границы блока на основании размера блока, перпендикулярного границе блока, для соответствующей стороны. Например, когда размер блока, перпендикулярный границе блока на одной стороне, больше порогового значения или равен ему (например, 32), для этой стороны может быть выбран набор параметров фильтра деблокирования (например, более широкая более сильная фильтрация). Например, если ((ширина одного блока >= 32 и тип края вертикальный) или (высота одного блока >= 32 и тип края горизонтальный)), выбирают более широкую более сильную фильтрацию для стороны границы блока, соответствующей блоку.

[0118] В одном примере в соответствии с методиками, описанными в настоящем документе, граница суб-CU может быть деблокирована в зависимости от того, все ли коэффициенты преобразования равны нулю для блоков (например, CU) на одной (или обеих) стороне (-ах) границы. Например, выполняют деблокирование границы суб-CU, когда все коэффициенты преобразования для CU равны нулю.

[0119] В одном примере в соответствии с методиками, описанными в настоящем документе, граница подблока может быть деблокирована в зависимости от того, все ли коэффициенты преобразования равны нулю для блока на одной (или обеих) стороне (-ах) границы. Например, выполняют деблокирование границы подблока, когда все коэффициенты преобразования для блока равны нулю.

[0120] В одном примере в соответствии с методиками, описанными в настоящем документе, граница суб-CU может быть деблокирована в зависимости от того, все ли коэффициенты преобразования равны нулю для блоков (например, CU) на одной (или обеих) стороне (-ах) границы, и при большом размере шага квантования (например, QP больше порогового значения или равен ему). Например, выполняют деблокирование границы суб-CU, когда все коэффициенты преобразования для CU равны нулю, а QP превышает пороговое значение.

[0121] В одном примере в соответствии с методиками, описанными в настоящем документе, граница подблока может быть деблокирована в зависимости от того, все ли коэффициенты преобразования равны нулю для блока на одной (или обеих) стороне (-ах) границы, и при большом размере шага квантования (например, QP больше порогового значения или равен ему). Например, выполняют деблокирование границы подблока, когда все коэффициенты преобразования для блока равны нулю, а QP превышает пороговое значение.

[0122] В одном примере в соответствии с методиками, описанными в настоящем документе, граница блока может быть деблокирована, когда для блоков на одной (или обеих) стороне (-ах) границы используют локальную компенсацию освещения (LIC) и все коэффициенты преобразования для этого блока равны нулю.

[0123] В одном примере в соответствии с методиками, описанными в настоящем документе, все четыре границы блока (т. е. левая, правая, верхняя, нижняя), граница блока могут быть деблокированы, когда для блока используют локальную компенсацию освещения (LIC) и все коэффициенты преобразования для этого блока равны нулю.

[0124] В одном примере в соответствии с методиками, описанными в настоящем документе, граница блока может быть деблокирована, когда для блоков на одной (или обеих) стороне (-ах) границы используют локальную компенсацию освещения (LIC) и все коэффициенты преобразования для этого блока равны нулю, а размер шага квантования большой (например, QP больше порогового значения или равен ему).

[0125] В одном примере в соответствии с методиками, описанными в настоящем документе, все четыре границы блока (т. е. левая, правая, верхняя, нижняя), граница блока могут быть деблокированы, когда для блока используют локальную компенсацию освещения (LIC) и все коэффициенты преобразования для этого блока равны нулю, а размер шага квантования большой (например, QP равно пороговому значению или больше него).

[0126] В одном примере в соответствии с методиками, описанными в настоящем документе, граница блока может быть деблокирована, когда для блоков на одной (или обеих) стороне (-ах) границы используют межкомпонентное прогнозирование и все коэффициенты преобразования для этого блока равны нулю.

[0127] В одном примере в соответствии с методиками, описанными в настоящем документе, граница блока может быть деблокирована, когда для блоков на одной (или обеих) стороне (-ах) границы используют межкомпонентное прогнозирование и все коэффициенты преобразования для этого блока равны нулю, а размер шага квантования большой (например, QP больше порогового значения или равен ему).

[0128] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью деблокирования в соответствии с множеством проходов фильтрации. В одном примере проход фильтрации может соответствовать обработке/построению всех/подмножества деблокируемых выборок. Количество обработок/построений для каждой выборки в конкретном проходе может соответствовать индексу/порядку прохода. Подмножество деблокируемых выборок может соответствовать индексу/порядку прохода. В одном примере каждый проход может соответствовать обработке/построению всех выборок, которые должны быть деблокированы ровно один раз. В одном примере такого случая деблокированные выборки из предыдущей итерации (а также недеблокированные выборки) можно использовать для построения деблокированных выборок для текущей итерации. В одном примере такого случая деблокированные выборки из предыдущей и текущей итерации (а также недеблокированные выборки) можно использовать для построения деблокированных выборок. В этом случае может быть указан порядок построения деблокированных выборок. В одном примере количество итераций может быть определено на основании одного или более из: типа среза; размера блока; флагов пропуска текущего CU и его соседних CU; режима прогнозирования (внутренний/внешний) текущего CU и его соседних CU; положения деблокируемой выборки; является ли d < β и/или предусмотрено ли в JEM условие определения сильного или слабого фильтра, как описано выше; расстояния деблокируемой выборки (в числе выборок) от границы; размера блока (-ов) на каждой стороне границы; интенсивности границы; режима прогнозирования, используемого блоками на каждой стороне границы; режима прогнозирования деблокируемой выборки; QP деблокируемой выборки; размера блока, соответствующего деблокируемой выборке; размера блока, соответствующего выборкам, используемым для деблокирования; векторов движения для блоков на каждой стороне деблокируемой границы; векторов движения для деблокируемой выборки и/или векторов движения для выборки, используемой для деблокирования. В одном примере номер итерации может определять один или более параметров фильтра.

[0129] В примере N-проходное деблокирование с заранее определенной поддержкой деблокирования может быть представлено следующим образом:

для iterIdx=0 - (N-1);

для pos=posM - posN // выборки деблокируют;

temp[pos] = f_pos(значения выборки на проходе iterIdx в поддержке деблокирования);

для pos=posM - posN

Обновить sampleValue[pos] значениями temp[pos],

где f_pos() - линейное преобразование в виде:

f_pos(значения выборки на проходе iterIdx в поддержке деблокирования)

coeff_pos[m]sampleValue[m, iterIdx],

где coeff_pos[] является массивом значений, зависящих от позиции pos деблокируемой выборки. Следует отметить, что каждое используемое sampleValue[] может быть сгенерировано с использованием деблокирования на предыдущей итерации. Кроме того, поддержка деблокирования не меняется от одной итерации к следующей.

Выполнение итеративного анализа обеспечивает:

использование для iterIdx 0 недеблокированных выборок, поэтому для каждого pos:

temp[pos] = f_pos(значения выборки на проходе 0 в поддержке деблокирования).

Для iterIdx 1,

temp[pos] = f_pos(значения выборки на проходе 1 в поддержке деблокирования).

Поскольку f_pos() являются линейными преобразованиями, а поддержка деблокирования не меняется, вышеприведенное можно переписать как:

Для iterIdx 1,

temp[pos] = g_pos(значения выборки на проходе 0 в поддержке деблокирования),

где g_pos() - линейное преобразование, аналогичное f_pos(), которое зависит от позиции pos, но с другими значениями коэффициентов.

Данное упрощение можно выполнять рекурсивно для каждой итерации, что будет приводить к операциям фильтрации, которые зависят только от исходных значений выборки на итерации 0, что обеспечивает эквивалентный однократный проход. Ввиду конечной точности, используемой в некоторых случаях, итоговые значения коэффициентов могут быть аппроксимированы, из-за чего получается приблизительное однопроходное представление операции многопроходной фильтрации.

[0130] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью расширения линий фильтра и соответствующих коэффициентов фильтра. В одном примере фильтруемые строки выборки могут быть расширены до восьми на одной стороне. В одном примере для строки 0 и строки 1 коэффициенты фильтра могут быть {1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1} / 16; для строки 2 и строки 3 коэффициенты фильтра могут быть {1, 1, 1, 1, 1, 1, 1, 1} / 8; и коэффициенты фильтра для других линий могут быть {1, 2, 2, 2, 1} / 8, причем линия 0 обозначает строку выборки, ближайшую к границе.

[0131] Следует отметить, что в JEM для фильтрации выборок в процессе деблокирования всегда используют восстановленные выборки. В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью использования измененных значений выборки, полученных в результате деблокирования, для фильтрации других значений выборки. В одном примере измененные значения выборки можно использовать в качестве входных данных при фильтрации значений других выборок. В одном примере может быть указан порядок фильтрации. В одном примере порядок фильтра может выполнять деблокирование от самой дальней от границы строки до ближайшей к ней.

[0132] Как описано выше, деблокированные выборки обычно отсекают так, чтобы находиться в диапазоне значений. Диапазон значений может быть основан на исходном значении выборки и других параметрах, принятых в битовом потоке. В примере диапазоном значений является: [исходное значение выборки - t_c, исходное значение выборки+t_c]. В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью настройки функции отсечения на основании одного или более из: значений выборки в последнем одном или более циклах при многократном деблокировании; значения QP; типа среза; текущего режима прогнозирования (внутренний/внешний); текущего значения флага пропуска; режимов внутреннего прогнозирования деблокируемых выборок; вектора движения деблокируемых выборок; положения выборки (например, разные выборки могут использовать разные функции отсечения); положения CU (например, разные CU могут использовать разные функции отсечения) и/или любых других условий, описанных выше.

[0133] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения методик фильтрации, описанных в настоящем документе, на основании размера блока. Например, одну или более из методик фильтрации, описанных в настоящем документе, можно применять на границе, причем размеры блоков вокруг границы превышают пороговое значение. Например, определение того, выполнять ли методики фильтрации, может быть следующим: (1) проверять каждый набор выборок 4 × 4 на каждой стороне границы (т. е. поскольку минимальный размер CU составляет 4 × 4 выборки яркости); (2) если какой-либо один набор выборок 4 × 4 принадлежит к CU с размером, превышающим пороговые значения (например, 64), методику фильтрации будут выполнять на текущей границе. В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения методик фильтрации, описанных в настоящем документе, на основании одного или более из: типа среза; является ли форма блока прямоугольной; является ли форма блока квадратной; флагов пропуска текущего CU и его соседних CU; режима прогнозирования (внутренний/внешний) текущего CU и его соседних CU; положения деблокируемой выборки.

[0134] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения более широкой более сильной фильтрации яркости следующим образом.

Сначала определяют, использует ли сторона P большие блоки, следующим образом:

bSidePisLargeBlk = ((тип края вертикальный, и p0 принадлежит блоку (например, CU) с шириной >= 32) | | (тип края горизонтальный, и р0 принадлежит блоку (например, CU) с высотой >= 32))?

ИСТИНА : ЛОЖЬ.

Затем определяют, использует ли сторона Q большие блоки, следующим образом:

bSideQisLargeBlk - ((тип края вертикальный, и q0 принадлежит блоку (например, CU) с шириной >= 32) | | (тип края горизонтальный и q0 принадлежит блоку (например, CU) с высотой >= 32))?

ИСТИНА : ЛОЖЬ.

Далее выводят следующие переменные:

d0P=bSidePisLargeBlk ? XCalDQpLargeBlock(R[0]) : XCalDQp (R[0]);

dlP=bSidePisLargeBlk ? XCalDQpLargeBlock(R[3]) : XCalDQp (R[3]);

d0Q=bSideQisLargeBlk ? XCalDQqLargeBlock(R[0]) : XCalDQq (R[0]);

d1Q=bSideQLargeBlk ? XCalDQqLargeBlock(R[3]) : XCalDQq (R[3]);

d0L=d0P+d0Q;

d3L=d1P+d1Q;

dL=d0L+d3L.

Затем Condition1 и Condition2 оценивают следующим образом:

Condition1 = (dL < β)? ИСТИНА : ЛОЖЬ.

Condition2 = (xUseStrongFilteringLargeBlock(R[0], . d0L, bSidePisLargeBlk, bSideQisLargeBlk) && xUseStrongFilteringLargeBlock(R[3], d3L, bSidePisLargeBlk, bSideQisLargeBlk)) ? ИСТИНА:ЛОЖЬ

Когда Condition1, Condition2 и bSidePisLargeBlk имеют значение ИСТИНА, более широкий более сильный фильтр применяют к стороне P границы (например, WS00P).

Когда Condition1, Condition2 и bSideQisLargeBlk имеют значение ИСТИНА, более широкий более сильный фильтр применяют к стороне Q границы (например, WS00Q).

[0135] В одном примере Condition2 может быть изменено следующим образом:

Condition2 = (когда блок на любой стороне границы использует локальную компенсацию освещения Local и CBF этого блока равен 0) ? ИСТИНА :

((xUseStrongFilteringLargeBlock(R[0], d0L, bSidePisLargeBlk, bSideQisLargeBlk) && xUseStrongFilteringLargeBlock(R[3], d3L, bSidePisLargeBlk, bSideQisLargeBlk)) ?ИСТИНА : ЛОЖЬ)

[0136] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации цветности следующим образом.

Когда (тип края вертикальный и р0 принадлежит CU с шириной >= 32) | | (тип края горизонтальный и p0 принадлежит CU с высотой >= 32) && (тип края вертикальный и q0 принадлежит CU с шириной >= 32) | | (тип края горизонтальный и q0 принадлежит CU с высотой >= 32), можно использовать узкий сильный фильтр (например, NS00P и NS00Q),

В противном случае можно использовать узкий слабый фильтр (например, NW00P и NW00Q).

[0137] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации цветности следующим образом.

Когда (р0 принадлежит CU с шириной >= 32 и р0 принадлежит CU с высотой >= 32) || (q0 принадлежит CU с шириной >= 32 и q0 принадлежит CU с высотой >= 32), можно использовать узкий сильный фильтр (например, NS00P и NS00Q), в противном случае можно использовать узкий слабый фильтр (например, NW00P и NW00Q).

[0138] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации деблокирования в соответствии с примером блок-схемы, проиллюстрированном на ФИГ. 10. В одном примере блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации деблокирования для выборок яркости в соответствии с блок-схемой, проиллюстрированной на ФИГ. 10. На ФИГ. 10 проиллюстрирован пример, в котором для текущего блока (например, одного из блока P или блока Q) можно применять один из следующих типов деблокирования: широкий более сильный фильтр, сильный фильтр, слабый фильтр, или можно не применять фильтрацию. В одном примере применение более широкого более сильного фильтра может включать в себя применение фильтров WS00P и WS00Q, описанных выше. В одном примере применение сильного фильтра может включать в себя применение описанных выше фильтров HEVC_P и HEVC_Q. В одном примере применение слабого фильтра может включать в себя применение слабого фильтра в HEVC, описанном выше как слабый фильтр. Как показано на ФИГ. 10, более широкий более сильный фильтр применяют на этапе 408, никакого фильтра не применяют на этапе 412, сильный фильтр применяют на этапе 416, и слабый фильтр применяют на этапе 418 в зависимости от того, истинно ли условие большого блока на этапе 402, истинно ли условие градиента большого блока на этапе 404, истинно ли условие сильного фильтра для большого блока на этапе 406, истинно ли условие градиента на этапе 410 и истинно ли условие сильного фильтра на этапе 414.

[0139] В одном примере условие большого блока может включать в себя определение того, является ли истиной следующее:

If((EDGE_VER && (cur_block_width>=32|| adjacent_block_width>=32)) ||

(EDGE_HOR &&(cur_block_height>=32|| adjacent_block_height>=32))),

где

EDGE_VER - тип вертикальной границы,

EDGE_HOR - тип горизонтальной границы,

cur_block_width - ширина текущего блока, например, в выборках яркости,

cur_block_height - высота текущего блока, например, в выборках яркости,

adjacent_block_width - ширина смежного блока, например, в выборках яркости, и

adjacent_block_height - высота смежного блока, например, в выборках яркости.

[0140] В одном примере условие градиента большого блока может включать в себя определение того, является ли истиной описанное выше Condition1. В одном примере условие сильного фильтра для большого блока может включать в себя определение того, является ли истиной один из описанных выше примеров Condition2.

[0141] В одном примере условие градиента может включать в себя определение, является ли d < β, где d определяется следующим образом:

d0P=XCalDQp (R[0]);

d1P=XCalDQp (R[3]);

d0Q=XCalDQq (R[0]);

d1Q=XCalDQq (R[3]);

d0=d0P+d0Q;

d3=d1P+d1Q;

d=d0+d3.

[0142] В одном примере условие сильного фильтра может включать в себя определение того, является ли истиной следующее.

(xUseStrongFilteringLargeBlock(R[0]; d0, false, false) &&

xUseStrongFilteringLargeBiock(R[3], d3, false, false)) ? ИСТИНА:ЛОЖЬ

[0143] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации деблокирования в соответствии с примером блок-схемы, проиллюстрированном на ФИГ. 11. В одном примере блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации деблокирования для выборок цветности в соответствии с блок-схемой, проиллюстрированной на ФИГ. 11. На ФИГ. 11 проиллюстрирован пример, в котором для текущего блока (например, блока P или блока Q) может быть применен один из следующих типов деблокирования: более широкий более сильный фильтр или слабый фильтр. В одном примере применение более широкого более сильного фильтра может включать в себя применение фильтров NS00P и NS00Q, описанных выше. В одном примере применение слабого фильтра может включать в себя применение описанных выше фильтров NW00P и NW00Q. Как показано на ФИГ. 11, более широкий более сильный фильтр применяют на этапе 504, а слабый фильтр применяют на этапе 506 в зависимости от того, истинно ли условие большого блока на этапе 502.

[0144] В одном примере условие большого блока может включать в себя определение того, является ли истиной следующее:

If((EDGE_VER && (cur_block_width>=32|| adjacent_block_width>=32))||

(EDGE_HOR &&(cur_block_height>=32|| adjacent_block_height>=32))),

где

EDGE_VER - тип вертикальной границы,

EDGE_HOR - тип горизонтальной границы,

cur_block_width - ширина текущего блока, например, в выборках цветности,

cur_block_height - высота текущего блока, например, в выборках цветности,

adjacent_block_width - ширина смежного блока, например, в выборках цветности, и

adjacent_block_height - высота смежного блока, например, в выборках цветности.

[0145] В одном примере блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации деблокирования для выборок цветности блока P или блока Q на основании следующего набора условий:

If((EDGE_VER && (cur_Q_block_width>= TH_w)) | | (EDGE_HOR &&

(cur_Q_block_height >= TH_h)) является ИСТИНОЙ, к выборкам Q применяют NS00Q. В противном случае к выборкам Q применяют слабый фильтр (например, фильтр NW00Q стороны Q).

If((EDGE_YER && (cur_P_block_width>= TH_w)) | | (EDGE_HOE &&

(cur_P_block_height >= TH_h)) является ИСТИНОЙ, к выборкам P применяют NS00P. В противном случае к выборкам P применяют слабый фильтр (например, фильтр NWOOP стороны P),

где

EDGE_VER - тип вертикальной границы,

EDGE_HOR - тип горизонтальной границы,

cur_Q_block_width - ширина текущего блока Q, например, в выборках цветности,

cur_Q_block_height - высота текущего блока Q, например, в выборках цветности,

cur_P_block_width - ширина текущего блока P, например, в выборках цветности,

cur_P_block_height - высота текущего блока P, например, в выборках цветности,

TH_w - порог ширины (например, 32 выборки), и

TH_h - порог высоты (например, 32 выборки).

[0146] Следует отметить, что пороговое значение (например, TH_w и/или TH_h) в некоторых примерах может включать в себя предварительно определенное значение (например, 16 или 32), в некоторых примерах может быть сигнализировано в наборе параметров, в некоторых примерах возможна сигнализация в заголовке среза, а в некоторых примерах размер CTU может быть в текущей части видео.

[0147] Касательно ФИГ. 11 в одном примере условие большого блока может быть заменено условием фильтра яркости. Таким образом, например, если к блоку яркости применяют сильный фильтр, более широкий более сильный фильтр может быть применен к связанному блоку цветности на этапе 504, в противном случае слабый фильтр может быть применен к связанному блоку цветности на этапе 506.

[0148] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации деблокирования в соответствии с примером блок-схемы, проиллюстрированном на ФИГ. 12. В одном примере блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации деблокирования для выборок цветности в соответствии с блок-схемой, проиллюстрированной на ФИГ. 12. На ФИГ. 12 проиллюстрирован пример, в котором для текущего блока (например, блока P или блока Q) может быть применен один из следующих типов деблокирования: более широкий более сильный фильтр или слабый фильтр. В одном примере применение более широкого более сильного фильтра может включать в себя применение фильтров NS00P и NS00Q, описанных выше. В одном примере применение слабого фильтра может включать в себя применение описанных выше фильтров NW00P и NW00Q. Как показано на ФИГ. 12, более широкий более сильный фильтр применяют на этапе 608, а слабый фильтр применяют на этапе 606 в зависимости от того, истинно ли условие большого блока в 602 и условие сильного фильтра для большого блока в 604.

[0149] В одном примере условие большого блока может включать в себя определение того, является ли истиной следующее:

If((EDGE_VER && (cur_block_width>=TH_w && adjacent_block_width>= TH_w)) || (EDGE_HOR && (cur_block_height>=TH_h || adjacent_block_height>=TH_h))),

где

EDGE_VER - тип вертикальной границы,

EDGE_HOR - тип горизонтальной границы,

cur_block_width - ширина текущего блока, например, в выборках цветности,

cur_block_height - высота текущего блока, например, в выборках цветности,

adjacent_block_width - ширина смежного блока, например, в выборках цветности, и

adjacent_block_height - высота смежного блока, например, в выборках цветности,

TH_w - порог ширины (например, 32 выборки), и

TH_h - порог высоты (например, 32 выборки).

[0150] Следует отметить, что пороговое значение (например, TH_w и/или TH_h) в некоторых примерах может включать в себя предварительно определенное значение (например, 16 или 32), в некоторых примерах может быть сигнализировано в наборе параметров, в некоторых примерах возможна сигнализация в заголовке среза, а в некоторых примерах размер CTU может быть в текущей части видео. В одном примере пороговое значение больше 4.

[0151] В одном примере условие более широкого сильного фильтра может включать определение, истинно ли и первое условие, и второе условие. Таким образом, условие сильного фильтра может быть истинным, когда и первое условие, и второе условие являются истинными. В одном примере первое условие может быть истинным, когда d < β, где d определяется следующим образом:

dp0=xCalcDP(Rc[0]);

dq0=xCalcDQ(Rc[0]));

dp1 =xCalcDP(Rc[l]);

dq1=xCalcDQ(Rc[l]);

d0=dp0+dq0;

d1=dp1+dq1;

d=d0+dl,

где

Rc[N] соответствует строкам цветности, перпендикулярным деблокируемому краю и расположенным на расстоянии N от вершины текущего деблокируемого сегмента цветности; и

[0152] в одном примере второе условие может быть истинным, когда ((abs(p3 - p0) + abs(q3 - q0) < ((β > 3)) && (d < (β >> 2)) && (abs(q0 - p0) < ((tC * 5+1) >> 1))) является истинным для Rc[0] и Rc[1].

[0153] в одном примере второе условие может быть истинным, когда

((abs(p3 - p0) + abs(q3 - q0) < (β > 3)) && (d < ((β >> 2)) && (abs(q0 - p0) < ((tC * 5+1) >> 1)))

является истинным для Rc[0].

[0154] Следует отметить, что в одном примере край деблокируют в виде сегментов, причем длина сегмента может представлять собой функцию наименьшего размера, разрешенного для CU/TU/PU/суб-PU. Когда CU 2 × N и N × 2 дополнительно являются самыми короткими и самыми тонкими блоками, разрешенными в канале цветности, длина сегмента цветности может составлять 2.

[0155] Следует отметить, что согласно приведенной выше фильтрации цветности две строки, перпендикулярные деблокируемому краю, обрабатывают как основной сегмент. В одном примере четыре строки могут быть обработаны как основной сегмент. В одном примере, когда четыре строки обрабатывают как основной сегмент, первое условие может быть истинным, когда d < β, где d определяется следующим образом:

dp0=xCalcDP(Rc[0]);

dq0=xCalcDQ(Rc[0]));

dp3=xCalcDP(Rc[3]);

dq3=xCalcDQ(Rc[3]);

d0=dp0+dq0;

d3=dp3+dq3;

d=d0+dl,

[0156] В одном примере, когда четыре строки дополнительно обрабатывают как основной сегмент, второе условие может быть истинным, когда

((abs(p3 - p0) + abs(q3 - q0) < (β > 3)) && (d < ((β >> 2)) && (abs(q0 - p0) < ((tC * 5+1) >> 1)))

является истинным для Rc[0] и Rc[3].

[0157] Как описано выше, в ITU-T H.265 фильтр деблокирования можно по-разному применять к границам CTU, которые совпадают с границами среза и мозаичного фрагмента, по сравнению с границами CTU, не совпадающими с границами среза и мозаичного фрагмента. В частности, в ITU-T H.265 флаг slice_loop_filter_across_slices_enabled_flag включает/выключает фильтр деблокирования на границах CTU, совпадающих с верхней и левой границами среза. В одном примере в соответствии с методиками, описанными в настоящем документе, когда опорные выборки фильтра деблокирования превышают границу (например, изображения/среза/мозаичного фрагмента), фильтр деблокирования, использующий опорные выборки, может быть не разрешен. В одном примере в соответствии с методиками, описанными в настоящем документе, когда опорные выборки фильтра деблокирования превышают границу (например, изображения/среза/мозаичного фрагмента) и использование значений выборки на границах (например, среза) запрещено, может быть использована операция заполнения для генерирования значений опорной выборки. Например, одно из: числового скалярного, кругового, повторяющегося или симметричного заполнения можно использовать для генерирования опорной выборки, причем при числовом скалярном заполнении происходит заполнение постоянным значением, при круговом заполнении - повторяющимися по кругу значениями выборки, при повторяющемся заполнении - повторяющимися граничными значениями выборки, а при симметричном заполнении - зеркальными отражениями значений выборки.

[0158] Как описано выше, в ITU-T H.265 отфильтрованные значения отсекают на основании значения tС. В частности, в случае сильного фильтра в ITU-T H.265, как описано выше, значения pi’ отсекают до (pi - 2 * tC, pi+2 * tC), а значения qi’ отсекают до (qi - 2 * tC, qi+2 * tC). Как описано выше, в ITU-T H.265 переменную tС’ (и, таким образом, значение tС) определяют на основании индекса Q, который определяют на основании qPL, равного: (QPQ+QPP+1) / 2. В некоторых случаях кодирования видеосигналов (например, предлагаемые методики кодирования видеосигналов с высоким динамическим диапазоном (HDR)) значения QP могут быть изменены на уровне CU или уровне CTU. В этих случаях диапазон операции отсечения, предусмотренной в ITU-T H.265 на основании индекса Q, может быть несоответствующим. В одном примере в соответствии с методиками, описанным в настоящем документе, разные значения tС’ могут быть определены для выборок на стороне Р и выборок на стороне Q. Таким образом, значение tC’ стороны P, tCP’ и соответствующее значение tC стороны P, tCP’ можно использовать для отсечения значений pi’, а значение tC’ стороны Q, tCQ’ и соответствующее значение tC стороны Q, tСQ’ можно использовать для отсечения значений qi’. В одном примере соответствующий индекс Q стороны Р (Qp) и индекс Q стороны Q (Qq) можно определять путем замены qPL соответствующими значениями QPP и QPQ в приведенном выше уравнении для индекса Q. Таким образом, в соответствии с методиками, описанными в настоящем документе, значения pi’ могут быть отсечены до (pi - 2 * tCP, pi+2 * tCP), а значения qi’ могут быть отсечены до (qi - 2 * tCQ, qi+2 * tCQ). Следует отметить, что значения pi’ и qi’ могут включать в себя отфильтрованные значения, сгенерированные согласно любому фильтру, описанному в настоящем документе. Таким образом, методики отсечения значений pi’ и qi’ на основании соответствующих tCP и tCQ можно применять к любому фильтру, описанному в настоящем документе.

[0159] Следует отметить, что в некоторых случаях видеоблок (например, CU) может включать в себя внутренние границы TU, и внутри видеоблока могут появляться блочные артефакты. В некоторых случаях, когда размер видеоблока превышает 64, деблокирование внутренних границ TU может быть выключено. В одном примере в соответствии с методиками, описанными в настоящем документе, деблокирование можно выполнять вдоль границ видеоблока, а также вдоль любых внутренних границ TU, даже в случаях, когда размер видеоблока превышает 64.

[0160] Касательно ФИГ. 5A-5B в некоторых случаях блок P или блок Q могут включать в себя множество объектов. Например, касательно ФИГ. 5А в одном примере столбцы с р7 по p3 могут соответствовать первому объекту, столбцы с р2 по p0 могут соответствовать второму объекту, а столбцы с q0 по q7 могут соответствовать третьему объекту. В этом случае, когда выборки в столбцах с р2 по р0 фильтруют с использованием выборок в одном или более столбцов р3 и с q0 по q3 в качестве опорных выборок, результирующие значения выборки фильтра в столбцах с р2 по р0 могут выглядеть размытыми. В некоторых случаях деблокирование может дополнительно приводить к размытию доминирующего (-их) значения (значений) выборки и/или появлению других визуальных артефактов.

[0161] Как описано выше, соответствующее значение деблокированной выборки, y[n], имеющее опорные выборки, может быть указано на основании следующего уравнения:

y[n] = coeff[m]x[n+m],

где

длина фильтра определяется как abs(a - b+l);

в coeff[m] представлено значение отвода фильтра (также называемое коэффициентом фильтра);

в x[n+m] представлены входные значения выборок, соответствующие опорным выборкам.

[0162] В одном примере в соответствии с методиками, описанными в настоящем документе, чтобы избежать размытия или возникновением артефакта, вызванного включением отдельных объектов в отфильтрованные выборки и опорные выборки, к компоненту x[n+m] могут быть применены одна или более операций отсечения. В одном примере компонент x[n+m] может быть заменен на Clip3(x[n] - 2 * tC, x[n] + 2 * tC, x[n+m]).

[0163]

В одном примере компонент x[n+m] может быть изменен таким образом, что опорную выборку x[n+m] исключают из суммирования, если abs(x[n+m] - x[n]) превышает пороговое значение. Следует отметить, что в случае, когда coeff[m] соответствует среднему распределению (т. е. coeff[m] = 1/длина фильтра, причем длина фильтра равна (abs(a - b+1))), coeff[m] рассчитывают как 1 / (длина фильтра - исключенные выборки). Следует отметить, что в случае, когда coeff[m] соответствует распределению Гаусса (т. е., ∑bm=acoeff[m] = 1, причем длина фильтра равна abs(a - b+1)). В одном примере компонент x[n+m] может быть изменен таким образом, чтобы для каждой опорной выборки x[n+m], в которой выполняется условие, что abs(x[n+m] - x[n]) превышает пороговое значение, значение опорной выборки x[n+m] заменяют значением x[n]. Следует отметить, что пороговое значение может быть основано на комбинации одного или более из: предварительно определенного значения (например, 2 или 4), значения, сигнализируемого в наборе параметров, значения, сигнализируемого в заголовке среза, значения, основанного на значении QP (например, значение QP текущей выборки и/или опорной выборки), и/или значения на основании информации прогнозирования (например, режим внутреннего прогнозирования и/или информация движения текущей выборки и/или опорной выборки).

[0164] В одном примере разные фильтры можно применять в разных положениях выборки по отношению к границе. Например, выборки вблизи границы могут быть отфильтрованы с использованием сильных фильтров, а выборки вдали от границы могут быть отфильтрованы с использованием слабых фильтров. Например, выборки в столбцах с p0 по p1 могут быть отфильтрованы в соответствии с сильным фильтром, а выборки в столбцах с p2 по p4 могут быть отфильтрованы в соответствии со слабым фильтром. В одном примере для деблокирования цветности (или деблокирования яркости) может быть использовано такое пороговое значение (например, 2, 3, 4), что если позиционное расстояние между текущей выборкой и выборкой, ближайшей к границе, меньше порогового значения, будет применен сильный фильтр. В одном примере пороговое значение может быть основано на одном или более из: размера блока на каждой стороне границы (одной или обеих); интенсивности границы; режима прогнозирования, используемого блоками на каждой стороне границы; режима прогнозирования деблокируемой выборки; QP деблокируемой выборки; размера блока, соответствующего деблокируемой выборке; размер блока, соответствующего выборкам, используемым для деблокирования; векторов движения для блоков на каждой стороне деблокируемой границы; векторов движения для деблокируемой выборки и/или векторов движения для выборки, используемой для деблокирования.

[0165] Следует отметить, что в некоторых случаях кодирования видеосигналов коэффициенты преобразования яркости (например, после квантования), соответствующие CU, могут быть равны 0, и CU может быть разделен на суб-PU для компенсации движения (например, ATMVP). В таком случае в соответствии с методиками, описанными в настоящем документе, деблокирование яркости можно выполнять вдоль границ суб-PU и дополнительно вдоль границ CU в некоторых примерах.

[0166] Следует отметить, что в некоторых случаях кодирования видеосигналов коэффициенты преобразования цветности (например, после квантования), соответствующие CU, могут быть равны 0, и CU может быть разделен на суб-PU для компенсации движения (например, ATMVP). В таком случае в соответствии с методиками, описанными в настоящем документе, деблокирование цветности можно выполнять вдоль границ суб-PU и дополнительно вдоль границ CU в некоторых примерах.

[0167] Как описано выше, в ITU-T H.265 для определения типа применяемого фильтра (например, сильный фильтр или слабый фильтр) для яркости используют каждый из Bs, tC, β и d. В частности, если d меньше β, переменная dStrong определяется следующим образом:

d_strong=abs(p3 - p0) + abs(q0 - q3).

[0168] Применять сильный фильтр или слабый фильтр, определяют на основании значения d_strong следующим образом:

- если ((d_strong < ( β >> 3 )) && (d < (β >>2)) && (abs( p0 - q0) < ( 5 * tC+1) >> 1),

- применяют сильный фильтр;

- в противном случае

- применяют слабый фильтр.

[0169] В одном примере в соответствии с методиками, описанными в настоящем документе, dStrong можно определять следующим образом:

d_strong = (bSidePisLarge ? max(abs(p0 - p7), max(abs(p3 - p0), abs(p7 - p3))) : abs(p3 - p0)) + (bSideQisLarge ? Max(abs(q0 - q7), max(abs(q3 - q0), abs(q7 - q3))):abs(q3 - q0));

[0170] что касается реализаций фильтра деблокирования в JEM, когда выполняют одно из следующих условий, деблокирование яркости не может быть выполнено параллельно, как указано ниже. Таким образом, например, деблокирование не может быть выполнено параллельно на левой и правой вертикальных границах блока или на верхней и нижней горизонтальных границах блока. Таким образом, деблокирование не может быть выполнено параллельно на двух границах блока, поскольку процесс фильтрации для одной границы может включать в себя выборки, деблокированные процессом фильтрации для другой границы. Таким образом, оба фильтра деблокирования на каждом соответствующем крае могут охватывать выборки в центре блока.

[0171]

Если (Cur_EDGE_VER && cur_block_width == 4), параллельное деблокирование вертикальных границ текущего блока не выполняют;

если (Cur_EDGE_VER && adjacent_block_width == 4), параллельное деблокирование вертикальных границ смежных блоков не выполняют;

если (Cur_EDGE_HOR && cur_block_height == 4), параллельное деблокирование горизонтальных границ текущего блока не выполняют;

если (Cur_EDGE_HOR && adjacent_block_width == 4), параллельное деблокирование горизонтальных границ смежных блоков не выполняют;

где

Cur_EDGE_VER - текущая вертикальная граница,

Cur_ED GE_HOR - текущая горизонтальная граница,

cur_block_width - ширина текущего блока, например, в выборках яркости,

cur_block_height - высота текущего блока, например, в выборках яркости,

adjacent_block_width - ширина смежного блока, например, в выборках яркости, и

adjacent_block_height - высота смежного блока, например, в выборках яркости.

[0172] В одном примере в соответствии с методиками, описанными в настоящем документе, для каждого из указанных выше условий деблокирование может быть выполнено на выборках яркости на границе следующим образом.

Если (Cur_EDGE_VER && cur_block_width == 4 && adjacent_block_width > 4), для Cur_EDGE_VER выполняют деблокирование только на выборках смежных блоков;

если (Cur_EDGE_VER && cur_block_width == 4 && adjacent_block_width == 4), для Cur_EDGE_VER деблокирование не выполняют;

если (Cur_EDGE_VER && cur_block_width > 4 && adjacent_block_width == 4), для Cur_EDGE_VER выполняют деблокирование только на выборках текущих блоков;

если (Cur_EDGE_VER && cur_block_width > 4 && adjacent_block_width == 4), для Cur_EDGE_VER выполняют деблокирование на выборках текущего блока и выборках смежных блоков;

если (Cur_EDGE_HOR && cur_block_height == 4 && adjacent_block_height == 4), для Cur_EDGE_HOR выполняют деблокирование только на выборках смежных блоков;

если (Cur_EDGE_HOR && cur_block_height == 4 && adjacent_block_height == 4), для Cur_EDGE_HOR деблокирование не выполняют;

если (Cur_EDGE_HOR && cur_block_height > 4 && adjacent_block_height == 4), для Cur_EDGE_HOR выполняют деблокирование только на выборках текущего блока;

если (Cur_EDGE_HOR && cur_block_height > 4 && adjacent_block_height > 4), для Cur_EDGE_HOR выполняют деблокирование на выборках текущего и смежного блоков.

[0173] Таким же образом, как описано выше, для деблокирования цветности случаи ограничения параллельного деблокирования происходят, когда cur_block_height, adjacent_block_height, cur_block_width, adjacent_block_width соответствующего блока равны пороговому значению, равному 2. Таким образом, в соответствии с методиками, описанными в настоящем документе, для выборок цветности деблокирование может быть выполнено, как описано выше, если пороговое значение, равное 4, заменяют пороговым значением, равным 2, в условных выражениях.

[0174] В одном примере в соответствии с методикой, описанной в настоящем документе, вместо того, чтобы не выполнять деблокирование на краю для блока, имеющего размер, равный пороговому значению или менее, к выборкам на краю может быть применен более узкий фильтр. Например, в случае, если (Cur_EDGE_VER && cur_block_width == 4 && adjacent_block_width > 4), деблокирование можно выполнять следующим образом.

Для Cur_EDGE_VER выполняют деблокирование на выборках смежных блоков в соответствии с шириной фильтра и выполняют деблокирование в одном смежном столбце выборок в Cur_EDGE_VER для текущего блока.

[0175] Аналогичным образом более узкий фильтр можно применять к выборкам на краю для каждого из случаев, описанных выше. Таким образом, в общем, в соответствии с методиками, описанными в настоящем документе, видеокодер (и/или видеодекодер) может быть выполнен с возможностью определения случаев, когда параллельное деблокирование ограничено, например, из-за перекрывающихся фильтров деблокирования (например, ширина фильтра больше половины ширины (или высоты) блока), и внесения изменений в то, какие выборки были бы деблокированы в противном случае. Следует отметить, что в некоторых случаях параллельное деблокирование может быть ограничено на основании выборок, которые используют для поддержки деблокирования. В соответствии с методиками, описанными в настоящем документе, видеокодер (и/или видеодекодер) может быть выполнен с возможностью определения момента ограничения параллельного деблокирования из-за того, что выборки в блоке могут быть использованы для поддержки деблокирования для множества фильтров деблокирования.

[0176] Как описано выше, для фильтра F4P стороны P одно из вычислений включает в себя:

p0’ = (p7+p6+ p5+p4+p3+p2+p1+2 * p0+q0+q1+q2+q3+q4+q5+q6+8) >> 4.

[0177] Следует отметить, что если сторона q имеет размер 8, а противоположный текущему край использует сильный фильтр HEVC, выборки q5 и q6 могут быть изменены операцией деблокирования сильным HEVC для противоположной стороны. Параллельная обработка не может происходить для краев деблокирования, которые параллельны друг другу. В одном примере, чтобы предотвратить это, для стороны p необходимо использовать длинные фильтры (т. е. более сильные фильтры), только если длина стороны q (перпендикулярной краю) равна 16 или более. Это условие (например, условие LargeBlk) проверяют одним из следующих способов.

условие LargeBlk: (обе стороны края имеют длину, перпендикулярную краю, >= 16 ) ? ИСТИНА : ЛОЖЬ;

условие LargeBIk: (обе стороны края имеют длину, перпендикулярную краю, >= 32 ) ? ИСТИНА : ЛОЖЬ;

ИЛИ

условие LargeBlk: (длина стороны края большого блока, перпендикулярная краю >= 32 И длина стороны края другого блока, перпендикулярная краю >= 16)? ИСТИНА: ЛОЖЬ. Следует обратить внимание, что когда длина блоков обоих размеров одинакова, требуется, чтобы оба были >= 32.

Более широкие более сильные фильтры используют только для стороны с длиной >= 32.

[0178] В одном примере в соответствии с методиками, описанными в настоящем документе, в наборе фильтров деблокирования может быть использована билинейная операция. В одном примере выборки pi и qi границы блока для i, равного от 0 до S-1, заменяют линейной интерполяцией следующим образом:

pi’ = (fi * Middles, t + (64 - fi) * Ps+32) >> 6), отсеченные до pi ± tC;

qi = (gi * Middles, t + (64 - gi) * Qt+32) >> 6), отсеченные до pi ± tC.

[0179]

В одном примере fi Middles, t, Ps, gi и Qt можно определять согласно таблице 1.

s, t (сторона p, сторона q) Основные компоненты фильтра
7,7 fi=59 - i * 9, может также быть описано как f = {59,50,41,32,23,14,5} gi=59 - i * 9, может также быть описано как g = {59,50; 41,32,23,14,5};
Middle7,7 =(2 * (p0+q0) + p1+q1+p2+q2+ p3+q3+p4+q4+p5+qs+p6+q6+8) >> 4;
P7 = (P6+P7+1)>> 1, Q7 = (q6+q7+1) >> 1;
5,5 fi=58 - i * 13, может также быть описано как f = {58,45,32,19,6};
gi=58 - i * 13 может также быть описано как g - {58,45,32,19,6};
Middle5,5 = (2 * (p0+q0+p1+q1+p2+q2)+p3+q3+P4+q4+8) >> 4;
P5 = (p4+p5+1)>>1, Q5 = (q4+q5+1)>>1
3,3 fi=53 - i* 21, может также быть описано как f = {53,32,11};
gi=53 - i * 21, может также быть описано как g = {53,32,11};
Middle3,3 = (3 * (p0+q0+p1+q1)+ 2 * (p2+q2) + 8)>>4;
P3 = (P2+P3+1)>>1, Q3 = (q2+q3+1)>> 1
7,5 fi=59 - i * 9, может также быть описано как f = {59,50,41,32,23,14,5};
gt=58 - i * 13, может также быть описано как g = {58,45,32,19,6};
Middle7,5 = (2 * (p0+q0+q1+q2) + p1+p2+p3+q3+p4+p5 - p6+8)>> 4;
P7 = (p6+p7+1)>> 1, Q5 =(q4+q5+1)>> 1;
7,3 fi=59 - i * 9, может также быть описано как f = (59,50,41,32,23,14,5};
gi=53 - i * 21, может также быть описано как g = {53,32,11};
Middle7,3 = (2 * (p0+q0)q0+2 * (q1+q2) + p1+q1+p2+p3+p4+p5+p6+8)>>4;
P7=p6+p7+1)>> 1, Q3 = (q2+q3+1) >> 1;
5,3 fi=58 - i* 13, может также быть описано как f = {58;45,32,19,6};
gi=53 - i * 21, может также быть описано как g ~ {53,32,11};
Middle5,3 = ((2 * (p0+q0+p1+q1+p2 +q2) + q0+q1+p3+p4+8) >> 4;
Ps = (p4+p5+1) >> 1, Q3 = (q2 +q3+1) >> 1;
5,7 gi=59 - t * 9, может также быть описано как g = {59,50,41,32,23,14,5};
fi=58 - i * 13, может также быть описано как f = {58,45,32,19,6};
Middle5,7 = (2*(q0 +p0+p1+p2) + q1+q2+p3+p4+q5+q6+8) >> 4;
Q7 = (q6+q7+1)>> 1, p5 = (p4+p5+1)>>1.
3,7 gi=59 - i * 9, может также быть описано как g = (59,50,41,32,23,14,5};
f i=53 - i * 21, может также быть описано как f = {53,32,11};
Middle3,7 = (2 * (q0+p0) + p0+2 * (p1+p2) + q1+p1+q2+q3+q4+q5+q6+8) >>4;
Q7=q6+q7+1) >> 1, P3 = (p2+p3+1) >> 1.

Таблица 1

[0180] В отношении таблицы 1 следует отметить, что для 7,5; 7,3; 5,3; 5,7 и 3,7 весовые значения pi и qi для Middle не совпадают и выводятся из 7,7 путем добавления дополнительных компонентов.

[0181] В одном примере в соответствии с методиками, описанными в настоящем документе, набор фильтров деблокирования может использовать билинейную операцию, если любая из сторон равна 32 или более.

[0182] В одном примере в соответствии с методиками, когда любая из сторон равна 32 или более, может быть выполнено билинейное деблокирование согласно таблице 2.

Сторона Р Сторона Q s, t
>= 32 >= 32 7,7
>= 32 < 32 7,3
< 32 >= 32 3,7

Таблица 2

[0183] В одном примере в соответствии с методиками, когда любая из сторон равна 32 или более, может быть выполнено билинейное деблокирование согласно таблице 3.

Сторона Р Сторона Q s, t
>= 32 >= 32 7,7
>= 32 < 32 7,5
< 32 >= 32 5,7

Таблица 3

[0184] В одном примере в соответствии с методиками, когда любая из сторон равна 32 или более, может быть выполнено билинейное деблокирование согласно таблице 4.

Сторона Р Сторона Q s, t
>= 32 >= 32 5,5
>= 32 < 32 5,3
< 32 >= 32 3,5

Таблица 4

[0185] В одном примере в соответствии с методиками, когда любая из сторон равна 32 или более, может быть выполнено билинейное деблокирование согласно таблице 5.

Сторона Р Сторона Q s, t
>= 32 >= 32 7,7
>= 32 < 32 7,3
< 32 >= 32 3,7
< 32 < 32 3,3

Таблица 5

[0186] В одном примере в соответствии с методиками, когда любая из сторон равна 32 или более, может быть выполнено билинейное деблокирование согласно таблице 6.

Сторона Р Сторона Q s, t
>= 32 >= 32 7,7
>= 32 < 32 7,5
< 32 >= 32 5,7
< 32 < 32 5,5

Таблица 6

[0187] В одном примере в соответствии с методиками, когда любая из сторон равна 32 или более, может быть выполнено билинейное деблокирование согласно таблице 7.

Сторона Р Сторона Q s, t
>= 32 >= 32 5,5
>= 32 < 32 5,3
< 32 >= 32 3,5
< 32 < 32 3,3

Таблица 7

[0188] В одном примере в соответствии с методиками, описанными в настоящем документе, набор фильтров деблокирования может использовать билинейную операцию, если любая из сторон равна 16 или более. В таком случае в таблицах 2-7 32 можно заменить на 16. В одном примере для таблиц 5, 6 и 7 в последнем столбце (s, t) строк с длиной стороны P, не равной длине стороны Q, можно использовать соответствующую (3,3), (5,5), (3,3) фильтрацию. В одном примере то, может ли набор фильтров деблокирования использовать билинейную операцию, может быть дополнительно обусловлено тем, является ли истинным условие сильного фильтра. Например, любое из условий сильного фильтра, описанных выше. В одном примере то, может ли набор фильтров деблокирования использовать билинейную операцию, может быть дополнительно обусловлено следующим.

Переменные dpq0, dpq3, dp, dq и d выводят следующим образом:

dp0=abs(p2,0-2 * p1,0+p0,0);

dp3=abs(p2,3-2 * p1,3+p0,3);

dq0=abs(q2,0-2 * q1,0+q0,0);

dq3=abs(q2,3-2 * q1,3+q0,3);

а затем,

если (сторона p равна 16 или более),

dp0 = (dp0+abs(p5,0-2 * p4,0+p3,0) + 1) >> 1,

dp3 = (dp3+abs(p5,3-2 * p4,3+p3,3) + 1) >> 1,

если (сторона q равна 16 или более),

dq0 = (dq0+Abs(q5,0-2 * q4,0+q3,0) + 1) >> 1;

dq3 = (dq3+Abs(q5,3-2 * q4,3+q3,3) + 1) >> 1;

dpq0=dp0+dq0;

dpq3=dp3+dq3;

dp=dp0+dp3;

dq=dq0+dq3;

d=dpq0+dpq3.

Когда d меньше β, применяют следующие этапы в заданном порядке:

Переменную dpq устанавливают равной 2 * dpq0.

sp3=abs(p3 - p0),

если (сторона p равна 16 или более),

sp3 = (sp3+abs(p7 - p3) + 1) >> 1;

sq3=abs(q3 - q0),

если (сторона q равна 16 или более),

sq3 = (sq3+abs(q7 - q3) + 1) >> 1;

StrongFilterCondition = (dpq меньше (β >> 2), sp3+sq3 меньше (β >> 3 ), и abs( p0 - q0 ) меньше ( 5 * tC+1)>> 1)? ИСТИНА: ЛОЖЬ.

[0189] Следует отметить, что в некоторых примерах: значения параметров управления для яркости и цветности (например, β, tC и т. д.) могут не совпадать и сигнализироваться с использованием другого набора элементов синтаксиса; значения параметров управления для цветности могут быть получены из значений параметров управления для яркости; деблокирование может быть выполнено только на краях суб-PU, соответствующих границам 8 × 8 (яркость) и 4 × 4 (цветность); деблокирование краев текущего блока может быть основано на использовании линейной модели (LM) цветности; деблокирование краев текущего блока может быть основано на использовании отдельных деревьев разделения; деблокирование краев текущего блока может быть основано на использовании импульсной кодовой модуляции (PCM); и/или деблокирование краев текущего блока может быть основано на использовании режима обхода квантования преобразования. Следует отметить, что PCM является режимом кодирования без потерь для блока выборок. В примере кодирования PCM выборки непосредственно представлены предварительно заданным количеством битов. Глубина в битах, используемая для PCM, может быть сигнализирована в наборе (-ах) параметров.

[0190] Что касается деблокирования краев текущего блока на основании использования LM цветности и/или деблокирования краев текущего блока, оно может быть основано на использовании отдельных деревьев разделения, в одном примере деблокирование может быть выполнено на краях текущего блока, когда для блока цветности используют LM цветности, и/или для яркости и цветности используют отдельные деревья, и/или принятые коэффициенты преобразования равны нулю. В одном примере для отдельных деревьев деблокирование может быть выполнено только на крае цветности (например, краях TU, краях PU, краях суб-PU, краях CU), совпадающем с сеткой цветности 4 × 4.

[0191] В одном примере, когда условие большого блока не ИСТИННО, а условие сильного фильтра ИСТИННО, для деблокирования края используют NS00P и NS00Q.

[0192] В одном примере, когда условие большого блока не ИСТИННО, а условие сильного фильтра ИСТИННО, для деблокирования края используют фильтры (s, t) = 3,3.

[0193] Следует отметить, что в некоторых случаях граница деблокирования может включать в себя горизонтальную границу CTU. Например, касательно ФИГ. 5B в некоторых случаях выборки py, x могут быть включены в CTU, который находится над CTU, включающим в себя выборки qy, x. В целях кодирования верхней строки в текущем CTU типичная реализация видеокодера сохраняет N строк выборок в нижних строках CTU над текущим CTU. Например, в случае, если граница деблокирования на ФИГ. 5B является границей CTU, в видеокодере хранятся значения px,0 для выполнения кодирования с внутренним прогнозированием строки qx,0. Буфер строки CTU относится к строкам значений выборок над текущим CTU, которые хранятся для кодирования текущего CTU. По мере увеличения количества строк, включенных в буфер строк CTU, увеличивается стоимость памяти для реализации видеокодера. Следует отметить, что в некоторых случаях данные, соответствующие значениям выборки, также сохраняются (например, режим прогнозирования (и соответствующая информация, например режим внутреннего прогнозирования, двойного/одинарного прогнозирования, векторы движения, опорный индекс и т. д.), размер блока, флаги кодирования коэффициентов и т. д.). Таким образом, чтобы избежать увеличения затрат на реализацию, желательно избегать увеличения количества строк, включенных в буфер строк CTU, исключительно для целей деблокирования. Например, если все функции кодирования предлагаемого стандарта кодирования видеосигналов требуют, чтобы в буфере строк CTU сохранялись четыре строки значений выборки, в фильтре деблокирования, который требует увеличения буфера строк CTU для хранения семи строк значений выборки, увеличились бы затраты на реализацию.

[0194] Как описано выше, JEM описывает функции кодирования, являющиеся предметом скоординированного исследования тестовой модели JVET, как способные усовершенствовать технологию кодирования видеосигналов сверх возможностей ITU-T H.265. Кроме того, в ответ на «Общий конкурс предложений по сжатию видео с возможностями, выходящим за рамки HEVC», совместно опубликованный VCEG и MPEG, на 10-ом совещании ISO/IEC JTC1/SC29/WG11 16-20 апреля 2018 года в г. Сан-Диего, штат Калифорния, США, разные группы предложили множество описаний кодирования видеосигналов. В качестве результата многочисленных описаний кодирования видеосигналов проект спецификации кодирования видеосигналов описан в «Универсальном кодировании видеосигналов (проект 1)» на 10-м совещании ISO/IEC JTC1/SC29/WG11 16-20 апреля 2018 г. в Сан-Диего, штат Калифорния, США - документе JVET-J1001-v2, который включен в данное описание путем ссылки и упоминается как JVET-J1001. «Универсальное кодирование видеосигналов (проект 2)», составленное на 11-м совещании ISO/IEC JTC1/SC29/WG11 10-18 июля 2018 г. в Любляне, Словения, - документ JVET-K1001-v4, включенный в настоящее описание путем ссылки и называемый JVET-K1001, представляет собой обновление JVET-J1001. Предлагаемые в каждом из JVET-J1001 и JVET-K1001 методики реализуют и оценивают с использованием тестовой модели (VTM) и набора эталонных критериев (BMS). Имеющийся в BMS фильтр деблокирования изменяет до трех выборок перпендикулярно краям.

[0195] «Связанный с CE2: многоотводный фильтр деблокирования», подготовленный на 11-м совещании ISO/IEC JTC1/SC29/WG11 10-18 июля 2018 г. в Любляне, Словения, - документ JVET-K0369-r3, который в настоящем документе называется JVET-K0369, в котором описывается фильтр деблокирования, изменяющий до семи выборок перпендикулярно деблокируемым краям. Чтобы ограничить размер буфера строк CTU, фильтр, описанный в JVET-K0369, дополнительно ограничивает операции фильтрации для горизонтальных краев, накладывающихся на границы CTU. В частности, в JVET-K0369 описан фильтр деблокирования, изменяющий значения выборки в соответствии с таблицей 8A и предусматривающий, для каких из горизонтальных краев, накладывающихся на границы CTU, фильтр деблокирования модифицируют, как показано в таблице 8B.

[0196] Следует отметить, что модификация фильтра деблокирования, предусмотренная в JVET-K0369 для горизонтальных краев, накладывающихся на границы CTU, не уменьшает требования к буферу строк для значений выборки цветности. Кроме того, как показано в таблице 8B, в дополнение к «обнулению» коэффициентов фильтра для p7-p4 значения коэффициентов фильтра изменяют для p3-q7. Таким образом, JVET-K0369 требует хранения дополнительных наборов фильтров, которые будут использованы для фильтрации границ CTU, что требует дополнительной памяти для хранения коэффициентов.

[0197] В одном примере в соответствии с методиками, описанными в настоящем документе, использование многоотводного фильтра, который может включать в себя фильтр, который модифицирует и/или имеет поддержку фильтра, включающую в себя по меньшей мере три или более строк от px,0 до px, i, может быть ограниченным. В одном примере для деблокирования яркости и/или цветности при выполнении следующего условия (EDGE_TYPE равно EDGE_HOR && текущая граница соответствует границе CTU), многоотводный фильтр не применяют для стороны P, где EDGE_TYPE равно EDGE_HOR означает, что текущая граница является горизонтальной границей. В одном примере для деблокирования яркости и/или цветности при выполнении следующего условия (EDGE_TYPE равно EDGE_HOR && curPos.y % CTUSize в выборках яркости == 0), многоотводный фильтр не применяют для P, где curPos.y - вертикальная позиция яркости текущего деблокируемого блока. В одном примере для деблокирования яркости и/или цветности при выполнении следующего условия (EDGE_TYPE равно EDGE_HOR && curPosC.y % CTUSize в выборках цветности == 0), многоотводный фильтр не применяют для P, где curPosC.y - вертикальная позиция цветности текущего деблокируемого блока. В одном примере для деблокирования яркости и/или цветности при выполнении следующего условия (EDGE_TYPE равно EDGE_HOR && текущая граница соответствует границе CTU), многоотводный фильтр не применяют для стороны Q и стороны P. В одном примере для деблокирования яркости и/или цветности при выполнении следующего условия (EDGE_TYPE равно EDGE_HOR && curPosC.y % CTUSize в выборках цветности == 0), многоотводный фильтр не применяют для стороны Q и стороны P. В одном примере для деблокирования яркости и/или цветности при выполнении следующего условия (EDGE_TYPE равно EDGE_HOR && curPosC.y % CTUSize в выборках цветности == 0), многоотводный фильтр не применяют для стороны Q и стороны P. В одном примере, когда многоотводный фильтр не применяют, используют другой фильтр, изменяющий меньшее количество выборок и/или включающий в себя поддержку фильтра с меньшим количеством строк от px,0 до px,1 (например, одну, две или три строки). Например, слабые или сильные фильтры, описанные в настоящем документе, можно применять, когда запрещено применение многоотводного фильтра. Следует отметить, что, как предусмотрено в ITU-T H.265, операнд % является операндом модуля, определяющего остаток деления x на y.

[0198] В одном примере, когда многоотводный фильтр не применяют, может быть запрещен доступ к значениям выборки, превышающим целевое пороговое значение буфера строк (например, три или четыре), и предварительно определенные значения могут быть использованы для соответствующих позиций выборки. В таблице 9 показан пример, в котором многоотводный фильтр включает в себя многоотводный фильтр, описанный выше со ссылкой на таблицу 8A, и целевое пороговое значение буфера строк равно четырем. Таким образом, значения выборок для p4-p7 недоступны. Как показано в таблице 9, значения для p4-p7 не модифицируют для деблокирования. Кроме того, как показано в таблице 9, для p4-p7 коэффициенты фильтра обозначены как NA, и это значит, что значение выборки для каждого из p4-p7 недоступно в буфере строк. В одном примере для каждого p4-p7 значение выборки может быть установлено равным значению выборки p3, и коэффициенты фильтра в таблице 8A могут быть использованы для получения модифицированного значения выборки для p3’-q2’.

Выходной пиксель Коэффициенты фильтра
{p7, p6, p5, p4, p3, p2, p1, p0, q0, q1, q2, q3, q4, q5, q6, q7}
Входные пиксели
P3 {NA, NA, NA, NA, 3, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0} p7-q3
P2 {NA, NA, NA, NA, 1, 3, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0} p7-q4
Pi' {NA, NA, NA, NA, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 0, 0} p7-q5
P0 {NA, NA, NA, NA, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 0} p7-q6
q0 {NA, NA, NA, NA, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1} p6-q7
q1 {NA, NA, NA, NA, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1} p5-q7
q2 {NA, NA, NA, NA, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 2} p4-q7
q3 {NA, NA, NA, NA, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 3} p3-q7
q4 {NA, NA, NA, NA, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4} p2-q7
q5 {NA, NA, NA, NA, 0, 0, 1, 1, 1, 1, 1, 1, 1, 3, 1, 5} p1-q7
q6 {NA, NA, NA, NA, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 3, 6} p0-q7

Таблица 9

[0199] В одном примере значения, полученные из доступных значений выборки, можно дополнительно использовать для соответствующих позиций выборки. В одном примере для каждого p4-p7 значение выборки может быть установлено равным среднему значению выборки p3 и p2, и коэффициенты фильтра в таблице 8A могут быть использованы для получения модифицированного значения выборки для p3’-q2’.

[0200] В одном примере, когда многоотводный фильтр не применяют, процесс фильтрации может быть изменен на основании позиции деблокируемой выборки (например, на основании того, находится ли значение выборки выше горизонтальной границы CTU ИЛИ на определенном расстоянии от горизонтальной границы CTU) и может быть выбран соответствующий фильтр, который не осуществляет доступ/деблокирование выборок за пределами целевого порогового значения буфера строк. Например, в отношении примера, проиллюстрированного в таблице 9, к p3’ и p2’ могут быть применены правила, отличные от получения значений выборки для p4-p7.

[0201] В одном примере, когда многоотводный фильтр не применяют, процесс управления может быть изменен на основании позиции деблокируемой выборки и может быть выбран соответствующий фильтр, который не осуществляет доступ/деблокирование выборок за пределами целевого порогового значения буфера строк. Например, могут быть выбраны фильтр (s=3, t=7) таблицы 1 для яркости, фильтр (s=3, t=5) таблицы 1 для яркости, F1P для яркости и/или слабый фильтр цветности для цветности.

[0202] В одном примере, когда многоотводный фильтр не применяют, сетка деблокирования может быть изменена, так что выборки за пределами целевого порогового значения буфера строк не будут доступны/деблокированы. Например, сетка деблокирования может быть перемещена таким образом, чтобы горизонтальный край находился на расстоянии 4 ниже горизонтального края CTU.

[0203] Как описано выше, в ITU-T H.265 на основании значений QP, используемых для кодирования CB, включая видеоблоки P и Q (которые могут называться QPP и QPQ), определяют переменные tC’ и β’. Вывод индекса Q для канала яркости описан выше. Для канала цветности ITU-T H.265 предусматривает следующее: если цветность равна 4:2:0, определяют переменную QpC, как указано в таблице, проиллюстрированной на ФИГ. 13, на основании индекса qPi следующим образом:

qPi = ((QPq+QpP+1)>> 1)+ cQpPicOffset,

где

cQpPicOffset - это переменная, определяющая смещение параметра квантования цветности на уровне изображения, и

cQpPicOffset=pps_cb_qp_offset для Cb, и

cQpPicOffset=pps_cr_qp_offset для Cr.

[0204] Следует отметить, что в ITU-T H.265, если формат цветности равен 4:2:2 или 4:4:4, QpC устанавливают равным Min(qPi, 51).

[0205] Для цветности tC’ определяют с использованием таблицы, приведенной на ФИГ. 6A, и индекса Q, определяемого следующим образом для tC’:

Q=Clip3(0, 53, Qpc+2 * + (slice_tc_offset_div2 << 1)).

[0206] Предложенные в каждом из JVET-J1001 и JVET-K1001 методики определяют, когда отдельные деревья разделения можно использовать для разделения каналов яркости и цветности. В случаях использования отдельных деревьев разделения для разделения каналов яркости и цветности может быть полезно увеличить число, на которое можно изменять значение QP для канала цветности по отношению к значению QP для канала яркости. Таким образом, например, соответствующие значения смещения QP, которые могут быть сигнализированы на уровне среза, могут быть увеличены для каждого компонента канала цветности. Следует отметить, что ITU-H.265 предусматривает следующие элементы синтаксиса смещения QP канала цветности:

pps_cb_qp_offset и pps_cr_qp_offset определяют смещения для параметра Qp'Y квантования яркости, используемого для получения Qp'Cb и Qp'Cr соответственно. Значения pps_cb_qp_offset и pps_cr_qp_offset должны находиться в диапазоне от -12 до +12 включительно. Когда ChromaArrayType равен 0, pps_cb_qp_offset и pps_cr_qp_offset не используют в процессе декодирования, и декодеры должны игнорировать их значение.

В slice_cb_qp_offset определяется разница, добавляемая к значению pps_cb_qp_offset при определении значения параметра квантования Qp’Cb. Значение slice_cb_qp_offset должно находиться в диапазоне от -12 до +12 включительно. Когда slice_cb_qp_offset отсутствует, предполагается, что он равен 0. Значение pps_cb_qp_offset+slice_cb_qp_offset должно находиться в диапазоне от -12 до +12 включительно.

В slice_cr_qp_offset определяется разница, добавляемая к значению pps_cr_qp_offset при определении значения параметра квантования Qp'Cr. Значение slice_cr_qp_offset должно находиться в диапазоне от -12 до +12 включительно. Когда slice_cr_qp_offset отсутствует, предполагается, что он равен 0. Значение pps_cr_qp_offset+slice_cr_qp_offset должно находиться в диапазоне от -12 до +12 включительно.

[0207] Изменения в получении значений QP цветности могут влиять на деблокирование канала цветности в случаях, когда параметры деблокирования основаны на значении QP. В соответствии с методиками, описанными в настоящем документе, получение параметров деблокирования на основании значения (значений) QP может быть изменено, например, в случаях, когда отдельные деревья разделения могут быть использованы для разделения каналов яркости и цветности.

[0208] В одном примере в соответствии с методиками, описанными в настоящем документе, cQpPicOffset можно выводить следующим образом:

cQpPicOffset=pps_cb_qp_offset+slice_cb_qp_offset для Cb и

cQpPicOffset=pps_cr_qp_offset+slice_cr_qp_offset для Cr.

[0209] В одном примере может быть сигнализировано значение смещения QP уровня цветности CU (например, при кодировании в режиме палитры). При получении QP цветности, используемого для деблокирования, можно использовать смещение QP цветности уровня CU. Например, если переменные CuQpOffsetCb и CuQpOffsetCr представляют смещение Cb и Cr, смещение QP цветности может быть получено следующим образом:

cQpPicOffset=pps_cb_qp_offset+slice_cb_qp_offset+CuQpOffsetCb для Cb;

cQpPicOffset=pps_cr_qp_offset+slice_cr_qp+CuQpOffsetCr смещение для Cr.

[0210] В некоторых случаях значение дополнительного смещения QP яркости и цветности можно использовать для блоков, подвергающихся некоторому типу обработки (например, адаптивное преобразование цвета). Эти смещения QP можно использовать для получения QP для яркости и цветности. В результате процессы деблокирования могут зависеть от дополнительных смещений QP яркости и цветности.

[0211] В некоторых примерах, когда отдельные деревья разделения используют для разделения каналов яркости и цветности, значение QP цветности может быть вычислено на основании типа дерева разделения. Например, в одном примере значение QP цветности может быть определено следующим образом:

qPi = ((QPblk_Q+QPblk_p+1) >> 1) + cQpPicOffset,

где Qpblk_P, Qpblk_Q являются параметрами квантования яркости, соответствующими блоку цветности на стороне P и блоку цветности на стороне Q соответственно.

[0212] В одном примере Qpblk_P и/или Qpblk_Q может быть получен из комбинации одного или более из: значений QP множества соответствующих блоков яркости; количества выборок блока яркости, соответствующего блоку цветности; значения QP яркости, соответствующего предварительно определенной позиции цветности. В некоторых примерах Qpblk_P и/или Qpblk_Q может быть получен с использованием функции, такой как, например, целочисленное усреднение с функцией округления, функция максимального значения. Следует отметить, что возможно наличие частичного блока яркости, соответствующего блоку цветности. На ФИГ. 14A-14B проиллюстрированы примеры возможных разделений яркости, соответствующих блокам цветности P и Q, причем каждый из блоков яркости имеет значения QP_X. В примере, приведенном на ФИГ. 14А, блок цветности P связан с блоками яркости, имеющими значения QP_1 и QP_3, и блок цветности Q связан с блоками яркости, имеющими значения QP_2 и QP_4. В примере, приведенном на ФИГ. 14B, блок цветности P связан с блоками яркости, имеющими значения QP_1, QP_3 и QP_5, и блок Q цветности связан с блоками яркости, имеющими значения QP_2 и QP_4. В одном примере для примера, приведенного на ФИГ. 14А, Qpblk_P и Qpblk_Q могут быть получены следующим образом.

QPbik_P = (QP_1+QP_3+l)>>l;

QPbik_Q = (QP_2+QP_4+1)>>l;

[0213] В одном примере для примера, приведенного на ФИГ. 14B, Qpblk_P и Qpblk_Q могут быть получены следующим образом.

QPbik_P = (QP_1+QP_5+2 * QP_3+2) >> 1;

QPbik_Q = (QP_2+QP_4+1)>>1.

[0214] В одном примере Qpblk_P и/или Qpblk_Q может быть получен путем определения набора положений цветности и определения для каждого положения цветности соответствующих положений яркости. Для каждого соответствующего положения яркости может быть определено соответствующее значение QP. Соответствующие значения QP можно использовать для получения Qpblk_P и/или Qpblk_Q.

[0215] Как описано выше, в одном примере условие более широкого сильного фильтра может включать в себя то, истинно и первое условие, и второе условие, причем первое условие может быть истинным, когда d < β, при этом d определяется следующим образом:

dp0=xCalcDP(Rc[0]);

dq0=xCalcDQ(Rc[0]));

dp1=xCalcDP(Rc[l]);

dq1=xCalcDQ(Rc[l]);

d0=dp0+dq0;

d1=dp1+dq1;

d=d0+dl,

где

RC[N] соответствует строкам цветности, перпендикулярным деблокируемому краю и расположенным на расстоянии N от вершины текущего деблокируемого сегмента цветности; и

[0216] в одном примере условие фильтра может включать в себя условие, которое является истинным, когда d < β, где d определяется следующим образом:

dp0=xCalcDP(Rc[0]);

dq0=xCalcDQ(Rc[0]));

d0=dp0+dq0;

d=d0+d1.

[0217] В некоторых примерах условие может быть проверено для x сегментов выборки границы деблокирования цветности (например, x=2). В худшем случае при этом уменьшается количество строк, для которых необходимо вычислить градиент. Следует отметить, что в худшем случае первое условие будет вычислять градиенты (xCalcDQP для каждой строки), тогда как вышеуказанное условие будет вычислять градиенты один раз каждые 2 строки.

[0218] Как описано выше, в ITU-T H.265 переменные β и tС используют для фильтрации решений и операций отсечения. Например, β и/или tС используют для определения, применяют ли сильный фильтр, и/или для отсечения отфильтрованных значений выборок. Следует отметить, что в JVET-K1001 пиковое отношение сигнал/шум (PSNR) выше, чем заданный уровень квантования, по сравнению с ITU-T H.265. Таким образом, в некоторых случаях может быть полезно изменять β и/или tС, чтобы изменять интенсивность деблокирования. Таким образом, если уровень искажения на заданном уровне квантования ниже, величина воспринимаемой блочности ниже, и, следовательно, требуется меньшее деблокирование. В одном примере β можно изменять следующим образом: β=β << n. В одном примере β можно изменять следующим образом: β=β >> n. В одном примере tC можно изменять следующим образом: tC=tC << n. В одном примере tC можно изменять следующим образом: tC=tC >> n. В одном примере n может быть определено на основании комбинации одного или более из: типа среза, значения QP, размера блока, глубины в битах, режима внутреннего прогнозирования, векторов движения (например, величина), типа канала и/или типа компонента. Например, в одном примере tC=tC >> 2 можно использовать для внутренних срезов, а tC=tC >> 4 - для внешних. В одном примере tC=tC >> 2 можно использовать для компонента яркости, а tC=tC >> 4 можно использовать для компонентов цветности.

[0219] «CE2-2.1.1: длинные фильтры деблокирования и исправления», 11-е совещание ISO/IEC JTC1/SC29/WG11 10-18 июля 2018 г. в Любляне, Словения, - документ JVET-K0307-v1, который называется в настоящем документе JVET-K0307, в котором описываются длинные фильтры и решения для компонента яркости. На основании описанных выше методик фильтрации методики фильтрации согласно JVET-K0307 могут быть модифицированы для обеспечения возможности использования длинных асимметричных фильтров. Для длинных асимметричных фильтров количество выборок, деблокированных на стороне большего блока, больше, чем на стороне меньшего блока. Процессы принятия решения о деблокировании для выбора из данного расширенного набора фильтров подробно описаны ниже. Расширенный набор фильтров можно использовать для сильного деблокирования в ходе всего деблокирования.

[0220] В одном примере в соответствии с методиками, описанными в настоящем документе, более сильные фильтры яркости используют, когда любая из сторон имеет большой блок и выполняется условие модифицированного сильного фильтра. В одном примере большой блок яркости соответствует ширине >= 32 для вертикального края и высоте >= 32 для горизонтального края.

[0221] В одном примере более сильный фильтр яркости может быть определен следующим образом.

Выборки границы блока pi и qi для i, равного от 0 до S-1, затем заменяют линейной интерполяцией следующим образом:

pi’ = (ft * Middles, t + (64 - fi) * Ps+32) >> 6), отсеченные до pi ± tC;

qi’ = (gt * Middles, t + (64- - gi) * Qt+32) >> 6), отсеченные до qi ± tC,

где fi, Middles, t, Ps и Qs приведены ниже в таблице 10:

7,7 (сторона p:
7,
сторона q: 7)
fi=59 - i * 9, может также быть описано как f = {59,50,41,32,23,14,5};
gi=59 - i * 9, может также быть описано как g = {59,50,41,32,23,14,5},
Middle7,7 =(2 * (p0+q0) + p1+q1+p2+q2+ p3+q3+p4+q4+p5+qs+p6+q6+8) >> 4;
P7 = (p6+p7+1)>> t, Q7 = (q6+q7+1) >> 1;
7,3
(сторона p: 7, сторона q: 3),
fi=59 - i * 9, может также быть описано как f = (59,50,41,32,23,14,5};
gi=53 - i * 21, может также быть описано как g = {53,32,11};
Middle7,3 = (2 * (p0+q0)+q0+2 * (q1+q2) + p1+q1+p2+p3+p4+p5+p6+8)>>4;
P7=p6+p7+1)>> 1, Q3 = (q2+q3+1) >> 1;
3, 7,
(сторона p: 3, сторона q: 7)
gi=59 - i * 9, может также быть описано как g = {59,50,41,32,23,14,5};
fi=53 - i * 21, может также быть описано как f = {53,32,11};
Middle3,7 = (2*(q0 +p0) + p0+2* (p1+p2) + q1+p1+q2+q3+q3+q4+q5+q6+8) >> 4,
Q7 = (q6+q7+1)>> 1, P3 = (p2+p3+1)>>1.

Таблица 10

[0222]

Следует отметить, что применение фильтров 7,7 к ступенчатой функции обеспечивает почти равномерно возрастающую линейную функцию. Однако применение фильтра 7,3 с Middle7,3 = (2 * (p0+q0) + q0+2 * (q1+q2) p1+q1+p2+p3+p4+p5+p6+8) >> 4 к ступенчатой функции может не обеспечивать почти равномерно возрастающую линейную функцию. В одном примере в соответствии с изложенными в настоящем документе методиками может быть использовано Middle7,3 = (2 * (p0+q0) + 2 * q0+3 * (p1+p2) + q1+p1+q2+q3+q4+q5+q6+8) >> 4 и Middle3,7 = (2 * (q0+p0) + 2 * p0+3 * (p1+p2) + q1+p1+q2+q3+q4+q5+q6+8) >> 4.

[0223] В одном примере процесс управления дополнительно основан на градиентах, вычисленных для двух строк четырех сегментов выборки; сравнении разности абсолютных значений пикселей с tС и сравнении других разностей абсолютных значений пикселей с β. Для стороны большого блока вычисляют большее число градиентов. Процесс управления может быть следующим:

1. Переменные dpq0, dpq3, dp, dq и d выводят следующим образом:

сначала dp0, dp3, dq0, dq3 выводят согласно ITU-T H.265;

затем dpq0, dpq3, dp, dq, d выводят в соответствии с ITU-T H.265.

Как и в ITU-T H.265, когда d меньше β, применяют следующие этапы в заданном порядке:

а. dpq определяют согласно ITU-T H.265;

b. определяют sp3=Abs(p3 - p0) согласно ITU-T H.265;

если (сторона p равна 32 или более),

sp3 = (sp3+Abs(p7 - p3) + 1) >> 1;

c. определяют sq3=Abs(q0 - q3) согласно ITU-T H.265;

если (сторона q равна 32 или более),

sq3 = (sq3+Abs(q7 - q3) + 1)>> 1;

d. определение согласно ITU-T H.265 StrongFilterCondition = (dpq меньше (β >> 2), sp3+sq3 меньше (сторона p или сторона q равна 32 или более)) ? (3 * β >> 5): (β >> 3) ) и Abs( p0 - q0) меньше (5 * tC+1) >> 1)? ИСТИНА : ЛОЖЬ.

e. если (сторона p или сторона q равна 32 или более),

dSp1, dSp2 устанавливают равными Abs(p3 - p0);

dSq1, dSq2 устанавливают равными Abs(q3 - q0);

если (сторона q равна 32 или более),

dSq1=abs(q4-2 * q2+q0);

dSq2=abs(q6-2 * q3+q0);

если (сторона p равна 32 или более),

dSp1=abs(p4-2 * p2+p0);

dSp2=abs(p6-2 * p3+p0);

d_strong1 и d_strong2 вычисляют следующим образом:

d_strong1=dSp1+dSq1;

d_strong2=dSp2+dSq2.

Вычисляют StrongFilterCondition = (StrongFilterCondition && ((d_strong1 < ((3 * beta) >> 5)) && (d_strong2 < ((3 * beta) >> 5)))) ? ИСТИНА : ЛОЖЬ.

f. когда значение StrongFilterCondition - ИСТИНА, используют более сильный фильтр яркости (может быть выбран на основании размеров блоков на границе края).

[0224] В одном примере процесс управления может быть следующим:

Переменные dpq0, dpq3, dp, dq и d выводят следующим образом:

сначала dp0, dp3, dq0, dq3 выводят согласно ITU-T H.265;

затем dpq0, dpq3, dp, dq, d выводят в соответствии с ITU-T H.265.

Как и в ITU-T H.265, когда d меньше β, применяют следующие этапы в заданном порядке:

dpq определяют согласно ITU-T H.265;

определяют sp3=Abs(p3 - p0) согласно ITU-T H.265;

если (сторона p равна 32 или более и сторона q равна 16 или более),

sp3 = (sp3+Abs(p7 - p3)+ 1)>> 1;

определяют sq3=Abs(q0 - q3) согласно ITU-T H.265;

если (сторона q равна 32 или более и сторона p равна 16 или более),

sq3 = (sq3+Abs(q7 - q3)+ 1)>> 1.

Согласно ITU-T H.265 определяют StrongFilterCondition = (dpq меньше (β >> 2), sp3+sq3 меньше (сторона p равна 32 или более && сторона q равна 16 или более) ИЛИ (сторона q равна 32 или более && сторона p равна 16 или более)) ? ( 3 * β >> 5 ): ((β >> 3 ) ), и

Abs(p0 - q0) меньше ( 5 * tC+1) >> 1) ? ИСТИНА : ЛОЖЬ.

[0225] Следует отметить, что в отношении описанных в настоящем документе процессов управления в некоторых примерах член (3 * β >> 5) может быть заменен членом (2 * β >> 5).

[0226] Следует отметить, что условия (сторона p равна 32 или более && сторона q равна 16 или более) и (сторона q равна 32 или более && сторона p равна 16 или более) определяют, можно ли применять более сильный фильтр яркости. Следует отметить, что в других примерах, чтобы определить, можно ли применять более сильный фильтр яркости, могут быть применены дополнительные условия (например, одно или более предшествующих условий). В одном примере дополнительные условия могут быть следующими:

Если (сторона p равна 32 или более && сторона q равна 16 или более) || (сторона q равна 32 или более & сторона p равна 16 или более); однако для (7,7, 7,3, 3,7) процесс принятия решения соответствует условию: (сторона p равна 32 или более || сторона q равна 32 или более). Идея состоит в выборе меньшего порогового значения 3 * β >> 5 вместо β >> 3, которое применяют для любого из этих более сильных фильтров яркости, предшествующих процессу принятия решения.

[0227] В одном примере в соответствии с методиками, описанными в настоящем документе, яркость может быть деблокирована в соответствии с сеткой выборки яркости 4 × 4 (или в некоторых примерах в соответствии с сеткой выборки яркости 8 × 8). В этом примере более сильные фильтры яркости, описанные выше как фильтр WS00P стороны P и фильтр WS00Q стороны Q, можно использовать для больших блоков, причем большой блок соответствует ширине >= 32 для вертикального края и высоте >= 32 для горизонтального края, а смежный блок равен 16 или более. Процесс управления может дополнительно быть основан на градиентах, вычисленных для двух строк 4 сегментов выборки; сравнении разности абсолютных значений пикселей с tC и сравнении других разностей абсолютных значений пикселей с β, как более подробно описано ниже. Кроме того, когда p0 принадлежит CTU выше текущего CTU, можно использовать следующий фильтр яркости с ограниченной поддержкой, представленный в таблице 8B выше.

[0228] В некоторых случаях подмножество выборок недоступно. В таких случаях может быть затронут процесс управления, использующий это подмножество выборок. Это может привести к возникновению асимметрии в вычислении градиента. В некоторых примерах в этом случае может быть использован другой процесс управления.

[0229] В одном примере процесс управления может быть следующим:

Переменные dpq0, dpq3, dp, dq и d выводят следующим образом:

сначала dp0, dp3, dq0, dq3 выводят согласно ITU-T H.265;

LongTapDeblocking = ((сторона p >= 32 && сторона q >=16) || (сторона p >= 16 && сторона q >=32))) ? ИСТИНА : ЛОЖЬ.

ControlSamplesAccessible=p0 принадлежит CTU выше текущего CTU ? ЛОЖЬ: ИСТИНА, если (LongTapDeblocking),

если (сторона p равна 32 или более && ControlSamplesAccessible),

dp0 = (dp0+Abs(p5,0-2 * p4,0+p3,0) + 1)>> 1;

dp3 = ( dp3+Abs(p5,3-2 * p4,3+p3,3) + 1)>> 1,

если (сторона q равна 32 или более),

dq0 = (dq0+Abs(q5,0-2 * q4,0+q3,0)+ 1)>> 1;

dq3 = ( dq3+Abs(q5,3 _2 * q4,3+q3,3) + 1)>> 1,

затем dpq0, dpq3, dp, dq, d выводят в соответствии с ITU-T H.265.

Как и в ITU-T H.265, когда d меньше p’, применяют следующие этапы в заданном порядке:

dpq определяют согласно ITU-T H.265;

определяют sp3=Abs(p3 - p0) согласно ITU-T H.265;

если (сторона p равна 32 или более && LongTapDeblocking && ControlSamplesAccessible),

sp3 = (sp3+Abs(p7 - p3) + 1) >> 1,

определяют sq3=Abs(q0 - q3) согласно ITU-T H.265;

если (сторона q равна 32 или более && LongTapDeblocking),

sq3 = (sq3+Abs(q7 - q3)+ 1) >> 1.

Согласно ITU-T H.265 определяют StrongFilterCondition = (dpq меньше (β >> 2), sp3+sq3 меньше (LongTapDeblocking) ? ( 3 * (β >> 5 ) : (β >> 3)) и Abs(p0 - q0) меньше (5 * tC+1) >> 1) ? ИСТИНА : ЛОЖЬ.

Когда значение StrongFilterCondition ИСТИННО и значение LongTapDeblocking ИСТИННО, на стороне с длиной, перпендикулярной краю границы, равной 32 или превышающей это значение, используют более сильный фильтр яркости;

в противном случае, когда значение StrongFilterCondition ИСТИННО, а значение LongTapDeblocking ЛОЖНО, используют другой сильный фильтр (например, сильный фильтр HEVC_P, HEVC_Q).

[0230] В одном примере пороговые значения, используемые в сравнениях, могут также быть основаны на положении. Например, они могут быть основаны на том, совмещается ли деблокируемый край с границей CTU.

[0231] В одном примере для сетки деблокирования яркости 4 × 4 может потребоваться одно из следующего:

когда ширина/высота блока равна 4 - для вертикального края/горизонтального края соответственно, и когда условие включения/выключения фильтра HEVC (т. е. d < бета, где d=d0+d3, и d0=dp0+dq0, и d3=dp3+dq3) оценивается как истина для соответствующего края, в этом способе принудительно применяют нормальный/слабый фильтр HEVC с модификацией максимум одной выборки. Поэтому проверяют следующее условие HEVC: |δ| < 10(tC), где δ = (9 * (q0 - p0) - 3 * (q1 - p1)) + 8 >> 4, и если условие оценивают как истину, выборки p0 и q0 модифицируют, в противном случае фильтрацию не применяют.

Когда ширина/высота блока равна 4 для вертикального края/горизонтального края соответственно, максимум три выборки используют в решении о фильтре, а фильтр изменяет только одну выборку, т. е. pi2 используют для замены pi3 в проверках условия сильного/слабого фильтра, и как сильному, так и слабому фильтру разрешено изменять только p0 и q0.

[0232] В одном примере в соответствии с методиками, описанными в настоящем документе, цветность может быть деблокирована в соответствии с сеткой выборки цветности 2 × 2 (или в некоторых примерах в соответствии с сеткой выборки яркости 4 × 4). В этом примере могут быть использованы фильтр HEVC_P стороны P и фильтр HEVC_Q стороны Q, описанные выше. Когда р0 принадлежит к CTU выше текущего CTU, можно дополнительно использовать слабый фильтр цветности, описанный выше как NW00P. В одном примере сильный фильтр можно использовать, когда условие сильного фильтра яркости HEVC, вычисленное для цветности, ИСТИННО, и выполняется любое из следующих условий:

- Тип края вертикальный, р0 принадлежит CU с шириной >= 16 (выборки цветности), и q0 принадлежит CU с шириной >= 16 (выборки цветности).

- Тип края горизонтальный, р0 принадлежит CU с высотой >= 16 (выборки цветности), и q0 принадлежит CU с высотой >= 16 (выборки цветности).

[0233] Как описано выше, в ITU-T H.265 для каждой границы определяют интенсивность границы (Bs) как одно из 0, 1 или 2. Как дополнительно описано выше, проект спецификации кодирования видеосигнала описан в VET-J1001 и JVET-K1001. «Универсальное кодирование видеосигналов (проект 3)», составленное на 12-м совещании ISO/IEC JTC1/SC29/WG11 3-12 октября 2018 г. в Макао, Китай, - документ JVET-K1001-v1, включенный в настоящий документ путем ссылки и называемый JVET-L1001, является обновлением для JVET-K1001. В JVET-L1001 в отношении определения значения интенсивности границы, значения bS[][], предусмотрено следующее:

Переменные xDi5 yDj, xN и yN получают следующим образом:

- Если edgeType равна EDGE_VER, xDi устанавливают равным (i << 3 ), yDj устанавливают равной (j << 2), xN устанавливают равной Max(0, (nCbW/8) - 1) и yN устанавливают равным (nCbH/4) - 1.

- В противном случае (edgeType равна EDGE_HOR), xDi устанавливают равной (i << 2), yDj устанавливают равной (j << 3), xN устанавливают равной (nCbW/4) - 1 и yN устанавливают равной Max(0, (nCbH/8) - 1).

Для xDi при i=0…xN и yDj при j=0…yN применяют следующее:

- Если edgeFlags[xDi][yDj] равно 0, переменную bS[xDi][yDj] устанавливают равной 0.

- В противном случае применяют следующее:

- Значения выборки p0 и q0 получают следующим образом:

- Если edgeType равна EDGE VER, p0 устанавливают равной recPicture[xCb+xDi - 1][yCb+yDj] и q0 устанавливают равной recPicture[xCb+xDi][yCb+yDj].

- В противном случае (edgeType равна EDGE HOR) p0 устанавливают равной recPicture[xCb+xDi][yCb+yDj - 1] и q0 устанавливают равной recPicture[xCb+xDi][yCb+yDj].

- Переменную bS[xDi] [yDj] получают следующим образом:

- Если выборка p0 или q0 находится в блоке кодирования для блока кодирования, кодированного с помощью режима внутреннего прогнозирования, bS[xDi] [yDj] устанавливают равной 2.

- В противном случае, если край блока также является краем блока преобразования и p0 или q0 находится в блоке преобразования, который содержит один или более ненулевых уровней коэффициентов преобразования, bS[xDi] [yDj] устанавливают равной 1.

- В противном случае, если одно или более из следующих условий истинны, bS[xDi] [yDj] устанавливают равной 1:

- для прогнозирования подблока кодирования, содержащего выборку p0, используют другие опорные кадры или другое количество векторов движения, чем для прогнозирования подблока кодирования, содержащего выборку q0.

- Один вектор движения используют для прогнозирования подблока кодирования, содержащего выборку p0, и один вектор движения используют для прогнозирования подблока кодирования, содержащего выборку q0, а абсолютная разность между горизонтальным или вертикальным компонентом используемых векторов движения равна 4 или более в единицах четвертных выборок яркости.

- Два вектора движения и два разных опорных кадра используют для прогнозирования подблока кодирования, содержащего выборку p0, два вектора движения для тех же самых двух опорных кадров используют для прогнозирования подблока кодирования, содержащего выборку q0, а абсолютная разность между горизонтальным или вертикальным компонентом двух векторов движения, используемых при прогнозировании двух подблоков кодирования для одного и того же опорного кадра, составляет 4 или более в единицах четвертных выборок яркости.

- Два вектора движения для одного и того же опорного кадра используют для прогнозирования подблока кодирования, содержащего выборку p0, два вектора движения для одного и того же опорного кадра используют для прогнозирования подблока кодирования, содержащего выборку q0, и оба следующих условия истинны:

- Абсолютная разность между горизонтальным или вертикальным компонентом векторов движения списка 0, используемых при прогнозировании двух подблоков кодирования, составляет 4 или более в четвертных выборках яркости, или абсолютная разность между горизонтальным или вертикальным компонентом векторов движения из списка 1, используемых при прогнозировании двух подблоков кодирования, составляет 4 или более в единицах четвертных выборок яркости.

- Абсолютная разность между горизонтальным или вертикальным компонентом вектора движения из списка 0, используемого при прогнозировании подблока кодирования, содержащего выборку p0, и вектора движения из списка 1, используемого при прогнозировании подблока кодирования, содержащего выборку q0, составляет 4 или более в единицах четвертных выборок яркости, или абсолютная разность между горизонтальным или вертикальным компонентом вектора движения списка 1, используемого при прогнозировании подблока кодирования, содержащего выборку p0, и вектором движения из списка 0, используемого при прогнозирования подблока кодирования, содержащего выборку q0, составляет 4 или более в единицах четвертных выборок яркости.

- В противном случае переменную bS[xDi] [yDj] устанавливают равной 0.

[0234] Что касается определения границ, в одном примере процесс получения границы блока преобразования может быть следующим:

Входные данные для этого процесса:

- местоположение (xB0, yB0), определяющее верхнюю левую выборку текущего блока относительно верхней левой выборки текущего блока кодирования,

- переменная nTbW, определяющая ширину текущего блока,

- переменная nTbH, определяющая высоту текущего блока,

- переменная treeType, определяющая, используют ли для разделения CTU одинарное дерево (SINGLE_TREE) или двойное дерево, и когда используют двойное дерево, обрабатывают ли в настоящее время яркость (DUAL_TREE_LUMA) или компоненты цветности (DUAL_TREE_CHROMA),

- переменная filterEdgeFlag,

- двумерный (nCbW) x (nCbH) массив edgeFlags, maxFilterLengthQ и maxFilterLengthP,

- переменная edgeType, указывающая на то, какой край отфильтрован: вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR).

В результате этого процесса получают двумерный (nCbW) x (nCbH) массив edgeFlags, maxLengthQ и maxLengthP.

Максимальный размер maxTbSize блока преобразования получают следующим образом:

maxTbSize = (treeType == DUAL_TREE_CHROMA) ? MaxTbSizeY/2 : MaxTbSizeY.

В зависимости от maxTbSize применяют следующее:

- Если nTbW больше maxTbSize или nTbH или больше maxTbSize, применяют следующие этапы в заданном порядке:

1. Переменные newTbW и newTbH получают следующим образом:

newTbW = (nTbW > maxTbSize) ? (nTbW/2 ) : nTbW;

newTbH = (nTbH > maxTbSize) ? (nTbH/2)' nTbH.

2. Процесс получения границы блока преобразования, который описан в данном пункте, запускают с местоположением (xB0, yB0), переменными nTbW, установленной равной newTbW, и nTbH, установленной равной newTbH, переменной filterEdgeFlag, массивом edgeFlags, maxFilterLengthQ, maxFilterLengthP и переменной edgeType в качестве входных данных, а в результате получают модифицированную версию массива edgeFlags, maxFilterLengthQ и maxFilterLengthP.

3. Если nTbW больше maxTbSize, процесс получения границы блока преобразования, который описан в данном пункте, запускают с местоположением яркости (xTb0, yTb0), установленным равным (xTb0+newTbW, yTb0), переменными nTbW, установленной равной newTbW, и nTbH, установленной равной newTbH, переменной filterEdgeFlag, массивом edgeFlags, maxFilterLengthQ, maxFilterLengthP и переменной edgeType в качестве входных данных, а в результате получают модифицированную версию массива edgeFlags, maxFilterLengthQ и maxFilterLengthP.

4. Если nTbH больше maxTbSize, процесс получения границы блока преобразования, который описан в данном пункте, запускают с местоположением яркости (xTb0, yTb0), установленным равным (xTb0, yTb0+newTbH), переменными nTbW, установленной равной newTbW, и nTbH, установленной равной newTbH, переменной filterEdgeFlag, массивом edgeFlags, maxFilterLengthQ, maxFilterLengthP и переменной edgeType в качестве входных данных, а в результате получают модифицированную версию массива edgeFlags, maxFilterLengthQ и maxFilterLengthP.

5. Если nTbW больше maxTbSize и nTbH больше maxTbSize, процесс получения границы блока преобразования, который описан в данном пункте, запускают с местоположением яркости (xTb0, yTb0), установленным равным (xTb0+newTbW, yTb0+newTbH), переменными nTbW, установленной равной newTbW, и nTbH, установленной равной newTbH, переменной filterEdgeFlag, массивом edgeFlags, maxFilterLengthQ, maxFilterLengthP и переменной edgeType в качестве входных данных, а в результате получают модифицированную версию массива edgeFlags, maxFilterLengthQ и maxFilterLengthP.

- В противном случае применяют следующее:

- Если edgeType равна EDGE_VER, значение edgeFlags[xB0][yB0+k] для k=0…nTbH - 1 получают следующим образом:

- Если xB0 равна 0, edgeFlags [xB0][yB0+k] устанавливают равной filterEdgeFlag.

- В противном случае edgeFlags[xB0][yB0+k] устанавливают равной 1.

- Если edgeFlags[xB0][yB0+k] равна 1

- Если nTbW {или «ширина в выборках яркости блока преобразования в положении яркости (xB0, yB0+k)»} составляет 32 или более,

maxFilterLengthQ[xB0][yB0+k] = 7.

- В противном случае maxFilterLengthQ[xB0][yB0+k] = 3.

- Если nTbW[xB0-1][yB0+k] {или «ширина в выборках яркости блока преобразования в положении яркости (xB0-1,yB0+k)»} составляет 32 или более, maxFilterLengthP[xB0][yB0+k] = 7.

- В противном случае maxFilterLengthP[xB0][yB0+k] = 3.

- Если edgeType равна EDGE_HOR и (yB0% CtbSizeY) равно 0, maxFilterLengthCbCr[xB0+k][yB0] = 1.

- В противном случае, если ширина в выборках цветности блока преобразования в положении цветности (xB0/SubWidthC, yB0/SubHeightC+k) составляет 8 или более и ширина в выборках цветности блока преобразования в положении цветности (xB0-1, yB0+k) составляет 8 или более,

maxFilterLengthCbCr[xB0/SubWidthtC][yB0/SubHeightC+k] = 3.

- В противном случае maxFilterLengthCbCr[xB0][yB0+k] = 1

В противном случае,

- если edgeType равна EDGE_HOR и (yB0% CtbSizeY) равно 0, maxFilterLengthCbCr[xB0+k][yB0] = 1.

- В противном случае, если ширина в выборках цветности блока преобразования в положении цветности (xB0, yB0+k) и положении цветности (xB0-1, yB0+k) составляет 8 или более, maxFilterLengthCbCr[xB0][yB0+k] = 3.

- В противном случае maxFilterLengthCbCr[xB0][yB0+k] = 1.

- В противном случае (edgeType равна EDGE_HOR) значение edgeFlags[xB0+k ][yB0] для k=0…nTbW - 1 получают следующим образом:

- Если yB0 равна 0, edgeFlags[xB0+k][yB0] устанавливают равной filterEdgeFlag.

- В противном случае edgeFlags[xB0+k][yB0] устанавливают равной 1.

- Если edgeFlags[xB0+k][yB0] равна 1, значение

maxFilterLengthQ[xB0+k][yB0][0], maxFilterLengthP[xB0+k][yB0][0] для k=0…nTbW - 1 получают следующим образом:

- Если nTbH {или «высота в выборках яркости блока преобразования в положении яркости (xB0, yB0+k)»} составляет 32 или более,

maxFilterLengthQ[xB0+k][yB0] = 7.

- В противном случае maxFilterLengthQ[xB0+k][yB0] = 3.

- Если nTbH[xB0+k][yB0-1] {или «высота в выборках яркости блока преобразования в положении яркости (xB0+k, yB0-1)»} составляет 32 или более, maxFilterLengthP[xB0+k][yB0] = 7.

- В противном случае maxFilterLengthP[xB0+k][yB0] = 3.

- Если edgeType равна EDGE_HOR и (yB0% CtbSizeY) равно 0,

maxFilterLengthCbCr[xB0+k] [yB0] = 1.

- В противном случае, если высота в выборках цветности блока преобразования в позиции яркости (xB0/SubWidthC+k, yB0/SubHeightC) равна 8 или более

- и высота в выборках цветности блока преобразования в позиции яркости (xB0/SubWidthtC+k; yB0/SubHeightC - 1) составляет 8 или более, maxFilterLengthCbCr[xB0/SubWidthC +k ][yB0/SubHeightC] = 3.

- В противном случае maxFilterLengthCbCr[xB0+k][yB0] = 1.

В противном случае,

- если edgeType равна EDGE_HOR и (yB0% CtbSizeY) равно 0, maxFilterLengthCbCr[xB0+k][yB0] = 1.

- В противном случае, если высота в выборках цветности блока преобразования в позиции цветности (xB0+k, yB0) и позиции цветности (XB0+k, yB0-1) составляет 8 или более, maxFilterLengthCbCr[xB0+k][yB0] = 3.

- В противном случае maxFilterLengthCbCr[xB0+k][yB0] = 1.

[0235] Что касается определения границ, в одном примере процесс получения границы подблока кодирования может быть следующим:

Входные данные для этого процесса:

- местоположение (xCb, yCb), определяющее верхнюю левую выборку текущего блока кодирования по отношению к верхней левой выборке текущего изображения;

- переменная nCbW, определяющая ширину текущего блока кодирования,

- переменная nCbH, определяющая высоту текущего блока кодирования,

- двумерный (nCbW) x (nCbH) массив edgeFlags, maxFilterLengthQ и maxFilterLengthP,

- переменная edgeType, указывающая на то, какой край отфильтрован: вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR).

В результате этого процесса получают двумерный (nCbW) x (nCbH) массив edgeFlags, maxFilterLengthQ и maxFilterLengthP.

Количество numSbX подблоков кодирования в горизонтальном направлении и количество numSbY подблоков кодирования в вертикальном направлении получают следующим образом:

- Если CuPredMode[xCb][yCb ] == MODE_INTRA, каждую из numSbX и numSbY устанавливают равными 1.

- В противном случае numSbX и numSbY устанавливают равными NumSbX[xCb][yCb] и NumSbY[xCb][yCb] соответственно.

Переменную implicitTU получают следующим образом:

Если nCbW больше maxTbSize, и nCbH больше maxTbSize, и cu_cbf равна 1, и maxTbSize составляет 32 или более, implicitTU устанавливают равной 1, в противном случае ее устанавливают равной 0.

Когда компонент является яркостью, в зависимости от значения edgeType применяют следующее:

- Если edgeType равна EDGE_VER и numSbX больше 1,

- для i=1…min((nCbW/8) - 1, numSbX - 1), k=0…nCbH - 1 применяют следующее:

Если edgeFlags[ i * Max(8, nCbW/numSbX)][k] = 1(8 861),

- для i=0…min((nCbW/8) - 1, numSbX - 1), k применяют следующее: 0…nCbH - 1:

Если edgeFlags[ i * Max(8, nCbW/numSbX)][k] равна 1,

- если i равно 0,

- если nCbW в местоположении (xCb - 1, yCb) составляет 32 или более,

если numSbX в местоположении (xCb - 1; yCb) больше 1,

maxFilterLen^tP[i * Max(8, nCbW/numSbX)][k] = 5.

В противном случае

maxFilterLengtP[i * Max(8, nCbW/numSbX)][k] = 7.

В противном случае

maxFilterLengtP[i * Max(8, nCbW/numSbX)][k] = 3.

- maxFilterLengtQ[i * Max(8, nCbW/numSbX)][k] = min(5, maxFilterLengtQ[i * Max(8, nCbW/numSbX )][k]).

- В противном случае, если i равно maxTbSize/8 и implicitTU равна 1,

maxFilterLengtPfi * Max(8, nCbW/numSbX)][k] = 5,

maxFilterLengtQ[i * Max(8, nCbW/numSbX)][k] = 5.

- В противном случае, если i равно 1 или nCbW/8-1 или (implicitTU равна 1 и (i равно (maxTbSize - 8) / 8 или (maxTbSize+8) / 8)),

maxTilterLengtPti * Max(8, nCbW/numSbX)][k] = 2,

maxFilterLengtQ[i * Max(8, nCbW/numSbX)][k] = 2.

- В противном случае

maxFilterLengtP[i * Max(8, nCbW/numSbX)][k] = 3,

maxFilterLengtQ[i * Max(8, nCbW/numSbX)][k] = 3.

- В противном случае, если edgeType равна EDGE_HOR и numSbY больше 1,

- для j=1…min((nCbH/8) - 1, numSbY - 1), k=0…nCbW - 1 применяют следующее:

Если edgeFlags[k][j * Max(8, nCbH/numSbY)] = 1,

- для j=0…min((nCbH/8 ) - 1, numSbY - 1), k=0…nCbW - 1 применяют следующее:

Если edgeFlags[k][j * Max(8, nCbH/numSbY)] равна 1

- Если j равно 0,

- если nCbH в местоположении (xCb, yCb - 1) составляет 32 или более,

если numSbY в местоположении (xCb; yCb - 1) больше 1,

maxFilterLengtP[k][j * Max(8, nCbH/numSbY)] = 5.

В противном случае

maxFiiterLengtP[k][j * Max(8, nCbH/numSbY)] = 7.

В противном случае

maxFilterLengtP[k][j * Max(8, nCbH/numSbY)] = 3.

- maxFilterLengtQ[k][j * Max(8, nCbH/numSbY)] = min(5, maxFilterLengtQ[k][j * Max(8, nCbH/numSbY)]).

- В противном случае, если j равно maxTbSize/8 и implicitTU равна 1,

maxFilterLengtP[k][j * Max(8, nCbH/numSbY)] = 5,

maxFilterLengtQ[k][j * Max(8, nCbH/numSbY)] = 5.

- В противном случае, если j равно 1 или nCbH/8-1 или (implicitTU равна 1 и

((maxTbSize - 8)/8 или (maxTbSize+8)/8)),

maxFilterLengtP[k][j * Max(8, nCbH/numSbY)] = 2,

maxFilterLengtQ[k][j * Max(8, nCbH/numSbY)] = 2.

- В противном случае

maxFilterLengtP[k][j * Max(8, nCbH/numSbY)] = 3, maxFilterLengtQ[k][j * Max(8, nCbH/numSbY)] = 3.

[0236] Как указано выше, в JVET-L1001 коэффициенты преобразования в блоке цветности не учитываются при получении интенсивности границы. Кроме того, в JVET-L1001 деблокирование цветности выполняют только тогда, когда интенсивность границы больше 1, и в ITU-T H.265 деблокирование цветности выполняют только тогда, когда интенсивность границы равна 2, что означает, что деблокирование цветности выполняют только тогда, когда блок на стороне P или на стороне Q является внутренним блоком. «CE11: многоотводный фильтр деблокирования для яркости и цветности (CE11.1.6)», 12-е собрание ISO/IEC JTC1/SC29/WG11 3-12 октября 2018 г., Макао, Китай, - документ JVET-L0327-v1, который называется в настоящем документе JVET-L0327, в котором описывается, где выполняют деблокирование цветности, когда интенсивность границы равна 2, или когда интенсивность границы равна 1 для большой границы блока, причем большая границы блока присутствует, когда размер блока как на стороне P, так и на стороне Q больше порогового значения. Следует отметить, что в JVET-L0327 получение интенсивности границы, как предусмотрено в ITU-T H.265, используют с дополнительным условием, что, когда текущий блок имеет ненулевые коэффициенты в текущем компоненте, интенсивность границы для блока при деблокировании текущего компонента будет больше 0. «CE11: многоотводные фильтры деблокирования для яркости и цветности (CE11.1.1) и как для яркости, так и для цветности (CE11.1.9)», 12-е собрание ISO/IEC JTC1/SC29/WG11 3-12 октября 2018 г., Макао, Китай, - документ JVET-L0072, который называется в настоящем документе JVET-L0072, в котором описывается, где выполняют деблокирование цветности, когда интенсивность границы равна 2, или когда интенсивность границы равна 1 для внешнего блока. Следует отметить, что в JVET-L0072 получение интенсивности границы, как предусмотрено в ITU-T H.265, используют с дополнительным условием, что, когда текущий блок имеет ненулевые коэффициенты в текущем компоненте, интенсивность границы для блока при деблокировании текущего компонента будет равна 1.

[0237] В соответствии с методиками, описанными в настоящем документе, в одном примере деблокирования цветности может быть выполнено только тогда, когда интенсивность границы равна 2 или интенсивность границы равна 1 и блок цветности на стороне P или на стороне Q имеет ненулевые коэффициенты. Получение интенсивности границы может быть выполнено так, как предусмотрено в ITU-T H.265 с нулем или дополнительными условиями, или так, как предусмотрено в JVET-L1001. В частности, деблокирование на блоке Cb (или Cr) может быть выполнено только тогда, когда интенсивность границы больше 1, или флаг cbf этого блока Cb (или Cr) ненулевой, или флаг cbf соседнего блока на стороне P этого блока Cb (или Cr) ненулевой (т. е. блок имеет по меньшей мере один ненулевой коэффициент).

[0238] В одном примере в соответствии с методиками, описанными в настоящем документе, интенсивность границы для цветности, ucBs, может быть получена следующим образом:

ucBS=0;

cbf=0;

if(TU::getCbf(tuQ, COMPONENT_Y) | | TU::getCbf(tuP, COMPONENT_Y)) cbf |= (1 << 0);

if(TU::getCbf(tuQ, COMPONENT_Cb) | | TU::getCbf(tuP, COMPONENT_Cb)) cbf |= (1 << 1);

if(TU::getCbf(tuQ, COMPONENT_Cr) | | TU::getCbf(tuP, COMPONENT_Cr)) cbf |= (1 << 2);

if (cbf)

ucBs=cbf+3;// отличается от случая с ucBS=2,

где

getCbf получает флаг cbf компонента (определенного вторым входным параметром) в TU (соответствующем первому параметру). Флаг cbf, равный 0, означает наличие ненулевых коэффициентов в TU для этого компонента;

A |= B представляет A=A | B, где=является операцией присваивания, а | является побитовой операцией ИЛИ; tuP и tuQ представляют TU для стороны P и Q соответственно для сегмента рассматриваемых выборок;

COMPONENT_Y, COMPONENT_Cb; COMPONENT_Cr представляют идентификаторы для компонентов Y, Cb и Cr соответственно.

[0239] Кроме того, в данном случае деблокирование цветности может быть выполнено следующим образом:

Когда (ucBs == 2 || (ucBs > 2 && (((ucBs - 3) >> (chromaldx+1))& 0×1))// chromaldx=0, когда компонент представляет собой Cb, и chromaldx=1, когда компонент представляет собой Cr,

деблокирование может быть выполнено.

В противном случае

деблокирование не может быть выполнено,

где

0×1 - шестнадцатеричная единица, а & - побитовая операция И.

[0240] В одном примере деблокирование цветности для вертикального края одинарного дерева может быть дополнительно выполнено следующим образом:

1. Переменную xN устанавливают равной Max(0, (nCbW/8) - 1), а переменную yN устанавливают равной Max(0, (nCbH/8) - 1).

2. Переменную edgeSpacing устанавливают равной 8/SubWidthC.

3. Переменную edgeSections устанавливают равной yN * (2/SubHeightC).

4. Для xDk, равной k * edgeSpacing при k=0…xN, и yDm, равной m << 2 при m=0…edgeSections, применяют следующее:

- когда (bS[xDk * SubWidthC][yDm * SubHeightC] равно 2 или (bS[xDk * SubWidthC][yDm * SubHeightC] равно 1 и nCbW (например, ширина в выборках цветности) для блока кодирования в обоих местоположениях (xCb/SubWidthC, yCb/SubHeightC) и (xCb/SubWidthC - 1, yCb/SubHeightC) составляет 8 или более)) и (((xCb/SubWidthC+xDk) >> 3) << 3) равно xCb/SubWidthC+xDk, применяют следующие этапы в заданном порядке:

a. Запускают процесс принятия решения для краев блоков, как определено ниже, с treeType, массивом recPicture выборок изображения, установленным равным массиву recPictureCb выборок цветностного изображения, местоположением (xCb/SubWidthC, yCb/SubHeightC) блока кодирования цветности, местоположением цветности (xDk, yDm) блока, переменной edgeType, установленной равной EDGE_VER, интенсивностью bS[xDk][yDm] фильтрации границы, и битовой глубиной bD, установленной равной BitDepthCb в качестве входных данных, и решениями dE, dEp и dEq и переменной tC в качестве выходных данных.

b. Запускают процесс фильтрации для краев блока цветности, как определено ниже, с массивом recPictureCb изображения цветности, местоположением (xCb/SubWidthC, yCb/SubHeightC) блока кодирования цветности, местоположением цветности (xDk, yDm) блока, переменной edgeType, установленной равной EDGE_VER, и переменной cQpPicOffset, установленной равной pps_cb_qp_offset, в качестве входных данных, и модифицированным массивом recPictureCb выборок цветностного изображения.

c. Запускают процесс принятия решения для краев блоков, как определено ниже, с treeType, массивом recPicture выборок изображения, установленным равным массиву recPictureCr выборок цветностного изображения, местоположением (xCb/SubWidthC, yCb/SubHeightC) блока кодирования цветности, местоположением цветности (xDk, yDm) блока, переменной edgeType, установленной равной EDGE_VER, интенсивностью bS[xDk][yDm] фильтрации границы, и битовой глубиной bD, установленной равной BitDepthCr в качестве входных данных, и решениями dE, dEp и dEq и переменной tC в качестве выходных данных.

d. Запускают процесс фильтрации для краев блока цветности, как определено ниже, с массивом recPictureCr изображения цветности, местоположением (xCb/SubWidthC, yCb/SubHeightC) блока кодирования цветности, местоположением цветности (xDk, yDm) блока, переменной edgeType, установленной равной EDGE_VER, и переменной cQpPicOffset, установленной равной pps_cr_qp_offset, в качестве входных данных, и модифицированным массивом recPictureCr выборок цветностного изображения в качестве выходных данных.

[0241] В одном примере деблокирование цветности для горизонтального края одинарного дерева может быть дополнительно выполнено следующим образом:

1. Переменную xN устанавливают равной Max(0, (nCbW/8) - 1), а переменную yN устанавливают равной Max(0, (nCbH/8) - 1).

2. Переменную edgeSpacing устанавливают равной 8/SubHeightC.

3. Переменную edgeSections устанавливают равной xN * (2/SubWidthC).

4. Для yDm, равной m * edgeSpacing при m=0…yN, и xDk, равно k << 2 при k=0…edgeSections, применяют следующее:

- Когда (bS[xDk * SubWidthC][yDm * SubHeightC] равно 2 или (bS[xDk * SubWidthC][yDm * SubHeightC] равно 1 и nCbH (например, высота в выборках цветности) для блока кодирования в обоих местоположениях (xCb/SubWidthC, yCb/SubHeightC) и (xCb/SubWidthC, yCb/SubHeightC - 1) составляет 8 или более)) и (((yCb/SubHeightC+yDm) >> 3) << 3) равно yCb/SubHeightC+yDm, применяют следующие этапы в заданном порядке:

a. Запускают процесс принятия решения для краев блоков, как определено ниже, с treeType, массивом recPicture выборок изображения, установленным равным массиву recPictureCb выборок цветностного изображения, местоположением (xCb/SubWidthC, yCb/SubHeightC) блока кодирования цветности, местоположением цветности (xDk, yDm) блока, переменной edgeType, установленной равной EDGE_HOR, интенсивностью bS[xDk][yDm] фильтрации границы, и битовой глубиной bD, установленной равной BitDepthCb в качестве входных данных, и решениями dE, dEp и dEq и переменной tC в качестве выходных данных.

b. Запускают процесс фильтрации для краев блока цветности, как определено ниже, с массивом recPictureCb изображения цветности, местоположением (xCb/SubWidthC, yCb/SubHeightC) блока кодирования цветности, местоположением цветности (xDk, yDm) блока, переменной edgeType, установленной равной EDGE_HOR, и переменной cQpPicOffset, установленной равной pps_cb_qp_offset в качестве входных данных, и модифицированным массивом recPictureCb выборок цветностного изображения в качестве выходных данных.

c. Запускают процесс принятия решения для краев блоков, как определено ниже, с treeType, массивом recPicture выборок изображения, установленным равным массиву recPictureCr выборок цветностного изображения, местоположением (xCb/SubWidthC, yCb/SubHeightC) блока кодирования цветности, местоположением цветности (xDk, yDm) блока, переменной edgeType, установленной равной EDGE_HOR, интенсивностью bS[xDk][yDm] фильтрации границы, и битовой глубиной bD, установленной равной BitDepthCr в качестве входных данных, и решениями dE, dEp и dEq и переменной tC в качестве выходных данных.

d. Запускают процесс фильтрации для краев блока цветности, как определено ниже, с массивом recPictureCr изображения цветности, местоположением (xCb/SubWidthC, yCb/SubHeightC) блока кодирования цветности, местоположением цветности (xDk, yDm) блока, переменной edgeType, установленной равной EDGE_HOR, и переменной cQpPicOffset, установленной равной pps_cr_qp_offset, в качестве входных данных, и модифицированным массивом recPictureCr выборок цветностного изображения в качестве выходных данных.

[0242] В одном примере процесс принятия решения для краев блока цветности может быть следующим:

Этот процесс запускают только тогда, когда переменная ChromaArrayType не равна 0.

Входные данные для этого процесса:

- массив s' выборок цветностного изображения,

- местоположение ( xCb, yCb ) цветности, определяющее левую верхнюю выборку текущего блока кодирования цветности относительно верхней левой выборки цветности текущего изображения,

- местоположение (xB1, yB1) цветности, определяющее верхнюю левую выборку текущего блока цветности относительно верхней левой выборки текущего блока кодирования цветности,

- переменная edgeType, указывающая на то, какой край отфильтрован: вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR),

- переменная cQpPicOffset, определяющая смещение параметра квантования цветности на уровне изображения.

Выходные данные этого процесса:

- переменные dE, dEp и dEq, содержащие решения,

- переменная tC.

Если edgeType равна EDGE_VER, значения pi и qi при i=0…1 и k=0…3 получают следующим образом:

qi, k=s'[xCb+xB1+i][yCb+yB1+k],

pi, k=s'[xCb+xB1-i-1][yCb+yB1+k].

В противном случае (edgeType равна EDGE_HOR) значения pi и qi выборки при i=0…1 и k=0…3 выводят следующим образом:

qi, k=s'[xCb+xB1+k][yCb+yB1+i],

pi, k=s'[xCb+xB1+k][yCb+yB1-i-1]

Переменные QpQ и QpP устанавливают равными значениям QpY блоков кодирования, которые включают блоки кодирования, содержащие выборку q0,0 и p0,0 соответственно.

Если ChromaArrayType равна 1, переменную QpC определяют как указано в таблице, показанной на ФИГ. 6B, на основании индекса qPi, полученного следующим образом:

qPi = ((QpQ+QpP+1) >> 1) + cQpPicOffset

В противном случае (ChromaArrayType больше 1) переменную Qpc устанавливают равной Min(qPi, 63).

Значение переменной tC' определяют так, как указано в таблице, показанной на ФИГ. 6B, на основании параметра Q квантования цветности, полученного следующим образом:

Q=Clip3(0, 65, QpC+2 + (slice_tc_offset_div2 << 1)),

где slice_tc_offset_div2 представляет собой значение элемента slice_tc_offset_div2 синтаксиса для среза, который содержит выборку q0,0.

Переменную tC получают следующим образом:

- tC=tC' * (1 << (BitDepthC - 8))

В зависимости от значения edgeType применяют следующее:

- если edgeType равна EDGE_VER, применяют следующие этапы в заданном порядке:

1. Переменные dpq0, dpq1, dp, dq и d выводят следующим образом:

dp0=Abs(p2,0-2 * p1,0+p0,0);

dp1=Abs(p2,1-2 * p1,1+p0,1);

dq0=Abs(q2,0-2 * p1,0+p0,0);

dq1=Abs(q2,1-2 * p1,1+p0,1);

dpq0=dp0+dq0;

dpq1=dp1+dq1;

dp=dp0+dp1;

dq=dq0+dq1;

d=dpq0+dpq1.

2. Переменные dE, dEp и dEq устанавливают равными 0.

3. Когда d меньше β, применяют следующие этапы в заданном порядке:

a. Переменную dpq устанавливают равной 2 * dpq0.

b. Для местоположения (xCb+xB1, yCb+yB1) выборки запускают процесс принятия решения для выборки цветности, как определено ниже, со значениями p0,0, p3,0, q0,0 и q3,0 выборок, переменными dpq, β и tC в качестве входных данных и результат присваивают решению dSam0.

c. Переменную dpq устанавливают равной 2 * dpq1.

d. Для местоположения (xCb+xB1, yCb+yB1+3) выборки запускают процесс принятия решения для выборки цветности, как определено ниже, со значениями p0,1, p3,1, q0,1 и q3,1 выборок, переменными dpq, β и tC в качестве входных данных и результат присваивают решению dSam1.

e. Переменную dE устанавливают равной 1.

f. Когда dSam0 равна 1 и dSam1 равна 1, переменную dE устанавливают равной 2.

g. Когда dp меньше (β + (β >> 1)) >> 3, переменную dEp устанавливают равной 1.

h. Когда dq меньше (β + (β >> 1)) >> 3, переменную dEq устанавливают равной 1.

- В противном случае (edgeType равна EDGE_HOR) применяют следующие этапы в заданном порядке:

1. Переменные dpq0, dpq3, dp, dq и d выводят следующим образом:

dp0=Abs(p2,0-2 * p1,0+p0,0);

dp1=Abs(p2,1-2 * p1,1+p0,1);

dq0=Abs(q2,0-2 * p1,0+p0,0);

dq3=Abs(q2,1-2 * q1,1+q0,1);

dpq0=dp0+dq0;

dpq1=dp1+dq1;

dp=dp0+dp1;

dq=dq0+dq1;

d=dpq0+dpq1.

2. Переменные dE, dEp и dEq устанавливают равными 0.

3. Когда d меньше β, применяют следующие этапы в заданном порядке:

a. Переменную dpq устанавливают равной 2 * dpq0.

b. Для местоположения (xCb+xB1, yCb+yB1) выборки запускают процесс принятия решения для выборки цветности, как определено ниже, со значениями p0,0, p1,0, q0,0 и q1,0 выборок, переменными dpq, β и tC в качестве входных данных и результат присваивают решению dSam0.

c. Переменную dpq устанавливают равной 2 * dpq1.

d. Для местоположения (xCb+xB1+3, yCb+yB1) выборки запускают процесс принятия решения для выборки цветности, как определено ниже, со значениями p0,1, p3,1, q0,1 и q3,1 выборок, переменными dpq, β и tC в качестве входных данных и результат присваивают решению dSam1.

e. Переменную dE устанавливают равной 1.

f. Когда dSam0 равна 1 и dSam1 равна 1, переменную dE устанавливают равной 2.

g. Когда dp меньше (β + (β >> 1)) >> 3, переменную dEp устанавливают равной 1.

Когда dq меньше (β + (β >> 1)) >> 3, переменную dEq устанавливают равной 1.

[0243] В одном примере процесс принятия решения для выборки цветности может быть следующим:

Входные данные для этого процесса:

- значения p0, p3, q0 и q3 выборок,

- переменные dpq, β и tC.

В результате после этого процесса получают переменную dSam, содержащую решение.

Переменную dSam определяют следующим образом:

- Если dpq меньше (β >> 2), Abs(p3 - p 0) + Abs(q0 - q3) меньше (β >> 3) и Abs(p0 - q0) меньше (5 * tC+1) >> 1, dSam устанавливают равной 1.

- В противном случае dSam устанавливают равной 0.

[0244] В одном примере процесс фильтрации для краев блока цветности может быть следующим:

Этот процесс запускают только тогда, когда переменная ChromaArrayType не равна 0.

Входные данные для этого процесса:

- массив s' выборок цветностного изображения,

- местоположение (xCb, yCb) цветности, определяющее верхнюю левую выборку текущего блока кодирования цветности по отношению к верхней левой выборке цветности текущего изображения,

- местоположение (xB1, yB1) цветности, определяющее верхнюю левую выборку текущего блока цветности относительно верхней левой выборки текущего блока кодирования цветности,

- переменная edgeType, указывающая на то, какой край отфильтрован: вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR),

- переменная cQpPicOffset, определяющая смещение параметра квантования цветности на уровне изображения. В результате после этого процесса получают модифицированный массив s' выборок цветностного изображения.

В зависимости от значения edgeType применяют следующее:

- Если edgeType равна EDGE_VER, для каждого местоположения (xCb+Xb1, yCb+yB1+k), k=0…3 применяют следующие этапы в заданном порядке:

1. Запускают процесс фильтрации для выборки цветности, как определено ниже, со значениями pi, k, qi, k выборки при i=0…1, местоположениями (xCb+xB1-1, yCb+yB1+k) и (xCb+xB1, yCb+yB1+k) и переменной tC в качестве входных данных и отфильтрованными значениями p0' и q0' выборки в качестве выходных данных.

2. Отфильтрованные значения p0’ и q0’ выборки заменяют соответствующими выборками внутри массива s’ выборок следующим образом:

s'[xCb+xB1][yCb+yB1+k] = q0';

s'[xCb+xB1-1][ yCb+yB1+k] = p0'.

- В противном случае (edgeType равна EDGE_HOR) для каждого местоположения (xCb+xB1+k, yCb+yB1), k=0…3, применяют следующие этапы в заданном порядке:

1. Запускают процесс фильтрации для выборки цветности, как определено ниже, со значениями pi, k, qi, k выборки при i=0…1, местоположениями (xCb+xB1 +k, yCb+yB1-1) и (xCb+xB1+k, yCb+yB1) и переменной tC в качестве входных данных и отфильтрованными значениями p0' и q0' выборки в качестве выходных данных.

2. Отфильтрованные значения p0' и q0' выборки заменяют соответствующими выборками внутри массива s’ выборок следующим образом:

s'[xCb+xB1+k][yCb+yB1] = q0';

s'[xCb+xB1+k ][yCb+yB1-1] = p0'

[0245] В одном примере процесс фильтрации для выборки цветности может быть следующим:

Этот процесс запускают только тогда, когда переменная ChromaArrayType не равна 0.

Входные данные для этого процесса:

- значения pi и qi выборки цветности при i=0…3,

- местоположения цветности pi и qi, (xPi, yPi) и (xQi, yQi),

- переменная tC.

Выходные данные этого процесса:

- количество nDp и nDq отфильтрованных выборок,

- отфильтрованные значения pi' и qj' выборок при i=0…nDp - 1, j=0…nDq - 1.

В зависимости от значения dE применяют следующее:

- Если переменная dE равна 2, каждую из nDp и nDq устанавливают равными 3 и применяют следующую сильную фильтрацию:

p0' = Clip3(p0 - tC, p0+tC, (p3+p2+p1+2 * p0+q0+q1+q2+4) >> 3);

p1' = Clip3(p1 - tC, p1+tC, (2 * p3+p2+2 * p1+p0+q0+q1+4) >> 3);

p2' = Clip3(p2 - tC, p2+tC, (3 * p3+2 * p2+p1+p0+q0+4) >> 3);

q0' = Clip3(q0 - tC, q0+tC, (p2+ p1+p0+2 * q0+q1+q2+q3+4) >> 3);

q1' = Clip3(q1 - tC, q1+tC, (p1+p0+q0+2 * q1+q2+2 * q3+4) >> 3);

q2'= Clip3(q2 - tC, q2+tC, (p0+q0+q1+2 * q2+3 * q3+4) >> 3).

- В противном случае каждую из nDp и nDq устанавливают равными 0 и применяют следующую слабую фильтрацию:Δ=Clip3(-tC, tC,((((q0 - p0) << 2) + p1 - q1+4) >> 3));

p0' = Clip1C(p0+Δ);

q0' = Clip1C(q0 - Δ).

[0246] В одном примере деблокирование яркости для вертикального края может быть дополнительно выполнено следующим образом:

Когда treeType равна SINGLE_TREE или DUAL_TREE_LUMA, процесс фильтрации для краев в блоке кодирования яркости текущего блока кодирования состоит из следующих этапов в заданном порядке:

1. Переменную xN устанавливают равной Max(0, (nCbW/8) - 1), а переменную yN устанавливают равной (nCbH/4) - 1.

2. Для xDk, равной k << 3 при k= 0…nN, и yDm, равной << 2 при m=0…yN, применяют следующее:

- Когда bS[xDk][yDm] больше 0, применяют следующие этапы в заданном порядке:

a. Запускают процесс принятия решения для краев блоков, как определено в пункте ниже, с treeType, массивом recPicture выборок изображения, установленным равным массиву recPictureL выборок яркостного изображения, местоположением (xCb, yCb) блока кодирования яркости, местоположением яркости (xDk, yDm) блока, переменной edgeType, установленной равной EDGE_VER, интенсивностью bS[xDk][yDm] фильтрации границы, максимальными длинами maxFilterLengthP[xDk][yDm] и maxFilterLengthQ[xDk][yDm] границы и битовой глубиной bD, установленной равной BitDepthY, в качестве входных данных и решениями dE, dEp и dEq, максимальными длинами maxFilterLengthP и maxFilterLengthQ фильтра и переменной tC в качестве выходных данных.

b. Запускают процесс фильтрации для краев блока, как определено в пункте ниже, с массивом recPicture выборок изображения, установленным равным массиву recPictureL выборок яркостного изображения, местоположением (xCb, yCb) блока кодирования яркости, местоположением яркости блока (xDk, yDm), переменной edgeType, установленной равной EDGE_VER, решениями dE, dEp и dEq, максимальными длинами maxFilterLengthP и maxFilterLengthQ фильтра и переменной tC в качестве входных данных и модифицированного массива recPictureL выборок яркостного изображения в качестве выходных данных.

[0247] В одном примере деблокирование яркости для горизонтального края может быть дополнительно выполнено следующим образом:

Когда treeType равна SINGLE_TREE или DUAL_TREE_LUMA, процесс фильтрации для краев в блоке кодирования яркости текущего блока кодирования состоит из следующих этапов в заданном порядке:

1. Переменную yN устанавливают равной Max(0, (nCbH/8) - 1), а переменную xN устанавливают равной (nCbW/4) - 1.

2. Для yDm, равной m << 3 при m=0…yN, и xDk, равной k << 2 при k=0…xN, применяют следующее:

- Когда bS[xDk][yDm] больше 0, применяют следующие этапы в заданном порядке:

a. Запускают процесс принятия решения для краев блоков, как определено ниже, с treeType, массивом recPicture выборок изображения, установленным равным массиву recPictureL выборок яркостного изображения, местоположением (xCb, yCb) блока кодирования яркости, местоположением яркости (xDk, yDm) блока, переменной edgeType, установленной равной EDGE_HOR, интенсивностью bS[xDk][yDm] фильтрации границы, максимальными длинами maxFilterLengthP[xDk][yDm] и maxFilterLengthQ[xDk][yDm] границы и битовой глубиной bD, установленной равной BitDepthY, в качестве входных данных и решениями dE, dEp и dEq, максимальными длинами maxFilterLengthP и maxFilterLengthQ фильтра и переменной tC в качестве выходных данных.

b. Запускают процесс фильтрации для краев блока, как определено ниже, с массивом recPicture выборок изображения, установленным равным массиву recPictureL выборок яркостного изображения, местоположением (xCb, yCb) блока кодирования яркости, местоположением яркости блока (xDk, yDm), переменной edgeType, установленной равной EDGE_HOR, решениями dEp, dEp и dEq, максимальными длинами maxFilterLengthP и maxFilterLengthQ фильтра и переменной tC в качестве входных данных и модифицированного массива recPictureL выборок яркостного изображения в качестве выходных данных.

[0248] В одном примере процесс принятия решения для краев блока яркости может быть следующим:

Входные данные для этого процесса:

- переменная treeType, определяющая, используют ли для разделения CTU одинарное дерево (SINGLE_TREE) или двойное дерево, и когда используют двойное дерево, обрабатывают ли в настоящее время яркость (DUAL_TREE_LUMA) или компоненты цветности (DUAL_TREE_CHROMA),

- массив recPicture выборок изображения,

- местоположение (xCb, yCb), определяющее верхнюю левую выборку текущего блока кодирования по отношению к верхней левой выборке текущего изображения;

- местоположение (xB1, yB1), определяющее верхнюю левую выборку текущего блока кодирования яркости по отношению к верхней левой выборке яркости текущего изображения;

- переменная edgeType, указывающая на то, какой край отфильтрован: вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR),

- переменная bS, определяющая интенсивность фильтрации границы,

- переменная maxFilterLengthP, определяющая максимальную длину фильтра на стороне P,

- переменная maxFilterLengthQ, определяющая максимальную длину фильтра на стороне Q,

- переменная bD, определяющая битовую глубину текущего компонента.

Выходные данные этого процесса:

- переменные dE, dEp и dEq, содержащие решения,

- переменные maxFilterLengthP и maxFilterLengthQ с модифицированными длинами фильтров для сторон P и Q соответственно,

- переменная tC.

Если edgeType равна EDGE_VER, значения pi, k и qj, k выборок при i=0…maxFilterLengthP, j=0…maxFilterLengthQ и k=0 и 3 получают следующим образом:

qi, k=recPictureL[xCb+xB1+i ][yCb+yB1+k];

pi, k=recPictureL[xCb+xB1-i-1][yCb+yB1+k].

В противном случае (edgeType равна EDGE_HOR), значения pi, k и qj, k выборок при i=0…maxFilterLengthP, j=0…maxFilterLengthQ и k=0 и 3 получают следующим образом:

qi, k=recPicture[xCb+xB1+k][yCb+yB1+i];

pi, k=recPicture[xCb+xB1+ k][yCb+yB1-i-1].

Переменную qpOffset получают следующим образом:

- Если sps_ladf_enabled_flag равен 1 и treeType равна SINGLE_TREE или DUAL_TREE_LUMA, применяют следующее:

- Получают переменную lumaLevel реконструированного уровня яркости следующим образом:

lumaLevel = ((p0,0+p0,3+q0,0+q0,3) >> 2).

- Переменную qpOffset устанавливают равной sps_ladf_lowest_interval_qp_offset и модифицируют следующим образом:

for(i=0; i<sps_num_ladf_intervals_minus2+1; i++ ) {

if(lumaLevel > SpsLadfIntervalLowerBound[i+1]) qpOffset=sps_ladf_qp_offset[i]

else

break

}

- В противном случае (treeType равна DUAL_TREE_CHROMA) qpOffset устанавливают равной 0. Получают переменные QPQ и Qpp следующим образом:

- Если treeType равна SINGLE_TREE или DUAL_TREE_LUMA, QpQ и Qpp устанавливают равными значениям QpY блоков кодирования, которые включают блоки кодирования, содержащие выборку q0,0 и p0,0 соответственно.

- В противном случае (treeType равна DUAL_TREE_CHROMA) QpQ и Qpp устанавливают равными значениям QpC блоков кодирования, которые включают блоки кодирования, содержащие выборку q0,0 и p0,0 соответственно.

Переменную qP получают следующим образом:

qP = ((QpQ+Qpp+1) >> 1) + qpOffset

Значение переменной ß' определяют так, как указано в таблице 8-18, на основании параметра Q квантования цветности, полученного следующим образом:

Q=Clip3(0, 63, qP + (slice_beta_offset_div2 << 1)),

где slice_beta_offset_div2 представляет собой значение элемента slice_beta_offset_div2 синтаксиса для среза, содержащего выборку q0,0.

Переменную β получают следующим образом:

β=β' * (1 << (bD - 8))

Значение переменной tC' определяют так, как указано в таблице, показанной на ФИГ. 6B, на основании параметра Q квантования, полученного следующим образом:

Q=Clip3(0, 65, qP+2 * (bS - 1) + (slice_tc_offset_div2 << 1)),

где slice_tc_offset_div2 представляет собой значение элемента slice_tc_offset_div2 синтаксиса для среза, содержащего выборку q0,0.

Переменную tC получают следующим образом:

tC=tC' * ( 1 << (bD - 8))

В зависимости от значения edgeType применяют следующее:

- Если edgeType равна EDGE_VER, применяют следующие этапы в заданном порядке:

1. Переменные dp0, dp3, dq0 и dq3 получают следующим образом:

dp0=Abs(p2,0-2 * p1,0+p0,0);

dp3=Abs(p2,3-2 * p1,3+p0,3);

dq0=Abs(q2,0-2 * q1,0+q0,0);

dq3=Abs(q2,3-2 * q1,3+q0,3).

2. Переменные bSidePisLargeBlk и bSideQisLargeBlk получают следующим образом:

Если p0,0 принадлежит блоку кодирования с шириной в выборках яркости, равной 32 или более, bSidePisLargeBlk устанавливают равной 1, в противном случае bSidePisLargeBlk устанавливают равной 0.

Если q0,0 принадлежит блоку кодирования с шириной в выборках яркости, равной 32 или более, bSideQisLargeBlk устанавливают равной 1, в противном случае bSideQisLargeBlk устанавливают равной 0.

3. Если обе bSidePisLargeBlk и bSideQisLargeBlk равны 0, переходят к этапу 6.

4. Переменные dpq0L, dpq3L и dL получают следующим образом:

Если bSidePisLargeBlk равна 1,

dp0L = (dp0+Abs(p5,0-2 * p4,0+p3,0) + 1) >> 1;

dp3L = (dp3+Abs(p5,3-2 * p4,3+p3,3) + 1) >> 1.

В противном случае

dp0L=dp0;

dp3L=dp3.

Если bSideQisLargeBlk равна 1,

dq0L = (dq0+Abs(q5,0-2 * q4,0+q3,0) + 1) >> 1;

dq3L = (dq3+Abs(q5,3-2 * q4,3+q3,3) + 1) >> 1.

В противном случае

dq0L=dq0;

dq3L=dq3;

dpq0L=dp0L+dq0L;

dpq3L=dp3L+dq3L;

dL=dpq0L+dpq3L.

5. Если dL меньше β, применяют следующие этапы в заданном порядке, в противном случае переходят к этапу 6:

a. Переменную dpq устанавливают равной 2 * dpq0L.

b. Переменные sp0, sq0 и spq0 получают следующим образом:

sp0=Abs(p3,0 - p0,0);

sq0=Abs(q0,0 - q3,0);

spq0=Abs(p0,0 - q0,0).

c. Переменную sp устанавливают равной sp0, переменную sq устанавливают равной sq0 и переменную spq устанавливают равной spq0.

d. Когда bSidePisLargeBlk равна 1 или bSidePisLargeBlk равна 1, значения p0, p3, q0 и q3 выборки получают следующим образом:

Если bSidePisLargeBlk

p3=p0,3;

p0=p0,maxFilterLengthP;

Если bSideQisLargeBlk

q3=q0,3;

q0=q0,maxFilterLengthQ.

В противном случае p0, p3, q0 и q3 устанавливают равными 0.

e. Для местоположения (xCb+xB1, yCb+yB1) выборки запускают процесс принятия решения для выборки, как определено ниже, со значениями p0, p3, q0 и q3 выборок, переменными dpq, sp, sq, spq, bSidePisLargeBlk, bSideQisLargcBlk, β и tC в качестве входных данных и результат присваивают решению dSam0.

f. Переменную dpq устанавливают равной 2 * dpq3L.

g. Переменные sp3, sq3 и spq3 получают следующим образом:

sp3=Abs(p3,3 - p0,3);

sq3=Abs(q0,3 - q3,3);

spq3=Abs(p0,3 - q0,3).

h. Переменную sp устанавливают равной sp3, переменную sq устанавливают равной sq3 и переменную spq устанавливают равной spq3.

i. Когда bSidePisLargeBlk равна 1 или bSidePisLargeBlk равна 1, значения p0, p3, q0 и q3 выборки получают следующим образом:

Если bSidePisLargeBlk

p3=p3,3;

p0=p3,maxFilterLengthP;

Если bSideQisLargeBlk

q3=q3,3;

q0=q3,maxFilterLengthQ.

В противном случае p0, p3, q0 и q3 устанавливают равными 0.

j. Для местоположения (xCb+xB1, yCb+yB1+3) выборки запускают процесс принятия решения для выборки, как определено ниже, со значениями p0, p3, q0 и q3 выборок, переменными dpq, sp, sq, spq, bSidePisLargeBlk, bSideQisLargcBlk, β и tC в качестве входных данных и результат присваивают решению dSam3.

k. Когда dSam0 равна 1 и dSam3 равна 1, переменную dE устанавливают равной 3 и пропускают этапы 6-8.

6. Переменные maxFilterLengthP, maxFilterLengthQ, dpq0, dpq3, dp, dq и d получают следующим образом:

dpq0=dp0+dq0;

dpq3=dp3+dq3;

dp=dp0+dp3;

dq=dq0+dq3;

d=dpq0+dpq3.

maxFilterLengthP=3;

maxFilterLengthQ=3.

7. Переменные dE, dEp и dEq устанавливают равными 0.

8. Когда d меньше β, применяют следующие этапы в заданном порядке:

a. Переменную dpq устанавливают равной 2 * dpq0.

b. Для местоположения (xCb+xB1, yCb+yB1) выборки запускают процесс принятия решения для выборки, как определено ниже, со значениями 0, 0, 0 и 0 выборок, переменными dpq, sp, sq, spq, bSidePisLargeBlk, bSideQisLargcBlk, β и tC в качестве входных данных и результат присваивают решению dSam0.

c. Переменную dpq устанавливают равной 2 * dpq3.

d. Для местоположения (xCb+xB1, yCb+yB1+3) выборки запускают процесс принятия решения для выборки, как определено ниже, со значениями 0, 0, 0 и 0 выборок, переменными dpq, sp, sq, spq, bSidePisLargeBlk, bSideQisLargcBlk, β и tC в качестве входных данных и результат присваивают решению dSam3.

e. Переменную dE устанавливают равной 1.

f. Когда dSam0 равна 1 и dSam3 равна 1, переменную dE устанавливают равной 2.

g. Когда dp меньше (β + (β >> 1)) >> 3, переменную dEp устанавливают равной 1.

h. Когда dq меньше (β + (β >> 1)) >> 3, переменную dEq устанавливают равной 1.

- В противном случае (edgeType равна EDGE_HOR) применяют следующие этапы в заданном порядке:

1. Переменные dp0, dp3, dq0 и dq3 получают следующим образом:

dp0=Abs(p2,0-2 * p1,0+p0,0);

dp3=Abs(p2,3-2 * p1,3+p0,3);

dq0=Abs(q2,0-2 * q1,0+q0,0);

dq3=Abs(q2,3-2 * q1,3+q0,3).

2. Переменные bSidePisLargeBlk и bSideQisLargeBlk получают следующим образом:

Если edgeType равна EDGE_HOR и положение положения яркости выборки p0,0 по модулю CibSizeY равно 0, bSidePisLargeBlk устанавливают равной 0.

В противном случае, если p0,0 принадлежит блоку кодирования с высотой, равной 32 или более, bSidePisLargcBlk устанавливают равной 1, в противном случае bSidePisLargeBlk устанавливают равной 0. Если q0,0 принадлежит блоку кодирования с высотой, равной 32 или более, bSideQisLargeBlk устанавливают равной 1, в противном случае bSideQisLargeBlk устанавливают равной 0.

3. Если обе bSidePisLargeBlk и bSideQisLargeBlk равны 0, переходят к этапу 6.

4. Переменные dpq0L, dpq3L и dL получают следующим образом:

Если bSidePisLargeBlk равна 1,

dp0L = (dp0+Abs(p5,0-2 * p4,0+p3,0) + 1) >> 1;

dp3L = (dp3+Abs(p5,3-2 * p4,3+ p3,3) + 1) >> 1.

В противном случае

dp0L=dp0;

dp3L=dp3.

Если bSideQisLargeBlk равна 1,

dq0L = (dq0+Abs(q5,0-2 * q4,0+ q3,0) +1) >> 1;

dq3L = (dq3+Abs(q5,3-2 * q4,3+q3,3) + 1) >> 1.

В противном случае

dq0L=dq0;

dq3L=dq3;

dpq0L=dp0L+dq0L;

dpq3L=dp3L+dq3L;

dL=dpq0L+dpq3L.

5. Когда dL меньше β, применяют следующие этапы в заданном порядке, в противном случае переходят к этапу 6:

a. Переменную dpq устанавливают равной 2 * dpq0L.

b. Переменные sp0, sq0 и spq0 получают следующим образом:

sp0=Abs(p3,0 - p0,0);

sq0=Abs(q0,0 - q3,0);

spq0= Abs(p0,0 - q0,0).

c. Переменную sp устанавливают равной sp0, переменную sq устанавливают равной sq0 и переменную spq устанавливают равной spq0.

d. Когда bSidePisLargeBlk равна 1 или bSidePisLargeBlk равна 1, переменные p0, p3, q0 и q3 получают следующим образом:

Если bSidePisLargeBlk

p3=p0,3;

p0=p0,maxFilterLengthP;

Если bSideQisLargeBlk

q3=q0,3;

q0=q0,maxFilterLengthQ.

В противном случае p0, p3, q0 и q3 устанавливают равными 0.

e. Для местоположения (xCb+xB1, yCb+yB1) выборки запускают процесс принятия решения для выборки, как определено в пункте ниже, со значениями p0, p3, q0 и q3 выборок, переменными dpq, sp, sq, spq, bSidePisLargeBIk, bSideQisLargeBlk, β и tC в качестве входных данных и результат присваивают решению dSam0.

f. Переменную dpq устанавливают равной 2 * dpq3L.

g. Переменные sp3, sq3 и spq3 получают следующим образом:

sp3=Abs(p3,3 - p0,3);

sq3=Abs(q0,3 - q3,3);

spq3=Abs(p0,3 - q0,3).

h. Переменную sp устанавливают равной sp3, переменную sq устанавливают равной sq3 и переменную spq устанавливают равной spq3.

i. Когда bSidePisLargeBlk равна 1 или bSidePisLargeBlk равна 1, переменные p0 p3 q0 и q3 получают следующим образом:

Если bSidePisLargeBlk

p3=p3,3;

p0=p3,maxFilterLengthP

Если bSideQisLargeBlk

q3=q3,3;

q0=q3,maxFilterLengthQ.

В противном случае p0, p3, q0 и q3 устанавливают равными 0.

j. Для местоположения (xCb+xB1+3, yCb+yB1) выборки запускают процесс принятия решения для выборки, как определено в пункте ниже, со значениями p0, p3, q0 и q3 выборок, переменными dpq, sp, sq, spq, bSidePisLargeBlk, bSideQisLargcBlk, β и tC в качестве входных данных и результат присваивают решению dSam3.

k. Когда dSam0 равна 1 и dSam3 равна 1, переменную dE устанавливают равной 3 и пропускают этапы 6-8.

6. Переменные maxLengthP, maxLengthQ, dpq0, dpq3, dp, dq и d получают следующим образом:

dpq0=dp0+dq0;

dpq3=dp3+dq3;

dp=dp0+dp3;

dq=dq0+dq3;

d=dpq0+dpq3.

maxLengthP=3;

maxLengthQ=3.

7. Переменные dE, dEp и dEq устанавливают равными 0.

8. Когда d меньше β, применяют следующие этапы в заданном порядке:

a. Переменную dpq устанавливают равной 2 * dpq0.

b. Для местоположения (xCb+xB1, yCb+yB1) выборки запускают процесс принятия решения для выборки, как определено в пункте ниже, со значениями 0, 0, 0 и 0 выборок, переменными dpq, sp, sq, spq, bSidePisLargeBlk, bSideQisLargcBlk, β и tC в качестве входных данных и результат присваивают решению dSam0.

c. Переменную dpq устанавливают равной 2 * dpq3.

d. Для местоположения (xCb+xB1+3, yCb+yB1) выборки запускают процесс принятия решения для выборки, как определено в пункте ниже, со значениями 0, 0, 0 и 0 выборок, переменными dpq, sp, sq, spq, bSidePisLargeBlk, bSideQisLargcBlk, β и tC в качестве входных данных и результат присваивают решению dSam3.

e. Переменную dE устанавливают равной 1.

f. Когда dSam0 равна 1 и dSam3 равна 1, переменную dE устанавливают равной 2.

g. Когда dp меньше (β + (β >> 1)) >> 3, переменную dEp устанавливают равной 1.

h. Когда dq меньше (β + (β >> 1)) >> 3, переменную dEq устанавливают равной 1.

[0249] Следует отметить, что переменная CtbSizeY может быть определена следующим образом: Размер массива для каждого CTB яркости, как по ширине, так и по высоте представляет собой CtbSizeY в единицах выборок. Ширина и высота массива для каждого CTB яркости представляют собой соответственно CtbWidthC и CtbHeightC в единицах выборок.

[0250] В одном примере процесс принятия решения для выборки яркости может быть следующим:

Входные данные для этого процесса:

- значения p0, p3, q0 и q3 выборок,

- переменные sp, sq, dpq, ß и tC, bSidePisLargeBlk и bSideQisLargeBlk.

Результатом этого процесса является переменная dSam, содержащая решение.

Переменные sp и sq модифицируют следующим образом:

Если bSidePisLargeBlk

sp = (sp+Abs(p3 - p0) + 1) >>1

Если bSideQisLargeBlk

sq = (sq+Abs(q3 - q0) + 1) >>1

Переменную sthr получают следующим образом:

Если bSidePisLargeBlk или bSidePisLargeBlk

sthr=3*ß >> 5

В противном случае

sthr=ß >> 3

Переменную dSam определяют следующим образом:

- Если dpq меньше (ß>>2), sp+sq меньше sthr и spq меньше (5 * tC+1) >> 1, dSam устанавливают равной 1.

- В противном случае dSam устанавливают равной 0.

[0251] В одном примере процесс фильтрации для краев блока яркости может быть следующим:

Входные данные для этого процесса:

- массив recPicture выборок изображения,

- местоположение (xCb, yCb), определяющее верхнюю левую выборку текущего блока кодирования по отношению к верхней левой выборке текущего изображения;

- местоположение яркости (xB1, yB1), определяющее верхнюю левую выборку текущего блока кодирования яркости по отношению к верхней левой выборке яркости текущего изображения;

- переменная edgeType, указывающая на то, какой край отфильтрован: вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR),

- переменные dE, dEp и dEq, содержащие решения,

- переменные maxLengthP и maxLengthQ, содержащие длины фильтров,

- переменная tC.

В результате после этого процесса получают модифицированный массив recPicture выборок модифицированного изображения.

В зависимости от значения edgeType применяют следующее:

- Если edgeType равна EDGE_VER, применяют следующие этапы в заданном порядке:

1. Значения pi, k и qj, k выборок при i=0…maxLengthP, j=0…maxLengthQ и k=0…3 получают следующим образом:

qj, k=recPictureL[xCb+xB1+j][yCb+yB1+k];

pi, k=recPictureL[xCb+xB1 - i - 1][yCb+yB1+k]

2. Когда dE не равна 0 и dE не равна 3, для каждого местоположения (xCb+xB1, yCb+yB1+k) выборки, k=0…3, применяют следующие этапы в заданном порядке:

a. Запускают процесс фильтрации для выборки яркости, как определено ниже, со значениями pi, k, qi, k выборки при i=0…3, местоположениями (xPi, yPi), установленными равными (xCb+xB1 - i - 1, yCb+yB1+k), и (xQi, yQi ), установленными равными (xCb+xB1 ÷ i, yCb+yB1+k ), при i=0…2, переменными решения dE, dEp и dEq и переменной tC в качестве входных данных и количеством nDp и nDq отфильтрованных выборок с каждой стороны границы блока и значениями pi' и qi' выборок в качестве выходных данных.

b. Когда nDp больше 0, отфильтрованные значения pi’ выборки при i=0…nDp - 1 заменяют соответствующие выборки внутри массива recPicture выборок следующим образом:

recPicture[xCb+xB1 - i - 1][yCb+yB1+k] = pi'

c. Когда nDq больше 0, отфильтрованные значения qj’ выборки при j=0…nDq - 1 заменяют соответствующие выборки внутри массива recPicture выборок следующим образом:

recPicture[xCb+xB1+j][yCb+yB1+k] = qj'

3. Когда dE равна 3, для каждого местоположения (xCb+xB1, yCb+yB1+k) выборки, k=0…3, применяют следующие этапы в заданном порядке:

a. Запускают процесс фильтрации выборки яркости с использованием длинных фильтров, как определено ниже, со значениями pi, k, qj, k выборок при i=0…maxFilterLengthP и j=0…maxFilterLengthQ, местоположениями (xPi, yPi), установленными равными (xCb+xB1 - i - 1, yCb+yB1+k), и (xQj, yQj), установленными равными (xCb+xB1+j, yCb+yB1+k), при i=0…maxFilterLengthP - 1 и j=0..maxFilterLengthQ - 1, переменными maxFilterLengthP, maxFilterLengthQ и tC в качестве входных данных и отфильтрованными значениями pi’ и qi’ выборок в качестве выходных данных.

b. Отфильтрованными значениями pi' выборки при i=0…maxFilterLengthP - 1 заменяют соответствующие выборки внутри массива recPicture выборок следующим образом:

recPicture[xCb+xB1 - i - 1 ][yCb+yB1+k] = pi'

c. Отфильтрованными значениями qj' выборки при j=0…maxFilterLengthQ - 1 заменяют соответствующие выборки внутри массива recPicture выборок следующим образом:

recPicture[xCb+xB1+j][yCb+yB1+ k] = qj'

- В противном случае (edgeType равна EDGE_HOR) применяют следующие этапы в заданном порядке:

1. Значения pi, k и qj, k выборок при i=0…maxLengthP, j=0…maxLengthQ и k=0,3 получают следующим образом:

qijk=recPictureL[xCb+xB1+k][yCb+yB1+j];

Pi, k=recPictureL[xCb+xB1+k][yCb+yB1 - i - 1].

2. Когда dE не равна 0 и dE не равна 3, для каждого местоположения (xCb+xB1+k, yCb+yB1) выборки, k=0…3, применяют следующие этапы в заданном порядке:

a. Запускают процесс фильтрации для выборки, как определено ниже, со значениями pi, k, qi, k выборки при i=0…3, местоположениями (xPi, yPi), установленными равными (xCb+xB1+k, yCb+yB1 - i - 1), и (xQi, yQi ), установленными равными (xCb+xB1+k, yCb+yB1+i), при i=0…2, переменными решения dE, dEp и dEq и переменной tC в качестве входных данных и количеством nDp и nDq отфильтрованных выборок с каждой стороны границы блока и отфильтрованными значениями pi' и qi' выборок в качестве выходных данных.

b. Когда nDp больше 0, отфильтрованные значения pi’ выборки при i=0…nDp - 1 заменяют соответствующие выборки внутри массива recPicture выборок следующим образом:

recPicture[xCb+xB1+k][yCb+yB1 - i - 1] = pi'

c. Когда nDq больше 0, отфильтрованные значения qj’ выборки при j=0…nDq - 1 заменяют соответствующие выборки внутри массива recPicture выборок следующим образом:

recPicture[xCb+xB1+k][yCb+yB1+j] = qj

3. Когда dE равна 3, для каждого местоположения (xCb+xB1+k, yCb+yB1) выборки, k=0…3, применяют следующие этапы в заданном порядке:

a. Запускают процесс фильтрации выборки яркости с использованием длинных фильтров, как определено ниже, со значениями pi, k, qj, k выборок при i=0…maxFilterLengthP и j=0…maxFilterLengthQ, местоположениями (xPi, yPi), установленными равными (xCb+xB1+k, yCb+yB1 - i - 1), и (xQj, yQj), установленными равными (xCb+xB1+k, yCb+yB1+j), при i=0…maxFilterLengthP - 1 и j=0..maxFilterLengthQ - 1, переменными maxFilterLengthP, maxFilterLengthQ и tC в качестве входных данных и отфильтрованными значениями pi’ и qi’ выборок в качестве выходных данных.

b. Отфильтрованными значениями pi' при i=0…maxFilterLengthP - 1 заменяют соответствующие выборки внутри массива recPicture выборок следующим образом:

recPicture[xCb+xB1+k][yCb+yB1 - i - 1] = pi'

c. Отфильтрованными значениями qj' при j=0…maxFilterLengthQ - 1 заменяют соответствующие выборки внутри массива recPicture выборок следующим образом:

recPicture[xCb+xB1+k][yCb+yB1+j] = qj

[0252] В одном примере процесс фильтрации для выборки яркости может быть следующим:

Входные данные для этого процесса:

- значения pi и qi выборки при i=0…3,

- местоположения pi и qi, (xPi, yPi) и (xQi, yQi) при i=0…2,

- переменная dE,

- переменные dEp и dEq, содержащие решения для фильтрования выборок p1 и q1 соответственно,

- переменная tC.

Выходные данные этого процесса:

- количество nDp и nDq отфильтрованных выборок,

- отфильтрованные значения pi' и qj' выборок при i=0…nDp - 1, j=0…nDq - 1.

В зависимости от значения dE применяют следующее:

- Если переменная dE равна 2, каждую из nDp и nDq устанавливают равными 3 и применяют следующую сильную фильтрацию:

p0’ = Clip3(p0-2 * tC, p0+2 * tC, (p2+2 * p1+2 * p0+2 * q0+q1+4) >> 3);

p1’ = Clip3(p1-2 * tC, p1+2 * tC, (p2+p1+p0+q0+2) >> 2);

p2’ = Clip3(p2-2 * tC, p2+2 * tC, (2 * p3+3 * p2+p1+p0+q0+4) >> 3);

q0’ = Clip3(q0-2 * tC, q0+2 * tC, (p1+2 * p0+2 * q0+2 * q1+q2+4) >> 3);

q1’ = Clip3(q1-2 * tC, q1+2 * tC, (p0+q0+q1+q2+2) >> 2);

q2’ = Clip3(q2-2 * tC, q2+2 * tC, (p0+q0+q1+3 * q2+2 * q3+4) >> 3).

- В противном случае каждую из nDp и nDq устанавливают равными 0 и применяют следующую слабую фильтрацию:

- Применяют следующее:

Δ= (9 * (q0 - p0 ) - 3 * (q1 - p1) + 8) >> 4

- Когда Abs(Δ) меньше tC * 10, применяют следующие этапы в заданном порядке:

- Отфильтрованные значения p0’ и q0’ выборки определяют следующим образом:

Δ=Clip3(-tC, tC, Δ);

p0’ = Clip1Y(p0+Δ);

q0’ = Clip1Y(q0 - Δ).

- Когда dEp равна 1, отфильтрованное значение p1' выборки определяют следующим образом:

Δp=Clip3(-( tC >> 1), tC >> 1, (((p2+p0+1) >> 1) - pi+Δ) >> 1) pi' = Clip1Y(p1+Δp)

- Когда dEq равна 1, отфильтрованное значение q1' выборки определяют следующим образом:

Δq=Clip3(-(tC >> 1), tC >> 1, (((q2+q0+1 ) >> 1) - q1 - Δ) >> 1);

q1' = Clip1Y(q1+Δq)

- nDp устанавливают равной dEp+1 и nDq устанавливают равной dEq+1.

Когда nDp больше 0 и одно или более из следующих условий являются истинными, nDp устанавливают равной 0:

- pcm_loop_filter_disabled_flag равен 1 и pcm_flag[xP0][yP0] равен 1.

- cu_transquant_bypass_flag блока кодирования, который включает в себя блок кодирования, содержащий выборку p0, равен 1.

Когда nDp больше 0 и одно или более из следующих условий являются истинными, nDq устанавливают равной 0:

- pcm_loop_filter_disabled_flag равен 1 и pem_flag[xQ0][yQ0] равен 1.

- cu_transquant_bypass_flag блока кодирования, который включает в себя блок кодирования, содержащий выборку q0, равен 1.

[0253] В одном примере процесс фильтрации для выборки яркости с использованием длинных фильтров может быть следующим:

Входные данные для этого процесса:

- переменные maxFilterLengthP и maxFilterLengthQ,

- значения pi и qj выборок при i=0…maxFilterLengthP и j=0…maxFilterLengthQ,

- местоположения pi и qj, (xPi, yPi) и ( xQj, yQj) при i=0…maxFilterLengthP - 1 и j=0…maxFilterLengthQ - 1,

- переменная tC.

Выходные данные этого процесса:

- отфильтрованные значения pi' и qj' выборок при i=0…maxFilterLengthP - 1, j=0…maxFilterLengtQ - 1.

Переменные refMiddle, refP и refQ получают следующим образом:

Если maxFilterLengthP равна maxFilterLengthQ,

если maxFilterLengthP равна 5,

refMiddle = (p4+p3+ 2 * (p2 +p1+p0+q0+q1+q2) + q3+q4+8) >> 4

В противном случае

refMiddle = (p6 -+ p5 -+ p4+p3+p2+p1+2* (p0+q0) + q1+q2+q3+q4+q5+q6+8) >> 4

В противном случае, если (maxFilterLengthQ равна 7 и maxFilterLengthP равна 5) или (maxFilterLengthQ равна 5 и maxFilterLengthP равна 7),

refMiddle = (p4+p3+ 2 * (p2 +p1+p0+q0+q1+q2) + q3+q4+8) >> 4

В противном случае, если (maxFilterLengthQ равна 5 и maxFilterLengthP равна 3) или (maxFilterLengthQ равна 3 и maxFilterLengthP равна 5),

refMiddle = (p3+p2+p1 +p0+q0+q1+q2+q3+4) >> 3

В противном случае, если (maxFilterLengthQ равна 7 и maxFilterLengthP равна 3) refMiddle = (2 *(p2+p1+p0+q0) + p0+p1+q1+q2+q3+q4+q5+q6+8) >> 4 В противном случае

refMiddle = (p6- + p5- + p4+p3+p2+p1+2 *(q2+q1+q0+p0) + q0+q1+8) >> 4;

refP = (pmaxFilterLengtP_+PmaxFilterLengthP-1 _+1) >> 1;

refQ = (qmaxFilterLengtQ -+ qmaxFilterLengthQ-1 -+ 1 ) >> 1

Переменные fi и tCPDi определяют следующим образом:

Если maxFilterLengthP равна 7,

f0…6= {59, 50, 41, 32, 23, 14, 5},

tCPD0…6= {6, 5, 4, 3, 2, 1, 1}

В противном случае, если maxFilterLengthP равна 5,

f0…4= {58, 45, 32,19,6},

tCPD0…4= {6, 5, 4, 3, 2}

В противном случае

f0…2 = {53, 32, 11},

tCPD0…2= {6, 4, 2}

Переменные gi и tCQDj определяют следующим образом:

Если maxFilterLengthQ равна 7,

g0…6= {59, 50, 41, 32, 23, 14, 5},

tCQD0…6 = {6, 5, 4, 3, 2, 1, 1}

В противном случае, если maxFilterLengthQ равна 5,

g0…4 = {58, 45, 32,19,6},

tCQD0…4= {6, 5, 4, 3, 2}

В противном случае

g0…2 = {53, 32, 11},

tCQD0…2 = {6, 4, 2}

pi' = Clip3(pi - (tC * tCPDi) >> 1, pi + (tC * tCPDi) >> 1, (refMiddle * fi+refP * (64 - fi) + 32) >> 6);

qi' = Clip3(qi - (tC * tCQDi) >> 1, qi + (tC * tCQDi) >> 1, (refMiddle * gj+refP * (64 - gi) + 32) >> 6),

где i=0…maxLengthP - 1 и j=0…maxLengthQ - 1

[0254] Как описано выше, смещение tc (например, slice_tc_offset_div2) является значением смещения, которое применяют к области видеоданных, содержащей конкретную выборку. В JVET-L1001 дополнительно предусмотрено использование смещения tc, tcOffsetDiv2, для получения indexTc, который используют для операций отсечения и для определения некоторых пороговых значений. В одном примере в соответствии с изложенными в настоящем документе методиками tcOffsetDiv2 может быть модифицирована на основании режима прогнозирования. То есть в соответствии с изложенными в настоящем документе методиками могут быть получены tcOffsetDiv2_P и tcOffsetDiv2_Q. В одном примере tcOffsetDiv2_P и tcOffsetDiv2_Q могут быть получены следующим образом:

tcOffsetDiv2_P=tcOffsetDiv2;

tcOffsetDiv2_Q=tcOffsetDiv2.

Если блок на стороне P является внутренним, tcOffsetDiv2_P=tcOffsetDiv2_P - 2.

Если блок на стороне P является внутренним, tcOffsetDiv2_Q=tcOffsetDiv2_Q - 2.

tcOffsetDiv2 обновляют до (tcOffsetDiv2_P+tcOffsetDiv2_Q+1) >> 1.

Затем получают indexTe_P посредством Clip3(0, MAX_QP+DEFAULT_INTRA_TC_OFFSET, (iQP+DEFAULT_INTRA_TC_OFFSET*(uiBs - 1) + (tCOffsetDiv2_P << 1))) и аналогичным образом получают indexTc_Q,

где

iQP - среднее значение для QP на стороне P и стороне Q,

DEFAULT_INTRA_TC_OFFSET - предварительно определенное максимальное смещение, и

uiBs - интенсивность границы.

[0255] Как описано выше, значение tC может быть дополнительно использовано в качестве параметра диапазона отсечения и/или порогового значения. Как показано в таблице на ФИГ. 6A, которую используют для определения значения tC, как описано выше, в одном примере переменные iTc_P и iTc_Q могут быть использованы в качестве параметра диапазона отсечения и/или в качестве порогового значения на выборках на стороне P и стороне Q соответственно. В одном примере iTc_P и iTc_Q получают следующим образом с помощью индексов iIndexTC_P и iIndexTC_Q к записи таблицы:

iTc_P=sm_tcTable[iIndexTC_P] * iBitdepthScale;

iTc_Q=sm_tcTable[iIndexTC_Q] * iBitdepthScale;

где

sm_tcTable - таблица, показанная на ФИГ. 6A, и

iBitdepthScale - шкала битовой глубины. Она определяется как 1 << (iInputBitdepth - 8), где

ilnputBitdepth - входная битовая глубина выборки.

[0256] Как описано выше, в JEM концевой узел QTBT может быть аналогичен как PB, так и TB в ITU-T H.265. То есть CU соответствует как PU, так и TU. В JVET-L1001 предусмотрена та же самая базовая структура разделения, что и в JEM, однако в JVET-L1001 CU может быть дополнительно разделен на подблоки, включая подблоки, которые используются для прогнозирования и могут называться PU. Фильтры, выполненные с возможностью деблокирования обеих сторон края, такие как, например, фильтры в таблице 1, могут быть классифицированы как представляющие собой либо многоотводный фильтр, либо не многоотводный фильтр по отношению к каждой стороне. Например, что касается фильтров в таблице 1, в одном примере фильтр (s=7, t=3) может быть классифицирован как многоотводный фильтр на стороне P и как не многоотводный фильтр на стороне Q. Аналогичным образом фильтр (s=3, t=7) может быть классифицирован как не многоотводный фильтр на стороне P и как многоотводный фильтр на стороне Q, а фильтр (s=7, t=7) может быть классифицирован как многоотводный фильтр на стороне P и как многоотводный фильтр на стороне Q. При выполнении деблокирования на границе многоотводный фильтр может быть не разрешен для стороны на основании одного или более из: размера подблока, связанного со стороной; расстояния от края до следующего параллельного деблокируемого края; размера CU, связанного со стороной; размера TU, связанного со стороной; и/или размера PU, связанного со стороной.

[0257] Когда границы подблока деблокируют и используют многоотводный фильтр, многоотводный фильтр может пересекать границы подблока, в результате чего может быть получена фильтрация с перекрытием. Фильтрация с перекрытием может размывать текстуру и может влиять на параллелизацию. В одном примере в соответствии с изложенными в настоящем документе методиками CU с подблоками может рассматриваться как небольшой блок. То есть в некоторых случаях определенные края, связанные с блоком, содержащим подблоки, могут быть не деблокированы. Например, многоотводный фильтр, вроде описанного выше, может в некоторых примерах включать в себя фильтр, который модифицирует и/или имеет поддержку фильтра, включающую в себя по меньшей мере три или более линий, и поэтому может быть использован только на большой стороне блока. Следует отметить, что в других примерах, что касается подблоков, многоотводный фильтр может включать в себя любой фильтр, который модифицирует и/или имеет поддержку фильтра, пересекающую границу подблока. Таким образом, фильтр может быть выключен и/или модифицирован всякий раз, когда он модифицирует и/или имеет поддержку фильтра, которая пересекает границу подблока.

[0258] В одном примере в таком случае bSideQisLargeBlk и bSidePisLargeBlk, описанные в настоящем документе, могут быть модифицированы следующим образом:

Если блок на стороне P текущей границы (границы CU или границы подблока PU) использует подблоки, для bSidePisLargeBlk устанавливают значение «Ложь».

Если блок на стороне Q текущей границы (границы CU или границы подблока PU) использует подблоки, для bSideQisLargeBlk устанавливают значение «Ложь».

[0259] В одном примере логика управления, зависимая от bSidePisLargeBlk и bSideQisLargeBlk, может оставаться такой, как указано выше. В одном примере для яркости, если bSidePisLargeBlk является ложной, многоотводный фильтр и логика больших блоков не могут быть использованы на стороне P, и если bSideQisLargeBlk является ложной, многоотводный фильтр и логика больших блоков не могут быть использованы на стороне Q. Следует отметить, что, хотя bSidePisLargeBlk и bSideQisLargeBlk описаны выше в отношении компонента яркости, bSidePisLargeBlk и bSideQisLargeBlk могут быть аналогичным образом применены для компонента цветности на основании количества выборок цветности в блоке. Таким образом, в одном примере для цветности bSidePisLargeBlk ИСТИННА, когда количество выборок цветности на стороне P равно пороговому значению или больше него (например, 8, 16), в противном случае этот параметр является ЛОЖНЫМ; и bSideQisLargeBlk ИСТИННА, когда количество выборок цветности на стороне Q равно пороговому значению или превышает его (например, 8, 16), в противном случае этот параметр является ЛОЖНЫМ. Если bSidePisLargeBlk или bSideQisLargeBlk ложны, многоотводный фильтр не может быть использован на текущей границе.

[0260] В одном примере в соответствии с изложенными в настоящем документе методиками, если текущая горизонтальная граница является границей CTU, а блок на стороне P (и/или на стороне Q) использует подблоки PU, блок на стороне P (и/или на стороне Q) может рассматриваться как маленький блок (например, большой блок определен как ложный). В одном примере, когда блок рассматривают как маленький блок, может быть дополнительно использовано заполнение на стороне, на которой выборки охватывают область другого подблока.

[0261] В одном примере для определения приоритетной фильтрации наружного края подблока над фильтрацией внутреннего края блока могут быть использованы одно или более следующих правил:

- В случае деблокирования сетки яркости NxN, когда при деблокировании внутренних краев подблока существует возможность того, что поддержка фильтра включает выборки, которые могут быть деблокированы посредством (параллельного) деблокирования наружного края подблока, этот край не деблокируют с использованием этого фильтра. Например, если расстояние меньше порогового значения (например, 4, 8) для яркости, использование подмножества фильтров запрещено. В примере подмножество длинного фильтра яркости, например {(s=7, t=7) (s=7, t=3) (s=3, t=7)}, может быть не разрешено, если их поддержка фильтра может включать в себя выборки, которые могут быть деблокированы. В примере сильный фильтр HEVC, HEVC_P, HEVC_Q, может быть не разрешен, если поддержка фильтра может включать в себя выборки, которые могут быть деблокированы.

- В случае деблокирования сетки яркости NxN, когда при деблокировании внутренних краев подблока существует возможность того, что процесс принятия решения управления использует выборки, которые могут быть деблокированы посредством (параллельного) деблокирования наружного края подблока, либо изменяют процесс принятия решения, чтобы не использовать такие выборки, либо пропускают деблокирование этого края.

- В случае деблокирования сетки цветности NxN, когда при деблокировании внутренних краев подблока существует возможность того, что поддержка фильтра включает выборки, которые могут быть деблокированы посредством (параллельного) деблокирования наружного края подблока, этот край не деблокируют с использованием этого фильтра. Например, если расстояние меньше порогового значения (например, 4, 8) для цветности, использование длинных фильтров цветности, например HEVC_P, HEVC_Q, CL_P, CL_Q, запрещено.

- В случае деблокирования сетки цветности NxN, когда при деблокировании внутренних краев подблока существует возможность того, что процесс принятия решения управления использует выборки, которые могут быть деблокированы посредством (параллельного) деблокирования наружного края подблока, либо изменяют процесс принятия решения, чтобы не использовать такие выборки, либо пропускают деблокирование этого края.

- В случае деблокирования сетки яркости NxN, когда при деблокировании внутренних краев подблока существует возможность того, что деблокированные выборки (т. е. выборки, которые могут изменять значение) включены в поддержку фильтра или процесс управления (параллельного) наружного края, этой край не деблокируют. Например, если расстояние внутреннего края подблока от параллельного наружного края меньше порогового значения (например, 4, 8).

- В случае деблокирования сетки цветности NxN, когда при деблокировании внутренних краев подблока существует возможность того, что деблокированные выборки (т. е. выборки, значение которых можно изменить) включены в поддержку фильтра или процесс управления (параллельного) наружного края, этот край не деблокируют. Например, если расстояние внутреннего края подблока от параллельного наружного края меньше порогового значения (например, 4, 8).

[0262] Следует отметить, что в некоторых из вышеприведенных примеров N может быть составлять 4 или 8.

[0263] В одном примере деблокирование краев подблока, совмещенных с краями преобразования, может быть приоритетным. Например, если деблокированием края преобразования может изменять какую-либо выборку, которая может быть использована в поддержке фильтра и/или процессе принятия решения другого (например, параллельного) края подблока, этот край подблока не деблокируют (т. е. чтобы обеспечить возможность параллелизации).

[0264] В число примеров CU, включающего в себя подблоки, входят: CU 128×128, включающий в себя четыре подблока PU 64×64, CU 128×64, включающий в себя два подблока PU 64×64, и CU 64×128, включающий в себя два подблока PU 64×64. Как предусмотрено в вышеприведенном примере правил, в некоторых примерах края подблока PU внутри CU могут включать в себя поддержку фильтра или выборки принятия решения управления, которые могут быть изменены длинным фильтром, и поэтому в некоторых случаях эти края могут быть не деблокированы, даже если в противном случае были бы совмещены с сеткой деблокирования.

[0265] В одном примере, когда коэффициенты преобразования отсутствуют (например, коэффициенты преобразования не включают в себя никаких ненулевых значений) для CU, содержащего подблоки PU, CU деблокируют в соответствии с любой из вышеуказанных методик для случаев деблокирования CU, содержащего подблоки PU, а когда коэффициенты присутствуют, CU деблокируют как CU, не содержащий подблоки PU.

[0266] Следует отметить, что в соответствии с изложенными в настоящем документе методиками при деблокировании вместо размера CU для деблокирования может быть использован размер подблока PU (или размер другого подблока). Например, когда при рассмотрении границы между двумя CU 64×64 один из CU, содержащий подблоки PU 8×8, границу можно рассматривать, как когда бы на одной стороне был CU 64×64, а на другой стороне были бы CU 8×8. Аналогично компоненты цветности могут рассматриваться подобным образом.

[0267] Согласно ФИГ. 8 блок 218 энтропийного кодирования принимает квантованные коэффициенты преобразования и данные синтаксического прогнозирования (т. е. данные внутреннего прогнозирования и данные прогнозирования движения). Следует отметить, что в некоторых примерах блок 206 квантования коэффициента может выполнять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования, перед выводом коэффициентов в блок 218 энтропийного кодирования. В других примерах сканирование может быть выполнено блоком 218 энтропийного кодирования. Блок 218 энтропийного кодирования может быть выполнен с возможностью выполнения энтропийного кодирования в соответствии с одной или более методик, описанных в настоящем документе. Таким образом, видеокодер 200 представляет пример устройства, выполненного с возможностью приема массива значений выборки, включающего в себя смежные восстановленные видеоблоки, для компонента видеоданных и изменения значений выборки в смежных восстановленных видеоблоках в соответствии со множеством проходов через фильтр деблокирования.

[0268] Возвращаясь к ФИГ. 7, следует отметить, что инкапсулятор 107 данных может принимать закодированные видеоданные и генерировать совместимый битовый поток, например последовательность элементов NAL в соответствии с определенной структурой данных. Устройство, принимающее совместимый битовый поток, может восстанавливать из него видеоданные. Кроме того, устройство, принимающее совместимый битовый поток, может выполнять процесс извлечения битового подпотока, причем извлечение битового подпотока относится к процессу, в котором устройство, принимающее совместимый битовый поток, формирует новый совместимый битовый поток путем отбрасывания и/или изменения данных в принятом битовом потоке. Следует отметить, что термин «соответствующий битовый поток» можно использовать вместо термина «совместимый битовый поток».

[0269] Согласно ФИГ. 7 интерфейс 108 может включать в себя любое устройство, выполненное с возможностью приема данных, сгенерированных инкапсулятором 107 данных, а также передачи и/или сохранения данных в среде связи. Интерфейс 108 может включать в себя карту сетевого интерфейса, такую как карта Ethernet, и может включать в себя оптический приемопередатчик, радиочастотный приемопередатчик или устройство любого другого типа, способное отправлять и/или принимать информацию. Интерфейс 108 может дополнительно включать в себя интерфейс компьютерной системы, позволяющий сохранять файл в запоминающем устройстве. Например, интерфейс 108 может включать в себя набор микросхем, поддерживающий протоколы шины с взаимосвязью периферийных компонентов (PCI) и с экспресс- Взаимосвязью периферийных компонентов (PCIe), проприетарные протоколы шин, протоколы универсальной последовательной шины (USB), I2C или любую другую логическую и физическую структуру, которую можно использовать для соединения одноранговых устройств.

[0270] Как показано на ФИГ. 7, устройство 120 назначения включает в себя интерфейс 122, декапсулятор 123 данных, видеодекодер 124 и дисплей 126. Интерфейс 122 может включать в себя любое устройство, выполненное с возможностью приема данных из среды связи. Интерфейс 122 может включать в себя карту сетевого интерфейса, такую как карта Ethernet, и может включать в себя оптический приемопередатчик, радиочастотный приемопередатчик или устройство любого другого типа, выполненное с возможностью приема и/или отправки информации. Интерфейс 122 может дополнительно включать в себя интерфейс компьютерной системы, позволяющий извлекать совместимый битовый поток видео из запоминающего устройства. Например, интерфейс 122 может включать в себя набор микросхем, поддерживающий протоколы шины PCI и PCIe, проприетарные протоколы шин, протоколы USB, I2C или любую другую логическую и физическую структуру, которую можно использовать для соединения одноранговых устройств. Декапсулятор 123 данных может быть выполнен с возможностью приема и анализа любого из примерных наборов параметров, описанных в настоящем документе.

[0271] Видеодекодер 124 может включать в себя любое устройство, выполненное с возможностью приема битового потока и/или его приемлемых вариаций и воспроизведения из него видеоданных. Дисплей 126 может включать в себя любое устройство, выполненное с возможностью отображения видеоданных. Дисплей 126 может предусматривать одно из множества устройств отображения, таких как жидкокристаллический дисплей (ЖКД), плазменный дисплей, дисплей на органических светодиодах (OLED) или дисплей другого типа. Дисплей 126 может включать в себя дисплей высокой четкости или дисплей сверхвысокой четкости. Следует отметить, что, хотя в проиллюстрированном на ФИГ. 7 примере видеодекодер 124 описан как выводящий данные на дисплей 126, видеодекодер 124 может быть выполнен с возможностью вывода видеоданных на устройства и/или их подкомпоненты различных типов. Например, видеодекодер 124 может быть выполнен с возможностью вывода видеоданных в любую среду связи, как описано в настоящем документе.

[0272] На ФИГ. 9 приведена блок-схема, иллюстрирующая пример видеодекодера, который может быть выполнен с возможностью декодирования видеоданных в соответствии с одной или более методиками согласно настоящему описанию. В одном примере видеодекодер 300 может быть выполнен с возможностью декодирования данных преобразования и восстановления остаточных данных из коэффициентов преобразования на основании декодированных данных преобразования. Видеодекодер 300 может быть выполнен с возможностью осуществления декодирования с внутренним прогнозированием и декодирования с внешним прогнозированием и, таким образом, может называться гибридным декодером. В примере, проиллюстрированном на ФИГ. 9, видеодекодер 300 включает в себя блок 302 энтропийного декодирования, блок 304 обратного квантования, блок 306 обработки коэффициентов обратного преобразования, блок 308 обработки внутреннего прогнозирования, блок 310 обработки внешнего прогнозирования, сумматор 312, блок 314 фильтрации и опорный буфер 316. Видеодекодер 300 может быть выполнен с возможностью декодирования видеоданных способом, совместимым с системой кодирования видеосигналов. Следует отметить, что хотя указанный в примере видеодекодер 300 проиллюстрирован как имеющий различные функциональные блоки, такая иллюстрация предназначена только для описания и не ограничивает видеодекодер 300 и/или его подкомпоненты конкретной архитектурой аппаратного или программного обеспечения. Функции видеодекодера 300 могут быть реализованы с использованием любой комбинации аппаратных, программно-аппаратных и/или программных вариантов осуществления.

[0273] Как показано на ФИГ. 9, блок 302 энтропийного декодирования принимает энтропийно закодированный битовый поток. Блок 302 энтропийного декодирования может быть выполнен с возможностью декодирования элементов синтаксиса и квантованных коэффициентов из битового потока в соответствии с процессом, обратным процессу энтропийного кодирования. Блок 302 энтропийного декодирования может быть выполнен с возможностью осуществления энтропийного декодирования в соответствии с любым из описанных выше способов энтропийного кодирования. Блок 802 энтропийного декодирования может определять значения для элементов синтаксиса в закодированном битовом потоке способом, совместимым со стандартом кодирования видеосигналов. Как показано на ФИГ. 9, блок 302 энтропийного декодирования может определять квантованные значения коэффициентов и данные прогнозирования из битового потока. В примере, проиллюстрированном на ФИГ. 9, блок 304 обратного квантования принимает квантованные значения коэффициентов и выводит коэффициенты преобразования. Блок 306 обработки обратного преобразования принимает коэффициенты преобразования и выводит восстановленные остаточные данные.

[0274] Как показано на ФИГ. 9, сумматор 312 может быть обеспечен восстановленными остаточными данными. Сумматор 312 может добавлять восстановленные остаточные данные к прогнозируемому видеоблоку и генерировать восстановленные видеоданные. Прогнозируемый видеоблок может быть определен в соответствии с методикой прогнозирования видео (т. е. внутреннего прогнозирования и межкадрового прогнозирования). Блок 308 обработки внутреннего прогнозирования может быть выполнен с возможностью приема элементов синтаксиса внутреннего прогнозирования и извлечения прогнозируемого видеоблока из опорного буфера 316. Опорный буфер 316 может включать в себя запоминающее устройство, выполненное с возможностью хранения одного или более кадров видеоданных. Элементы синтаксиса внутреннего прогнозирования могут идентифицировать режим внутреннего прогнозирования, такой как описанные выше режимы внутреннего прогнозирования. Блок 308 обработки внешнего прогнозирования может принимать элементы синтаксиса внешнего прогнозирования и генерировать векторы движения для идентификации блока прогнозирования в одном или более опорных кадрах, хранящихся в опорном буфере 316. Блок 310 обработки внешнего прогнозирования может создавать блоки с компенсацией движения с возможным выполнением интерполяции на основании интерполяционных фильтров. Идентификаторы интерполяционных фильтров, используемых для оценки движения с точностью до субпикселя, могут быть включены в элементы синтаксиса. Блок 310 обработки внешнего прогнозирования может использовать интерполяционные фильтры для вычисления интерполированных значений для субцелочисленных пикселей опорного блока.

[0275] Блок 314 фильтрации может быть выполнен с возможностью осуществления фильтрации восстановленных видеоданных. Например, блок 314 фильтрации может быть выполнен с возможностью выполнения деблокирования и/или фильтрации с адаптивным смещением отсчетов (SAO), например, на основании параметров, указанных в битовом потоке. Следует отметить, что в некоторых примерах блок 314 фильтрации может быть дополнительно выполнен с возможностью выполнения проприетарного дискреционного фильтрования (например, визуальных улучшений, таких как устранение «москитного шума»). Блок 314 фильтрации может работать аналогично блоку 216 фильтрации. Как показано на ФИГ. 9, восстановленный видеоблок может быть выведен видеодекодером 300. Таким образом, видеодекодер 300 может быть выполнен с возможностью приема массива значений выборки, включающего в себя смежные восстановленные видеоблоки, для компонента видеоданных и изменения значений выборки в смежных восстановленных видеоблоках в соответствии со множеством проходов через фильтр деблокирования.

[0276] В одном или более примерах описанные функции могут быть реализованы в виде аппаратного обеспечения, программного обеспечения, программно-аппаратного обеспечения или любой их комбинации. При реализации в программном обеспечении функции можно хранить или передавать в виде одной или более команд или кода на машиночитаемом носителе и выполнять аппаратным блоком обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители данных, которые соответствуют материальным носителям, таким как носители данных, или среду связи, включающую в себя любую среду, обеспечивающую передачу компьютерной программы из одного местоположения в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители обычно могут соответствовать (1) материальным машиночитаемым носителям, которые не являются энергонезависимыми, или (2) среде связи, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может обращаться один или более компьютеров или один или более процессоров для извлечения команд, кода и/или структур данных для реализации методик, описанных в настоящем документе. Компьютерный программный продукт может включать в себя машиночитаемый носитель.

[0277] В качестве примера, но не для ограничения, такой машиночитаемый носитель может представлять собой RAM, ROM, EEPROM, CD-ROM или другой накопитель на оптических дисках, накопитель на магнитных дисках или другие магнитные запоминающие устройства, флеш-память, или любой другой носитель, который можно использовать для хранения требуемого программного кода в виде команд или структур данных и к которому может получать доступ компьютер. Кроме того, любое соединение, строго говоря, называется машиночитаемым носителем. Например, при передаче команд с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радио- и СВЧ-сигналы, коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасные, радио- и СВЧ-сигналы, включены в определение носителя/среды. Однако следует понимать, что машиночитаемые носители и носители данных не включают в себя соединения, несущие волны, сигналы или другие преходящие носители, а обозначают энергонезависимые материальные носители данных. В настоящем документе термин «диск» относится к диску, который воспроизводит данные оптическим способом с помощью лазеров, например компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD) и диск Blu-ray, и к диску, который обычно воспроизводит данные магнитным способом (например, гибкий диск). Комбинации вышеперечисленного также должны быть включены в объем термина «машиночитаемый носитель».

[0278] Команды могут быть выполнены одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, употребляемый в настоящем документе термин «процессор» может относиться к любой из вышеуказанных структур или к любой другой структуре, подходящей для реализации описанных в настоящем документе методик. Кроме того, в некоторых аспектах описанные в настоящем документе функциональные возможности могут быть обеспечены в специальных аппаратных и/или программных модулях, выполненных с возможностью кодирования и декодирования или включенных в комбинированный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.

[0279] Методики настоящего описания могут быть реализованы в самых разных устройствах или аппаратах, включая беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, набор микросхем). Различные компоненты, модули или блоки описаны в настоящем документе для выделения функциональных аспектов устройств, выполненных с возможностью осуществления описанных методик, но они не обязательно должны быть реализованы в виде различных аппаратных блоков. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или представлены набором взаимодействующих аппаратных блоков, включая один или более процессоров, как описано выше, в сочетании с подходящим программным обеспечением и/или программно-аппаратным обеспечением.

[0280] Более того, каждый функциональный блок или различные элементы устройства базовой станции и терминального устройства, используемые в каждом из вышеупомянутых вариантов осуществления, могут быть реализованы или исполнены схемой, которая обычно представляет собой интегральную схему или множество интегральных схем. Схема, выполненная с возможностью исполнения функций, описанных в настоящем техническом описании, может содержать процессор общего назначения, цифровой сигнальный процессор (DSP), специализированную интегральную схему (ASIC) или интегральную схему общего применения, программируемую пользователем вентильную матрицу (FPGA) или другие программируемые логические устройства, схемы на дискретных компонентах или транзисторные логические схемы, дискретный аппаратный компонент или их комбинацию. Процессор общего назначения может представлять собой микропроцессор, или в альтернативном варианте осуществления процессор может представлять собой стандартный процессор, контроллер, микроконтроллер или машину состояний. Процессор общего назначения или каждая схема, описанная выше, могут быть сконфигурированы цифровой схемой или могут быть сконфигурированы аналоговой схемой. Дополнительно, когда по мере развития технологии полупроводниковых материалов появится технология изготовления интегральных схем, которая заменит собой существующие технологии изготовления интегральных схем, можно также использовать интегральную схему, изготовленную по данной технологии.

[0281] Описаны различные примеры. Эти и другие примеры включены в объем следующей формулы изобретения.

<Перекрестная ссылка>

[0282] Настоящая обычная заявка испрашивает приоритет согласно 35 USC § 119 по предварительной заявке № 62/767,362 от 14 ноября 2018 г., № 62/790,917 от 10 января 2019 г., № 62/793,844 от 17 января 2019 г., полное содержание которых включено в настоящий документ посредством ссылки.

1. Способ фильтрации восстановленных видеоданных, включающий:

прием переменной типа края, указывающей на то, фильтруется ли вертикальный край или горизонтальный край в текущем блоке видео;

получение максимальной длины фильтра на основании (i) переменной типа края и (ii) одного или более условий, относящихся к по меньшей мере одному из размера блока преобразования, связанного с текущим блоком, и размера смежного блока преобразования; и

выполнение фильтрации деблокирования для текущего блока на основании полученной максимальной длины фильтра.

2. Способ по п. 1, в котором максимальную длину фильтра устанавливают равной 7, когда (i) переменная типа края указывает, что фильтруется горизонтальный край, и (ii) высота в выборках яркости блока преобразования, связанного с текущим блоком, составляет 32 или более.

3. Способ по п. 2, в котором максимальную длину фильтра устанавливают равной 3, когда (i) переменная типа края указывает, что фильтруется горизонтальный край, и (ii) высота в выборках яркости блока преобразования составляет менее 32.

4. Способ по п. 1, в котором максимальную длину фильтра устанавливают равной 3, когда (i) переменная типа края указывает, что фильтруется горизонтальный край, и (ii) каждая из первой высоты блока преобразования в местоположении цветности в текущем блоке и второй высоты смежного блока преобразования составляет 8 или более.

5. Способ по п. 4, в котором максимальную длину фильтра устанавливают равной 1, когда переменная типа края указывает, что фильтруется горизонтальный край, и по меньшей мере одна из (i) первой высоты блока преобразования и (ii) второй высоты смежного блока преобразования составляет менее 8.

6. Способ по п. 1, в котором максимальную длину фильтра устанавливают равной 7, когда (i) переменная типа края указывает, что фильтруется вертикальный край, и (ii) ширина в выборках яркости блока преобразования, связанного с текущим блоком, составляет 32 или более.

7. Способ по п. 6, в котором максимальную длину фильтра устанавливают равной 3, когда (i) переменная типа края указывает, что фильтруется вертикальный край, и (ii) ширина в выборках яркости блока преобразования, связанного с текущим блоком, составляет менее 32.

8. Способ по п. 1, в котором максимальную длину фильтра устанавливают равной 3, когда (i) переменная типа края указывает, что фильтруется вертикальный край, и (ii) каждая из первой ширины в выборках цветности блока преобразования в местоположении цветности в текущем блоке и второй ширины в выборках цветности смежного блока преобразования составляет 8 или более.

9. Способ по п. 8, в котором максимальную длину фильтра устанавливают равной 1, когда переменная типа края указывает, что фильтруется вертикальный край, и по меньшей мере одна из (i) первой ширины в выборках цветности блока преобразования и (ii) второй ширины в выборках цветности смежного блока преобразования составляет менее 8.

10. Способ по п. 1, в котором максимальную длину фильтра устанавливают равной 1, когда (i) переменная типа края указывает, что фильтруется горизонтальный край, и (ii) операция по модулю выдает конкретное значение при выполнении по высоте блока дерева кодирования, связанного с краем.

11. Способ по п. 1, в котором, когда тип края является вертикальным, размер текущего блока содержит ширину блока преобразования, связанного с текущим блоком, а размер смежного блока преобразования содержит ширину смежного блока преобразования.

12. Способ по п. 1, в котором, когда тип края является горизонтальным, размер текущего блока содержит высоту блока преобразования, связанного с текущим блоком, а размер смежного блока преобразования содержит высоту смежного блока преобразования.

13. Способ по п. 1, в котором максимальную длину фильтра получают дополнительно на основании переменной цветового компонента, указывающей конкретное значение цветового компонента для текущего блока.

14. Способ по п. 1, в котором прием переменной типа края содержит прием переменной типа дерева, указывающей, используется ли двойное дерево для разделения видеоданных, при этом получение максимальной длины фильтра содержит получение максимальной длины фильтра дополнительно на основании переменной типа дерева.

15. Способ по п. 1, в котором максимальная длина фильтра для текущего блока определяет максимальное количество выборок от края для модификации при выполнении фильтрации деблокирования для текущего блока.

16. Способ по п. 15, в котором максимальное количество выборок от края для использования в качестве входных данных при выполнении фильтрации деблокирования для текущего блока получают из максимальной длины фильтра.



 

Похожие патенты:

Изобретение относится к средствам для кодирования изображения видеопоследовательности. Технический результат заключается в повышении эффективности кодирования.

Изобретение относится к средствам для кодирования и декодирования видео. Технический результат заключается в повышении эффективности кодирования.

Изобретение относится к средствам для кодирования изображения. Технический результат заключается в повышении эффективности кодирования изображения.

Изобретение относится к способу и устройству для кодирования/декодирования изображения и носителю записи, хранящему битовый поток, на основе списка кандидатов и списка режимов интра-предсказания. Технический результат заключается в повышении эффективности сжатия.

Изобретение относится к обработке видеосигнала, в частности к технологии конфигурирования комбинации преобразований на основании по меньшей мере одного из режима предсказания, размера или формы блока. Техническим результатом изобретения является повышение эффективности и комплексности кодирования/декодирования.

Изобретение относится к области технологий сжатия и распаковки цифрового видео и, более конкретно, к кодированию и декодированию режима интра-предсказания текущего блока с использованием информации режима интра-предсказания смежного блока. Техническим результатом является уменьшение объема информации, требуемой для представления режимов интра-предсказания.

Изобретение относится к области кодирования и декодирования облака точек, представляющего внешнюю поверхность трехмерного объекта. Технический результат заключается в повышении эффективности кодирования.

Группа изобретений относится к технологиям кодирования/декодирования сигнала видео. Техническим результатом является повышение эффективности кодирования/декодирования сигнала видео.

Группа изобретений относится к технологиям обработки видеосигналов с использованием внешнего прогнозирования. Техническим результатом является повышение точности формирования прогнозных выборок.

Группа изобретений относится к технологиям выполнения интер-предсказания с использованием предсказания вектора движения на основе истории. Техническим результатом является повышение эффективности обработки сигнала видео на основе интер-предсказания.

Изобретение относится к области кодирования/декодирования изображения. Технический результат заключается в повышении эффективности кодирования. Предложены способ и устройство кодирования/декодирования изображения, которые обеспечивают возможность выбора внутрикадрового режима предсказания целевого блока, генерации блока предсказания целевого блока на основе межкадрового режима предсказания и коррекции сгенерированного блока предсказания. 3 н. и 2 з.п. ф-лы, 12 ил., 2 табл.
Наверх