Область техники
[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 приведена концептуальная схема, иллюстрирующая пример группы изображений, кодируемых в соответствии с разделением двоичного дерева квадродерева в соответствии с одной или более методиками настоящего описания.
На ФИГ. 2 приведена концептуальная схема, иллюстрирующая пример формата выборки видеокомпонента в соответствии с одной или более методиками настоящего описания.
На ФИГ. 3 приведена концептуальная схема, иллюстрирующая возможные структуры кодирования для блока видеоданных в соответствии с одной или более методиками настоящего описания.
На ФИГ. 4A приведены концептуальные схемы, иллюстрирующие примеры кодирования блока видеоданных в соответствии с одной или более методиками настоящего описания.
На ФИГ. 4B приведены концептуальные схемы, иллюстрирующие примеры кодирования блока видеоданных в соответствии с одной или более методиками настоящего описания.
На ФИГ. 5A приведены концептуальные схемы, иллюстрирующие блоки видеоданных, включая границу деблокирования, в соответствии с одной или более методиками настоящего описания.
На ФИГ. 5B приведены концептуальные схемы, иллюстрирующие блоки видеоданных, включая границу деблокирования, в соответствии с одной или более методиками настоящего описания.
На ФИГ. 6 приведен пример таблицы, которую можно использовать для определения параметров деблокирования в соответствии с одной или более методиками настоящего описания.
На ФИГ. 7 приведена блок-схема, иллюстрирующая пример системы, которая может быть выполнена с возможностью кодирования и декодирования видеоданных в соответствии с одной или более методиками настоящего описания.
На ФИГ. 8 приведена блок-схема, иллюстрирующая пример видеокодера, который может быть выполнен с возможностью кодирования видеоданных в соответствии с одной или более методиками настоящего описания.
На ФИГ. 9 приведена блок-схема, иллюстрирующая пример видеодекодера, который может быть выполнен с возможностью декодирования видеоданных в соответствии с одной или более методиками настоящего описания. На ФИГ. 10 приведена блок-схема иллюстрирующая пример выполнения деблокирования в соответствии с одной или более методиками настоящего описания.
На ФИГ. 11 приведена блок-схема иллюстрирующая пример выполнения деблокирования в соответствии с одной или более методиками настоящего описания.
На ФИГ. 12 приведена блок-схема иллюстрирующая пример выполнения деблокирования в соответствии с одной или более методиками настоящего описания.
На ФИГ. 13 приведен пример таблицы, которую можно использовать для определения параметров деблокирования в соответствии с одной или более методиками настоящего описания.
На ФИГ. 14A приведены концептуальные схемы, иллюстрирующие блоки видеоданных, включая границу деблокирования, в соответствии с одной или более методиками настоящего описания.
На ФИГ. 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] Видеосодержимое обычно включает в себя видеопоследовательности, состоящие из ряда кадров. Последовательность кадров может также называться группой изображений (ГИ). Каждый видеокадр или изображение может включать в себя множество срезов или мозаичных фрагментов, причем срез или мозаичный фрагмент включает в себя множество видеоблоков. Используемый в настоящем описании термин «видеоблок» может по существу относиться к области изображения, или, в частности, может относиться к самому большому массиву значений выборки, которые могут быть кодированы с прогнозированием, их подразделам и/или соответствующим структурам. Термин «текущий видеоблок» может дополнительно относиться к кодируемой или декодируемой области изображения. Видеоблок может быть определен как массив значений выборки, которые могут быть кодированы с прогнозированием. Следует отметить, что в некоторых случаях значения пикселей (Pic) могут быть описаны как включающие значения выборки соответствующих компонентов видеоданных, которые также могут упоминаться как цветовые компоненты (например, компоненты яркости (Y) и цветности (Cb и Cr) или красный, зеленый и синий компоненты). Следует отметить, что в некоторых случаях термины «значения пикселей» и «значения выборки» используют взаимозаменяемо. Видеоблоки могут быть упорядочены в изображении в соответствии с типом сканирования (например, растровое сканирование). Видеокодер может выполнять кодирование с прогнозированием для видеоблоков и их подразделов. Видеоблоки и их подразделы могут упоминаться как узлы.
[0012] 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.
[0013] В 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.
[0014] JEM определяет CTU, имеющий максимальный размер 256 × 256 выборок яркости. JEM определяет структуру блоков квадродерева и двоичного дерева (QTBT). В JEM структура QTBT позволяет осуществлять дополнительное разделение концевых узлов квадродерева в соответствии со структурой двоичного дерева (BT). Таким образом, в JEM структура двоичного дерева позволяет рекурсивно разделять концевые узлы квадродерева по вертикали или горизонтали. На ФИГ. 1 приведен пример разделения CTU (например, CTU, имеющий размер 256 × 256 выборок яркости) на концевые узлы квадродерева, а концевые узлы квадродерева дополнительно разделяют в соответствии с двоичным деревом. Таким образом, на ФИГ. 1 пунктирными линиями обозначены дополнительные разделения двоичного дерева в квадродереве. Таким образом, структура двоичного дерева в JEM допускает квадратные и прямоугольные концевые узлы, причем каждый концевой узел включает в себя CB. Как показано на ФИГ. 1, изображение, включенное в ГИ, может включать в себя срезы, причем каждый срез включает в себя последовательность CTU, а каждый CTU может быть разделен в соответствии со структурой QTBT. ФИГ. 1 иллюстрирует пример разделения QTBT для одного CTU, включенного в срез. Таким образом, структура двоичного дерева в JEM допускает квадратные и прямоугольные концевые узлы, причем каждый концевой узел включает в себя CB. В JEM CB используют для прогнозирования без какого-либо дальнейшего разделения. Таким образом, в JEM CB может быть блоком значений выборок, к которым применяют такое же прогнозирование. Таким образом, концевой узел JEM QTBT может быть аналогом PB в ITU-T H.265.
[0015] Формат выборки видео, который также может называться форматом цветности, может определять количество выборок цветности, включенных в 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, массив выборок компонента яркости дополнительно имеет ту же ширину и высоту, что и массив выборок каждого компонента цветности.
[0016] Как описано выше, данные внутреннего или внешнего прогнозирования используют для получения опорных значений выборки для блока значений выборки. Разница между значениями выборки, включенными в текущий 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 применение вторичного преобразования для получения коэффициентов преобразования может дополнительно зависеть от режима прогнозирования.
[0017] Коэффициенты преобразования могут быть квантованы в соответствии с процессом квантования. Квантование аппроксимирует коэффициенты преобразования по амплитудам, ограниченным набором указанных значений. Квантование можно использовать, чтобы варьировать объем данных, требуемых для представления группы коэффициентов преобразования. Квантование может быть в целом описано как реализуемое путем деления коэффициентов преобразования на коэффициент масштабирования и применения соответствующих функций округления (например, округление до ближайшего целого числа). Таким образом, обратное квантование (или «деквантование») может включать в себя умножение значений уровня коэффициента на коэффициент масштабирования. Следует отметить, что используемый в настоящем документе термин «процесс квантования» в некоторых случаях может по существу относиться к делению на коэффициент масштабирования для получения значений уровня или умножению на коэффициент масштабирования для восстановления коэффициентов преобразования в некоторых случаях. Таким образом, в некоторых случаях процесс квантования может относиться к квантованию, а в некоторых - к обратному квантованию. Текущий блок видеоданных восстанавливают путем выполнения обратного квантования значений уровня, обратного преобразования и добавления набора значений прогнозирования к полученному в результате остатку. Значения выборки восстановленного блока могут отличаться от значений выборки текущего видеоблока, подвергнутых процессу кодирования. Таким образом, можно сказать, что кодирование сопряжено с потерями. Однако следует отметить, что разницу в значениях выборки можно считать приемлемой для зрителя, просматривающего восстановленное видео.
[0018] Квантованные коэффициенты преобразования (которые могут называться значениями уровня) могут быть энтропийно кодированы согласно методике энтропийного кодирования (например, контентно-адаптивное кодирование с переменной длиной (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), энтропийное кодирование с разделением по интервалам вероятности (PIPE) и т. д.). Кроме того, элементы синтаксиса, такие как элемент синтаксиса, указывающий режим прогнозирования, также могут быть энтропийно кодированы. Энтропийно кодированные квантованные коэффициенты преобразования и соответствующие энтропийно кодированные элементы синтаксиса могут формировать совместимый битовый поток, который можно использовать для воспроизведения видеоданных. Процесс бинаризации может быть выполнен с элементами синтаксиса как часть процесса энтропийного кодирования. Бинаризация означает процесс преобразования синтаксиса в последовательность из одного или более битов. Эти биты могут называться «двоичными значениями». На ФИГ. 4A-4В приведены концептуальные схемы, иллюстрирующие примеры кодирования блока видеоданных. Как показано на ФИГ. 4A, текущий блок видеоданных (например, CB, соответствующий видеокомпоненту) кодируют посредством получения остатка путем вычитания набора значений прогнозирования из текущего блока видеоданных, преобразования остатка и квантования коэффициентов преобразования для получения значений уровня. Как показано на ФИГ. 4B, текущий блок видеоданных декодируют путем выполнения обратного квантования значений уровня, обратного преобразования и добавления набора значений прогнозирования к полученному в результате остатку. Следует отметить, что в примерах на ФИГ. 4A-4B значения выборки восстановленного блока отличаются от значений выборки текущего кодируемого видеоблока. Таким образом, можно сказать, что кодирование сопряжено с потерями. Однако разницу в значениях выборки можно считать приемлемой или незаметной для зрителя, просматривающего восстановленное видео.
[0019] Как показано на ФИГ. 4A, квантованные коэффициенты преобразования кодируют в битовый поток. Квантованные коэффициенты преобразования и элементы синтаксиса (например, элементы синтаксиса, указывающие структуру кодирования для видеоблока) могут быть энтропийно кодированы согласно методике энтропийного кодирования. Примеры методик энтропийного кодирования включают в себя контентно-адаптивное кодирование с переменной длиной (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), энтропийное кодирование с разделением по интервалам вероятностей (PIPE) и т. п. Энтропийно кодированные квантованные коэффициенты преобразования и соответствующие энтропийно кодированные элементы синтаксиса могут формировать совместимый битовый поток, который можно использовать для воспроизведения видеоданных в видеодекодере. Процесс энтропийного кодирования может включать в себя бинаризацию элементов синтаксиса. Бинаризация означает процесс преобразования значения синтаксиса в последовательность из одного или более битов. Эти биты могут называться «двоичными значениями». Бинаризация является процессом без потерь и может включать в себя одну из следующих методик кодирования или их комбинацию: кодирование с фиксированной длиной, унарное кодирование, усеченное унарное кодирование, усеченное кодирование Райса, кодирование Голомба, экспоненциальное кодирование Голомба k-го порядка и кодирование Голомба - Райса. Например, бинаризация может включать в себя представление целочисленного значения 5 для элемента синтаксиса как 00000101 с использованием методики 8-битной бинаризации с фиксированной длиной или представление целочисленного значения 5 как 11110 с использованием методики бинаризации унарного кодирования. Каждый из используемых в настоящем документе терминов «кодирование с фиксированной длиной», «унарное кодирование», «усеченное унарное кодирование», «усеченное кодирование Райса», «кодирование Голомба», «экспоненциальное кодирование Голомба k-го порядка» и «кодирование Голомба - Райса» может относиться к общим реализациям этих методик и/или более конкретным вариантам осуществления этих методик кодирования. Например, вариант реализации кодирования Голомба - Райса может быть конкретно определен в соответствии со стандартом кодирования видеосигналов, например ITU-T H.265. Процесс энтропийного кодирования дополнительно включает кодирование двоичных значений с использованием алгоритмов сжатия данных без потерь. В примере CAB AC для конкретного двоичного значения контекстная модель может быть выбрана из набора доступных контекстных моделей, связанных с двоичным значением. В некоторых примерах контекстная модель может быть выбрана на основе предыдущего двоичного значения и/или значений предыдущих элементов синтаксиса. Контекстная модель может идентифицировать вероятность того, что двоичное значение представляет собой конкретное значение. Например, контекстная модель может указывать вероятность 0,7 для кодирования двоичного значения 0 и вероятность 0,3 для кодирования двоичного значения 1. Следует отметить, что в некоторых случаях вероятность кодирования двоичного значения 0 и вероятность кодирования двоичного значения 1 могут не быть равными 1. После выбора доступной контекстной модели энтропийный кодер CAB AC может арифметически кодировать двоичное значение на основе идентифицированной контекстной модели. Контекстная модель может быть обновлена на основе значения кодированного двоичного значения. Контекстная модель может быть обновлена на основе связанной переменной, сохраненной с контекстом, например размером окна адаптации, количеством двоичных значений, кодированных с использованием контекста. Следует отметить, что согласно ITU-T H.265 энтропийный кодер CABAC может быть реализован так, что некоторые элементы синтаксиса могут быть энтропийно кодированы с использованием арифметического кодирования без применения явно назначенной контекстной модели, и такое кодирование может называться обходным кодированием.
[0020] Как описано выше, данные внутреннего прогнозирования или данные внешнего прогнозирования могут связывать область изображения (например, 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 могут называться режимами ненаправленного прогнозирования, а режимы углового прогнозирования могут называться режимами направленного прогнозирования. Следует отметить, что методики, описанные в настоящем документе, могут быть в целом применимы, независимо от количества определенных возможных режимов прогнозирования.
[0021] В случае кодирования с внешним прогнозированием вектор движения (MV) идентифицирует опорные выборки в изображении, отличном от изображения видеоблока, который подлежит кодированию, и, таким образом, использует временную избыточность в видео. Например, текущий видеоблок может быть спрогнозирован из опорного (-ых) блока (-ов), находящегося (-ихся) в ранее кодированном (-ых) кадре (-ах), и вектор движения может быть использован для указания местоположения опорного блока. Вектор движения и связанные данные могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, точность в одну четверть пикселя, половину пикселя, один пиксель, два пикселя, четыре пикселя), направление прогнозирования и/или значение индекса опорного кадра. Стандарт кодирования, такой как, например, ITU-T H.265, может дополнительно поддерживать прогнозирование вектора движения. Прогнозирование вектора движения позволяет задавать вектор движения с использованием векторов движения соседних блоков. Примеры прогнозирования вектора движения включают в себя расширенное прогнозирование вектора движения (AMVP), временное прогнозирование вектора движения (TMVP), так называемый режим «слияния», а также «пропуск» и «прямое» логическое определение движения. Кроме того, JEM поддерживает расширенное временное прогнозирование вектора движения (ATMVP), пространственно-временное прогнозирование вектора движения (STMVP), режим извлечения вектора движения с соответствием схеме (PMMVD), который представляет собой специальный режим слияния, основанный на методиках преобразования с повышением частоты кадров (FRUC), и методики прогнозирования с компенсацией движения путем аффинного преобразования.
[0022] Как описано выше, квантование может быть реализовано посредством деления коэффициентов преобразования на коэффициент масштабирования и может быть дополнительно использовано для изменения объема данных, требуемых для представления группы коэффициентов преобразования. Таким образом, увеличение коэффициента масштабирования (или степени квантования) уменьшает объем данных, необходимых для представления коэффициентов группы. В 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 и соответствующий параметр квантования может быть получен для каждого из компонентов яркости и цветности. Следует отметить, что по мере увеличения степени квантования (например, коэффициенты преобразования делятся на большее значение коэффициента масштабирования), величина искажения может увеличиваться (например, восстановленные видеоданные могут казаться пользователю более «блочными»).
[0023] В некоторых случаях блочные артефакты могут приводить к тому, что границы блоков кодирования восстановленных видеоданных будут визуально заметны для пользователя. Для уменьшения блочных артефактов восстановленные значения выборки могут быть изменены таким образом, чтобы минимизировать артефакты, вносимые процессом кодирования видеосигналов. Такие изменения в целом могут называть фильтрацией. Следует отметить, что фильтрация может происходить в рамках процесса фильтрации в цикле или процесса фильтрации после цикла. Для процесса фильтрации в цикле полученные значения выборки процесса фильтрации могут быть использованы для прогнозируемых видеоблоков (например, сохранены в буфере опорного кадра для последующего кодирования в видеокодере и последующего декодирования в видеодекодере). Для процесса фильтрации после цикла вывод полученных значений выборки процесса фильтрации происходит только в рамках процесса декодирования (например, их не используют для последующего кодирования). Например, для процесса фильтрации в цикле значения выборки, полученные в результате фильтрации восстановленного блока, будут использованы для последующего декодирования (например, сохранены в опорном буфере) и будут выведены (например, на дисплей). Для процесса фильтрации после цикла восстановленный блок без изменения будет использован для последующего декодирования, а значения выборки, полученные в результате фильтрации восстановленного блока, будут выведены.
[0024] В приведенных в настоящем документе уравнениях могут использоваться следующие арифметические операторы:
[0025] Кроме того, могут использоваться следующие математические функции:
Clip 1c(x)= Clip3(0, (1 << BitDepthc) - 1, x), где BitDepthc - битовая глубина канала цветности
abs(x) представляет собой абсолютное значение x.
Max(x, y) =
[0026] Кроме того, могут применяться следующие определения логических операторов:
x && y - булево логическое «и» для x и y
х | | у - булево логическое «или» для х и у
! - булево логическое «не»
x ? y : z - Если x равен TRUE (истина) или не равен 0, вычисляют значение y; в противном случае оценивают значение z.
[0027] Кроме того, могут применяться следующие реляционные операторы:
[0028] Кроме того, могут применяться следующие побитовые операторы:
[0029] Деблокирование (или устранение блочности), фильтрация деблокирования, выполнение деблокирования или применение фильтра деблокирования относится к способу сглаживания границ видеоблоков со смежными восстановленными видеоблоками (т. е. снижение заметности границ для зрителя). Сглаживание границ соседних восстановленных видеоблоков может включать изменение значений выборки, включенных в строки или столбцы, смежные с границей. В ITU-T H.265 предусмотрено, что фильтр деблокирования применяют в отношении восстановленных значений выборки в рамках процесса фильтрации в цикле. ITU-T H.265 включает два типа фильтров деблокирования, которые могут быть использованы для изменения выборок яркости: сильный фильтр, который изменяет значения выборки в трех смежных с границей строках или столбцах, и слабый фильтр, который изменяет значения выборки в непосредственно примыкающих к границе строке или столбце и при определенных условиях изменяет значения выборки во вторых строке или столбце относительно границы. Кроме того, ITU-T H.265 включает в себя один тип фильтра, который может быть использован для изменения выборок цветности, т. е. нормальный фильтр.
[0030] На ФИГ. 5A-5B проиллюстрированы значения выборки, включенные в видеоблоки P и Q, имеющие границу. В настоящем документе видеоблоки P и Q используют для обозначения смежных видеоблоков, имеющих границу блока, к которой можно применять деблокирование. Способ изменения значений выборки может быть основан на определенных фильтрах, в которых pi и qi представляют соответствующие значения выборки в столбце для вертикальной границы и значения выборки в строке для горизонтальной границы, а pi’ и qi’ представляют измененные значения выборки. Заданные фильтры могут определять выборки, которые должны быть изменены (или отфильтрованы), и выборки, которые используют для определения того, как выборки должны быть изменены. Например, как показано на ФИГ. 5A, в одном примере значения выборки в каждом из первых трех столбцов, смежных с границей деблокирования, могут быть изменены (проиллюстрированы как отфильтрованные выборки) на основе значений выборки, включенных в каждый из первых четырех столбцов, смежных с границей деблокирования (проиллюстрированных как опорные выборки).
[0031] Как описано выше, 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+l) / 2 - p1 + ∆) / 2
∆q = ((q2+p0+l) / 2 - q1 - ∆) / 2
p1’ = p1 + ∆p
q1’ = q1 + ∆q
[0032] Кроме того, ITU-T H.265 включает один тип фильтра, который может быть использован для изменения выборок цветности: нормальный фильтр. Упрощенные определения уравнений нормального фильтра для изменения значений выборки цветности приведены ниже.
Нормальный фильтр
∆ = ((q0 - p0) * 4+p1 - q1+4) / 8
p0’ = p0 + ∆
q0’ = q0 - ∆
[0033] Деблокирование может быть выполнено на основе степени гранулярности деблокирования. 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.
[0034] В ITU-T H.265 переменные tC’ и β’ определяют на основе QP, используемого для кодирования CB, включая видеоблоки P и Q (которые могут упоминаться как QPP и QPq). На ФИГ. 6 представлена таблица для определения 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+l) / 2;
slice_beta_offset_div2 представляет собой значение смещения, применяемое к срезу видеоданных, который включает в себя выборку q0,0; и
slice_tc_offset_div2 представляет собой значение смещения, применяемое к срезу видеоданных, который включает в себя выборку q0,0.
[0035] Согласно ITU-T H.265 переменные β и Q определяются следующим образом:
β=β' * (1 << (BitDepthy - 8))
tc=tc' * (1 << (BitDepthy - 8))
где BitDepthy означает битовую глубину выборок яркости.
[0036] 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
[0037] Кроме того, в 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 генерируют с использованием режима внутреннего прогнозирования.
[0038] Следует отметить, что может быть полезно в общих чертах описать фильтр деблокирования с точки зрения набора параметров фильтра. Например, для набора значений выборки {a...b} в строке или столбце соответствующее значение деблокированной выборки, y[n], может быть определено на основе следующего уравнения:
,
где
длина фильтра определяется как abs(a - b+l);
coeff[m] предоставляет значение отвода фильтра (также называемое коэффициентом фильтра). Например, для {a...b} = {0...4} набор значений отвода может представлять собой {1, 2, 3, 2, 1};
x [n+m] предоставляет входные значения выборки, соответствующие опорным выборкам, следует отметить, что размер опорной выборки может быть больше или равен длине фильтра.
[0039] Кроме того, в 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.
[0040] Если 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 соответственно.
[0043] Если pps_beta_offset_div2 и pps_tc_offset_div2 присутствуют в PPS, ITU-T H.265 предоставляет следующее определение для pps_beta_offset_div2 и pp s_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.
[0044] Как описано выше, 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, не учитывает различные параметры кодирования и свойства восстановленных видеоданных при выполнении деблокирования.
[0045] На ФИГ. 7 приведена блок-схема, иллюстрирующая пример системы, которая может быть выполнена с возможностью кодирования (т. е. кодирования и/или декодирования) видеоданных в соответствии с одной или более методиками настоящего описания. Система 100 представляет собой пример системы, которая может инкапсулировать видеоданные в соответствии с одной или более методиками настоящего описания. Как показано на ФИГ. 7, система 100 включает в себя устройство-источник 102, среду 110 связи и устройство 120 назначения. В проиллюстрированном на ФИГ. 7 примере устройство-источник 102 может включать в себя любое устройство, выполненное с возможностью кодирования видеоданных и передачи кодированных видеоданных в среду 110 связи. Устройство 120 назначения может включать в себя любое устройство, выполненное с возможностью приема кодированных видеоданных через среду 110 связи и декодирования кодированных видеоданных. Устройство-источник 102 и/или устройство 120 назначения могут включать в себя вычислительные устройства, оборудованные для проводной и/или беспроводной связи, и могут включать в себя, например, телевизионные приставки, цифровые видеомагнитофоны, телевизоры, настольные компьютеры, ноутбуки или планшетные компьютеры, игровые консоли, медицинские устройства визуализации и мобильные устройства, включая, например, смартфоны, сотовые телефоны, персональные игровые устройства.
[0046] Среда 110 связи может включать в себя любую комбинацию средств беспроводной и проводной связи и/или запоминающих устройств. Среда 110 связи может включать в себя коаксиальные кабели, оптоволоконные кабели, кабели витой пары, беспроводные передатчики и приемники, маршрутизаторы, коммутаторы, ретрансляторы, базовые станции или любое другое оборудование, которое может обеспечивать связь между различными устройствами и объектами. Среда 110 связи может включать в себя одну или более сетей. Например, среда 110 связи может включать в себя сеть, выполненную с возможностью обеспечения доступа к Всемирной паутине, например Интернету. Сеть может работать в соответствии с комбинацией одного или более телекоммуникационных протоколов. Телекоммуникационные протоколы могут включать в себя фирменные аспекты и/или могут включать в себя стандартизированные телекоммуникационные протоколы. Примеры стандартизированных телекоммуникационных протоколов включают в себя стандарты: цифрового видеовещания (DVB), Комитета по усовершенствованным телевизионным системам (ATSC), цифрового вещания с комплексными услугами (ISDB), спецификации интерфейса передачи данных по кабелю (DOCSIS), глобальной системы мобильной связи (GSM), множественного доступа с кодовым разделением (CDMA), партнерского проекта по системам 3-го поколения (3GPP), Европейского института телекоммуникационных стандартов (ETSI), Интернет-протокола (IP), протокола беспроводных приложений (WAP) и Института инженеров по электротехнике и электронике (IEEE).
[0047] Запоминающие устройства могут включать в себя устройства или носители любого типа, выполненные с возможностью хранения данных. Носитель данных может включать в себя материальные или энергонезависимые машиночитаемые носители. Машиночитаемый носитель может включать в себя оптические диски, флеш-память, магнитные ЗУ или любые другие подходящие цифровые носители данных. В некоторых примерах запоминающее устройство или его части могут быть описаны как энергонезависимое запоминающее устройство, а в других примерах части запоминающих устройств могут быть описаны как энергозависимое запоминающее устройство. Примеры энергозависимых запоминающих устройств могут включать в себя оперативные запоминающие устройства (RAM), динамические оперативные запоминающие устройства (DRAM) и статические оперативные запоминающие устройства (SRAM). Примеры энергонезависимых запоминающих устройств могут включать в себя жесткие магнитные диски, оптические диски, дискеты, флеш-память или виды электрически программируемых запоминающих устройств (EPROM) или электрически стираемых и программируемых (EEPROM) запоминающих устройств. Запоминающее (-ие) устройство (-а) может (могут) включать в себя карты памяти (например, карту памяти Secure Digital (SD)), внутренние/внешние жесткие диски и/или внутренние/внешние твердотельные накопители. Данные могут храниться в запоминающем устройстве в соответствии с определенным форматом файла.
[0048] На ФИГ. 7 устройство-источник 102 включает в себя источник 104 видео, видеокодер 106, инкапсулятор 107 данных и интерфейс 108. Источник 104 видео может включать в себя любое устройство, выполненное с возможностью захвата и/или хранения видеоданных. Например, источник 104 видео может включать в себя видеокамеру и запоминающее устройство, функционально связанное с ней. Видеокодер 106 может включать в себя любое устройство, выполненное с возможностью приема видеоданных и генерирования совместимого битового потока, представляющего видеоданные. Совместимый битовый поток может относиться к битовому потоку, который видеодекодер может принимать и из которого он может воспроизводить видеоданные. Аспекты совместимого битового потока могут быть определены в соответствии со стандартом кодирования видеосигналов. При формировании совместимого битового потока видеокодер 106 может сжимать видеоданные. Сжатие может происходить с потерями (заметными или незаметными для зрителя) или без потерь.
[0049] На ФИГ. 8 приведена блок-схема, иллюстрирующая пример видеокодера 200, способного реализовывать методики кодирования видеоданных, описанные в настоящем документе. Следует отметить, что, хотя указанный в примере видеокодер 200 проиллюстрирован как имеющий различные функциональные блоки, такая иллюстрация предназначена только для описания и не ограничивает видеокодер 200 и/или его подкомпоненты конкретной архитектурой аппаратного или программного обеспечения. Функции видеокодера 200 могут быть реализованы с использованием любой комбинации аппаратных, программно-аппаратных и/или программных вариантов осуществления. В одном примере видеокодер 200 может быть выполнен с возможностью кодирования видеоданных в соответствии с описанными в настоящем документе методиками. Видеокодер 200 может выполнять кодирование с внутренним прогнозированием и кодирование с внешним прогнозированием областей изображения и в таком виде может называться гибридным видеокодером. В приведенном на ФИГ. 8 примере видеокодер 200 принимает исходные видеоблоки. В некоторых примерах исходные видеоблоки могут включать в себя области изображения, разделенные в соответствии со структурой кодирования. Например, исходные видеоданные могут включать в себя макроблоки, CTU, CB, их подразделы и/или другой эквивалентный блок кодирования. В некоторых примерах видеокодер может быть выполнен с возможностью выполнения дополнительных подразделений исходных видеоблоков. Следует отметить, что описанные в настоящем документе методики в целом применимы к кодированию видеосигналов, независимо от методов разделения исходных видеоданных до и/или во время кодирования. В приведенном на ФИГ. 9 примере видеокодер 200 включает в себя сумматор 202, генератор 204 коэффициентов преобразования, блок 206 квантования коэффициентов, блок 208 обработки обратного квантования/преобразования, сумматор 210, блок 212 обработки внутреннего прогнозирования, блок 214 обработки внешнего прогнозирования, блок 216 фильтрации и блок 218 энтропийного кодирования. Как показано на ФИГ. 8, видеокодер 200 принимает исходные видеоблоки и выводит битовый поток.
[0050] В примере, показанном на ФИГ. 8, видеокодер 200 может генерировать остаточные данные путем вычитания прогнозируемого видеоблока из исходного видеоблока. Сумматор 202 представляет компонент, выполненный с возможностью осуществления этой операции вычитания. В одном примере вычитание видеоблоков происходит в пиксельной области. Генератор 204 коэффициентов преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT), дискретное синусное преобразование (DST) или концептуально подобное преобразование, к остаточному блоку или его подразделам (например, четыре преобразования 8 × 8 можно применять к массиву остаточных значений 16 × 16) для получения набора остаточных коэффициентов преобразования. Генератор 204 коэффициентов преобразования может быть выполнен с возможностью осуществления любых и всех комбинаций преобразований, включенных в семейство дискретных тригонометрических преобразований. Генератор 204 коэффициентов преобразования может выводить коэффициенты преобразования в блок 206 квантования коэффициентов.
[0051] Блок 206 квантования коэффициентов может быть выполнен с возможностью квантования коэффициентов преобразования. Как описано выше, степень квантования может быть изменена путем регулировки коэффициента масштабирования квантования, который может определяться параметрами квантования. Блок 206 квантования коэффициентов может быть дополнительно выполнен с возможностью определения значений квантования и вывода данных QP, которые может использовать видеодекодер для восстановления параметра квантования для выполнения обратного квантования в процессе декодирования видеосигналов. Например, сигнализируемые данные QP могут включать в себя значения дельты QP. В ITU-T H.265 степень квантования, применяемая к набору коэффициентов преобразования, может зависеть от параметров уровня среза, параметров, унаследованных от предыдущего блока кодирования, и/или необязательно сигнализируемых значений дельты уровня CU.
[0052] Как показано на ФИГ. 8, квантованные коэффициенты преобразования выводят в блок 208 обработки обратного квантования/преобразования. Блок 208 обработки обратного квантования/преобразования может быть выполнен с возможностью применения обратного квантования и/или обратного преобразования для генерации восстановленных остаточных данных. Как показано на ФИГ. 8, в сумматоре 210 восстановленные остаточные данные могут быть добавлены к прогнозируемому видеоблоку. Таким образом, кодированный видеоблок может быть восстановлен, и полученный в результате восстановленный видеоблок может быть использован для оценки качества кодирования для данного прогнозирования, типа преобразования и/или уровня квантования. Видеокодер 200 может быть выполнен с возможностью осуществления множества проходов кодирования (например, выполнения кодирования с изменением одного или более параметров кодирования). Связанное со скоростью искажение битового потока или других системных параметров может быть оптимизировано на основе оценки восстановленных видеоблоков. Восстановленные видеоблоки можно дополнительно сохранять и использовать в качестве опорных для прогнозирования последующих блоков.
[0053] Как описано выше, можно кодировать видеоблок с использованием внутреннего прогнозирования. Блок 212 обработки внутреннего прогнозирования может быть выполнен с возможностью выбора режима внутреннего прогнозирования для видеоблока, подлежащего кодированию. Блок 212 обработки внутреннего прогнозирования может быть выполнен с возможностью оценки кадра и/или его области и определения режима внутреннего прогнозирования, который используют при кодировании текущего блока. Как показано на ФИГ. 8, блок 212 обработки внутреннего прогнозирования выводит данные внутреннего прогнозирования (например, элементы синтаксиса) в блок 216 фильтрации и блок 218 энтропийного кодирования.
[0054] Блок 214 обработки внешнего прогнозирования может быть выполнен с возможностью кодирования с внешним прогнозированием для текущего видеоблока. Блок 214 обработки внешнего прогнозирования может быть выполнен с возможностью приема исходных видеоблоков и вычисления вектора движения для PU или т. п. видеоблока. Вектор движения может указывать смещение в PU или т. п. видеоблока внутри текущего видеокадра относительно прогнозируемого блока в опорном кадре. Кодирование с внешним прогнозированием может использовать одно или более опорных изображений. Прогнозирование движения может дополнительно быть однонаправленным (с использованием одного вектора движения) или двунаправленным (с использованием двух векторов движения). Блок 214 обработки внешнего прогнозирования может быть выполнен с возможностью выбора блока прогнозирования путем расчета разности пикселей, определенной, например, суммой абсолютной разности (SAD), суммой квадратов разности (SSD) или другими метриками разности. Вектор движения и связанные данные могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, точность в одну четверть пикселя), направление прогнозирования и/или значение индекса опорного кадра. Стандарт кодирования, такой как, например, ITU-T H.265, может дополнительно поддерживать прогнозирование вектора движения. Прогнозирование вектора движения позволяет задавать вектор движения с использованием векторов движения соседних блоков. Примеры прогнозирования вектора движения включают в себя расширенное прогнозирование вектора движения (AMVP), временное прогнозирование вектора движения (TMVP), так называемый режим «слияния», а также «пропуск» и «прямое» логическое определение движения. Блок 214 обработки внешнего прогнозирования может быть выполнен с возможностью прогнозирования вектора движения в соответствии с одной или более описанными выше методиками. Блок 214 обработки внешнего прогнозирования может быть выполнен с возможностью генерирования прогнозируемого блока с использованием данных прогнозирования движения. Например, блок 214 обработки внешнего прогнозирования может располагать прогнозируемый видеоблок в буфере кадров (не показан на ФИГ. 8). Следует отметить, что блок 214 обработки внешнего прогнозирования может быть дополнительно выполнен с возможностью применения одного или более интерполяционных фильтров к восстановленному остаточному блоку для вычисления субцелочисленных значений пикселей для использования при оценке движения. Блок 214 обработки внешнего прогнозирования может выводить данные прогнозирования движения для вычисленного вектора движения в блок 216 фильтрации и блок 218 энтропийного кодирования.
[0055] Как описано выше, деблокирование относится к процессу сглаживания границ восстановленных видеоблоков. Как показано на ФИГ. 8, блок 216 фильтрации принимает восстановленные видеоблоки и параметры кодирования (например, данные внутреннего прогнозирования, данные внешнего прогнозирования и данные QP) и выводит модифицированные восстановленные видеоданные. Блок 216 фильтрации может быть выполнен с возможностью деблокирования и/или фильтрации с адаптивным смещением выборки (SAO). SAO-фильтрация представляет собой нелинейное сопоставление амплитуды, которое можно использовать для улучшения восстановления путем добавления смещения к восстановленным видеоданным. Следует отметить, что, как показано на ФИГ. 8, блок 212 обработки внутреннего прогнозирования и блок 214 обработки внешнего прогнозирования могут принимать модифицированный восстановленный видеоблок через блок 216 фильтрации. Таким образом, в некоторых случаях деблокирование может происходить в цикле, т. е. прогнозируемые видеоблоки, сохраненные в опорном буфере, могут быть отфильтрованы. В некоторых случаях деблокирование может происходить после цикла, т. е. после восстановления видеоданных и, например, до их вывода на дисплей. Описанные в настоящем документе методики могут быть применимыми для деблокирования в цикле, деблокирования после цикла и/или их комбинаций.
[0056] Как описано выше, деблокирование, выполняемое в ITU-T H.265 и JEM, может быть неидеальным. В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выбора разных линий фильтрации (в некоторых случаях количество выборок, деблокируемых на каждой стороне границы, может быть различным) на основе одного или более из: размера блока на каждой стороне границы (одной или обеих), интенсивности границы, режима прогнозирования, используемого блоками на каждой стороне границы, режима прогнозирования (например, внутренний, внешний, пропуск) деблокируемой выборки (например, использование более слабого фильтра для границы, близкой к опорным выборкам), значения QP деблокируемой выборки, размера блока, соответствующего деблокируемой выборке, размера блока, соответствующего выборкам, используемым для деблокирования, векторов движения для блоков на каждой стороне деблокируемой границы, векторов движения для деблокируемой выборки и/или векторов движения для выборки, используемой для деблокирования.
[0057] Выборки на каждой стороне границы блока (перпендикулярно краю границы) могут быть представлены следующим образом:
...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 границы.
[0058] В одном примере сторона P представляет выборки вне текущего CU, сторона Q представляет выборки внутри текущего CU.
[0059] В одном примере сторона P представляет выборки внутри текущего CU, сторона Q представляет выборки вне текущего CU.
[0060] В одном примере сторона P представляет выборки вне текущего блока, сторона Q представляет выборки внутри текущего блока.
[0061] В одном примере сторона P представляет выборки внутри текущего блока, сторона Q представляет выборки вне текущего блока.
[0062] Касательно ФИГ. 5А выборки py>x и qy>x соответствуют линии R[x] при деблокировании вертикального края.
[0063] Касательно ФИГ. 5B выборки py>x и qy>x соответствуют линии R[y] при деблокировании горизонтального края.
[0064] Один пример более широкого (т. е. с большим количеством деблокированных выборок) более сильного фильтра для стороны P границы, называемого фильтром WS00P стороны P, представляет собой:
,
где px' представляет значение выборки после деблокирования в положении, соответствующем px.
[0065] Один пример более широкого (т. е. с большим количеством деблокированных выборок) более сильного фильтра для стороны Q границы, называемого фильтром WS00Q стороны Q, представляет собой:
,
где qх’ представляет значение выборки после деблокирования в позиции, соответствующей qх.
[0066] Один из примеров узкого (т. е. с меньшим количеством деблокированных выборок) сильного фильтра для стороны P границы, называемого фильтром HEVC_P стороны Р, представляет собой:
,
где px’ представляет значение выборки после деблокирования в положении, соответствующем px.
[0067] Один из примеров узкого (т. е. с меньшим количеством деблокированных выборок) сильного фильтра для стороны Q границы, называемого фильтром HEVC_Q стороны Q, представляет собой:
,
где qх’ представляет значение выборки после деблокирования в позиции, соответствующей qх.
[0068] Один из примеров узкого (с меньшим количеством деблокированных выборок) сильного фильтра для стороны P границы, называемого фильтром NS00P стороны Р, представляет собой:
,
где px’ представляет значение выборки после деблокирования в положении, соответствующем px.
[0069] Один из примеров узкого (с меньшим количеством деблокированных выборок) сильного фильтра для стороны Q границы, называемого фильтром NS00Q стороны Q, представляет собой:
,
где qх′ представляет значение выборки после деблокирования в позиции, соответствующей qх.
[0070] Один из примеров узкого (с меньшим количеством деблокированных выборок) сильного фильтра для стороны P границы, называемого фильтром NS00P стороны Р, представляет собой:
[0071] Один из примеров узкого (с меньшим количеством деблокированных выборок) сильного фильтра для стороны Q границы, называемого фильтром NS00Q стороны Q, представляет собой:
[0072] Один из примеров узкого (с меньшим количеством деблокированных выборок) сильного фильтра для стороны P границы, называемого фильтром NS00P стороны Р, представляет собой:
[0073] Один из примеров узкого (с меньшим количеством деблокированных выборок) сильного фильтра для стороны Q границы, называемого фильтром NS00Q стороны Q, представляет собой:
[0074] Один из примеров узкого (с меньшим количеством деблокированных выборок), слабого фильтра для стороны P границы, называемого фильтром стороны Р NW00P, представляет собой:
где px′ представляет значение выборки после деблокирования в положении, соответствующем px.
[0075] Один из примеров узкого (с меньшим количеством деблокированных выборок) слабого фильтра для стороны Q границы, называемого фильтром NW00Q стороны Q, представляет собой:
где qх′ представляет значение выборки после деблокирования в позиции, соответствующей qх.
[0076] Один пример фильтра для стороны P границы, называемого фильтром F0P стороны P, представляет собой:
[0077] Один пример фильтра для стороны Q границы, называемого фильтром F0Q стороны Q, представляет собой:
[0078] Один пример фильтра для стороны P границы, называемого фильтром F1P стороны P, представляет собой:
[0079] Один пример фильтра для стороны Q границы, называемого фильтром F1Q стороны Q, представляет собой:
[0080] В одном примере расстояние деблокируемой выборки от границы может быть обратно пропорционально расстоянию между опорной выборкой, которой назначено наибольшее значение отвода, и деблокируемой выборкой. Кроме того, расстояние второго наибольшего значения отвода от деблокируемой выборки может быть пропорционально расстоянию между выборкой и границей. Фильтры F2P и F2Q, описанные ниже, обеспечивают примеры реализации такой фильтрации. Один пример фильтра для стороны P границы, называемого фильтром F2P стороны P, представляет собой:
[0081] Один пример фильтра для стороны Q границы, называемого фильтром F2Q стороны Q, представляет собой:
[0082] Один пример фильтра для стороны P границы, называемого фильтром F4P стороны P, представляет собой:
[0083] Один пример фильтра для стороны Q границы, называемого фильтром F4Q стороны Q, представляет собой:
[0084] В одном примере в соответствии с методиками, описанными в настоящем документе, вычисление градиента можно использовать при выборе параметров фильтра, количества деблокируемых выборок на одной (или обеих) стороне (-ах) границы блока. Градиент может быть вычислен с использованием выборок в линии R[x].
[0085] В одном примере множество градиентов могут быть вычислены с использованием выборок в линии R[x] и использованы при выборе параметров фильтра, количества деблокируемых выборок на одной (или обеих) стороне (-ах) границы блока. В другом примере множество градиентов могут быть вычислены с использованием выборок в линии R[x], и такие операции, как усреднение градиентов, максимальный градиент, минимальный градиент, можно использовать при выборе параметров фильтра, количества деблокируемых выборок на одной (или обеих) стороне (-ах) границы блока.
[0086] В одном примере вызов функции xCalDQp(R[x]) вычисляет градиент следующим образом:
[0087] В одном примере вызов функции xCalDQq(R[x]) вычисляет градиент следующим образом:
[0088] В одном примере вызов функции xCalDQpLargeBlock(R[x]) вычисляет градиент следующим образом:
[0089] В одном примере вызов функции xCalDQqLargeBlock(R[x]) вычисляет градиент следующим образом:
[0090] В одном примере вызов функции xCalDQpLargeBlock(R[x]) вычисляет градиент следующим образом:
[0091] В одном примере вызов функции xCalDQqLargeBlock(R[x]) вычисляет градиент следующим образом:
[0092] В одном примере вызов функции xCalDQpLargeBlock(R[x]) вычисляет градиент следующим образом:
[0093] В одном примере вызов функции xCalDQqLargeBlock(R[x]) вычисляет градиент следующим образом:
[0094] В одном примере вызов функции xCalDQpLargeBlock(R[x]) вычисляет градиент следующим образом:
[0095] В одном примере вызов функции xCalDQqLargeBlock(R[x]) вычисляет градиент следующим образом:
[0096] В одном примере вызов функции xCalDQpLargeBlock(R[x]) вычисляет градиент следующим образом:
[0097] В одном примере вызов функции xCalDQqLargeBlock(R[x]) вычисляет градиент следующим образом:
[0098] В одном примере вызов функции xCalDQpLargeBlock(R[x]) вычисляет градиент следующим образом:
[0099] В одном примере вызов функции xCalDQqLargeBlock(R[x]) вычисляет градиент следующим образом:
[0100] В одном примере подмножество разностей второго порядка, вычисленное при 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]) может быть опущено.
В одном примере вызов функции xUseStrongFilteringLargeBlock (R[x0, 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С являются пороговыми значениями.
[0101] В одном примере вызов функции 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)))? ИСТИНА : ЛОЖЬ.
[0102] В одном примере вызов функции 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)))? ИСТИНА : ЛОЖЬ.
[0103] В одном примере вызов функции xUseStrongFilteringLargeBlock (R[x], d, bSidePisLargeBlk, bSideQisLargeBlk) вычисляет булеву переменную следующим образом:
sp3=Abs(p3 - p0)
если (bSidePisLargeblk)
{
sp3 = (sp3+Abs(p7 - p0)) + 1) >> 1
}
sq3=Abs(q0 - q3)
если (bSideQisLargeblk)
{
sq3 = (sq3+Abs(q7 - q0) + 1) >> 1
}
xUseStrongFilteringLargeBlock: sp3+sq3 < (β >> 3) && (d < (β >> 2)) && (abs(q0 - p0)
< ((tC * 5+1) >> 1)))? ИСТИНА : ЛОЖЬ.
[0104] В одном примере смещение округления в вызове функции xUseStrongFilteringLargeBlock может быть опущено.
[0105] В одном примере условие, используемое при выборе количества выборок, подлежащих деблокированию на одной (или обеих) стороне (-ах) границы, соответствует размеру (текущего и/или соседнего блока), перпендикулярному границе блока, превышающей пороговое значение. В некоторых случаях, когда подмножество коэффициентов преобразования устанавливают равным нулю для блока на основе размера блока, то пороговое значение, используемое при сравнении, может быть основано на свойствах подмножества нулевых коэффициентов. Например, если коэффициенты преобразования установлены равными нулю для коэффициентов в позиции столбца, большей или равной 32, и позиции строки, большей или равной 32 (при индексации строк и столбцов, начинающейся с 0), то размер, перпендикулярный границе блока, сравнивают с пороговым значением 32.
[0106] В одном примере в битовом потоке может быть принят сигнал, указывающий, равны ли все коэффициенты преобразования нулю для блока выборок. Такой сигнал может быть принят, например, для каждого цветового компонента, группы цветовых компонентов, некоторого пространственного разделения выборок, некоторого пространственно-временного разделения выборок. В HEVC для каждого цветового компонента был сигнализирован флаг кодированного блока (CBF) (явно или неявно с помощью правила вывода в случае отсутствия явного сигнала) - cbf_luma, cbf_cb, cbf_cr; кроме того, также был сигнализирован флаг (явно и неявно), указывающий, содержал ли какой-либо из цветовых компонентов в дереве преобразования ненулевые коэффициенты преобразования, и он назывался корнем остаточного квадродерева CBF - rqt_root_cbf.
[0107] В одном примере количество выборок, подлежащих деблокированию на одной (или обеих) стороне (-ах) границы, может быть основано на типе деблокируемого края (например, вертикальный край блока, горизонтальный край блока), типе канала (например, яркость, цветность), том, равны ли все коэффициенты преобразования нулю для блока выборок на одной (или обеих) стороне (-ах) границы, использует ли блок выборок на одной (или обеих) стороне (-ах) границы режимы кодирования, такие как локальная компенсация освещения (LIC), которые могут быть основаны на линейной модели изменения освещения, использует ли блок выборок на одной (или обеих) стороне (-ах) границы межкомпонентное прогнозирование (которое может быть основано на линейной модели), использует ли блок выборок на одной (или обеих) стороне (-ах) границы прогнозирование, которое определено для блоков, меньших, чем преобразование, использует ли блок выборок на одной (или обеих) стороне (-ах) границы методики, в которых большой блок (например, CU) разделен на подблоки (например, суб-CU) и для этих подблоков получают информацию о движении.
[0108] В одном примере в соответствии с методиками, описанными в настоящем документе, большее количество выборок (например, 7) деблокируют на каждой стороне границы блока, если размер текущего блока, перпендикулярный границе блока, больше или равен пороговому значению (например, 32), и меньшее количество выборок (например, 3) деблокируют на каждой стороне границы блока, если размер текущего блока, перпендикулярный границе блока, меньше порогового значения (например, 32). Например, если ((ширина текущего блока >= 32 и тип края вертикальный) или (высота текущего блока >= 32 и тип края горизонтальный)), то выполняют деблокирование большего количества выборок на каждой стороне границы блока.
[0109] В одном примере в соответствии с методиками, описанными в настоящем документе, большее количество выборок (например, 7) деблокируют на стороне границы блока, если размер блока, перпендикулярный границе блока, больше или равен пороговому значению (например, 32), и меньшее количество выборок (например, 3) деблокируют на стороне границы блока, если размер блока, перпендикулярный границе блока, меньше порогового значения (например, 32). Например: если ((ширина одного блока >= 32 и тип края вертикальный) или (высота одного блока >= 32 и тип края горизонтальный)), то выполняют деблокирование большего количество выборок для этого блока на границе блока. В этом случае, если левая сторона вертикального края границы имеет размер блока 4 (строки) × 64 (столбца), а правая сторона имеет размер блока 4 (строки) × 16 (столбцов), можно выполнять деблокирование большего количества выборок на левой стороне по сравнению с правой стороной.
[0110] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выбора параметров фильтра (включая, например, количество коэффициентов), используемых для деблокирования, на основе одного или более из: расстояния деблокируемой выборки (в количестве выборок) от границы, размера (-ов) блока (-ов) на каждой стороне границы, интенсивности границы, режима прогнозирования, используемого блоками на каждой стороне границы, режима прогнозирования деблокируемой выборки (например, использование более слабого фильтра для границы, близкой к опорным выборкам), QP деблокируемой выборки (например, использование более сильных фильтров для больших QP), размера блока, соответствующего деблокируемой выборке (например, использование более сильных фильтров для большего размера блока), размера блока, соответствующего выборкам, используемым для деблокирования, векторов движения для блоков на каждой стороне границы, подлежащей деблокированию (например, если разность MV больше порогового значения, деблокирование не выполняют, поскольку выборки на разных сторонах границы могут принадлежать разным объектам), и/или векторов движения для деблокируемой выборки; векторов движения для выборки, используемой для деблокирования. Следует отметить, что размер блока, соответствующий выборке, может включать в себя размер блока CU, к которому принадлежит выборка, размер блока TU, к которому принадлежит выборка, или размер блока PU, к которому принадлежит выборка.
[0111] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выбора параметров фильтра (включая, например, количество коэффициентов), используемых для деблокирования, на основе типа деблокируемого края (например, вертикальный край блока, горизонтальный край блока), типа канала (например, яркость, цветность), того, равны ли все коэффициенты преобразования нулю для блока выборок на одной (или обеих) стороне (-ах) границы, использует ли блок выборок на одной (или обеих) стороне (-ах) границы режимы кодирования, такие как локальная компенсация освещения (LIC), которые могут быть основаны на линейной модели изменения освещения, использует ли блок выборок на одной (или обеих) стороне (-ах) границы межкомпонентное прогнозирование (которое может быть основано на линейной модели), использует ли блок выборок на одной (или обеих) стороне (-ах) границы прогнозирование, которое определено для блоков, меньших, чем преобразование, использует ли блок выборок на одной (или обеих) стороне (-ах) границы методики, в которых большой блок (например, CU) разделен на подблоки (например, суб-CU) и для этих подблоков получают информацию о движении.
[0112] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выбора параметров фильтра (включая, например, количество коэффициентов), используемых для деблокирования, на основе типа деблокируемого края (например, вертикальный край блока, горизонтальный край блока), типа канала (например, яркость, цветность), того, равны ли все коэффициенты преобразования нулю для блока выборок на одной (или обеих) стороне (-ах) границы, использует ли блок выборок на одной (или обеих) стороне (-ах) границы режимы кодирования, такие как локальная компенсация освещения (LIC), которые могут быть основаны на линейной модели изменения освещения, использует ли блок выборок на одной (или обеих) стороне (-ах) границы межкомпонентное прогнозирование (которое может быть основано на линейной модели), использует ли блок выборок на одной (или обеих) стороне (-ах) границы прогнозирование, которое определено для блоков, меньших, чем преобразование, использует ли блок выборок на одной (или обеих) стороне (-ах) границы методики, в которых большой блок (например, CU) разделен на подблоки (например, суб-CU) и для этих подблоков получают информацию о движении.
[0113] В одном примере выбор параметров фильтра может включать выбор более широкой более сильной фильтрации.
[0114] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выбора набора параметров фильтра деблокирования (например, более широкой более сильной фильтрации) для обеих сторон, если размер текущего блока, перпендикулярный границе блока, больше или равен пороговому значению (например, 32). Например, если ((ширина текущего блока >= 32 и тип края вертикальный) или (высота текущего блока >= 32 и тип края горизонтальный)), то выбирают более широкую более сильную фильтрацию для каждой стороны границы блока.
[0115] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью независимого выбора параметров фильтра для каждой стороны границы блока на основе размера блока, перпендикулярного границе блока, для соответствующей стороны. Например, если размер блока, перпендикулярный границе блока на одной стороне, больше или равен пороговому значению (например, 32), то для этой стороны может быть выбран набор параметров фильтра деблокирования (например, более широкая более сильная фильтрация). Например, если ((ширина одного блока >= 32 и тип края вертикальный) или (высота одного блока >= 32 и тип края горизонтальный)), то выбирают более широкую более сильную фильтрацию для стороны границы блока, соответствующей блоку.
[0116] В одном примере в соответствии с методиками, описанными в настоящем документе, граница суб-CU может быть деблокирована на основе того, все ли коэффициенты преобразования равны нулю для блоков (например, CU) на одной (или обеих) стороне (-ах) границы. Например, выполняют деблокирование границы суб-CU, если все коэффициенты преобразования для CU равны нулю.
[0117] В одном примере в соответствии с методиками, описанными в настоящем документе, граница подблока может быть деблокирована на основе того, все ли коэффициенты преобразования равны нулю для блока на одной (или обеих) стороне (-ах) границы. Например, выполняют деблокирование границы подблока, если все коэффициенты преобразования для блока равны нулю.
[0118] В одном примере в соответствии с методиками, описанными в настоящем документе, граница суб-CU может быть деблокирована на основе того, все ли коэффициенты преобразования равны нулю для блоков (например, CU) на одной (или обеих) стороне (-ах) границы, и если размер шага квантования большой (например, QP больше или равен пороговому значению). Например, выполняют деблокирование границы суб-CU, если все коэффициенты преобразования для CU равны нулю, а QP превышает пороговое значение.
[0119] В одном примере в соответствии с методиками, описанными в настоящем документе, граница подблока может быть деблокирована на основе того, все ли коэффициенты преобразования равны нулю для блока на одной (или обеих) стороне (-ах) границы, и если размер шага квантования большой (например, QP больше или равен пороговому значению). Например, выполняют деблокирование границы подблока, если все коэффициенты преобразования для блока равны нулю, а QP превышает пороговое значение.
[0120] В одном примере в соответствии с методиками, описанными в настоящем документе, граница блока может быть деблокирована, если для блоков на одной (или обеих) стороне (-ах) границы используют локальную компенсацию освещения (LIC) и все коэффициенты преобразования для этого блока равны нулю.
[0121] В одном примере в соответствии с методиками, описанными в настоящем документе, все четыре границы блока (т. е. левая, правая, верхняя, нижняя) могут быть деблокирована, если для блока используют локальную компенсацию освещения (LIC) и все коэффициенты преобразования для этого блока равны нулю.
[0122] В одном примере в соответствии с методиками, описанными в настоящем документе, граница блока может быть деблокирована, если для блоков на одной (или обеих) стороне (-ах) границы используют локальную компенсацию освещения (LIC) и все коэффициенты преобразования для этого блока равны нулю, а размер шага квантования большой (например, QP больше или равен пороговому значению).
[0123] В одном примере в соответствии с методиками, описанными в настоящем документе, все четыре границы блока (т. е. левая, правая, верхняя, нижняя), граница блока могут быть деблокированы, если для блока используют локальную компенсацию освещения (LIC) и все коэффициенты преобразования для этого блока равны нулю, а размер шага квантования большой (например, QP больше или равно пороговому значению).
[0124] В одном примере в соответствии с методиками, описанными в настоящем документе, граница блока может быть деблокирована, если для блоков на одной (или обеих) стороне (-ах) границы используют межкомпонентное прогнозирование и все коэффициенты преобразования для этого блока равны нулю.
[0125] В одном примере в соответствии с методиками, описанными в настоящем документе, граница блока может быть деблокирована, если для блоков на одной (или обеих) стороне (-ах) границы используют межкомпонентное прогнозирование и все коэффициенты преобразования для этого блока равны нулю, а размер шага квантования большой (например, QP больше или равен пороговому значению).
[0126] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью деблокирования в соответствии с множеством проходов фильтрации. В одном примере проход фильтрации может соответствовать обработке/построению всех/подмножества выборок, которые должны быть деблокированы. Количество обработок/построений для каждой выборки в конкретном проходе может соответствовать индексу/порядку прохода. Подмножество выборок, которые должны быть деблокированы, может соответствовать индексу/порядку прохода. В одном примере каждый проход может соответствовать обработке/построению всех выборок, которые должны быть деблокированы ровно один раз. В одном примере такого случая деблокированные выборки из предыдущей итерации (а также недеблокированные выборки) можно использовать для построения деблокированных выборок для текущей итерации. В одном примере такого случая деблокированные выборки из предыдущей и текущей итерации (а также недеблокированные выборки) можно использовать для построения деблокированных выборок. В этом случае может быть указан порядок построения деблокированных выборок. В одном примере количество итераций может быть определено на основе одного или более из: типа среза; размера блока; флагов пропуска текущего CU и его соседних CU; режима прогнозирования (внутренний/внешний) текущего CU и его соседних CU; положения выборки, которую необходимо деблокировать; является ли d < β и/или предусмотрено ли в JEM условие определения сильного или слабого фильтра, как описано выше; расстояния деблокируемой выборки (в числе выборок) от границы; размера блока (-ов) на каждой стороне границы; интенсивности границы; режима прогнозирования, используемого блоками на каждой стороне границы; режима прогнозирования деблокируемой выборки; QP деблокируемой выборки; размера блока, соответствующего деблокируемой выборке; размера блока, соответствующего выборкам, используемым для деблокирования; векторов движения для блоков на каждой стороне деблокируемой границы; векторов движения для деблокируемой выборки и/или векторов движения для выборки, используемой для деблокирования. В одном примере номер итерации может определять один или более параметров фильтра.
[0127] В одном примере N-проходное деблокирование с заранее определенной поддержкой деблокирования может быть представлено следующим образом:
Для iterIdx=0 - (N-1)
Для pos=posM - posN // выборки деблокируют
temp[pos] = f_pos(значения выборки на проходе iterldx в поддержке деблокирования)
Для pos=posM - posN
Обновить sampleValue[pos] значениями temp[pos],
[0128] где f_pos() - линейное преобразование в виде:
f_pos(значения выборки на проходе iterldx в поддержке деблокирования)
причем coeff_pos[] является массивом значений, зависящих от позиции pos деблокируемой выборки. Следует отметить, что каждое используемое sampleValue[] может быть сгенерировано с использованием деблокирования на предыдущей итерации. Кроме того, поддержка деблокирования не меняется от одной итерации к следующей.
Выполнение итеративного анализа обеспечивает:
Для iterldx 0 используемые выборки - недеблокированные выборки, поэтому для каждого pos:
temp[pos] = f_pos(значения выборки на проходе 0 в поддержке деблокирования).
Для iterldx 1,
temp[pos] = f_pos(значения выборки на проходе 1 в поддержке деблокирования).
Поскольку f_pos() являются линейными преобразованиями и поддержка деблокирования не меняется, вышеприведенное можно переписать как:
Для iterldx 1,
templpos] = g_pos (значения выборок при проходе 0 в поддержке деблокирования).
Где g_pos() - линейное преобразование, аналогичное f_pos(), которое зависит от позиции pos, но имеет другие значения коэффициентов.
Данное упрощение можно выполнять рекурсивно для каждой итерации, что будет приводить к операциям фильтрации, которые зависят только от исходных значений выборки на итерации 0, что обеспечивает эквивалентный однократный проход. Ввиду конечной точности, используемой в некоторых случаях, итоговые значения коэффициентов могут быть аппроксимированы, что приводит к приблизительному однопроходному представлению операции многопроходной фильтрации.
[0129] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 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 обозначает строку выборки, ближайшую к границе.
[0130] Следует отметить, что в JEM для фильтрации выборок в процессе деблокирования всегда используют восстановленные выборки. В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью использования измененных значений выборки, полученных в результате деблокирования, для фильтрации других значений выборки. В одном примере измененные значения выборки можно использовать в качестве входных данных при фильтрации значений других выборок. В одном примере может быть указан порядок фильтрации. В одном примере порядок фильтра может выполнять деблокирование от самой дальней от границы строки до ближайшей к ней.
[0131] Как описано выше, деблокированные выборки обычно отсечены так, чтобы находиться в диапазоне значений. Диапазон значений может быть основан на исходном значении выборки и других параметрах, принятых в битовом потоке. В одном примере диапазоном значений является: [исходное значение выборки - t_c, исходное значение выборки+t_c]. В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью настройки функции отсечения на основе одного или более из: значений выборки в последнем одном или более циклах при многократном деблокировании; значения QP; типа среза; текущего режима прогнозирования (внутренний/внешний); текущего значения флага пропуска; режимов внутреннего прогнозирования выборок, которые должны быть деблокированы; вектора движения выборок, которые должны быть деблокированы; положения выборки (например, разные выборки могут использовать разные функции отсечения); положение CU (например, разные CU могут использовать разные функции отсечения) и/или любых других условий, описанных выше.
[0132] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения методик фильтрации, описанных в настоящем документе, на основе размера блока. Например, одну или более методик фильтрации, описанных в настоящем документе, можно применять на границе, где размеры блоков вокруг границы превышают пороговое значение. Например, определение того, выполнять ли методики фильтрации, может быть следующим: (1) проверять каждый набор выборок 4 × 4 на каждой стороне границы (т. е. поскольку минимальный размер CU составляет 4 × 4 выборки яркости); (2) если какой-либо один набор выборок 4 × 4 принадлежит к CU с размером, превышающим пороговые значения (например, 64), методику фильтрации будут выполнять на текущей границе. В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения методик фильтрации, описанных в настоящем документе, на основе одного или более из: типа среза; является ли форма блока прямоугольной; является ли форма блока квадратной; флагов пропуска текущего CU и его соседних CU; режима прогнозирования (внутренний/внешний) текущего CU и его соседних CU; положение выборки, которая должна быть деблокирована.
[0133] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 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])
d1P - bSidePisLargeBlk ? XCalDQpLargeBlock(R[3]) : XCalDQp (R[3])
d0Q=bSideQisLargeBlk ? XCalDQqLargeBlock(R[0]) : XCalDQq (R[0])
dlQ=bSideQLargeBlk ? XCalDQqLargeBlock(R[3]) : XCalDQq (R[3])
d0L=d0P+d0Q
d3L=d1P+dlQ
dL=d0L+d3L
Затем Condition1 и Condition2 оценивают следующим образом:
Conditionl = (dL < β)? ИСТИНА : ЛОЖЬ
Condition2 = (xUseStrongFilteringLargeBlock(R[0], d0L, bSidePisLargeBlk, bSideQisLargeBlk) && xUseStrongFilteringLargeBlock(R[3], d3L, bSidePisLargeBlk, bSideQisLargeBlk))? ИСТИНА : ЛОЖЬ
[0134] Если Condition1, Condition2 и bSidePisLargeBlk имеют значение ИСТИНА, более широкий более сильный фильтр применяют к стороне P границы (например, WS00P).
[0135] Если Condition1, Condition2 и bSideQisLargeBlk имеют значение ИСТИНА, более широкий более сильный фильтр применяют к стороне Q границы (например, WS00Q).
[0136] В одном примере Condition2 может быть изменено следующим образом:
Condition2 = (Если блок по обе стороны границы использует локальную
компенсацию освещения и CBF этого блока равен 0)? ИСТИНА : ((xUseStrongFilteringLargeB!ock(R[0], d0L, bSidePisLargeBlk, bSideQisLargeBlk) && xUseStrongFilteringLargeBlock(R[3], d3L, bSidePisLargeBlk, bSideQisLargeBlk))? ИСТИНА : ЛОЖЬ)
[0137] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации цветности следующим образом.
Если (тип края вертикальный и р0 принадлежит CU с шириной >= 32) | | (тип края горизонтальный и p0 принадлежит CU с высотой >= 32) && (тип края вертикальный и q0 принадлежит CU с шириной >= 32) | | (тип края горизонтальный и q0 принадлежит CU с высотой >= 32), то можно использовать узкий сильный фильтр (например, NS00P и NS00Q), в противном случае можно использовать узкий слабый фильтр (например, NW00P и NW00Q).
[0138] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации цветности следующим образом. Если (р0 принадлежит CU с шириной >= 32 и р0 принадлежит CU с высотой >= 32) || (q0 принадлежит CU с шириной >= 32 и q0 принадлежит CU с высотой >= 32), то можно использовать узкий сильный фильтр (например, NS00P и NS00Q), в противном случае можно использовать узкий слабый фильтр (например, NW00P и NW00Q).
[0139] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации деблокирования в соответствии с примером блок-схемы, проиллюстрированном на ФИГ. 10. В одном примере блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации деблокирования для выборок яркости в соответствии с блок-схемой, проиллюстрированной на ФИГ. 10. На ФИГ. 10 проиллюстрирован пример, в котором для текущего блока (например, одного из блока P или блока Q) может быть применен один из следующих типов деблокирования: широкий более сильный фильтр, сильный фильтр, слабый фильтр, или может быть не применено фильтрации. В одном примере применение широкого более сильного фильтра может включать применение фильтров WS00P и WS00Q, описанных выше. В одном примере применение сильного фильтра может включать применение описанных выше фильтров HEVC_P и HEVC_Q. В одном примере применение слабого фильтра может включать применение слабого фильтра в HEVC, описанном выше как слабый фильтр. Как показано на ФИГ. 10, более широкий более сильный фильтр применяют на этапе 408, никакой фильтр не применяют на этапе 412, сильный фильтр применяют на этапе 416, и слабый фильтр применяют на этапе 418 в зависимости от того, истинно ли условие большого блока на этапе 402, истинно ли условие градиента большого блока на этапе 404, истинно ли условие сильного фильтра для большого блока на этапе 406, истинно ли условие градиента на этапе 410 и истинно ли условие сильного фильтра на этапе 414.
[0140] В одном примере условие большого блока может включать в себя определение того, является ли истиной следующее. Если ((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 - высота смежного блока, например, в выборках яркости.
[0141] В одном примере условие градиента большого блока может включать в себя определение того, является ли истиной описанное выше Condition 1. В одном примере условие сильного фильтра для большого блока может включать в себя определение того, является ли истиной один из описанных выше примеров Condition2.
[0142] В одном примере условие градиента может включать в себя условие того, является ли d < β, где d определяется следующим образом:
d0P=XCalDQp (R[0])
d1P=XCalDQp (R[3])
d0Q=XCalDQq (R[0])
dlQ=XCalDQq (R[3])
d0=d0P+d0Q;
d3=d1P+dlQ;
d=d0+d3;
[0143] В одном примере условие сильного фильтра может включать в себя определение того, является ли истиной следующее. (xUseStrongFilteringLargeBlock(R[0], d0, false, false) && xUseStrongFilteringLargeBlock(R[3], d3, false, false))? ИСТИНА : ЛОЖЬ.
В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации деблокирования в соответствии с примером блок-схемы, проиллюстрированном на ФИГ. 11. В одном примере блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации деблокирования для выборок цветности в соответствии с блок-схемой, проиллюстрированной на ФИГ. 11. На ФИГ. 11 проиллюстрирован пример, в котором для текущего блока (например, блока P или блока Q) может быть применен один из следующих типов деблокирования: широкий более сильный фильтр или слабый фильтр. В одном примере применение широкого более сильного фильтра может включать применение фильтров NS00P и NS00Q, описанных выше. В одном примере применение слабого фильтра может включать применение описанных выше фильтров NW00P и NW00Q. Как показано на ФИГ. 11, более широкий более сильный фильтр применяют на этапе 504, а слабый фильтр применяют на этапе 506 в зависимости от того, истинно ли условие большого блока на этапе 502.
[0144] В одном примере условие большого блока может включать в себя определение того, является ли истиной следующее. Если ((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 на основе следующего набора условий. Если ((EDGE_VER && (cur_Q_block_width >= TH_w)) || (EDGE_HOR && (cur_Q_block_height >= TH_h)) - ИСТИНА, к выборкам Q применяют NS00Q. В противном случае к выборкам Q применяют слабый фильтр (например, фильтр NW00Q стороны Q).
[0146] Если ((EDGE_VER && (cur_P_block_width >= TH_w)) || (EDGE_HOR && (cur_P_block_height >= TH_h)) - ИСТИНА, к выборкам P применяют NS00P. В противном случае к выборкам P применяют слабый фильтр (например, фильтр NW00P стороны P),
[0147] где
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 выборки).
[0148] Следует отметить, что пороговое значение (например, TH_w и/или TH_h) в некоторых примерах может включать в себя предварительно определенное значение (например, 16 или 32), в некоторых примерах может быть сигнализировано в наборе параметров, в некоторых примерах возможна сигнализация в заголовке среза, а в некоторых примерах размер CTU может быть в текущей части видео.
[0149] Касательно ФИГ. 11 в одном примере условие большого блока может быть заменено условием фильтра яркости. Таким образом, например, если к блоку яркости применяют сильный фильтр, широкий более сильный фильтр может быть применен к связанному блоку цветности на этапе 504, в противном случае слабый фильтр может быть применен к связанному блоку цветности на этапе 506.
[0150] В одном примере в соответствии с методиками, описанными в настоящем документе, блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации деблокирования в соответствии с примером блок-схемы, проиллюстрированном на ФИГ. 12. В одном примере блок 216 фильтрации может быть выполнен с возможностью выполнения фильтрации деблокирования для выборок цветности в соответствии с блок-схемой, проиллюстрированной на ФИГ. 12. На ФИГ. 12 проиллюстрирован пример, в котором для текущего блока (например, блока P или блока Q) может быть применен один из следующих типов деблокирования: широкий более сильный фильтр или слабый фильтр. В одном примере применение широкого более сильного фильтра может включать применение фильтров NS00P и NSOOQ, описанных выше. В одном примере применение слабого фильтра может включать применение описанных выше фильтров NW00P и NW00Q. Как показано на ФИГ. 12, более широкий более сильный фильтр применяют на этапе 608, а слабый фильтр применяют на этапе 606 в зависимости от того, истинно ли условие большого блока в 602 и условие сильного фильтра для большого блока в 604.
[0151] В одном примере условие большого блока может включать в себя определение того, является ли истиной следующее. Если ((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 выборки).
[0152] Следует отметить, что пороговое значение (например, TH_w и/или TH_h) в некоторых примерах может включать в себя предварительно определенное значение (например, 16 или 32), в некоторых примерах может быть сигнализировано в наборе параметров, в некоторых примерах возможна сигнализация в заголовке среза, а в некоторых примерах размер CTU может быть в текущей части видео. В одном примере пороговое значение больше 4.
[0153] В одном примере условие более широкого сильного фильтра может включать то, является ли истиной и первое условие, и второе условие. Таким образом, условие сильного фильтра может быть истиной, когда и первое условие, и второе условие являются истиной. В одном примере первое условие может быть истиной, если d < β, где d определяется следующим образом:
dp0=xCalcDP(Rc[0]);
dq0=xCalcDQ(Rc[0]));
dp1 =xCalcDP(Rc[l]);
dq1=xCalcDQ(Rc[l]);
d0=dp0+dq0;
dl=dp1+dq1;
d=d0+dl,
где
RC[N] соответствует строкам цветности, перпендикулярным деблокируемому краю и расположенным на расстоянии N от вершины текущего деблокируемого сегмента цветности; и
[0154] в одном примере второе условие может быть истиной, когда
((abs(p3 - p0) + abs(q3 - q0) < (β > 3)) && (d < ([β >> 2)) && (abs(q0 - p0) < ((tC * 5+1) >> 1)))
является истиной для Rc[0] и Rc[1].
[0155] В одном примере второе условие может быть истиной, когда
((abs(p3 - p0) + abs(q3 - q0) < (β > 3)) && (d < (β >> 2)) && (abs(q0 - p0) < ((tC * 5+1) >> 1)))
является истиной для Rc[0].
[0156] Следует отметить, что в одном примере край деблокирован в виде сегментов, причем длина сегмента может быть функцией наименьшего размера, разрешенного для CU/TU/PU/суб-PU. Кроме того, если CU 2 × N и N × 2 являются самыми короткими и самыми тонкими блоками, разрешенными в канале цветности, то длина сегмента цветности может быть 2.
[0157] Следует отметить, что согласно приведенной выше фильтрации цветности две строки, перпендикулярные деблокируемому краю, обрабатывают как основной сегмент. В одном примере четыре строки могут быть обработаны как основной сегмент. В одном примере, если четыре строки обрабатывают как основной сегмент, первое условие может быть истиной, когда 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+d1.
[0158] Кроме того, в одном примере, когда четыре строки обрабатывают как основной сегмент, второе условие может быть истиной, если
((abs(p3 - p0) + abs(q3 - q0) < (β > 3)) && (d < (β >> 2)) && (abs(q0 - p0) < ((tC * 5+1) >> 1)))
является истиной для Rc[0] и Rc[3].
[0159] Как описано выше, в ITU-T H.265 фильтр деблокирования можно по-разному применять к границам CTU, которые совпадают с границами среза и мозаичного фрагмента, по сравнению с границами CTU, не совпадающими с границами среза и мозаичного фрагмента. В частности, в ITU-T H.265 флаг slice_loop_filter_across_slices_enabled_flag включает/выключает фильтр деблокирования на границах CTU, совпадающих с верхней и левой границами среза. В одном примере в соответствии с методиками, описанными в настоящем документе, если опорные выборки фильтра деблокирования превышают границу (например, изображения/среза/мозаичного фрагмента), фильтр деблокирования, использующий опорные выборки, может быть не разрешен. В одном примере в соответствии с методиками, описанными в настоящем документе, если опорные выборки фильтра деблокирования превышают границу (например, изображения/среза/мозаичного фрагмента) и использование значений выборки на границах (например, среза) запрещено, может быть использована операция заполнения для генерирования значений опорной выборки. Например, одно из: числового скалярного, кругового, повторяющегося или симметричного заполнения можно использовать для генерирования опорной выборки, причем при числовом скалярном заполнении происходит заполнение постоянным значением, при круговом заполнении - повторяющимися по кругу значениями выборки, при повторяющемся заполнении - повторяющимися граничными значениями выборки, а при симметричном заполнении - зеркальными отражениями значений выборки.
[0160] Как описано выше, в 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 можно применять к любому фильтру, описанному в настоящем документе.
[0161] Следует отметить, что в некоторых случаях видеоблок (например, CU) может включать в себя внутренние границы TU, и внутри видеоблока могут появляться блочные артефакты. В некоторых случаях, когда размер видеоблока превышает 64, деблокирование внутренних границ TU может быть выключено. В одном примере в соответствии с методиками, описанными в настоящем документе, деблокирование можно выполнять вдоль границ видеоблока, а также вдоль любых внутренних границ TU, даже в случаях, когда размер видеоблока превышает 64.
[0162] Касательно ФИГ. 5A-5B в некоторых случаях блок P или блок Q могут включать в себя множество объектов. Например, касательно ФИГ. 5А в одном примере столбцы с р7 по p3 могут соответствовать первому объекту, столбцы с р2 по p0 могут соответствовать второму объекту, а столбцы с q0 по q7 могут соответствовать третьему объекту. В этом случае, если выборки в столбцах с р2 по р0 фильтруют с использованием выборок в одном или более столбцов р3 и с q0 по q3 в качестве опорных выборок, результирующие значения выборки фильтра в столбцах с р2 по р0 могут выглядеть размытыми. Кроме того, в некоторых случаях деблокирование может привести к размытию доминирующего (-их) значения (-й) выборки и/или появлению других визуальных артефактов.
[0163] Как описано выше, соответствующее значение деблокированной выборки, y [n], имеющее опорные выборки, может быть указано на основе следующего уравнения:
,
где
длина фильтра определяется как abs(a - b+l);
coeff[m] предоставляет значение отвода фильтра (также называемое коэффициентом фильтра);
x[n+m] предоставляет входные значения выборок, соответствующие опорным выборкам.
[0164] В одном примере в соответствии с методиками, описанными в настоящем документе, чтобы избежать размытия или артефакта, вызванного включением отдельных объектов в отфильтрованные выборки и опорные выборки, к компоненту x[n+m] могут быть применены одна или более операций отсечения. В одном примере компонент x[n+m] может быть заменен на Clip3(x[n] - 2 * tC, x[n] + 2 * tC, x[n+m]).
[0165] В одном примере компонент 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] соответствует распределению Гаусса (т. е.
,
где длина фильтра равна 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 текущей выборки и/или опорной выборки), и/или значения на основе информации прогнозирования (например, режим внутреннего прогнозирования и/или информация движения текущей выборки и/или опорной выборки).
[0166] В одном примере разные фильтры можно применять в разных положениях выборки по отношению к границе. Например, выборки вблизи границы могут быть отфильтрованы с использованием сильных фильтров, а выборки вдали от границы могут быть отфильтрованы с использованием слабых фильтров. Например, выборки в столбцах с p0 по p1 могут быть отфильтрованы в соответствии с сильным фильтром, а выборки в столбцах с p2 по p4 могут быть отфильтрованы в соответствии со слабым фильтром. В одном примере для деблокирования цветности (или деблокирования яркости) может быть использовано такое пороговое значение (например, 2, 3, 4), что если позиционное расстояние между текущей выборкой и выборкой, ближайшей к границе, меньше, чем пороговое значение, будет применен сильный фильтр. В одном примере пороговое значение может быть основано на одном или более из: размера блока на каждой стороне границы (одной или обеих); интенсивности границы; режима прогнозирования, используемого блоками на каждой стороне границы; режима прогнозирования деблокируемой выборки; QP деблокируемой выборки; размера блока, соответствующего деблокируемой выборке; размер блока, соответствующего выборкам, используемым для деблокирования; векторов движения для блоков на каждой стороне деблокируемой границы; векторов движения для деблокируемой выборки и/или векторов движения для выборки, используемой для деблокирования.
[0167] Следует отметить, что в некоторых случаях кодирования видеосигналов коэффициенты преобразования яркости (например, после квантования), соответствующие CU, могут быть равны 0, и CU может быть разделен на суб-PU для компенсации движения (например, ATMVP). В таком случае в соответствии с методиками, описанными в настоящем документе, деблокирование яркости можно выполнять вдоль границ суб-PU и дополнительно вдоль границ CU в некоторых примерах.
[0168] Следует отметить, что в некоторых случаях кодирования видеосигналов коэффициенты преобразования цветности (например, после квантования), соответствующие CU, могут быть равны 0, и CU может быть разделен на суб-PU для компенсации движения (например, ATMVP). В таком случае в соответствии с методиками, описанными в настоящем документе, деблокирование цветности можно выполнять вдоль границ суб-PU и дополнительно вдоль границ CU в некоторых примерах.
[0169] Как описано выше, в ITU-T H.265 для определения типа применяемого фильтра (например, сильный фильтр или слабый фильтр) для яркости используют каждый из Bs, tC, β и d. В частности, если d меньше β, переменная dStrong определяется следующим образом:
d_strong=abs(p3 - p0) + abs(q0 - q3).
То, применять сильный фильтр или слабый фильтр, определяют на основе значения d_strong следующим образом:
- если ((d_strong < (β >> 3)) && (d < (β >> 2)) && (abs(p0 - q0) < (5 * tC+1) >> 1),
- применяют сильный фильтр;
- в противном случае
- применяют слабый фильтр.
[0170] В одном примере в соответствии с методиками, описанными в настоящем документе, 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)).
Что касается реализаций фильтра деблокирования в 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_EDGE_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)? ИСТИНА : ЛОЖЬ;
Условие LargeBlk: (обе стороны края имеют длину, перпендикулярную
краю >= 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), отсеченные до qi ± tC
[0179] В одном примере fi Middles, t, Ps, gi и Qt могут определяться согласно таблице 1.
(сторона p, сторона q)
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+q5+p6+q6+8)
>> 4
P7 = (p6+p7+1) >> 1, Q7 = (q6+q7+1) >> 1
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
gi=53 - i * 21, также характеризуется как g = {53,32,11}
Middle3,3 = (3 * (p0+q0+p1+q1) + 2 * (p2+q2) + 8) >> 4
P3 = (p2+p3+1) >> l, Q3 = (q2+q3+1) >> 1
gi=58 - i * 13, также характеризуется как g = {58,45,32,19,6}
Middle7,5 = (2 * (p0+q0+q1+q2) + p1+p2+p3+q3+p4+q4+p5+p6+8) >> 4
P7 = (p6+p7+l) >> 1, Q5 = (q4+q5+1) >> 1
gi=58 - 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
gi=53 - i * 21, также характеризуется как g = {53,32,11}
Middle5,3 = (2 * (p0+q0+p1+q1+p2+ q2) + q0+q1+p3+p4+8) >> 4
P5 = (p4+p5+l) >> 1, Q3 = (q2+q3+1) >> 1
fi=58 - i * 13, также характеризуется как f = {58,45,32,19,6}
Middle5,7 = (2 * (q0+p0+p1+p2) + q1+q2+q3+p3+q4+p4+q5+q6+8) >> 4
Q7 = (q6+q7+1) >> 1, P5 = (p4+p5+1) >> 1
fi=53 - i * 21, также характеризуется как f = {53,32,11}
Middle3,7 = (2 * (q0+p0) + p0+2 * (p1+p2) + q1+p2+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.
Таблица 2
[0183] В одном примере в соответствии с методиками, когда любая из сторон больше или равна 32, может быть выполнено билинейное деблокирование согласно таблице 3.
Таблица 3
[0184] В одном примере в соответствии с методиками, когда любая из сторон больше или равна 32, может быть выполнено билинейное деблокирование согласно таблице 4.
Таблица 4
[0185] В одном примере в соответствии с методиками, когда любая из сторон больше или равна 32, может быть выполнено билинейное деблокирование согласно таблице 5.
Таблица 5
[0186] В одном примере в соответствии с методиками, когда любая из сторон больше или равна 32, может быть выполнено билинейное деблокирование согласно таблице 6.
Таблица 6
[0187] В одном примере в соответствии с методиками, когда любая из сторон больше или равна 32, может быть выполнено билинейное деблокирование согласно таблице 7.
Таблица 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.
{p7, p6, p5, p4, p3, p2, p1, p0, q0, q1, q2, q3, q4, q5, q6, q7}
Таблица 8A
(p7, p6, p5, p4, p3, p2, p1, p0, q0, q1, q2, q3, q4, q5, q6, q7}
Таблица 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, i (например, одну, две или три строки). Например, слабые или сильные фильтры, описанные в настоящем документе, можно применять в тех случаях, когда запрещено применение многоотводного фильтра. Следует отметить, что, как предусмотрено в 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}
Таблица 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’ определяют с использованием таблицы, приведенной на ФИГ. 6, и индекса 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 не используют в процессе декодирования, и декодеры должны игнорировать их значение.
[0207] 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 включительно.
[0208] 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 включительно.
[0209] Изменения в получении значений QP цветности могут влиять на деблокирование канала цветности в случаях, когда параметры деблокирования основаны на значении QP. В соответствии с методиками, описанными в настоящем документе, получение параметров деблокирования на основе значения(й) QP может быть изменено, например, в случаях, когда отдельные деревья разделения могут быть использованы для разделения каналов яркости и цветности.
[0210] В одном примере в соответствии с методиками, описанными в настоящем документе, cQpPicOffset может выводиться следующим образом:
cQpPicOffset=pps_cb_qp_offset+slice_cb_qp_offset для Cb и
cQpPicOffset=pps_cr_qp_offset+slice_cr_qp_offset для Cr.
В одном примере может быть сигнализировано значение смещения 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_offset+CuQpOffsetcr для Cr.
[0211] В некоторых случаях значение дополнительного смещения QP яркости и цветности можно использовать для блоков, подвергающихся некоторому типу обработки (например, адаптивное преобразование цвета). Эти смещения QP можно использовать для получения QP для яркости и цветности. В результате процессы деблокирования могут зависеть от дополнительных смещений QP яркости и цветности.
[0212] В некоторых примерах, когда отдельные деревья разделения используют для разделения каналов яркости и цветности, значение QP цветности может быть вычислено на основе типа дерева разделения. Например, в одном примере значение QP цветности может быть определено следующим образом:
qPi = ((Qpbik_Q+Qpblk_P+1) >> 1) + cQpPicOffset,
где Qpblk_P, Qpbik_Q являются параметрами квантования яркости, соответствующими блоку цветности на стороне P и блоку цветности на стороне Q соответственно.
[0213] В одном примере Qpblk_P и/или Qpbik_Q может (могут) быть получен (-ы) из комбинации одного или более из: значений QP множества соответствующих блоков яркости; количества выборок блока яркости, соответствующего блоку цветности; значения QP яркости, соответствующего предварительно определенной позиции цветности. В некоторых примерах Qpblk_P и/или Qpbik_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 и Qpbik_Q могут быть получены следующим образом.
Qpblk_P = (QP_1+QP_3+1) >> 1
Qpbik_Q = (QP_2+QP_4+1) >> 1
[0214] В одном примере для примера, приведенного на ФИГ. 14B, Qpblk_P и Qpbik_Q могут быть получены следующим образом.
Qpblk_P = (QP_1+QP_5+2 * QP_3+2) >> 1
Qpbik_Q = (QP_2+QP_4+1) >> 1
[0215] В одном примере Qpblk_P и/или Qpbik_Q может (могут) быть получен (-ы) путем определения набора положений цветности и определения для каждого положения цветности соответствующих положений яркости. Для каждого соответствующего положения яркости может быть определено соответствующее значение QP. Соответствующие значения QP можно использовать для получения Qpblk_P и/или Qpbik_Q.
[0216] Как описано выше, в одном примере условие более широкого сильного фильтра может включать в себя то, является ли истиной и первое условие, и второе условие, причем первое условие может быть истиной, если d < β, где d определяется следующим образом:
dp0=xCalcDP(Rc[0]);
dq0=xCalcDQ(Rc[0]));
dp1 =xCalcDP(Rc[l]);
dq1=xCalcDQ(Rc[l]);
d0=dp0+dq0;
dl=dp1+dq1;
d=d0+d1,
где
RC[N] соответствует строкам цветности, перпендикулярным деблокируемому краю и расположенным на расстоянии N от вершины текущего деблокируемого сегмента цветности; и в одном примере условие фильтра может включать в себя условие, которое истинно, когда 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-vl, который упоминается в настоящем документе как JVET-K0307, описывает длинные фильтры и решения для компонента яркости. На основе описанных выше методик фильтрации методики фильтрации согласно JVET-K0307 могут быть модифицированы для обеспечения возможности использования длинных асимметричных фильтров. Для длинных асимметричных фильтров количество выборок, деблокированных на стороне большего блока, больше, чем на стороне меньшего блока. Процессы принятия решения о деблокировании для выбора из данного расширенного набора фильтров подробно описаны ниже. Расширенный набор фильтров можно использовать для сильного деблокирования в ходе всего деблокирования.
[0220] В одном примере в соответствии с методиками, описанными в настоящем документе, более сильные фильтры яркости используют в случае, если любая из сторон имеет большой блок и выполняется условие модифицированного сильного фильтра. В одном примере большой блок яркости соответствует ширине >= 32 для вертикального края и высоте >= 32 для горизонтального края.
[0221] В одном примере более сильный фильтр яркости может быть определен следующим образом.
Выборки границы блока pi и qi для i, равного от 0 до S-1, затем заменяют линейной интерполяцией следующим образом.
.’ = * + * + 32) >> 6), отсечено до ±tC;
.’ = * + * + 32) >> 6), отсечено до ±tC;
где f_i, Middle_s, t P_s и Q_s приведены ниже в таблице 10.
(сторона p: 7,
сторона q: 7)
= 59 - i * 9, также характеризуется как g =
= (2 * + + + + + + + + + 8) >> 4
= (+ +1) >> 1, = (+ +1) >> 1
(сторона p: 7
сторона q: 3)
= 53 - i * 21, также характеризуется как g =
= (2 * + + 2 * (+) + + + + 8) >> 4
= (+ + 1)» 1, = (+ + 1) >> 1
(сторона p: 3
сторона q:7)
= 53 - i * 21, также характеризуется как f =
= (2 * + + 2* (+) + + + +8) >> 4
= (+ + 1) >> 1, = (+ +1) >> 1
Таблица 10
[0222] В одном примере процесс управления дополнительно основан на градиентах, вычисленных для двух строк четырех сегментов выборки; сравнении разности абсолютных значений пикселей с 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 меньше 6, применяют следующие этапы в заданном порядке:
а. dpq определяется согласно ITU-T H.265;
b. sp3 - Abs(p3 - p0) определяется согласно ITU-T H.265;
если (сторона p больше или равна 32), то
sp3 = (sp3+Abs(p7 - p3) + 1) >> 1;
c. sp3=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 - ИСТИНА, используют более сильный фильтр яркости (может быть выбран на основе размеров блоков на границе края).
[0223] В одном примере процесс управления может быть следующим.
Переменные 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 меньше p, применяют следующие этапы в заданном порядке:
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)? ИСТИНА : ЛОЖЬ.
[0224] Следует отметить, что условия (сторона 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, которое применяют для любого из этих более сильных фильтров яркости, предшествующих процессу принятия решения.
[0225] В одном примере в соответствии с методиками, описанными в настоящем документе, яркость может быть деблокирована в соответствии с сеткой выборки яркости 4 × 4 (или в некоторых примерах в соответствии с сеткой выборки яркости 8 × 8). В этом примере более сильные фильтры яркости, описанные выше как фильтр WS00P стороны P и фильтр WS00Q стороны Q, можно использовать для больших блоков, причем большой блок соответствует ширине >= 32 для вертикального края и высоте >= 32 для горизонтального края, а смежный блок больше или равен 16. Процесс управления может дополнительно быть основан на градиентах, вычисленных для двух строк 4 сегментов выборки; сравнении разности абсолютных значений пикселей с tC и сравнении других разностей абсолютных значений пикселей с β, как более подробно описано ниже. Кроме того, когда p0 принадлежит CTU выше текущего CTU, можно использовать следующий фильтр яркости с ограниченной поддержкой, представленный в таблице 8B выше.
[0226] В некоторых случаях подмножество выборок недоступно. В таких случаях может быть затронут процесс управления, использующий это подмножество выборок. Это может привести к асимметрии в вычислении градиента. В некоторых примерах в этом случае может быть использован другой процесс управления.
[0227] В одном примере процесс управления может быть следующим.
Переменные 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,5) + 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 меньше β, применяют следующие этапы в заданном порядке:
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).
[0228] В одном примере пороговые значения, используемые в сравнениях, также могут быть основаны на положении. Например, они могут быть основаны на том, совмещается ли деблокируемый край с границей CTU.
[0229] В одном примере для сетки деблокирования яркости 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 для вертикального края/горизонтального края соответственно, то максимум три выборки используют в решении о фильтре, а фильтр изменяет только одну выборку, т. е. используют для замены в проверках условия сильного/слабого фильтра, и как сильному, так и слабому фильтру разрешено изменять только p0 и q0
[0230] В одном примере в соответствии с методиками, описанными в настоящем документе, цветность может быть деблокирована в соответствии с сеткой выборки цветности 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 (выборки цветности).
[0231] Согласно ФИГ. 8 блок 218 энтропийного кодирования принимает квантованные коэффициенты преобразования и данные синтаксического прогнозирования (т. е. данные внутреннего прогнозирования и данные прогнозирования движения). Следует отметить, что в некоторых примерах блок 206 квантования коэффициентов может выполнять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования, перед выводом коэффициентов в блок 218 энтропийного кодирования. В других примерах сканирование может выполнять блок 218 энтропийного кодирования. Блок 218 энтропийного кодирования может быть выполнен с возможностью энтропийного кодирования в соответствии с одной или более методиками, описанными в настоящем документе. Таким образом, видеокодер 200 представляет пример устройства, выполненного с возможностью приема массива значений выборки, включающего в себя смежные восстановленные видеоблоки, для компонента видеоданных и изменения значений выборки в смежных восстановленных видеоблоках в соответствии со множеством проходов через фильтр деблокирования.
[0232] Возвращаясь к ФИГ. 7, инкапсулятор 107 данных может принимать кодированные видеоданные и генерировать совместимый битовый поток, например последовательность блоков NAL в соответствии с определенной структурой данных. Устройство, принимающее совместимый битовый поток, может восстанавливать из него видеоданные. Кроме того, устройство, принимающее совместимый битовый поток, может выполнять процесс извлечения битового подпотока, причем извлечение битового подпотока относится к процессу, в котором устройство, принимающее совместимый битовый поток, формирует новый совместимый битовый поток путем отбрасывания и/или изменения данных в принятом битовом потоке. Следует отметить, что термин «соответствующий битовый поток» может использоваться вместо термина «совместимый битовый поток».
[0233] Обращаясь снова к ФИГ. 7, интерфейс 108 может включать в себя любое устройство, выполненное с возможностью приема данных, сгенерированных инкапсулятором 107 данных, и передачи и/или сохранения данных в среде связи. Интерфейс 108 может включать в себя карту сетевого интерфейса, такую как карта Ethernet, и может включать в себя оптический приемопередатчик, радиочастотный приемопередатчик или устройство любого другого типа, способное отправлять и/или принимать информацию. Интерфейс 108 может дополнительно включать в себя интерфейс компьютерной системы, позволяющий сохранять файл в запоминающем устройстве. Например, интерфейс 108 может включать в себя набор микросхем, поддерживающий протоколы шины с взаимосвязью периферийных компонентов (PCI) и с экспресс-взаимосвязью периферийных компонентов (PCIe), проприетарные протоколы шин, протоколы универсальной последовательной шины (USB), оптоволоконный канал (FC) или любую другую логическую и физическую структуру, которую можно использовать для соединения одноранговых устройств.
[0234] На ФИГ. 7 устройство 120 назначения включает в себя интерфейс 122, декапсулятор 123 данных, видеодекодер 124 и дисплей 126. Интерфейс 122 может включать в себя любое устройство, выполненное с возможностью приема данных из среды связи. Интерфейс 122 может включать в себя карту сетевого интерфейса, такую как карта Ethernet, и может включать в себя оптический приемопередатчик, радиочастотный приемопередатчик или устройство любого другого типа, способное принимать и/или отправлять информацию. Интерфейс 122 может дополнительно включать в себя интерфейс компьютерной системы, позволяющий извлекать совместимый битовый поток видео из запоминающего устройства. Например, интерфейс 122 может включать в себя набор микросхем, поддерживающий протоколы шины PCI и PCIe, проприетарные протоколы шин, протоколы USB, FC или любую другую логическую и физическую структуру, которую можно использовать для соединения одноранговых устройств. Декапсулятор 123 данных может быть выполнен с возможностью приема и анализа любого из примерных наборов параметров, описанных в настоящем документе.
[0235] Видеодекодер 124 может включать в себя любое устройство, выполненное с возможностью приема битового потока и/или его приемлемых вариаций и воспроизведения из него видеоданных. Дисплей 126 может включать в себя любое устройство, выполненное с возможностью отображения видеоданных. Дисплей 126 может содержать одно из множества устройств отображения, таких как жидкокристаллический дисплей (ЖКД), плазменный дисплей, дисплей на органических светодиодах (OLED) или дисплей другого типа. Дисплей 126 может включать в себя дисплей высокой четкости или дисплей сверхвысокой четкости. Следует отметить, что, хотя в проиллюстрированном на ФИГ. 7 примере видеодекодер 124 описан как выводящий данные на дисплей 126, видеодекодер 124 может быть выполнен с возможностью вывода видеоданных на различные типы устройств и/или их подкомпонентов. Например, видеодекодер 124 может быть выполнен с возможностью вывода видеоданных в любую среду связи, как описано в настоящем документе.
[0236] На ФИГ. 9 приведена блок-схема, иллюстрирующая пример видеодекодера, который может быть выполнен с возможностью декодирования видеоданных в соответствии с одной или более методиками настоящего описания. В одном примере видеодекодер 300 может быть выполнен с возможностью декодирования данных преобразования и восстановления остаточных данных из коэффициентов преобразования на основе декодированных данных преобразования. Видеодекодер 300 может быть выполнен с возможностью декодирования с внутренним прогнозированием и декодирования с внешним прогнозированием и в таком случае может называться гибридным декодером. В примере, проиллюстрированном на ФИГ. 9, видеодекодер 300 включает в себя блок 302 энтропийного декодирования, блок 304 обратного квантования, блок 306 обработки коэффициентов обратного преобразования, блок 308 обработки внутреннего прогнозирования, блок 310 обработки внешнего прогнозирования, сумматор 312, блок 314 фильтрации и опорный буфер 316. Видеодекодер 300 может быть выполнен с возможностью декодирования видеоданных способом, совместимым с системой кодирования видеосигналов. Следует отметить, что хотя указанный в примере видеодекодер 300 проиллюстрирован как имеющий различные функциональные блоки, такая иллюстрация предназначена только для описания и не ограничивает видеодекодер 300 и/или его подкомпоненты конкретной архитектурой аппаратного или программного обеспечения. Функции видеодекодера 300 могут быть реализованы с использованием любой комбинации аппаратных, программно-аппаратных и/или программных вариантов осуществления.
[0237] Как показано на ФИГ. 9, блок 302 энтропийного декодирования принимает энтропийно кодированный битовый поток. Блок 302 энтропийного декодирования может быть выполнен с возможностью декодирования элементов синтаксиса и квантованных коэффициентов из битового потока в соответствии с процессом, обратным процессу энтропийного кодирования. Блок 302 энтропийного декодирования может быть выполнен с возможностью энтропийного декодирования в соответствии с любой из описанных выше методик энтропийного кодирования. Блок 802 энтропийного декодирования может определять значения для элементов синтаксиса в кодированном битовом потоке способом, совместимым со стандартом кодирования видеосигналов. Как показано на ФИГ. 9, блок 302 энтропийного декодирования может определять квантованные значения коэффициентов и данные прогнозирования из битового потока. В примере, проиллюстрированном на ФИГ. 9, блок 304 обратного квантования принимает квантованные значения коэффициентов и выводит коэффициенты преобразования. Блок 306 обработки обратного преобразования принимает коэффициенты преобразования и выводит восстановленные остаточные данные.
[0238] Как показано на ФИГ. 9, сумматор 312 может быть обеспечен восстановленными остаточными данными. Сумматор 312 может добавлять восстановленные остаточные данные к прогнозируемому видеоблоку и генерировать восстановленные видеоданные. Прогнозируемый видеоблок может быть определен в соответствии с методикой прогнозирования видео (т. е. внутреннего прогнозирования и межкадрового прогнозирования). Блок 308 обработки внутреннего прогнозирования может быть выполнен с возможностью приема элементов синтаксиса внутреннего прогнозирования и извлечения прогнозируемого видеоблока из опорного буфера 316. Опорный буфер 316 может включать в себя запоминающее устройство, выполненное с возможностью хранения одного или более кадров видеоданных. Элементы синтаксиса внутреннего прогнозирования могут идентифицировать режим внутреннего прогнозирования, такой как описанные выше режимы внутреннего прогнозирования. Блок 308 обработки внешнего прогнозирования может принимать элементы синтаксиса внешнего прогнозирования и генерировать векторы движения для идентификации блока прогнозирования в одном или более опорных кадрах, хранящихся в опорном буфере 316. Блок 310 обработки внешнего прогнозирования может создавать блоки с компенсацией движения с возможным выполнением интерполяции на основе интерполяционных фильтров. Идентификаторы интерполяционных фильтров, используемых для оценки движения с точностью до субпикселя, могут быть включены в элементы синтаксиса. Блок 310 обработки внешнего прогнозирования может использовать фильтры интерполяции для расчета интерполированных значений для субцелочисленных пикселей опорного блока.
[0239] Блок 314 фильтрации может быть выполнен с возможностью осуществления фильтрации восстановленных видеоданных. Например, блок 314 фильтрации может быть выполнен с возможностью выполнения деблокирования и/или фильтрации с адаптивным смещением выборки (SAO), например, на основе параметров, указанных в битовом потоке. Следует отметить, что в некоторых примерах блок 314 фильтрации может быть дополнительно выполнен с возможностью выполнения проприетарного дискреционного фильтрования (например, визуальных улучшений, таких как устранение «москитного шума»). Блок 314 фильтрации может работать аналогично блоку 216 фильтрации. Как показано на ФИГ. 9, восстановленный видеоблок может быть выведен видеодекодером 300. Таким образом, видеодекодер 300 может быть выполнен с возможностью приема массива значений выборки, включающего в себя смежные восстановленные видеоблоки, для компонента видеоданных и изменения значений выборки в смежных восстановленных видеоблоках в соответствии со множеством проходов через фильтр деблокирования.
[0240] В одном или более примерах описанные функции могут быть реализованы в виде аппаратного обеспечения, программного обеспечения, программно-аппаратного обеспечения или любой их комбинации. При реализации в программном обеспечении функции можно хранить или передавать в виде одной или более команд или кода на машиночитаемом носителе и выполнять аппаратным блоком обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители данных, которые соответствуют материальным носителям, таким как носители данных, или среду связи, включающую в себя любую среду, обеспечивающую передачу компьютерной программы из одного местоположения в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители обычно могут соответствовать (1) материальным машиночитаемым носителям, которые не являются энергонезависимыми, или (2) среде связи, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может обращаться один или более компьютеров или один или более процессоров для извлечения команд, кода и/или структур данных для реализации методик, описанных в настоящем документе. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
[0241] В качестве примера, но не для ограничения, такой машиночитаемый носитель может представлять собой RAM, ROM, EEPROM, CD-ROM или другой накопитель на оптических дисках, накопитель на магнитных дисках или другие магнитные запоминающие устройства, флеш-память, или любой другой носитель, который можно использовать для хранения требуемого программного кода в виде команд или структур данных и к которому может получать доступ компьютер. Кроме того, любое соединение, строго говоря, называется машиночитаемым носителем. Например, при передаче команд с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радио- и СВЧ-сигналы, коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасные, радио- и СВЧ-сигналы, включены в определение носителя/среды. Однако следует понимать, что машиночитаемые носители и носители данных не включают в себя соединения, несущие волны, сигналы или другие преходящие носители, а обозначают энергонезависимые материальные носители данных. В настоящем документе термин «диск» относится к диску, который воспроизводит данные оптическим способом с помощью лазеров, например компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD) и диск Blu-ray, и к диску, который обычно воспроизводит данные магнитным способом (например, гибкий диск). Комбинации вышеперечисленного также должны быть включены в объем термина «машиночитаемый носитель».
[0242] Команды могут быть выполнены одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, употребляемый в настоящем документе термин «процессор» может относиться к любой из вышеуказанных структур или к любой другой структуре, подходящей для реализации описанных в настоящем документе методик. Кроме того, в некоторых аспектах описанные в настоящем документе функциональные возможности могут быть обеспечены в специальных аппаратных и/или программных модулях, выполненных с возможностью кодирования и декодирования или включенных в комбинированный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.
[0243] Методики настоящего описания могут быть реализованы в самых разных устройствах или аппаратах, включая беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, набор микросхем). Различные компоненты, модули или блоки описаны в настоящем документе для выделения функциональных аспектов устройств, выполненных с возможностью осуществления описанных методик, но они не обязательно должны быть реализованы в виде различных аппаратных блоков. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или представлены набором взаимодействующих аппаратных блоков, включая один или более процессоров, как описано выше, в сочетании с подходящим программным обеспечением и/или программно-аппаратным обеспечением.
[0244] Более того, каждый функциональный блок или различные элементы устройства базовой станции и терминального устройства, используемые в каждом из вышеупомянутых вариантов осуществления, могут быть реализованы или исполнены схемой, которая обычно представляет собой интегральную схему или множество интегральных схем. Схема, выполненная с возможностью исполнения функций, описанных в настоящем техническом описании, может содержать процессор общего назначения, цифровой сигнальный процессор (DSP), специализированную интегральную схему (ASIC) или интегральную схему общего применения, программируемую пользователем вентильную матрицу (FPGA) или другие программируемые логические устройства, схемы на дискретных компонентах или транзисторные логические схемы, дискретный аппаратный компонент или их комбинацию. Процессор общего назначения может представлять собой микропроцессор, или в альтернативном варианте осуществления процессор может представлять собой стандартный процессор, контроллер, микроконтроллер или машину состояний. Процессор общего назначения или каждая схема, описанная выше, могут быть выполнены в виде цифровой схемы или могут быть выполнены в виде аналоговой схемы. Дополнительно при появлении в области полупроводников технологии, воплощающейся в интегральной схеме, вытесняющей существующие интегральные схемы, также можно использовать интегральную схему по данной технологии.
[0245] Описаны различные примеры. Эти и другие примеры включены в объем следующей формулы изобретения.
[0246] <Перекрестная ссылка>
Настоящая непредварительная заявка испрашивает приоритет согласно 35 USC § 119 по предварительной заявке № 62/651,058 от 30 марта 2018 г., № 62/654,379 от 7 апреля 2018 г., № 62/655,029 от 9 апреля 2018 г., № 62/656,291 от 11 апреля 2018 г., № 62/677,629 от 29 мая 2018 г., № 62/679,716 от 1 июня 2018 г., № 62/696,309 от 10 июля 2018 г., № 62/711,420 от 27 июля 2018 г., № 62/714,755 от 5 августа 2018 г., № 62/732,556 от 17 сентября 2018 г., № 62/733,067 от 18 сентября 2018 г., № 62/735,090 от 22 сентября 2018 г., № 62/737,596 от 27 сентября 2018 г., полное содержание которых включено в настоящий документ путем ссылки.
Изобретение относится к технологиям кодирования видеосигналов, более конкретно, к методикам выполнения деблокирования восстановленных видеоданных. Техническим результатом является уменьшение блочных артефактов восстановленных значений выборок видеоданных. Предложен способ фильтрации восстановленных видеоданных. Способ содержит этап, на котором осуществляют прием значений выборок, включенных в первый блок или второй блок, в восстановленных видеоданных, которые являются смежными с границей деблокирования. Далее, согласно способу, осуществляют определение, является ли тип края вертикальным, а также, превышает ли ширина первого блока пороговое значение или равна ему. Способ также включает этап, на котором осуществляют фильтрацию восстановленных видеоданных для модификации значений выборок, включенных в первый блок или второй блок, в соответствии с по меньшей мере одним из первого значения градиента или второго значения градиента, и вывод модифицированных восстановленных видеоданных. 1 з.п. ф-лы, 17 ил., 12 табл.
1. Способ фильтрации восстановленных видеоданных, включающий:
прием значений выборок, включенных в первый блок или второй блок, в восстановленных видеоданных, которые являются смежными с границей деблокирования;
определение, является ли тип края вертикальным, а также, превышает ли ширина первого блока пороговое значение или равна ему;
в случае, когда ширина меньше упомянутого порогового значения, вычисление первого значения градиента на основе уравнения abs(sample2 - 2*sample1+sample0);
в случае, когда тип края является вертикальным и ширина превышает упомянутое пороговое значение или равна ему, вычисление второго значения градиента на основе уравнения (abs(sample2 - 2*sample1+sample0) + abs(sample5−2*sample4 + sample3) + 1)>>1,
где abs(x) возвращает абсолютное значение x,
где sample0 это значение первой выборки, непосредственно смежной с границей деблокирования,
где sample1 это значение второй выборки, смежной с первой выборкой и находящейся на одну позицию дальше от границы деблокирования,
где sample2 это значение третьей выборки, смежной со второй выборкой и находящейся на одну позицию дальше от границы деблокирования,
где sample3 это значение четвертой выборки, смежной с третьей выборкой и находящейся на одну позицию дальше от границы деблокирования,
где sample4 это значение пятой выборки, смежной с четвертой выборкой и находящейся на одну позицию дальше от границы деблокирования, и
где sample5 это значение шестой выборки, смежной с пятой выборкой и находящейся на одну позицию дальше от границы деблокирования; и
фильтрацию восстановленных видеоданных для модификации значений выборок, включенных в первый блок или второй блок, в соответствии с по меньшей мере одним из первого значения градиента или второго значения градиента, и вывод модифицированных восстановленных видеоданных.
2. Способ по п. 1, в котором пороговое значение равняется 32.
ОПРЕДЕЛЕНИЕ ЗНАЧЕНИЙ УРОВНЯ ГРАНИЦЫ ФИЛЬТРОВАНИЯ УДАЛЕНИЯ БЛОЧНОСТИ ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2012 |
|
RU2586003C2 |
ДЕБЛОКИРУЮЩАЯ ФИЛЬТРАЦИЯ | 2011 |
|
RU2550541C2 |
RU 2367113 C1, 10.09.2009 | |||
US 9930329 B2, 27.03.2018 | |||
Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем | 1924 |
|
SU2012A1 |
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
Авторы
Даты
2022-03-23—Публикация
2019-03-25—Подача