Фильтр устранения блочности для кодирования и обработки видео
DEBLOCKING FILTER FOR VIDEO ENCODING AND PROCESSING

[0001] Настоящая заявка испрашивает приоритет согласно:
заявке на патент США № 16/551,388, поданной 26 августа, 2019, которая притязает на приоритет:
предварительной заявки на патент США № 62/723,408, поданной 27 августа 2018; и
предварительной заявки на патент США № 62/742,331, поданной 6 октября 2018,
полное содержание которых включено в настоящий документ посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ
[0002] Настоящее раскрытие относится к кодированию видео и декодированию видео.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
[0003] Функциональные возможности цифрового видео могут быть включены в широкий диапазон устройств, в том числе, цифровые телевизоры, цифровые системы прямого вещания, системы беспроводного вещания, персональные цифровые ассистенты (PDA), ноутбуки или стационарные компьютеры, планшетные компьютеры, электронные книги, цифровые камеры, цифровые записывающие устройства, цифровые медиаплееры, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, так называемые “смартфоны”, устройства видео-телеконференций, устройства потоковой передачи (стриминга) видео и тому подобное. Цифровые видеоустройства реализуют методики кодирования видео, такие как методики, описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, Расширенное кодирование видео (AVC), стандарте Высокоэффективное кодирование видео (HEVC), ITU-T H.265/Высокоэффективное кодирование видео (HEVC) и расширениях таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или хранить информацию цифрового видео более эффективно путем реализации таких методик кодирования видео.
[0004] Методики кодирования видео включают в себя пространственное (внутри картинки, внутрикадровое) предсказание и/или временное (между картинками, межкадровое) предсказание, чтобы уменьшить или удалить избыточность, присущую последовательностям видео. Для кодирования видео на блочной основе, вырезка видео (т.е., картинка видео или часть картинки видео) может разбиваться на блоки видео, которые могут также упоминаться как единицы дерева кодирования (CTU), единицы кодирования (CU) и/или узлы кодирования. Блоки видео в интра-кодированной (I) вырезке картинки кодируются с использованием пространственного предсказания по отношению к опорным дискретным отсчетам в соседних блоках в той же самой картинке. Блоки видео в интер-кодированной (P или B) вырезке картинки могут использовать пространственное предсказание по отношению к опорным дискретным отсчетам в соседних блоках в той же самой картинке или временное предсказание по отношению к опорным дискретным отсчетам в других опорных картинках. Картинки могут упоминаться как кадры, и опорные картинки могут упоминаться как опорные кадры.
Краткое описание сущности изобретения
[0005] Настоящее раскрытие описывает методики, связанные с фильтрацией восстановленных данных видео в процессе кодирования видео и/или декодирования видео, и, более конкретно, настоящее раскрытие описывает методики, относящиеся к методикам выполнения фильтрации устранения блочности. Фильтрация устранения блочности представляет собой тип фильтрации, которая может уменьшить артефакты блочности вдоль краев блоков, которые возникают в результате процесса восстановления.
[0006] В соответствии с примером, способ декодирования данных видео включает в себя получение первого восстановленного блока данных видео, причем первый восстановленный блок включает в себя первый дискретный отсчет с первым значением; применение фильтрации устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока; определение первого значения отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; сравнение первого значения отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности; в ответ на величину изменения первого дискретного отсчета, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменение первого значения посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета; и вывод отфильтрованного с устранением блочности блока данных видео, причем в отфильтрованном с устранением блочности блоке первый дискретный отсчет имеет первое отфильтрованное значение.
[0007] В соответствии с другим примером, устройство для декодирования данных видео включает в себя память, приспособленную хранить данные видео, и один или более процессоров, реализованных в схемах и выполненных с возможностью получать первый восстановленный блок данных видео, причем первый восстановленный блок включает в себя первый дискретный отсчет с первым значением; применять фильтрацию устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока; определять первое значение отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; сравнивать первое значение отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности; в ответ на величину изменения первого дискретного отсчета, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета; и выводить отфильтрованный с устранением блочности блок данных видео, причем в отфильтрованном с устранением блочности блоке первый дискретного отсчета имеет первое отфильтрованное значение.
[0008] В соответствии с другим примером, машиночитаемый носитель хранения данных хранит инструкции, которые, при исполнении одним или более процессорами, предписывают одному или более процессорам получать первый восстановленный блок данных видео, причем первый восстановленный блок включает в себя первый дискретный отсчет с первым значением; применять фильтрацию устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока; определять первое значение отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; сравнивать первое значение отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности; в ответ на величину изменения первого дискретного отсчета, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета; и выводить отфильтрованный с устранением блочности блок данных видео, причем в отфильтрованном с устранением блочности блоке первый дискретный отсчет имеет первое отфильтрованное значение.
[0009] В соответствии с другим примером, устройство для декодирования данных видео включает в себя средство для получения первого восстановленного блока данных видео, причем первый восстановленный блок включает в себя первый дискретный отсчет с первым значением; средство для применения фильтрации устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока; средство для определения первого значения отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; средство для сравнения первого значения отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности; средство для изменения первого значения посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета в ответ на величину изменения первого дискретного отсчета, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения; и средство для вывода отфильтрованного с устранением блочности блока данных видео, причем в отфильтрованном с устранением блочности блоке первый дискретный отсчет имеет первое отфильтрованное значение.
[0010] Подробности одного или более примеров представлены на приложенных чертежах и в описании ниже. Другие признаки, задачи и преимущества будут очевидны из описания, чертежей и формулы изобретения.
Краткое описание чертежей
[0011] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему кодирования и декодирования видео, которая может выполнять методики настоящего раскрытия.
[0012] Фиг. 2A и 2B представляют собой концептуальные диаграммы, иллюстрирующие примерную структуру квадродерева-двоичного дерева (QTBT) и соответствующую единицу дерева кодирования (CTU).
[0013] Фиг. 3 показывает пример сегмента из четырех дискретных отсчетов, подлежащего устранению блочности, со смежными блоками P и Q.
[0014] Фиг. 4 показывает примерный блок данных видео, где вычисляются вторые производные четырех обведенных кружками дискретных отсчетов, суммирование которых используется для определения того, следует ли применять устранение блочности на сегменте.
[0015] Фиг. 5 показывает пример дискретных отсчетов блока данных видео для одной из четырех строк в сегменте, подлежащем устранению блочности.
[0016] Фиг. 6 представляет собой блок-схему, иллюстрирующую примерный кодер видео, который может выполнять методики настоящего раскрытия.
[0017] Фиг. 7 представляет собой блок-схему, иллюстрирующую примерный декодер видео, который может выполнять методики настоящего раскрытия.
[0018] Фиг. 8 представляет собой блок-схему, иллюстрирующую примерный модуль фильтрации для выполнения методик настоящего раскрытия.
[0019] Фиг. 9 представляет собой блок-схему последовательности операций, иллюстрирующую пример процесса кодирования видео.
[0020] Фиг. 10 представляет собой блок-схему последовательности операций, иллюстрирующую пример процесса декодирования видео.
[0021] Фиг. 11 представляет собой блок-схему последовательности операций, иллюстрирующую пример процесса декодирования видео.
ДЕТАЛЬНОЕ ОПИСАНИЕ
[0022] Кодирование видео (например, кодирование видео и/или декодирование видео) обычно включает в себя предсказание блока данных видео из уже кодированного блока данных видео в той же самой картинке (например, интра-предсказание) или уже кодированного блока данных видео в другой картинке (например, интер-предсказание). В некоторых случаях, кодер видео также вычисляет остаточные данные путем сравнения блока предсказания с исходным блоком. Таким образом, остаточные данные представляют разность между блоком предсказания и исходным блоком. Чтобы уменьшить количество битов, требуемых для сигнализации остаточных данных, кодер видео преобразует и квантует остаточные данные и сигнализирует преобразованные и квантованные остаточные данные в кодированном битовом потоке. Сжатие, обеспечиваемое посредством процессов преобразования и квантования, может осуществляться с потерями, что означает, что процессы преобразования и квантования могут вносить искажение в декодируемые данные видео.
[0023] Декодер видео декодирует и суммирует остаточные данные с блоком предсказания, чтобы сформировать восстановленный блок видео, который согласуется с исходным блоком видео более близко, чем один только блок предсказания. Ввиду потерь, вводимых преобразованием и квантованием остаточных данных, первый восстановленный блок может иметь искажение или артефакты. Один общий тип артефакта или искажения упоминается как блочность, где границы блоков, используемых для кодирования данных видео, являются видимыми.
[0024] Чтобы дополнительно улучшить качество декодированного видео, декодер видео может выполнять одну или более операций фильтрации на восстановленных блоках видео. Примеры этих операций фильтрации включают в себя фильтрацию устранения блочности, фильтрацию адаптивного смещения выборки (SAO) и адаптивную контурную фильтрацию (ALF). Параметры для этих операций фильтрации могут либо определяться кодером видео и явно сигнализироваться в кодированном битовом потоке видео, либо могут неявно определяться декодером видео, не требуя явной сигнализации параметров в кодированном битовом потоке видео.
[0025] Настоящее раскрытие описывает методики, ассоциированные с фильтрацией восстановленных данных видео в процессе кодирования видео и/или декодирования видео, и, более конкретно, настоящее раскрытие описывает методики, относящие к фильтрации устранения блочности. Фильтрация устранения блочности является типом фильтрации, специально разработанным для снижения блочности. Настоящее раскрытие описывает методики, относящиеся к процессу фильтрации, выполняемому на кадрах или картинках видео, таких как кадры или картинки видео, которые могут быть искажены из-за сжатия, размытия и т.д., но данные методики не следует рассматривать как ограниченные приведенными выше примерами искажения. Эти методики могут улучшать объективное и субъективное качество видео. Методики, описанные в настоящем документе, могут быть использованы в проектировании новых решений кодирования видео, таких как H.266, или для расширения любых из существующих кодеков видео, таких как H.265/Высокоэффективное кодирование видео (HEVC), или могут предлагаться как многообещающий инструмент кодирования для будущих стандартов кодирования видео. Описанные методики могут также использоваться как способ пост-обработки на кадрах видео, выводимых из стандартных или проприетарных кодеков.
[0026] Текущие версии HEVC используют максимальный размер блока 64×64. Однако будущие стандарты кодирования видео, такие как стандарт многоцелевого кодирования видео, находящийся на стадии разработки, могут использовать размеры блоков большие, чем 64×64. Настоящее раскрытие описывает методики, которые могут улучшать снижение искажений, получаемое путем фильтрации устранения блочности, в частности, в связи с увеличенными размерами блоков. Кроме того, методики, описанные в настоящем документе, могут получать это улучшенное снижение искажений при сохранении желательных уровней вычислительной сложности и эффективности кодирования.
[0027] Как используется в настоящем раскрытии, термин “кодирование видео”, в общем, относится либо к кодированию видео, либо к декодированию видео. Аналогичным образом, термин “устройство кодирования видео” может, в общем, относиться к кодеру видео или декодеру видео. Более того, некоторые методики, описанные в настоящем раскрытии в отношении декодирования видео, могут также применяться к кодированию видео, и наоборот. Например, кодеры видео и декодеры видео часто конфигурируются, чтобы выполнять один и тот же процесс или взаимно обратные процессы. Также, кодер видео обычно выполняет декодирование видео (также называемое восстановлением) как часть процессов определения, каким образом кодировать данные видео. Например, кодер видео может выполнять фильтрацию устранения блочности на декодированных блоках видео, чтобы определить, обеспечивает ли некоторая схема кодирования желательный компромисс скорости-искажения, а также кодер видео может выполнять оценку движения с использованием тех же самых блоков, доступных декодеру видео, когда декодер видео выполняет компенсацию движения.
[0028] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему 100 кодирования и декодирования видео, которая может выполнять методики фильтрации устранения блочности настоящего раскрытия. Методики настоящего раскрытия в основном направлены на кодирование (кодирование и/или декодирование) данных видео и, более конкретно, на методики фильтрации устранения блочности данных видео. В принципе, данные видео включают в себя любые данные для обработки видео. Таким образом, данные видео могут включать в себя необработанное, некодированное видео, кодированное видео, декодированное (например, восстановленное) видео и метаданные видео, такие как данные сигнализации.
[0029] Как показано на фиг. 1, система 100 включает в себя устройство 102 источника, которое обеспечивает кодированные данные видео, подлежащие декодированию и отображению устройством 116 места назначения (получателем), в данном примере. В частности, устройство 102 источника предоставляет данные видео на устройство 116 места назначения посредством машиночитаемого носителя 110. Устройство 102 источника и устройство 116 места назначения могут представлять собой любое из широкого спектра устройств, включая настольные компьютеры, ноутбуки, планшетные компьютеры, телевизионные приставки, телефоны, такие как смартфоны, телевизоры, камеры, устройства отображения, цифровые медиаплееры, видеоигровые консоли, устройства потоковой передачи видео и тому подобное. В некоторых случаях, устройство 102 источника и устройство 116 места назначения могут быть оснащены для беспроводной связи и, таким образом, могут упоминаться как устройства беспроводной связи.
[0030] В примере на фиг. 1, устройство 102 источника включает в себя источник 104 видео, память 106, кодер 200 видео и выходной интерфейс 108. Устройство 116 места назначения включает в себя входной интерфейс 122, декодер 300 видео, память 120 и устройство 118 отображения. В соответствии с настоящим раскрытием, кодер 200 видео устройства 102 источника и декодер 300 видео устройства 116 места назначения могут быть выполнены с возможностью применять методики фильтрации устранения блочности, описываемой в настоящем раскрытии. Таким образом, устройство 102 источника представляет собой пример устройства кодирования видео, в то время как устройство 116 места назначения представляет собой пример устройства декодирования видео. В других примерах, устройство источника и устройство места назначения могут включать в себя другие компоненты или устройства. Например, устройство 102 источника может принимать данные видео от внешнего источника видео, такого как внешняя камера. Аналогично, устройство 116 места назначения может взаимодействовать с внешним устройством отображения вместо того, чтобы включать в себя встроенное устройство отображения.
[0031] Система 100, как показано на фиг. 1, является лишь одним примером. В принципе, любое цифровое устройство кодирования и/или декодирования видео может выполнять методики фильтрации устранения блочности, описываемой в настоящем раскрытии. Устройство 102 источника и устройство 116 места назначения являются лишь примерами таких кодирующих устройств, в которых устройство 102 источника генерирует кодированные данные видео для передачи на устройство 116 места назначения. Настоящее раскрытие ссылается на “кодирующее” устройство как на устройство, которое выполняет кодирование (кодирование и/или декодирование) данных. Таким образом, кодер 200 видео и декодер 300 видео представляют собой примеры кодирующих устройств, в частности, кодер видео и декодер видео, соответственно. В некоторых примерах, устройство 102 источника и устройство 116 места назначения могут работать по существу симметрично, так что каждое из устройства 102 источника и устройства 116 места назначения включает в себя компоненты кодирования и декодирования видео. Следовательно, система 100 может поддерживать однонаправленную или двунаправленную передачу видео между устройством 102 источника и устройством 116 места назначения, например, для потоковой передачи видео, воспроизведения видео, видеовещания или видеотелефонии.
[0032] В общем случае, источник 104 видео представляет источник данных видео (т.е. необработанных, некодированных данных видео) и предоставляет последовательность картинок (также упоминаемых как “кадры”) данных видео на кодер 200 видео, который кодирует данные для картинок. Источник 104 видео устройства 102 источника может включать в себя устройство захвата видео, такое как видеокамера, видеоархив, содержащий ранее захваченное необработанное видео, и/или интерфейс подачи видео для приема видео от поставщика видеоконтента. В качестве дополнительной альтернативы, источник 104 видео может генерировать данные на основе компьютерной графики в качестве исходного видео или объединение живого видео, архивного видео и генерируемого компьютером видео. В каждом случае, кодер 200 видео кодирует захваченные, предварительно захваченные или сгенерированные компьютером данные видео. Кодер 200 видео может переупорядочивать картинки из принятого порядка (иногда называемого “порядком отображения”) в порядок кодирования для кодирования. Кодер 200 видео может генерировать битовый поток, включающий в себя кодированные данные видео. Устройство 102 источника может затем выводить кодированные данные видео через выходной интерфейс 108 на машиночитаемый носитель 110 для приема и/или извлечения данных, например, входным интерфейсом 122 устройства 116 места назначения.
[0033] Память 106 устройства 102 источника и память 120 устройства 116 места назначения представляют собой память общего назначения. В некоторых примерах, памяти 106 и 120 могут хранить необработанные данные видео, например необработанное видео из источника 104 видео и необработанные декодированные данные видео из декодера 300 видео. Дополнительно или альтернативно, памяти 106 и 120 могут хранить программные инструкции, исполняемые, например, кодером 200 видео и декодером 300 видео соответственно. Хотя в этом примере памяти 106 и 120 показаны отдельно от кодера 200 видео и декодера 300 видео, следует понимать, что кодер 200 видео и декодер 300 видео также могут включать в себя внутренние памяти для функционально сходных или эквивалентных целей. Кроме того, памяти 106 и 120 могут хранить закодированные данные видео, например, выход с кодера 200 видео и вход в декодер 300 видео. В некоторых примерах, части памятей 106 и 120 могут быть выделены в качестве одного или более буферов видео, например, для хранения необработанных, декодированных и/или закодированных данных видео.
[0034] Машиночитаемый носитель 110 может представлять собой любой тип носителя или устройства, способного транспортировать закодированные данные видео от устройства 102 источника к устройству 116 места назначения. В одном примере, машиночитаемый носитель 110 представляет коммуникационную среду, позволяющую устройству 102 источника передавать закодированные данные видео непосредственно на устройство 116 места назначения в реальном времени, например, через радиочастотную сеть или компьютерную сеть. Выходной интерфейс 108 может модулировать сигнал передачи, включающий в себя закодированные данные видео, и входной интерфейс 122 может демодулировать принятый сигнал передачи в соответствии со стандартом связи, таким как протокол беспроводной связи. Коммуникационная среда может содержать одну или обе из беспроводной или проводной коммуникационной среды, такую как радиочастотный (RF) спектр или одна или более физических линий передачи. Коммуникационная среда может формировать часть пакетной сети, такой как локальная сеть, сеть широкого охвата или глобальная сеть, такая как Интернет. Коммуникационная среда может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для облегчения связи от устройства 102 источника к устройству 116 места назначения.
[0035] В некоторых примерах, машиночитаемый носитель 110 может включать в себя устройство 112 хранения. Устройство 102 источника может выводить закодированные данные из выходного интерфейса 108 в устройство 112 хранения. Аналогично, устройство 116 места назначения может получать доступ к закодированным данным из устройства 112 хранения через входной интерфейс 122. Устройство 112 хранения может включать в себя любое из множества распределенных или локально доступных носителей хранения данных, таких как накопитель на жестком диске, Blu-ray диски, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память или любые другие подходящие цифровые носители хранения данных для хранения закодированных данных видео.
[0036] В некоторых примерах, машиночитаемый носитель 110 может включать в себя файловый сервер 114 или другое устройство промежуточного хранения, которое может хранить закодированные данные видео, сгенерированные устройством 102 источника. Устройство 102 источника может выводить закодированные данные видео на файловый сервер 114. Устройство 116 места назначения может получать доступ к сохраненным данным видео с файлового сервера 114 посредством потоковой передачи или загрузки. Файловый сервер 114 может быть любым типом серверного устройства, способного хранить закодированные данные видео и передавать эти закодированные данные видео на устройство 116 места назначения. Файловый сервер 114 может представлять собой веб-сервер (например, для веб-сайта), сервер протокола передачи файлов (FTP), сетевое устройство доставки контента или сетевое устройство хранения (NAS). Устройство 116 места назначения может получать доступ к закодированным данным видео с файлового сервера 114 через любое стандартное соединение передачи данных, включая Интернет-соединение. Это может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, цифровую абонентскую линию (DSL), кабельный модем и т.д.) или объединение обоих, которая подходит для доступа к закодированным данным видео, хранящимся на файловом сервере 114. Файловый сервер 114 и входной интерфейс 122 могут быть выполнены с возможностью работы в соответствии с протоколом потоковой передачи, протоколом передачи загрузки или их объединения.
[0037] Выходной интерфейс 108 и входной интерфейс 122 могут представлять собой беспроводные передатчики/приемники, модемы, проводные сетевые компоненты (например, Ethernet-карты), компоненты беспроводной связи, работающие в соответствии с любым из множества стандартов IEEE 802.11, или другие физические компоненты. В примерах, где выходной интерфейс 108 и входной интерфейс 122 содержат беспроводные компоненты, выходной интерфейс 108 и входной интерфейс 122 могут быть выполнены с возможностью передачи данных, таких как закодированные данные видео, в соответствии со стандартом сотовой связи, таким как 4G, 4G-LTE (Долгосрочное развитие), LTE-Advanced (Расширенное LTE), 5G или тому подобное. В некоторых примерах, где выходной интерфейс 108 содержит беспроводной передатчик, выходной интерфейс 108 и входной интерфейс 122 могут быть выполнены с возможностью передачи данных, таких как закодированные данные видео, в соответствии с другими беспроводными стандартами, такими как спецификация IEEE 802.11, спецификация IEEE 802.15 (например, ZigBee™), стандарт Bluetooth™ или тому подобное. В некоторых примерах, устройство 102 источника и/или устройство 116 места назначения могут включать в себя соответствующие однокристальные (SoC) устройства. Например, устройство 102 источника может включать в себя SoC-устройство для выполнения функциональности, относящейся к кодеру 200 видео и/или выходному интерфейсу 108, и устройство 116 места назначения может включать в себя SoC-устройство для выполнения функциональности, относящейся к декодеру 300 видео и/или входному интерфейсу 122.
[0038] Методики настоящего раскрытия могут быть применены к кодированию видео при поддержке любого из множества мультимедийных приложений, таких как эфирные телевизионные передачи, передачи кабельного телевидения, передачи спутникового телевидения, потоковые передачи видео через Интернет, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое закодировано на носителе хранения данных, декодирование цифрового видео, сохраненного на носителе хранения данных, или других приложений.
[0039] Входной интерфейс 122 устройства 116 места назначения принимает закодированный битовый поток видео со машиночитаемого носителя 110 (например, из коммуникационной среды, устройства 112 хранения, файлового сервера 114 или тому подобного). Закодированный битовый поток видео со машиночитаемого носителя 110 может включать в себя информацию сигнализации, определенную кодером 200 видео, которая также используется декодером 300 видео, такую как синтаксические элементы, имеющие значения, которые описывают характеристики и/или обработку блоков видео или других кодированных единиц (например, вырезок, картинок, групп картинок, последовательностей или тому подобное). Устройство 118 отображения отображает пользователю декодированные картинки декодированных данных видео. Устройство 118 отображения может представлять собой любое из множества устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или другой тип устройства отображения.
[0040] Хотя не показано на фиг. 1, в некоторых примерах, кодер 200 видео и декодер 300 видео могут быть интегрированы с кодером аудио и/или декодером аудио и могут включать соответствующие модули мультиплексирования-демультиплексирования (MUX-DEMUX) или другие аппаратные средства и/или программное обеспечение для обработки мультиплексированных потоков, включающих в себя как аудио, так и видео, в общем потоке данных. Если применимо, модули MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0041] Как кодер 200 видео, так и декодер 300 видео могут быть реализованы как любая из множества подходящих схем кодера и/или декодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратных средств, микропрограммного обеспечения или любых их объединений. Когда методики частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем, долговременном машиночитаемом носителе и исполнять инструкции в аппаратных средствах с использованием одного или более процессоров для выполнения методик настоящего раскрытия. Каждый из кодера 200 видео и декодера 300 видео может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть объединенного кодера/декодера (CODEC) в соответствующем устройстве. Устройство, включающее в себя кодер 200 видео и/или декодер 300 видео, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.
th
[0042] Кодер 200 видео и декодер 300 видео могут работать в соответствии со стандартом кодирования видео, таким как ITU-T H. 265, также упоминаемым как Высокоэффективное кодирование видео (HEVC), или его расширениями, такими как расширения многовидового и/или масштабируемого кодирования видео. В других примерах, кодер 200 видео и декодер 300 видео могут работать в соответствии с другими проприетарными или отраслевыми стандартами, такими как Тестовая модель совместного исследования (Joint Exploration Test Model, JEM) или ITU-T H.266, также упоминаемыми как Многоцелевое кодирование видео (Versatile Video Coding, VVC). Недавний проект стандарта VVC описан в Bross, et al. “Versatile Video Coding (Draft 6),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15 Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O2001-vE (далее “VVC Draft 6”). Однако методики настоящего раскрытия не ограничиваются каким-либо конкретным стандартом кодирования.
[0043] В общем, кодер 200 видео и декодер 300 видео могут выполнять блочное кодирование картинок. Термин “блок” обычно относится к структуре, включающей в себя данные, подлежащие обработке (например, кодированию, декодированию или использованию иным образом в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок (дискретных отсчетов) данных яркости и/или цветности. В общем, кодер 200 видео и декодер 300 видео могут кодировать данные видео, представленные в формате YUV (например, Y, Cb, Cr). То есть, вместо кодирования данных красного, зеленого и синего (RGB) для выборок картинки, кодер 200 видео и декодер 300 видео могут кодировать компоненты яркости и цветности, где компоненты цветности могут включать компоненты цветности как красного оттенка, так и синего оттенка. В некоторых примерах, кодер 200 видео преобразует принятые данные в формате RGB в представление YUV перед кодированием, и декодер 300 видео преобразует представление YUV в формат RGB. Альтернативно, эти преобразования могут выполняться модулями пред- и пост-обработки (не показаны).
[0044] Настоящее раскрытие может, в общем, ссылаться на кодирование (например, кодирование и декодирование) картинок, включающее в себя процесс кодирования или декодирования данных картинки. Аналогично, настоящее раскрытие может ссылаться на кодирование блоков картинок, включающее в себя процесс кодирования или декодирования данных для блоков, например, кодирование предсказания и/или остатка. Кодированный битовый поток видео обычно включает в себя последовательность значений для синтаксических элементов, представляющих решения кодирования (например, режимы кодирования) и разбиение картинок на блоки. Таким образом, ссылки на кодирование картинки или блока, в общем, следует понимать как кодирование значений для синтаксических элементов, образующих картинку или блок.
[0045] HEVC определяет различные блоки, включая единицы кодирования (CU), единицы предсказания (PU) и единицы преобразования (TU). Согласно HEVC, устройство кодирования видео (такое как кодер 200 видео) разбивает единицу дерева кодирования (CTU) на CU в соответствии со структурой квадродерева. То есть, устройство кодирования видео разбивает CTU и CU на четыре равных, неперекрывающихся квадрата, и каждый узел квадродерева имеет либо ноль, либо четыре дочерних узла. Узлы без дочерних узлов могут упоминаться как “листовые узлы”, и CU таких листовых узлов могут включать в себя одну или более PU и/или одну или более TU. Устройство кодирования видео может дополнительно разбивать PU и TU. Например, в HEVC, остаточное квадродерево (RQT) представляет собой разбиение TU. В HEVC, PU представляют данные интер-предсказания, в то время как TU представляют остаточные данные. CU, которые являются интра-предсказанными, включают информацию интра-предсказания, такую как указание интра-режима.
th
[0046] Кодер 200 видео и декодер 300 видео могут работать в соответствии со стандартом кодирования видео, таким как ITU-T H. 265, также упоминаемым как Высокоэффективное кодирование видео (HEVC), или его расширениями, такими как расширения многовидового и/или масштабируемого кодирования видео. Альтернативно, кодер 200 видео и декодер 300 видео могут работать в соответствии с другими проприетарными или отраслевыми стандартами, такими как Тестовая модель совместного исследования (Joint Exploration Test Model, JEM) или ITU-T H.266, также упоминаемыми как Многоцелевое кодирование видео (Versatile Video Coding, VVC). Недавний проект стандарта VVC описан в Bross, et al. “Versatile Video Coding (Draft 6),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15 Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O2001-vE (далее “VVC Draft 6”). Однако методики настоящего раскрытия не ограничиваются каким-либо конкретным стандартом кодирования.
[0047] В общем, кодер 200 видео и декодер 300 видео могут выполнять блочное кодирование картинок. Термин “блок” обычно относится к структуре, включающей данные, подлежащие обработке (например, кодированию, декодированию или использованию иным образом в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок данных яркости и/или цветности. В общем, кодер 200 видео и декодер 300 видео могут кодировать данные видео, представленные в формате YUV (например, Y, Cb, Cr). То есть, вместо кодирования данных красного, зеленого и синего (RGB) для выборок картинки, кодер 200 видео и декодер 300 видео могут кодировать компоненты яркости и цветности, где компоненты цветности могут включать компоненты цветности как красного оттенка, так и синего оттенка. В некоторых примерах, кодер 200 видео преобразует принятые данные в формате RGB в представление YUV перед кодированием, а декодер 300 видео преобразует представление YUV в формат RGB. Альтернативно, эти преобразования могут выполняться модулями пред- и пост-обработки (не показаны).
[0048] Настоящее раскрытие может, в общем, ссылаться на кодирование (например, кодирование и декодирование) картинок, включающее в себя процесс кодирования или декодирования данных картинки. Аналогично, настоящее раскрытие может ссылаться на кодирование блоков картинок, включающее в себя процесс кодирования или декодирования данных для блоков, например, кодирование предсказания и/или остатка. Кодированный битовый поток видео обычно включает в себя последовательность значений для синтаксических элементов, представляющих решения кодирования (например, режимы кодирования) и разбиение картинок на блоки. Таким образом, ссылки на кодирование картинки или блока, в общем, следует понимать как кодирование значений для синтаксических элементов, образующих картинку или блок.
[0049] HEVC определяет различные блоки, включая единицы кодирования (CU), единицы предсказания (PU) и единицы преобразования (TU). Согласно HEVC, устройство кодирования видео (такое как кодер 200 видео) разбивает единицу дерева кодирования (CTU) на CU в соответствии со структурой квадродерева. То есть, устройство кодирования видео разбивает CTU и CU на четыре равных, неперекрывающихся квадрата, и каждый узел квадродерева имеет либо ноль, либо четыре дочерних узла. Узлы без дочерних узлов могут упоминаться как “листовые узлы”, и CU таких листовых узлов могут включать одну или более PU и/или одну или более TU. Устройство кодирования видео может дополнительно разбивать PU и TU. Например, в HEVC, остаточное квадродерево (RQT) представляет собой разбиение TU. В HEVC, PU представляют данные интер-предсказания, в то время как TU представляют остаточные данные. CU, которые являются интра-предсказанными, включают информацию интра-предсказания, такую как указание интра-режима.
[0050] В качестве другого примера, кодер 200 видео и декодер 300 видео могут быть выполнены с возможностью работы в соответствии с JEM или VVC. Согласно JEM или VVC, устройство кодирования видео (такое как кодер 200 видео) разбивает картинку на множество единиц дерева кодирования (CTU). Кодер 200 видео может разбивать CTU в соответствии со структурой дерева, такой как структура квадродерева-двоичного дерева (QTBT) или структура дерева множества типов (MTT). Структура QTBT исключает концепции множества типов разбиения, такие как разделение между CU, PU и TU в HEVC. Структура QTBT может включать в себя два уровня: первый уровень, разделенный в соответствии с разбиением квадродерева, и второй уровень, разделенный в соответствии с разбиением двоичного дерева. Корневой узел структуры QTBT соответствует CTU. Листовые узлы двоичных деревьев соответствуют единицам кодирования (CU).
[0051] В структуре разбиения MTT, блоки могут быть разделены с использованием разбиения квадродерева (QT), разбиения двоичного дерева (BT) и одного или более типов разбиений тройного дерева (ТТ) (также называемого троичным деревом (TT)). Разбиение тройного или троичного дерева представляет собой разбиение, когда блок разделяется на три подблока. В некоторых примерах, разбиение тройного или троичного дерева делит блок на три подблока без деления исходного блока через центр. Типы разбиения в MTT (например, QT, BT и TT) могут быть симметричными или асимметричными.
[0052] В некоторых примерах, кодер 200 видео и декодер 300 видео могут использовать одну структуру QTBT или МТТ для представления каждого из компонентов яркости и цветности, в то время как в других примерах, кодер 200 видео и декодер 300 видео могут использовать две или более структур QTBT или МТТ, например, одну структуру QTBT/МТТ для компонента яркости и другую структуру QTBT/МТТ для обоих компонентов цветности (или две структуры QTBT/МТТ для соответствующих компонентов цветности).
[0053] Кодер 200 видео и декодер 300 видео могут быть выполнены с возможностью использования разбиения квадродерева согласно HEVC, разбиения QTBT, разбиения МТТ или других структур разбиения. В целях пояснения, описание методик настоящего раскрытия представлено в отношении разбиения QTBT. Однако следует понимать, что методики настоящего раскрытия также могут быть применены к устройствам кодирования видео, выполненным с возможностью использования разбиения квадродерева или других типов разбиения.
[0054] Блоки (например, CTU или CU) могут быть сгруппированы различными способами в картинке. В качестве одного примера, “брус” (блок) может относиться к прямоугольной области строк CTU в пределах конкретного прямоугольного мозаичного элемента в картинке. Мозаичный элемент может быть прямоугольной областью CTU в пределах конкретного столбца мозаичных элементов и конкретной строки мозаичных элементов в картинке. Столбец мозаичных элементов относится к прямоугольной области CTU, имеющей высоту, равную высоте картинки, и ширину, задаваемую синтаксическими элементами (например, такими как в наборе параметров картинки). Строка мозаичных элементов относится к прямоугольной области CTU, имеющей высоту, задаваемую синтаксическими элементами (например, такими как в наборе параметров картинки), и ширину, равную ширине картинки.
[0055] В некоторых примерах, мозаичный элемент может быть разбит на множество брусков, каждый из которых может включать в себя одну или более строк CTU в пределах мозаичного элемента. Мозаичный элемент, который не разбит на множество брусков, также может упоминаться как брусок. Однако брусок, который является истинным поднабором мозаичного элемента, не может упоминаться как мозаичный элемент.
[0056] Бруски в картинке могут быть упорядочены в вырезке. Вырезка может представлять собой целое число брусков картинки, которая может исключительно содержаться к одной единице уровня сетевой абстракции (NAL). В некоторых примерах, вырезка включает в себя либо ряд полных мозаичных элементов, либо только жесткую последовательность полных брусков одного мозаичного элемента.
[0051] Настоящее раскрытие может использовать “N×N” и “N на N” взаимозаменяемым образом для ссылки на размеры выборки блока (такого как CU или другой блок видео) в терминах вертикального и горизонтального размеров, например, выборок 16×16 или выборок 16 на 16. В общем случае, CU размером 16×16 будет иметь 16 выборок в вертикальном направлении (y=16) и 16 выборок в горизонтальном направлении (x=16). Аналогично, CU размером N×N обычно имеет N выборок в вертикальном направлении и N выборок в горизонтальном направлении, где N представляет неотрицательное целое значение. Выборки в CU могут быть расположены в строках и столбцах. Кроме того, CU не обязательно должны иметь одинаковое количество выборок в горизонтальном направлении и в вертикальном направлении. Например, CU может содержать N×M выборок, где M не обязательно равно N.
[0058] Кодер 200 видео кодирует данные видео для CU, представляющих информацию предсказания и/или остаточную информацию, и другую информацию. Информация предсказания указывает, как должна предсказываться CU, чтобы формировать блок предсказания для CU. Остаточная информация обычно представляет собой разности от выборки к выборке между выборками CU перед кодированием и блоком предсказания.
[0059] Для предсказания CU, кодер 200 видео может обычно формировать блок предсказания для CU посредством интер-предсказания или интра-предсказания. Интер-предсказание обычно относится к предсказанию CU из данных ранее кодированной картинки, в то время как интра-предсказание обычно относится к предсказанию СU из ранее кодированных данных той же самой картинки. Чтобы выполнить интер-предсказание, кодер 200 видео может генерировать блок предсказания с использованием одного или более векторов движения. Кодер 200 видео обычно может выполнять поиск движения для идентификации опорного блока, который близко согласуется с СU, например, с точки зрения разностей между CU и опорным блоком. Кодер 200 видео может вычислить метрику разности с использованием суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD), средней абсолютной разности (MAD), средне-квадратичных разностей (МSD) или других подобных разностных вычислений для определения, является ли опорный блок близко согласованным с текущей CU. В некоторых примерах, кодер 200 видео может предсказать текущую CU с использованием однонаправленного предсказания или двунаправленного предсказания.
[0060] Некоторые примеры JEM и VVC также обеспечивают аффинный режим компенсации движения, который может рассматриваться как режим интер-предсказания. В аффинном режиме компенсации движения, кодер 200 видео может определять два или более векторов движения, которые представляют непоступательное движение, такое как увеличение или уменьшение масштаба, вращение, движение в перспективе или другие нерегулярные типы движения.
[0061] Для выполнения интра-предсказания, кодер 200 видео может выбрать режим интра-предсказания для генерации блока предсказания. Некоторые примеры JEM и VVC обеспечивает шестьдесят семь режимов интра-предсказания, включая различные направленные режимы, а также планарный режим и режим DC. В общем случае, кодер 200 видео выбирает режим интра-предсказания, который описывает соседние выборки для текущего блока (например, блока CU), из которых следует предсказывать выборки текущего блока. Такие выборки обычно могут находиться сверху, сверху и слева или слева от текущего блока в той же картинке, где и текущий блок, в предположении, что кодер 200 видео кодирует CTU и CU в порядке растрового сканирования (слева направо, сверху вниз).
[0062] Кодер 200 видео кодирует данные, представляющие режим предсказания для текущего блока. Например, для режимов интер-предсказания, кодер 200 видео может кодировать данные, представляющие, какой из различных доступных режимов интер-предсказания используется, а также информацию движения для соответствующего режима. Например, для однонаправленного или двунаправленного интер-предсказания, кодер 200 видео может кодировать векторы движения с использованием расширенного предсказания векторов движения (AMVP) или режима слияния. Кодер 200 видео может использовать аналогичные режимы для кодирования векторов движения для аффинного режима компенсации движения.
[0063] После предсказания, такого как интра-предсказание или интер-предсказание блока, кодер 200 видео может вычислить остаточные данные для блока. Остаточные данные, такие как остаточный блок, представляют разности от выборки к выборке между данным блоком и блоком предсказания для данного блока, сформированным с использованием соответствующего режима предсказания. Кодер 200 видео может применять одно или более преобразований к остаточному блоку для получения преобразованных данных в области преобразования вместо области выборок. Например, кодер 200 видео может применять дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование к остаточным данным видео. Кроме того, кодер 200 видео может применять вторичное преобразование после первого преобразования, такое как зависимое от режима неделимое вторичное преобразование (MDNSST), зависимое от сигнала преобразование, преобразование Карунена-Лоэва (KLT) и т.п. Кодер 200 видео формирует коэффициенты преобразования после применения одного или более преобразований.
[0064] Как отмечалось выше, после любых преобразований для получения коэффициентов преобразования, кодер 200 видео может выполнять квантование коэффициентов преобразования. Квантование обычно относится к процессу, в котором коэффициенты преобразования квантуются, чтобы по возможности уменьшить объем данных, используемых для представления коэффициентов, обеспечивая дальнейшее сжатие. Путем выполнения процесса квантования, кодер 200 видео может уменьшить битовую глубину, ассоциированную с некоторыми или всеми из коэффициентов. Например, кодер 200 видео может округлять n-битовое значение до m-битового значения во время квантования, где n больше, чем m. В некоторых примерах, чтобы выполнить квантование, кодер 200 видео может выполнить побитовое смещение вправо значения, подлежащего квантованию.
[0065] После квантования, кодер 200 видео может сканировать коэффициенты преобразования, формируя одномерный вектор из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может быть спроектировано так, чтобы помещать коэффициенты преобразования более высокой энергии (и, следовательно, более низкой частоты) в начале вектора и помещать коэффициенты преобразования более низкой энергии (и, следовательно, более высокой частоты) в конце вектора. В некоторых примерах, кодер 200 видео может использовать предопределенный порядок сканирования для сканирования квантованных коэффициентов преобразования для получения вектора, преобразованного в последовательную форму, а затем энтропийно кодировать квантованные коэффициенты преобразования вектора. В других примерах, кодер 200 видео может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для формирования одномерного вектора, кодер 200 видео может энтропийно кодировать одномерный вектор, например, в соответствии с контекстно-адаптивным двоичным арифметическим кодированием (CABAC). Кодер 200 видео может также энтропийно кодировать значения для синтаксических элементов, описывающих метаданные, ассоциированные с кодированными данными видео, для использования декодером 300 видео при декодировании данных видео.
[0066] Для выполнения CABAC, кодер 200 видео может назначать контекст в рамках контекстной модели символу, который должен быть передан. Контекст может относиться, например, к тому, являются ли соседние значения символа нулевыми или нет. Определение вероятности может основываться на контексте, назначенном символу.
[0067] Кодер 200 видео может дополнительно генерировать синтаксические данные, такие как синтаксические данные на блочной основе, синтаксические данные на основе картинки и синтаксические данные на основе последовательности, для декодера 300 видео, например, в заголовке картинки, заголовке блока, заголовке вырезки, или другие синтаксические данные, такие как набор параметров последовательности (SPS), набор параметров картинки (PPS) или набор параметров видео (VPS). Декодер 300 видео может также декодировать такие синтаксические данные, чтобы определить, как декодировать соответствующие данные видео.
[0068] Таким образом, кодер 200 видео может генерировать битовый поток, включающий в себя кодированные данные видео, например, синтаксические элементы, описывающие разбиение картинки на блоки (например, CU), и информацию предсказания и/или остаточную информацию для блоков. В конечном счете, декодер 300 видео может принимать битовый поток и декодировать закодированные данные видео.
[0069] В принципе, декодер 300 видео выполняет процесс, обратный процессу, выполняемому кодером 200 видео, для декодирования закодированных данных видео битового потока. Например, декодер 300 видео может декодировать значения для синтаксических элементов битового потока с использованием CABAC, по существу аналогично, хотя и обратным образом, по отношению к процессу кодирования CABAC кодера 200 видео. Синтаксические элементы могут определять информацию разбиения картинки на CTU и разбиения каждой CTU согласно соответствующей структуре разбиения, такой как структура QTBT, для определения CU в CTU. Синтаксические элементы могут дополнительно определять предсказание и остаточную информацию для блоков (например, CU) данных видео.
[0070] Остаточная информация может быть представлена, например, квантованными коэффициентами преобразования. Декодер 300 видео может обратно квантовать и обратно преобразовывать квантованные коэффициенты преобразования блока для восстановления остаточного блока для данного блока. Декодер 300 видео использует сигнализированный режим предсказания (интра- или интер-предсказания) и связанную информацию предсказания (например, информацию движения для интер-предсказания) для формирования блока предсказания для данного блока. Декодер 300 видео может затем объединять блок предсказания и остаточный блок (на основе от выборки к выборке) для восстановления исходного блока. Декодер 300 видео может выполнять дополнительную обработку, такую как выполнение процесса устранения блочности для уменьшения визуальных артефактов вдоль границ блока.
[0071] Настоящее раскрытие может, в общем, ссылаться на “сигнализацию” определенной информации, такой как синтаксические элементы. Термин “сигнализация” может, в общем, относиться к сообщению значений для синтаксических элементов и/или других данных, используемых для декодирования закодированных данных видео. То есть, кодер 200 видео может сигнализировать значения для синтаксических элементов в битовом потоке. В общем, сигнализация относится к генерации значения в битовом потоке. Как отмечалось выше, устройство 102 источника может транспортировать битовый поток к устройству 116 места назначения по существу в реальном времени или не в реальном времени, как может происходить при сохранении синтаксических элементов в устройстве 112 хранения для последующего извлечения устройством 116 места назначения.
[0072] Фиг. 2A и 2B представляют собой концептуальную диаграмму, иллюстрирующую примерную структуру 130 квадродерева-двоичного дерева (QTBT) и соответствующую единицу дерева кодирования (CTU) 132. Сплошные линии представляют разбиение квадродерева, а пунктирные линии указывают разбиение двоичного дерева. В каждом разделенном (т.е. нелистовом) узле двоичного дерева сигнализируется один флаг, указывающий, какой тип разделения (т.е. горизонтальное или вертикальное) используется, где 1 указывает горизонтальное разделение, а 0 указывает вертикальное разделение в данном примере. Для разделения квадродерева, нет необходимости указывать тип разделения, так как узлы квадродерева разделяют блок по горизонтали и по вертикали на 4 подблока одинакового размера. Соответственно, кодер 200 видео может кодировать, а декодер 300 видео может декодировать синтаксические элементы (такие как информация разделения) для уровня дерева области структуры QTBT 130 (т.е. сплошные линии) и синтаксические элементы (такие как информация разделения) для уровня дерева предсказания структуры QTBT 130 (т.е. пунктирные линии). Кодер 200 видео может кодировать, а декодер 300 видео может декодировать данные видео, такие как данные предсказания и преобразования, для CU, представленных конечными листовыми узлами структуры QTBT 130.
[0073] В общем, CTU 132 на фиг. 2B может ассоциироваться с параметрами, определяющими размеры блоков, соответствующих узлам структуры QTBT 130 на первом и втором уровнях. Эти параметры могут включать в себя размер CTU (представляющий размер CTU 132 в выборках), минимальный размер квадродерева (MinQTSize, представляющий минимально допустимый размер листового узла квадродерева), максимальный размер двоичного дерева (MaxBTSize, представляющий максимально допустимый размер корневого узла двоичного дерева), максимальную глубину двоичного дерева (MaxBTDepth, представляющую максимально допустимую глубину двоичного дерева) и минимальный размер двоичного дерева (MinBTSize, представляющий минимально допустимый размер листового узла двоичного дерева).
[0074] Корневой узел структуры QTBT, соответствующий CTU, может иметь четыре дочерних узла на первом уровне структуры QTBT, каждый из которых может разбиваться в соответствии с разбиением квадродерева. То есть, узлы первого уровня являются либо листовыми узлами (не имеющими дочерних узлов), либо имеют четыре дочерних узла. Пример структуры QTBT 130 представляет такие узлы, как включающие родительский узел и дочерние узлы, имеющие сплошные линии для ветвей. Если узлы первого уровня не больше, чем максимально допустимый размер корневого узла двоичного дерева (MaxBTSize), то узлы могут дополнительно разбиваться на соответствующие двоичные деревья. Разделение двоичного дерева одного узла может повторяться до тех пор, пока узлы, полученные в результате разделения, не достигнут минимально допустимого размера листового узла двоичного дерева (MinBTSize) или максимально допустимой глубины двоичного дерева (MaxBTDepth). Пример структуры QTBT 130 представляет такие узлы как имеющие пунктирные линии для ветвей. Листовой узел двоичного дерева упоминается как единица кодирования (CU), которая используется для предсказания (например, предсказания внутри картинки или между картинками) и преобразования, без какого-либо дальнейшего разбиения. Как обсуждалось выше, CU также могут упоминаться как “блоки видео” или “блоки”.
[0075] В одном примере структуры разбиения QTBT, размер CTU устанавливается как 128×128 (выборки яркости и две соответствующие 64×64 выборки цветности), MinQTSize устанавливается как 16×16, MaxBTSize устанавливается как 64×64, MinBTSize (как для ширины, так и для высоты) устанавливается как 4, и MaxBTDepth устанавливается как 4. Разбиение квадродерева применяется к CTU сначала, чтобы сформировать листовые узлы квадродерева. Листовые узлы квадродерева могут иметь размер от 16×16 (т.е. MinQTSize) до 128×128 (т.е. размер CTU). Если листовой узел квадродерева равен 128×128, он не будет далее разделен на двоичное дерево, так как размер превышает MaxBTSize (т.е. 64×64, в данном примере). В противном случае, листовой узел квадродерева будет дополнительно разбиваться на двоичное дерево. Таким образом, листовой узел квадродерева также является корневым узлом для двоичного дерева и имеет глубину двоичного дерева, равную 0. Когда глубина двоичного дерева достигает MaxBTDepth (4, в данном примере), дальнейшее разделение не допускается. Когда узел двоичного дерева имеет ширину, равную MinBTSize (4, в данном примере), это означает, что дальнейшее вертикальное разделение не допускается. Аналогично, узел двоичного дерева, имеющий высоту, равную MinBTSize, подразумевает, что дальнейшее горизонтальное разделение для этого узла двоичного дерева не допускается. Как отмечено выше, листовые узлы двоичного дерева упоминаются как CU и далее обрабатываются в соответствии с предсказанием и преобразованием без дальнейшего разбиения.
[0076] Артефакты блочности могут включать в себя горизонтальные и вертикальные неоднородности (разрывности) в восстановленной картинке, которые не существуют в исходном неподвижном изображении или картинке видео и часто являются результатом сжатия в умеренной до высокой степени. Например, если кодер видео в высокой степени сжимает входное изображение, то от этого страдает визуальное качество декодированного изображения, так что когда содержимое изображения подвергается декомпрессии (устранению сжатия), т.е., декодируется, содержимое восстановленного изображения страдает из-за артефактов блочности. Эти артефакты в плоских областях выглядят подобно “мозаичности”, поскольку артефакты не маскируются высококонтрастным содержимым. Кроме того, артефакты блочности при воспроизведении видео могут наблюдаться как “движущиеся и мерцающие”, так как неоднородности расположены по-разному в последовательных кадрах.
[0077] Как изложено выше, одним источником артефактов блочности является кодирование с преобразованием на блочной основе, включающее в себя преобразование и квантование, которое выполняется на ошибках интра- и интер-предсказания (например, остатках). Грубое квантование коэффициентов преобразования может вызвать визуально распределение неоднородностей на границах блока. Предсказание с компенсацией движения является другим потенциальным источником артефактов блочности. Блоки со скомпенсированным движением генерируются путем копирования интерполированных пиксельных данных из различных местоположений возможно различных опорных кадров. Так как почти никогда не имеется идеального соответствия для этих данных (например, значений выборок для опорных блоков, образованных из интерполяции), обычно возникают неоднородности на границах скопированных блоков данных. То есть, два соседних блока, закодированных с использованием компенсации движения, могут проявлять неоднородности.
[0078] Фильтрация устранения блочности (например, как в HEVC) обычно выполняется после того, как картинка или группа блоков восстанавливается/декодируется, чтобы ослабить артефакты блочности. Более конкретно, фильтрация устранения блочности изменяет значения выборок, расположенных вблизи каждой границы блока, путем фильтрации, отсечения или других средств, так что неоднородности сглаживаются и, таким образом, становятся менее видимыми.
[0079] В сжатии видео, фильтрация устранения блочности может выполняться на изображениях в буфере изображений и вне контура предсказания, что означает, что картинки, отфильтрованные с устранением блочности, не используются для предсказания других картинок. Фильтрация устранения блочности может также выполняться в контуре предсказания, что означает, что картинки с устранением блочности используются в качестве опорных картинок для компенсации движения будущих картинок. Обе методики улучшают субъективное качество отображаемого видео, хотя последний потенциально также улучшает эффективность сжатия как результат точности интер-предсказания, улучшенной за счет использования опорных кадров с устранением блочности.
[0080] Устранение блочности в HEVC является процессом в контуре и применяется к границам блоков, которые удовлетворяют двум условиям. Первое условие заключается в том, что границы являются границами CU, PU или TU, и второе условие заключается в том, что x-координата (или y-координата) равна (и в некоторых случаях должна быть) кратным 8, если граница является вертикальной (или горизонтальной). Второе условие означает, что минимальное расстояние двух параллельных соседних границ, подлежащих устранению блочности, составляет 8 пикселов, что обеспечивает лучшую параллелизацию, как описано более подробно ниже. Фильтр устранения блочности делит границу, подлежащую обработке, независимо от длины границы, на множество неперекрывающихся сегментов из 4 выборок, которые являются единицами, на которых фильтр устранения блочности выполняет фильтрацию устранения блочности. В настоящем раскрытии, будут введены операции устранения блочности на сегменте, и сегмент может предполагаться вертикальным, однако обработка горизонтальных сегментов по существу является той же самой.
[0081] Декодер 300 видео, при выполнении фильтрации устранения блочности, может выполнять определение силы (интенсивности) границы. Для сегмента, подлежащего обработке, декодер видео исследует условия кодирования (например, вектор движения (MV), опорный индекс и наличие ненулевых коэффициентов преобразования) двух блоков на каждой стороне, обозначенных как P и Q, с каждой стороны от границы блока.
[0082] Фиг. 3 показывает пример P-блока 142 и Q-блока 144. P-блок 142 представляет собой 8×8 блок, и Q-блок 144 представляет собой 16×16 блок. P-блок 142 и Q-блок 144 совместно используют границу 146, которая показана на фиг. 3 как сегменты 146A и 146B. Оба сегмента 146A и 146B имеют длину четыре выборки, в соответствии с фильтрацией устранения блочности в HEVC, но методики настоящего раскрытия не ограничены конкретной длиной сегмента.
[0083] Для блоков яркости, декодер видео определяет силу границы сегмента 146A. Сила границы представляет, насколько интенсивные артефакты блочности должны появиться вокруг сегмента 146A. В одном примере, значение силы границы может составлять 0, что означает, что условия кодирования в P-блоке 142 и Q-блоке 144 таковы, что артефакты блочности не ожидаются вдоль сегмента 146A, и фильтрация устранения блочности для сегмента 146A может быть пропущена. В другом примере, значение силы границы может составлять 2, что означает, что условия кодирования в P-блоке 142 и Q-блоке 144 таковы, что потенциально ожидается присутствие сильных артефактов блочности, и может быть желательна более сильная фильтрация устранения блочности. Значение силы границы может также составлять 1, что означает, что условия кодирования в P-блоке 142 и Q-блоке 144 таковы, что потенциально ожидается присутствие менее выраженных артефактов блочности, и может быть желательна некоторая фильтрация устранения блочности, но не настолько сильная, как фильтрация устранения блочности, когда сила границы равна 2. Подробности выведения силы границ описаны в разделе 8.7.2.4 HEVC.
[0084] Декодер видео может определять силы границ для блоков цветности иначе, чем для блоков яркости. Например, для блоков цветности, декодер видео назначает сегментам, смежным с интра-кодированными блоками, сигу границы, равную 2, и в противном случае, назначает сегментам силу границы, равную 0.
[0085] Как описано выше, декодер видео может оценивать вероятность того, что сегмент имеет артефакты блочности, на основе условия кодирования смежных блоков. Однако декодер видео может также выполнять дополнительный анализ, на основе значений выборок вблизи такого сегмента, чтобы определять, следует ли или нет устранять блочность для сегмента. Сначала, декодер видео принимает решение, следует ли фильтровать сегмент, путем вычисления вторых производных четырех выборок вблизи сегмента.
C
[0086] Фиг. 4 показывает пример сегмента 150, который находится на границе между P-блоком 152 и Q-блоком 154. Декодер видео вычисляет вторые производные четырех выборок вблизи сегмента, которые показаны на фиг. 4 как выборки 158A-158D в кружках. Если суммирование четырех вторых производных (см. Ур. (1)) меньше, чем порог β, как описано ниже в отношении порогов β и t, то декодер видео определяет, что сегмент требует устранения блочности. В противном случае, декодер видео определяет, что сегмент считается расположенным в неплоской области, где артефакты блочности, вероятно, будут маскированы и, следовательно, не требуют устранения блочности. Для сегмента, даже при ненулевой силе границы, декодер видео может пропустить фильтрацию устранения блочности, если порог согласно Ур. (1) не достигнут.
[0087] Во-вторых, для сегмента, подлежащего устранению блочности, декодер видео может принять другое решение, следует ли использовать интенсивный или нормальный режим фильтрации. Если следующие шесть условий (Ур. (2-1)-(2-6)) все справедливы, что означает, что область, вероятно, слишком гладкая, чтобы маскировать какие-либо артефакты блочности, то декодер видео определяет, что используется интенсивный режим фильтрации. В противном случае, декодер видео определяет, что используется нормальный режим фильтрации.
C
Пороговый параметр t представляет параметр отсечения, который описан более детально ниже.
p
p
p
p
q
q
q
q
0
1
2
3
0
1
2
3
[0088] Фиг. 5 показывает пример сегмента 160, который находится на границе между P-блоком 162 и Q-блоком 164. Фиг. 5 будет использоваться, чтобы показать операцию фильтрации устранения блочности для одной строки, представленной физическими положениями выборок , , , , , ,  и .
[0089] Для определений силы границы и других решений для яркости, описанных выше, декодер видео выполняет анализ и выводы на уровне сегмента. В интенсивном режиме фильтрации для яркости и нормальном режиме фильтрации для яркости, фильтрация устранения блочности выполняется построчно (например, строка за строкой, если сегмент является вертикальным, или столбец за столбцом, если сегмент является горизонтальным).
p
p
p
p
p
p
0
1
2
0
1
2
’
’
’
[0090] В интенсивном режиме фильтрации для яркости, декодер видео обрабатывает три выборки на каждой стороне сегмента 160. В примере на фиг. 5, значения выборок ,  и  в P-блоке 162 обновляются на ,  и , посредством фильтрации нижних частот, как показано в Ур. (3-1)-(3-3).
p
i
p
t
p
t
i
i
C
i
C
'
Измененные значения выборок  (=0, 1, 2) ограничиваются (отсекаются) до диапазона [ - 2, +2].
q
q
q
q
p
q,
p
0
1
2
[0091] Декодер видео обрабатывает ,  и  в Q-блоке 164 с использованием по существу тех же уравнений, что и Ур. (3-1)-(3-3), хотя и для  вместо . Отсечение применяется таким же образом для  как для .
p
p
p
q
q
0
1
0
1
0
[0092] В нормальном режиме фильтрации для яркости, декодер видео обрабатывает одну или две выборки на каждой стороне сегмента 160. Для левой стороны сегмента 160, например, декодер видео проверяет условия в Ур. (4-1). Если условия выполняются, то декодер видео обрабатывает выборки  и . В противном случае, декодер видео обрабатывает только выборку . Аналогичным образом, для правой стороны, декодер видео проверяет условия в Ур. (4-2) для определения, обрабатывается ли выборка  в дополнение к выборке . Так как решение по числу выборок, подлежащих обработке, принимается независимо на каждой стороне сегмента, можно обработать одну выборку на одной стороне и две выборки на другой стороне.
p
q
0
0
Для обработки  и , сначала вычисляется промежуточное значение δ, как в Ур. (5).
C
C
C
[0093] Если абсолютное значение δ больше или равно 10-кратному t, то граница рассматривается, как естественный край, который должен быть сохранен, и декодер видео не выполняет фильтрацию устранения блочности на текущей строке. В противном случае, декодер видео ограничивает δ в диапазоне от -t до t, как показано в Ур. (6).
p
q
p
q
0
0
0
0
0
'
'
[0094] Декодер видео обновляет значения  и  до  и , соответственно, путем суммирования и вычитания Δ, как показано в Ур. (7-1) и (7-2).
p
q
p
q
1
1
1
1
'
'
[0095] Чтобы обработать вторую выборку на каждой стороне сегмента 164, т.е.,  и , декодер видео использует Ур. (8-1) и (8-2), чтобы получить обновленные значения  и .
p
q
0
0
0
[0096] Декодер видео выполняет фильтрацию устранения блочности для цветности путем определения значения силы границы, но без выполнения какого-либо анализа значений выборок. Декодер видео обрабатывает только первую выборку на каждой стороне сегмента, т.е.,  и , с помощью Ур. (7-1) и (7-2), где дельта Δ вычисляется, как в Ур. (9).
C
[0097] Чтобы избежать избыточной фильтрации, декодер видео вычисляет два параметра β и t. Декодер видео использует порог β, чтобы управлять способом, которым выполняется устранение блочности, например, следует ли устранять блочность для сегмента, следует ли использовать интенсивный или нормальный режим фильтрации, и/или следует ли обрабатывать одну или две выборки на одной стороне сегмента. Если β или масштабированное β достигается или превышается (см. Ур. (1), (2) и (4)), что означает большее изменение локальных значений выборки, то устранение блочности имеет тенденцию быть более консервативным, чтобы сохранить подробности в исходном изображении. В противном случае, локальные значения выборки изменяются меньше (т.е., более гладкие), и декодер видео выполняет фильтрацию устранения блочности более агрессивным образом.
C
C
C
C
[0098] Декодер видео использует значение отсечения t,главным образом, чтобы управлять максимальным изменением величины выборки, за исключением Ур. (2-5) и (2-6). В HEVC, например, в нормальном режиме фильтрации или фильтрации для цветности, изменение величины выборки ограничивается так, что изменение не превышает ±t для первой выборки на одной стороне сегмента (применимо к яркости и цветности), или ±t/2 для второй выборки (применимо только к яркости). В HEVC, для интенсивного режима фильтрации, где подразумевается большее изменение в величине, максимальное изменение ограничивается до ±2t для трех выборок, обработанных на каждой стороне сегмента.
t
QP
QP
QP
t
t
QP
t
t
t
C
ave
P
Q
C
C
ave
C
ave
ave
C
C
[0099] Значения β и , главным образом, зависят от значений параметра квантования (QP) из левого P-блока и правого Q-блока. Более конкретно, декодер видео может использовать среднее QP из P и Q, обозначенное как  = (+ +1)>>1, как индекс для поиска двух 1-D таблиц поиска (LUT) для β и , соответственно. Хотя индекс поиска для нахождения значения  может настраиваться путем прибавления двух, т.е., (+2), если сила границы равна 2, преобладающим фактором, определяющим значения β и , все еще является QP. В обоих LUT, значения элементов записи монотонно возрастают с увеличением значения индексов поиска, что означает, что чем выше QP, тем большие значения будут иметь β и . Таким образом, более вероятно выбирается более интенсивная фильтрация устранения блочности, и допускается большее изменение величины. Более низкое QP, напротив, приводит к меньшим или даже к нулевым значениям для β и . При кодировании с низким QP, картинка, как правило, имеет меньше артефактов блочности или имеет менее выраженные артефакты блочности и поэтому требует в меньшей степени устранения блочности или даже не требует его.
t
idx
idx
C
tc
[0100] Индексы, используемые для поиска β и  в LUT, обозначенные как β и , могут дополнительно настраиваться двумя параметрами tc_offset_div2 и beta_offset_div2, соответственно (см. уравнения (10-1) и (10-2)),
где tc_offset_div2 и beta_offset_div2 отправляются в заголовке вырезки или в наборе параметров картинки (PPS). Это позволяет кодеру адаптировать интенсивность устранения блочности в зависимости от характеристик последовательности, режима кодирования и других факторов.
[0101] Устранение блочности согласно HEVC имеет две последовательных стадии, которые могут обеспечивать возможность параллелизации. На первой стадии, декодер видео фильтрует все вертикальные границы блока, и на второй стадии, декодер видео фильтрует все горизонтальные границы блока. На второй стадии, выборки, используемые для принятия решения о режиме и фильтрации, являются выходами первой стадии. На каждой стадии, где границы, подвергаемые устранению блочности, все являются параллельными и отстоят по меньшей мере на 8 выборок, выборки, задействованные в устранении блочности одной границы, не перекрываются с выборками, задействованными в устранении блочности любых других границ. В этом контексте, выборки, задействованные в устранении блочности одной границы, включают в себя до трех выборок, подлежащих фильтрации на каждой стороне границы, и до четырех выборок на каждой стороне для поддержки принятия решения о фильтрации и режиме, и поэтому устранение блочности одной границы может выполняться параллельно с любыми другими границами.
C
C
C
C
C
C
[0102] HEVC-фильтр устранения блочности фильтрует выборки вблизи границы блока и отсекает изменения в величинах выборки, которые больше, чем пороговые величины. HEVC-фильтр устранения блочности работает в трех режимах с тремя разными уровнями интенсивности фильтра. Три режима, или интенсивности фильтра, упоминаются как сильный, нормальный и нулевой (т.е., отсутствует фильтрация), с возрастающими локальными активностями выборки вблизи границы блока (см. уравнения (1) и (2-1)-(2-6)). В сильном режиме фильтрации, HEVC-фильтр устранения блочности фильтрует три выборки на каждой стороне границы блока путем фильтрации нижних частот (см. уравнения (3-1)-(3-3)). Для нормального режима фильтрации, HEVC-фильтр устранения блочности фильтрует по меньшей мере выборку, ближайшую к границе, и на каждой стороне границы может также фильтровать вторую ближайшую выборку, если внутренние выборки достаточно гладкие (см. уравнения (4-1) и (4-2)). HEVC-фильтр устранения блочности выполняет отсечение, контролируемое параметром t. Для сильной фильтрации, изменение величины выборки ограничивается, чтобы не превышать 2t. Для нормальной фильтрации, изменения величины первой и второй выборок ограничиваются, чтобы не превышать t и t/2, соответственно (см. Ур. (6)-(8-2)). Разные значения силы границы создают различие в t, т.е., сегмент с силой границы, равной 2, имеет большее t, чем сегмент с силой границы, равной 1.
t
C
[0103] HEVC-фильтр устранения блочности по существу следует общей схеме устранения блочности согласно H.264/AVC и наследует основные признаки фильтра устранения блочности согласно H.264/AVC, такие как определения силы границы на основе условий кодирования, многоуровневые интенсивности фильтрации от сильной до нулевой, QP и сила границы, зависимая от параметров β и . По сравнению с H.264/AVC-фильтром устранения блочности, вновь разработанные элементы в HEVC-фильтре устранения блочности позволяют осуществлять более простую параллельную обработку и лучше приспособлены к структуре кодирования крупноразмерных блоков HEVC, но ненамного улучшают эффективность кодирования. Поэтому устранение блочности в HEVC, которое рассматривалось как хороший компромисс между вычислительной сложностью и эффективностью кодирования во время финализации HEVC, может быть чрезмерно упрощенным, с учетом возможностей современных высокоразвитых аппаратных средств. Методики настоящего раскрытия потенциально извлекают выгоду из больших аппаратных вычислительных ресурсов для достижения существенного улучшения эффективности кодирования, поддерживая при этом удобную для параллелизации структуру.
[0104] Настоящее раскрытие предлагает методики, которые могут улучшить аспекты фильтрации устранения блочности, включая HEVC-фильтрацию устранения блочности. Один пример недостатка HEVC-фильтрации устранения блочности состоит в том, что использование только трех уровней для представления гладкости области границы, соответствующих трем уровням интенсивности фильтрации, может быть слишком грубым. Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что только две из четырех строк сегмента используются в решении о режиме устранения блочности и выборе фильтра, и в каждой строке используются только четыре выборки с каждой стороны. Так как размер блока кодека видео следующего поколения может составлять до 128×128 или даже больше, использование такой малой части выборок для решения о режиме не может точно отражать реальную активность области границы и может быть чувствительным к шуму.
[0105] Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что выборки, подлежащие фильтрации на каждой стороне сегмента, могут включать в себя 3 выборки или одну выборку, что может быть недостаточно для обеспечения хороших результатов для устранения блочности большого блока. Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что существуют, в общем, пять предопределенных 4-отводных или 5-отводных фильтров, предварительно назначаемых трем выборкам в интенсивном режиме фильтрации (см. уравнения (3-1)-(3-3)) и двум выборкам в нормальном режиме фильтрации (см. уравнения (5)-(8-2)), соответственно. Ограниченное число опций, короткая длина и негибкость в выборе HEVC-фильтра устранения блочности могут обусловить низкую эффективность в устранении блочности.
t
C
[0106] Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что сегменты с различными силами границы могут иметь довольно различные локальные активности, но совместно используют те же самые фильтры устранения блочности, хотя значение отсечения больше для силы границы, равной 2. Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что HEVC-фильтр устранения блочности не дифференцирует P-блок и Q-блок. Интенсивность фильтрации определяется средним второй производной P и Q (см. уравнения (1) и (2-1)-(2-2)), и значения параметров β и  зависят от среднего QP P и Q. Могут иметь место потери эффективности в обработке P-блока и Q-блока одинаково для сценариев кодирования, где один из P-блока или Q-блока может быть гладким, а другой обогащен деталями, что не является необычным сценарием.
[0107] Настоящее раскрытие предлагает различные методики потенциального улучшения производительности фильтрации устранения блочности, используемой для кодирования видео или обработки видео. В соответствии с одним примером, декодер 300 видео может быть выполнен с возможностью выполнять анализ фильтра (например, выбор фильтра или адаптацию интенсивности фильтра) на основе параметров разбиения блока. В одном примере, декодер 300 видео может быть выполнен с возможностью определять длину фильтра устранения блочности и поддержку фильтра (например, поддержку фильтра пониженной дискретизации) на основе длины блока, ортогонального фильтруемой границе. В другом примере, длина блока, выровненного с фильтруемой границей, влияет на процесс принятия решения, например, позволяет осуществлять пространственную суб-дискретизацию граничных выборок, используемых для принятия решения о фильтре.
[0108] В соответствии с другим примером, декодер 300 видео может быть выполнен с возможностью адаптировать доверительный интервал выходной выборки, также известный как коэффициент Tc, как функцию параметров разбиения блока (например, размеров) и связанного положения в пределах блока текущей обрабатываемой выборки, к которой применяется параметр ограничения Tc. Tc ограничивает отклонение, положительное или отрицательное, значения выборки, подвергаемой устранению блочности, от декодированной выборки и вводится в процесс устранения блочности.
[0109] В соответствии с другим примером, декодер 300 видео может быть выполнен с возможностью использования параметров обрабатываемого блока (размера блока), чтобы ограничить набор выборок, доступный для процесса принятия решения и фильтрации, при сохранении структуры процесса принятия решения и фильтрации. Декодер 300 видео может формировать выборки, которые требуются для процесса фильтрации, но не доступны вследствие ограничений, использующих заданный процесс, такой как экстраполяция или процесс заполнения. В соответствии с другим примером, декодер 300 видео может использовать свойства преобразования, такие как информация о типе преобразования/базисной функции, и коэффициенты преобразования, сигнализированные как ненулевые декодеру 300 видео и, следовательно, присутствующие в восстановленном блоке выборок, чтобы выбрать параметры фильтра устранения блочности, такие как тип фильтра, длина фильтра, параметры ограничения Tc, пространственный шаг пропуска выборки. В соответствии с другим примером, декодер 300 видео может использовать параметры квантования P- и Q-блоков для установки порогов по выбору фильтра P и Q независимо.
[0110] В одном примере, для границы блоков, разделяющей блоки различных размеров, декодер 300 видео может принять решение об асимметричной фильтрации устранения блочности. Например, когда граница блоков разделяет блоки различного размера, декодер 300 видео может выбрать асимметричный фильтр устранения блочности.
[0111] В другом примере, если декодер 300 видео определяет, что должен использоваться асимметричный фильтр, то процесс устранения блочности с обеих сторон от границы может быть различным. Например, параметры фильтра устранения блочности, такие как длина отводов, коэффициент фильтра, процесс отсечения или нормализации могут быть разными на обеих сторонах фильтруемой границы. Дополнительно или альтернативно, параметры для процессов принятия решения, такие как длина отводов фильтра анализа, коэффициенты фильтра анализа, отсечение, нормализация или пороги, могут быть различными на обеих сторонах фильтруемой границы.
[0112] В другом примере, декодер 300 видео может определять параметры для асимметричной фильтрации на основе одного или более параметров режима кодирования блоков на границе. Примеры таких параметров режима кодирования включают в себя режим кодирования, режим предсказания, тип вырезки или другие такие параметры.
[0113] Далее будут описаны неограничивающие примеры реализаций методик, введенных выше. В одном примере, процесс анализа фильтра (выбор фильтра или адаптация интенсивности фильтрации) расширяется, чтобы включать в себя параметры разбиения блока. Например, декодер 300 видео может быть выполнен с возможностью определять длину фильтра устранения блочности и поддержку фильтра (например, поддержку фильтра пониженной дискретизации) на основе длины блока, ортогонального фильтруемой границе. В другом примере, декодер 300 видео может быть выполнен с возможностью принятия решения на основе длины блока, выровненного с фильтруемой границей, так что допускается пространственная суб-дискретизация граничных выборок, используемых для принятия решения о фильтре.
[0114] Приведенный ниже псевдокод обеспечивает примерную реализацию выведения параметров устранения блочности, выполняемого декодером 300 видео:
VERT_SAMPLE_SKIP является переменной, определяющей параметры пространственной повторной дискретизации (число пропущенных выборок), задающие число выборок, используемых для классификации граничных выборок.
DB_BLOCK_SIZE_CLASSIFIER является переменной, определяющей число выборок, используемых для классификации граничных выборок.
Функцией является SmoothAsymArea(const CodingUnit& cu, const DeblockEdgeDir edgeDir, const Position& localPos)
[0115] В примерах, приведенных выше, pSrcP может, например, представлять указатель на блок на одной стороне границы, подлежащей фильтрации устранения блочности, и pSrcQ может представлять указатель на блок на другой стороне границы, подлежащей фильтрации устранения блочности.
[0116] Декодер 300 видео может быть выполнен с возможностью определять доверительный интервал выходной выборки, также известный как коэффициент Tc, для ограничения отклонения значения выборки, подвергаемой устранению блочности, от декодированной выборки. Tc может вводиться в процесс устранения блочности. Декодер 300 видео может быть выполнен с возможностью адаптировать Tc как функцию параметров разбиения блока, таких как размер блока, и связанного положения внутри блока или в пределах фильтруемой границы текущей обрабатываемой выборки, к которой применяется параметр ограничения Tc. В одном примере, связанное положение текущей обрабатываемой выборки является местоположением текущей обрабатываемой выборки относительно фильтруемой границы.
[0117] В одной примерной реализации, параметр ограничения Tc может быть определен как функция связанного положения текущей фильтруемой строки/столбца в пределах фильтруемой границы, где i является индексом текущей обрабатываемой строки/столбца фильтруемой границы, начиная с верхнего/правого местоположения границы, соответственно.
[0118] Приведенный ниже псевдокод обеспечивает примерную реализацию применения Tc:
В некоторых примерах, значение Tc может определяться для блока как функция положения, связанного с верхним-левым положением текущего обрабатываемого блока:
y=coordinateCurrentlyProcessedSample.y -
coordinateTopLeftSampleOfBlock.y;
x=coordinateCurrentlyProcessedSample.x -
coordinateTopLeftSampleOfBlock.x;
delta1=Clip3(-tc2[y][x], tc2[y][x], delta[y][x]);
[0119] Декодер 300 видео может быть выполнен с возможностью использовать параметры обрабатываемого блока, такие как размер блока, чтобы ограничивать набор выборок, доступный для процесса принятия решения и фильтрации, с сохранением структуры процесса принятия решения и фильтрации. Декодер 300 видео может формировать выборки, которые требуются для процесса фильтрации, но не доступны вследствие ограничений, использующих заданный процесс, такой как экстраполяция или процесс заполнения.
[0120] Приведенный ниже псевдокод обеспечивает примерную реализацию. В некоторых реализациях, может быть определена группа фильтров для обработки границы. Выбор фильтра может быть основан на объединении размеров блока, смежных на границе блока, и результата классификации граничных выборок.
DB_FILTER_BLOCK_SIZE1, DB_FILTER_BLOCK_SIZE2 and DB_FILTER_BLOCK_SIZE3 являются переменными, каждая из которых определяет число выборок, используемых для фильтрации граничных выборок, определяя поддержку фильтров, например, 3 фильтров.
[0121] Декодер 300 видео может быть выполнен с возможностью использовать свойства преобразования, такие как информация о типе преобразования/базисной функции, и коэффициенты преобразования, сигнализированные как ненулевые декодеру 300 видео и, следовательно, присутствующие в восстановленном блоке выборок, чтобы выбрать параметры фильтра устранения блочности, такие как тип фильтра, длина фильтра, параметры ограничения Tc, пространственный шаг пропуска выборки.
[0122] Представленный ниже псевдокод обеспечивает примерную реализацию. Предположим, что кодер 200 видео и декодер 300 видео используют набор множества преобразований, например {T1,T2,T3}, причем кодер 200 видео выбирает оптимальное преобразование, применимое к горизонтальному и вертикальному направлениям. В декодере 300 видео, применимость преобразования к горизонтальному/вертикальному направлению может быть выведена из синтаксических элементов битового потока. Процесс выведения, используемый в WD VVC (Draft 2), специфицирован ниже.
Таблица 1. Таблица отображения преобразования и сигнализации
MTS_CU_flag
MTS_Hor_flag
MTS_Ver_flag
Интра
Интер
Горизон-тальное
Верти-кальное
Горизон-тальное
Верти-кальное
0
DCT2
1
0
0
DST7
DST7
DCT8
DCT8
0
1
DCT8
DST7
DST7
DCT8
1
0
DST7
DCT8
DCT8
DST7
1
1
DCT8
DCT8
DST7
DST7
[0123] Следующий псевдокод может быть использован для выведения параметров фильтра устранения блочности:
}
[0124] Ниже приведен пример функции ApplyDeblockingProcessType1. Структура других функций, например, функций устранения блочности, может также следовать подобному шаблону.
ApplyDeblockingProcessType1()
{
1. Вывести длину классификатора на основе размера блока, ортогонального границе блочности, типа преобразования и индекса ненулевых кодированных коэффициентов преобразования и оценки локальной активности.
2. Вывести длину устранения блочности на основе размера блока, ортогонального к границе блочности, типа преобразования и индекса ненулевых кодированных коэффициентов преобразования и оценки локальной активности.
3. Вывести выборки, пропускаемые во время процесса классификатора или устранения блочности, на основе размера блока, ортогонального к границе блочности, типа преобразования и индекса ненулевых кодированных коэффициентов преобразования и оценки локальной активности.
4. Вывести параметры устранения блочности, такие как Tc, локальные пороги, настройка QP на основе размера блока, ортогонального к границе блочности, типа преобразования и индекса ненулевых кодированных коэффициентов преобразования и оценки локальной активности.
[0125] Декодер 300 видео может быть выполнен с возможностью использовать параметры квантования P- и Q-блоков для установки порогов по выбору P- и Q-фильтра независимо.
iQPp=cuP.qp;
iQPq=cuQ.qp;
[0126] Следующий псевдокод задан для параметров P-блока. Обработка для Q-блока может быть сходной.
[0127] В еще одном примере, следующая реализация позиционно-зависимого устранения блочности может быть использована в объединении с другими раскрытыми здесь признаками.
[0128] Пусть numberQSide и numberPSide представляют собой длины фильтров, применяемых к текущей строке. Как введено выше, длина фильтра numberPSide и numberQSide может быть основана на размере блока. В этом примере, используются два фильтра, которые применяются, чтобы фильтровать 7 и 3 пиксела границы блока. Параметры значения позиционно-зависимого отсечения выражены посредством таблиц Tc7 и Tc3.
[0129] В приведенном выше примере, “Src=piSrcP[-iOffSet*thePos]” иллюстрирует значение выборки перед фильтрацией устранения блочности. “((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6)” иллюстрирует применение операции фильтрации устранения блочности. “refP” или “refQ” представляет значение линейных объединений выборок на одной стороне (стороне P- или Q-блока) границы блока или отфильтрованное значение на одной стороне (стороне P- или Q-блока) границы блока. “refMiddle” представляет значение линейных объединений выборок на обеих сторонах границы блока, или отфильтрованное значение на обеих сторонах границы блока. “Clip3(src - cvalue, src+cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6))” иллюстрирует отсечение отфильтрованного для устранения блочности значения в диапазоне src-value и src+cvalue, которое является значением выборки перед фильтрацией плюс/минус порог cvalue, где cvalue адаптируется на основе местоположения выборки и размера блока.
[0130] Как обсуждено выше, декодер 300 видео может определять numberQSide и numberPSide на основе размера блока, к которому применяется фильтрация устранения блочности. refMiddle представляет значение после применения фильтра к выборкам на каждой стороне границы P- и Q-блока. refP и refQ представляют значения после применения фильтров к выборкам в P-блоке и Q-блоке.
[0131] В еще одном примере, следующая реализация позиционно-зависимого устранения блочности может быть использована в объединении с другими описанными здесь признаками.
[0132] Пусть numberQSide и numberPSide являются длиной фильтра, применяемого к текущей строке. В этом примере используются два фильтра, применяемые для фильтрации 7 и 3 пикселов границы блока. Параметры значения позиционно-зависимого отсечения выражены посредством таблиц Tc7 и Tc3.
[0133] В приведенном выше примере, “Src=piSrcP[-iOffSet*thePos]” иллюстрирует значение выборки перед фильтрацией устранения блочности. “((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6)” иллюстрирует применение операции фильтрации устранения блочности. “refP” и “refMiddle” являются примерами линейных объединений выборок на одной стороне границы блока или отфильтрованных пикселов на одной стороне границы блока. “Clip3(src - cvalue, src+cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6))” иллюстрирует отсечение отфильтрованного с устранением блочности значения в диапазоне src-value и src+cvalue, которое является значением выборки перед фильтрацией плюс порог cvalue, где cvalue адаптируется на основе местоположения выборки и размера блока.
[0134] Как обсуждено выше, декодер 300 видео может определять numberQSide и numberPSide на основе размера блока, к которому применяется фильтрация устранения блочности. refMiddle представляет значение после применения фильтра к выборке на каждой стороне границы P-блока и Q-блока. refP и refQ представляют значения после применения фильтров к выборкам в P-блоке и Q-блоке.
[0135] В еще одном примере, следующая реализация позиционно-зависимого устранения блочности может быть использована в объединении с другими описанными здесь признаками.
[0136] Пусть numberQSide и numberPSide являются длинами фильтров, применяемых к текущей строке. В этом примере используются два фильтра, применяемые для фильтрации 7 и 3 пикселов границы блока. Параметры позиционно-зависимого значения отсечения выражены посредством таблиц Tc7 и Tc3.
[0137] В еще одном примере, следующее условие определения асимметричной фильтрации может быть использовано в объединении с другими раскрытыми здесь признаками.
Отключить длинный фильтр в асимметричном случае в зависимости от режимов предсказания P и Q.
[0138] Фиг. 6 представляет собой блок-схему, иллюстрирующую примерный кодер 200 видео, который может выполнять методики настоящего раскрытия. Фиг. 6 приведена в целях пояснения и не должна рассматриваться как ограничение методик, широко иллюстрируемых и описываемых в настоящем раскрытии. В целях пояснения, настоящее раскрытие описывает кодер 200 видео в контексте стандартов кодирования видео, таких как стандарт кодирования видео HEVC и разрабатываемый стандарт кодирования видео H.266. Однако методики настоящего раскрытия не ограничиваются этими стандартами кодирования видео и применимы в общем к кодированию и декодированию видео.
[0139] В примере на фиг. 6, кодер 200 видео включает в себя память 230 данных видео, модуль 202 выбора режима, модуль 204 генерации остатка, модуль 206 обработки преобразования, модуль 208 квантования, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 216 фильтрации, буфер 218 декодированных картинок (DPB) и модуль 220 энтропийного кодирования.
[0140] Память 230 данных видео может хранить данные видео, подлежащие кодированию компонентами кодера 200 видео. Кодер 200 видео может принимать данные видео, хранящиеся в памяти 230 данных видео, например, от источника 104 видео (фиг. 1). DPB 218 может действовать как память опорных картинок, которая хранит опорные данные видео для использования в предсказании последующих данных видео кодером 200 видео. Память 230 данных видео и DPB 218 могут быть образованы любым из множества устройств памяти, таких как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 230 данных видео и DPB 218 могут быть обеспечены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах, память 230 данных видео может быть в чипе с другими компонентами кодера 200 видео, как иллюстрируется, или вне чипа относительно этих компонентов.
[0141] В настоящем раскрытии, ссылка на память 230 данных видео не должна интерпретироваться как ограниченная памятью внутренней для кодера 200 видео, если только она специально не описана как таковая, или памятью внешней для кодера 200 видео, если только она специально не описана как таковая. Скорее, ссылка на память 230 данных видео должна пониматься как опорная память, которая хранит данные видео, которые кодер 200 видео получает для кодирования (например, данные видео для текущего блока, который должен кодироваться). Память 106 на фиг. 1 может также обеспечивать временное хранение выходных данных из различных модулей кодера 200 видео.
[0142] Различные модули на фиг. 6 проиллюстрированы, чтобы способствовать пониманию операций, выполняемых кодером 200 видео. Модули могут быть реализованы как фиксированные функциональные схемы, программируемые схемы или их объединение. Фиксированные функциональные схемы относятся к схемам, которые обеспечивают определенную функциональность и заранее настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы для выполнения различных задач и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или микропрограммное обеспечение, которое предписывает программируемым схемам работать таким образом, как определяется инструкциями программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут исполнять программные инструкции (например, принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, обычно неизменны. В некоторых примерах, один или более модулей могут быть отдельными схемными блоками (фиксированными функциональными блоками или программируемыми блоками), а в некоторых примерах, один или более модулей могут быть интегральными схемами.
[0143] Кодер 200 видео может включать в себя арифметико-логические модули (ALU), элементарные функциональные модули (EFU), цифровые схемы, аналоговые схемы и/или программируемые ядра, образованные программируемыми схемами. В примерах, где операции кодера 200 видео выполняются с использованием программного обеспечения, исполняемого программируемыми схемами, память 106 (фиг. 1) может хранить инструкции (например, объектный код) программного обеспечения, которые кодер 200 видео принимает и исполняет, или другая память в кодере 200 видео (не показана) может хранить такие инструкции.
[0144] Память 230 данных видео приспособлена для хранения принятых данных видео. Кодер 200 видео может извлекать картинку данных видео из памяти 230 данных видео и предоставлять данные видео в модуль 204 генерации остатка и модуль 202 выбора режима. Данные видео в памяти 230 данных видео могут быть необработанными видеоданными, которые должны быть закодированы.
[0145] Модуль 202 выбора режима включает в себя модуль 222 оценки движения, модуль 224 компенсации движения и модуль 226 интра-предсказания. Модуль 202 выбора режима может включать в себя дополнительные функциональные модули для выполнения предсказания видео в соответствии с другими режимами предсказания. В качестве примера, модуль 202 выбора режима может включать в себя модуль палитры, модуль внутриблочного копирования (который может быть частью модуля 222 оценки движения и/или модуля 224 компенсации движения), аффинный модуль, модуль линейной модели (LM) или тому подобное.
[0146] Модуль 202 выбора режима обычно координирует множество проходов кодирования для тестирования объединений параметров кодирования и результирующих значений скорости-искажения для таких объединений. Параметры кодирования могут включать в себя разбиение CTU на CU, режимы предсказания для CU, типы преобразования для остаточных данных CU, параметры квантования для остаточных данных CU и т.д. Модуль 202 выбора режима может, в конечном счете, выбрать объединение параметров кодирования, имеющую значения скорости-искажения, которые лучше, чем у других тестируемых объединений.
[0147] Кодер 200 видео может разбивать картинку, извлеченную из памяти 230 данных видео, в последовательность CTU и инкапсулировать одну или более CTU в пределах вырезки. Модуль 202 выбора режима может разбивать CTU картинки в соответствии с древовидной структурой, такой как структура QTBT или структура квадродерева HEVC, описанная выше. Как описано выше, кодер 200 видео может формировать одну или более CU из разбиения CTU в соответствии с древовидной структурой. Такая CU может также упоминаться, в общем, как “блок видео” или “блок”.
[0148] В общем, модуль 202 выбора режима также управляет своими компонентами (например, модулем 222 оценки движения, модулем 224 компенсации движения и модулем 226 интра-предсказания), чтобы генерировать блок предсказания для текущего блока (например, текущей CU или, в HEVC, перекрывающейся части PU и TU). Для интер-предсказания текущего блока, модуль 222 оценки движения может выполнять поиск движения для идентификации одного или более близко согласующихся опорных блоков в одной или более опорных картинках (например, в одной или более из ранее кодированных картинок, сохраненных в DPB 218). В частности, модуль 222 оценки движения может вычислить значение, представляющее, насколько сходен потенциальный опорный блок с текущим блоком, например, в соответствии с суммой абсолютных разностей (SAD), суммой квадратов разностей (SSD), средней абсолютной разностью (MAD), среднеквадратичными разностями (MSD) или тому подобным. Модуль 222 оценки движения может обычно выполнять эти вычисления с использованием разностей от выборки к выборке между текущим блоком и рассматриваемым опорным блоком. Модуль 222 оценки движения может идентифицировать опорный блок, имеющий наименьшее значение, полученное в результате этих вычислений, указывая опорный блок, который наиболее близко согласуется с текущим блоком.
[0149] Модуль 222 оценки движения может формировать один или более векторов движения (MV), которые определяют положения опорных блоков в опорных картинках относительно положения текущего блока в текущей картинке. Модуль 222 оценки движения может затем предоставить векторы движения в модуль 224 компенсации движения. Например, для однонаправленного интер-предсказания, модуль 222 оценки движения может обеспечить один вектор движения, тогда как для двунаправленного интер-предсказания, модуль 222 оценки движения может обеспечить два вектора движения. Модуль 224 компенсации движения может затем генерировать блок предсказания с использованием векторов движения. Например, модуль 224 компенсации движения может извлекать данные опорного блока с использованием вектора движения. В качестве другого примера, если вектор движения имеет точность дробной выборки, модуль 224 компенсации движения может интерполировать значения для блока предсказания в соответствии с одним или более интерполяционными фильтрами. Кроме того, для двунаправленного интер-предсказания, модуль 224 компенсации движения может извлекать данные для двух опорных блоков, идентифицированных соответствующими векторами движения, и объединять извлеченные данные, например, путем усреднения от выборки к выборке или взвешенного усреднения.
[0150] В качестве другого примера, для интра-предсказания или кодирования интра-предсказания, модуль 226 интра-предсказания может генерировать блок предсказания из выборок, соседних с текущим блоком. Например, для направленных режимов, модуль 226 интра-предсказания может обычно математически объединять значения соседних выборок и заполнять этими вычисленными значениями в определенном направлении текущий блок для формирования блока предсказания. В качестве другого примера, для режима DC, модуль 226 интра-предсказания может вычислять среднее значение соседних выборок для текущего блока и генерировать блок предсказания так, чтобы включать это полученное среднее значение для каждой выборки блока предсказания.
[0151] Модуль 202 выбора режима предоставляет блок предсказания в модуль 204 генерации остатка. Модуль 204 генерации остатка получает необработанную, некодированную версию текущего блока из памяти 230 данных видео и блок предсказания из модуля 202 выбора режима. Модуль 204 генерации остатка вычисляет от выборки к выборке разности между текущим блоком и блоком предсказания. Полученные разности от выборки к выборке определяют остаточный блок для текущего блока. В некоторых примерах, модуль 204 генерации остатка может также определять разности между значениями выборок в остаточном блоке для генерации остаточного блока с использованием дифференциальной импульсно-кодовой модуляции остатка (RDPCM). В некоторых примерах, модуль 204 генерации остатка может быть сформирован с использованием одной или нескольких схем вычитания, которые выполняют двоичное вычитание.
[0152] В примерах, где модуль 202 выбора режима разбивает CU на PU, каждая PU может быть ассоциирована с единицей предсказания яркости и соответствующими единицами предсказания цветности. Кодер 200 видео и декодер 300 видео могут поддерживать PU, имеющие различные размеры. Как указано выше, размер CU может относиться к размеру блока кодирования яркости CU, а размер PU может относиться к размеру единицы предсказания яркости PU. Предполагая, что размер конкретной CU равен 2N×2N, кодер 200 видео может поддерживать размеры PU 2N×2N или N×N для интра-предсказания и симметричные размеры PU 2N×2N, 2N×N, N×2N, N×N или аналогичные для интер-предсказания. Кодер 200 видео и декодер 300 видео также могут поддерживать асимметричное разбиение для размеров PU 2N×nU, 2N×nD, nL×2N и nR×2N для интер-предсказания.
[0153] В примерах, где модуль выбора режима дополнительно не разбивает CU на PU, каждая CU может быть ассоциирована с блоком кодирования яркости и соответствующими блоками кодирования цветности. Как указано выше, размер CU может относиться к размеру блока кодирования яркости CU. Кодер 200 видео и декодер 120 видео могут поддерживать размеры CU 2N×2N, 2N×N или N×2N.
[0154] Для других методик кодирования видео, таких как кодирование в режиме внутриблочного копирования, кодирование в аффинном режиме и кодирование в режиме линейной модели (LM), в качестве нескольких примеров, модуль 202 выбора режима, посредством соответствующих модулей, ассоциированных с методиками кодирования, генерирует блок предсказания для текущего кодируемого блока. В некоторых примерах, таких как кодирование в режиме палитры, модуль 202 выбора режима может не генерировать блок предсказания, а вместо этого генерировать синтаксические элементы, указывающие способ восстановления блока на основе выбранной палитры. В таких режимах, модуль 202 выбора режима может предоставлять эти синтаксические элементы модулю 220 энтропийного кодирования для кодирования.
[0155] Как описано выше, модуль 204 генерации остатка принимает данные видео для текущего блока и соответствующего блока предсказания. Затем модуль 204 генерации остатка генерирует остаточный блок для текущего блока. Для генерации остаточного блока, модуль 204 генерации остатка вычисляет разности от выборки к выборке между блоком предсказания и текущим блоком.
[0156] Модуль 206 обработки преобразования применяет одно или более преобразований к остаточному блоку для генерации блока коэффициентов преобразования (упоминаемого здесь как “блок коэффициентов преобразования”). Модуль 206 обработки преобразования может применять различные преобразования к остаточному блоку для формирования блока коэффициентов преобразования. Например, модуль 206 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование, преобразование Карунена-Лоэва (KLT) или концептуально аналогичное преобразование к остаточному блоку. В некоторых примерах, модуль 206 обработки преобразования может выполнять множественные преобразования к остаточному блоку, например, первичное преобразование и вторичное преобразование, такое как преобразование вращения. В некоторых примерах, модуль 206 обработки преобразования не применяет преобразования к остаточному блоку.
[0157] Модуль 208 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования, чтобы сформировать блок квантованных коэффициентов преобразования. Модуль 208 квантования может квантовать коэффициенты преобразования блока коэффициентов преобразования в соответствии со значением параметра квантования (QP), ассоциированным с текущим блоком. Кодер 200 видео (например, посредством модуля 202 выбора режима) может регулировать степень квантования, применяемого к блокам коэффициентов преобразования, ассоциированным с текущим блоком, путем настройки значения QP, ассоциированного с CU. Квантование может вводить потери информации, и, таким образом, квантованные коэффициенты преобразования могут иметь более низкую точность, чем исходные коэффициенты преобразования, сформированные модулем 206 обработки преобразования.
[0158] Модуль 210 обратного квантования и модуль 212 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку квантованных коэффициентов преобразования, соответственно, для восстановления остаточного блока из блока коэффициентов преобразования. Модуль 214 восстановления может формировать восстановленный блок, соответствующий текущему блоку (хотя, возможно, с некоторой степенью искажения), на основе восстановленного остаточного блока и блока предсказания, генерируемого модулем 202 выбора режима. Например, модуль 214 восстановления может добавлять выборки восстановленного остаточного блока к соответствующим выборкам из блока предсказания, генерируемого модулем 202 выбора режима, чтобы сформировать восстановленный блок.
[0159] Модуль 216 фильтрации может выполнять одну или более операций фильтрации на восстановленных блоках. Например, модуль 216 фильтрации может выполнять операции устранения блочности для уменьшения артефактов блочности вдоль краев CU. Например, модуль 216 фильтрации может быть выполнен с возможностью сравнивать величину изменения выборки, обусловленную фильтрацией устранения блочности, со значением отсечения, и в ответ на величину изменения выборки, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять значение отсечения вместо величины изменения выборки, обусловленной фильтрацией устранения блочности. То есть, модуль 216 фильтрации может быть выполнен с возможностью ограничивать амплитуду величины изменения выборки. Операции модуля 216 фильтрации могут быть пропущены, в некоторых примерах.
[0160] Кодер 200 видео сохраняет восстановленные блоки в DPB 218. Например, в примерах, где операции модуля 216 фильтрации не выполняются, модуль 214 восстановления может сохранять восстановленные блоки в DPB 218. В примерах, где операции модуля 216 фильтрации выполняются, модуль 216 фильтрации может сохранять отфильтрованные восстановленные блоки в DPB 218. Модуль 222 оценки движения и модуль 224 компенсации движения могут извлекать опорную картинку из DPB 218, сформированную из восстановленных (и потенциально отфильтрованных) блоков, для интер-предсказания блоков последующих кодированных картинок. Кроме того, модуль 226 интра-предсказания может использовать восстановленные блоки в DPB 218 текущей картинки для интра-предсказания других блоков в текущей картинке.
[0161] В общем, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы, принятые от других функциональных компонентов кодера 200 видео. Например, модуль 220 энтропийного кодирования может энтропийно кодировать блоки квантованных коэффициентов преобразования из модуля 208 квантования. В качестве другого примера, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы предсказания (например, информацию движения для интер-предсказания или информацию интра-режима для интра-предсказания) из модуля 202 выбора режима. Модуль 220 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования на синтаксических элементах, которые являются другим примером данных видео, чтобы генерировать энтропийно-закодированные данные. Например, модуль 220 энтропийного кодирования может выполнять операцию контекстно-адаптивного кодирования переменной длины (CAVLC), операцию CABAC, операцию кодирования от переменной к переменной (V2V) длине, операцию основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования с разбиением интервалов вероятности (PIPE), операцию экспоненциального кодирования Голомба или другой тип операции энтропийного кодирования данных. В некоторых примерах, модуль 220 энтропийного кодирования может работать в режиме обхода, где синтаксические элементы не являются энтропийно кодируемыми.
[0162] Кодер 200 видео может выводить битовый поток, который включает в себя энтропийно закодированные синтаксические элементы, необходимые для восстановления блоков вырезки или картинки. В частности, модуль 220 энтропийного кодирования может выводить битовый поток.
[0163] Описанные выше операции описаны по отношению к блоку. Такое описание следует понимать как операции для блока кодирования яркости и/или блоков кодирования цветности. Как описано выше, в некоторых примерах, блок кодирования яркости и блоки кодирования цветности являются компонентами яркости и цветности CU. В некоторых примерах, блок кодирования яркости и блоки кодирования цветности являются компонентами яркости и цветности PU.
[0164] В некоторых примерах, операции, выполняемые в отношении блока кодирования яркости, не требуется повторять для блоков кодирования цветности. В качестве одного примера, операции для идентификации вектора движения (MV) и опорной картинки для блока кодирования яркости не требуется повторять для идентификации MV и опорной картинки для блоков цветности. Скорее, MV для блока кодирования яркости может масштабироваться для определения MV для блоков цветности, и опорная картинка может быть той же самой. В качестве другого примера, процесс интра-предсказания может быть одинаковым для блока кодирования яркости и блоков кодирования цветности.
[0165] Фиг. 7 представляет собой блок-схему, иллюстрирующую примерный декодер 300 видео, который может выполнять методики настоящего раскрытия. Фиг. 7 обеспечена в целях пояснения и не ограничивает методики, широко иллюстрируемые и описанные в настоящем раскрытии. Для целей пояснения, настоящее раскрытие описывает декодер 300 видео в соответствии с методиками JEM и HEVC. Однако методики настоящего раскрытия могут выполняться устройствами кодирования видео, которые сконфигурированы в соответствии с другими стандартами кодирования видео.
[0166] В примере на фиг. 7, декодер 300 видео включает в себя память 320 буфера кодированных картинок (CPB), модуль 302 энтропийного декодирования, модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления, модуль 312 фильтрации и буфер 314 декодированных картинок (DPB). Модуль 304 обработки предсказания включает в себя модуль 316 компенсации движения и модуль 318 интра-предсказания. Модуль 304 обработки предсказания может включать в себя дополнительные модули для выполнения предсказания в соответствии с другими режимами предсказания. В качестве примеров, модуль 304 обработки предсказания может включать в себя модуль палитры, модуль внутриблочного копирования (который может образовывать часть модуля 316 компенсации движения), аффинный модуль, модуль линейной модели (LM) или тому подобное. В других примерах, декодер 300 видео может включать в себя больше, меньше или другие функциональные компоненты.
[0167] Память 320 CPB может хранить данные видео, такие как закодированный битовый поток видео, для декодирования компонентами декодера 300 видео. Данные видео, хранящиеся в памяти 320 CPB, могут быть получены, например, из машиночитаемого носителя 110 (фиг. 1). Память 320 CPB может включать в себя CPB, который сохраняет закодированные данные видео (например, синтаксические элементы) из закодированного битового потока видео. Кроме того, память 320 CPB может хранить данные видео, отличные от синтаксических элементов закодированной картинки, такие как временные данные, представляющие выходы из различных модулей декодера 300 видео. DPB 314 обычно хранит декодированные картинки, которые декодер 300 видео может выводить и/или использовать в качестве опорных данных видео при декодировании последующих данных или картинок закодированного битового потока видео. Память 320 CPB и DPB 314 могут быть образованы любым из множества устройств памяти, таких как DRAM, включая SDRAM, MRAM, RRAM или другие типы устройств памяти. Память 320 CPB и DPB 314 могут быть предоставлены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах, память 320 CPB может быть в чипе с другими компонентами декодера 300 видео или вне чипа относительно этих компонентов.
[0168] Дополнительно или альтернативно, в некоторых примерах, декодер 300 видео может извлекать закодированные данные видео из памяти 120 (фиг. 1). То есть, память 120 может хранить данные, как обсуждено выше для памяти 320 CPB. Аналогично, память 120 может хранить инструкции, которые должны исполняться декодером 300 видео, когда некоторая или вся из функциональности декодера 300 видео реализована в программном обеспечении, подлежащем исполнению схемами обработки декодера 300 видео.
[0169] Различные модули, показанные на фиг. 7, проиллюстрированы, чтобы способствовать пониманию операций, выполняемых декодером 300 видео. Модули могут быть реализованы как фиксированные функциональные схемы, программируемые схемы или их объединении. Подобно фиг. 6, фиксированные функциональные схемы относятся к схемам, которые обеспечивают определенную функциональность и заранее настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы для выполнения различных задач и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или микропрограммное обеспечение, которое предписывает программируемым схемам работать таким образом, как определяется инструкциями программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут исполнять программные инструкции (например, принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, обычно неизменны. В некоторых примерах, один или более модулей могут быть отдельными схемными блоками (фиксированными функциональными блоками или программируемыми блоками), а в некоторых примерах, один или более модулей могут быть интегральными схемами.
[0170] Декодер 300 видео может включать в себя ALU, EFU, цифровые схемы, аналоговые схемы и/или программируемые ядра, образованные программируемыми схемами. В примерах, где операции декодера 300 видео выполняются программным обеспечением, исполняемым на программируемых схемах, однокристальная память (в чипе) или память вне чипа может хранить инструкции (например, объектный код) программного обеспечения, которые получает и исполняет декодер 300 видео.
[0171] Модуль 302 энтропийного декодирования может получать закодированные данные видео из CPB и энтропийно декодировать данные видео для воспроизведения синтаксических элементов. Модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления и модуль 312 фильтрации могут генерировать декодированные данные видео на основе синтаксических элементов, извлеченных из битового потока.
[0172] В общем, декодер 300 видео восстанавливает картинку на поблочной основе. Декодер 300 видео может выполнять операцию восстановления на каждом блоке индивидуально (где блок, который восстанавливается, т.е. декодируется, в текущее время, может называться “текущим блоком”).
[0173] Модуль 302 энтропийного декодирования может энтропийно декодировать синтаксические элементы, определяющие квантованные коэффициенты преобразования блока квантованных коэффициентов преобразования, а также информацию преобразования, такую как указание(я) параметра квантования (QP) и/или режима преобразования. Модуль 306 обратного квантования может использовать QP, ассоциированный с блоком квантованных коэффициентов преобразования, для определения степени квантования и, аналогично, степени обратного квантования для применения модулем 306 обратного квантования. Модуль 306 обратного квантования может, например, выполнять побитовую операцию сдвига влево для обратного квантования квантованных коэффициентов преобразования. При этом модуль 306 обратного квантования может формировать блок коэффициентов преобразования, включающий коэффициенты преобразования.
[0174] После того как модуль 306 обратного квантования сформировал блок коэффициентов преобразования, модуль 308 обработки обратного преобразования может применить одно или более обратных преобразований к блоку коэффициентов преобразования для генерации остаточного блока, ассоциированного с текущим блоком. Например, блок обработки 308 обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное преобразование вращения, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов преобразования.
[0175] Кроме того, модуль 304 обработки предсказания генерирует блок предсказания в соответствии с синтаксическими элементами информации предсказания, которые были энтропийно декодированы модулем 302 энтропийного декодирования. Например, если синтаксические элементы информации предсказания указывают, что текущий блок является интер-предсказанным, модуль 316 компенсации движения может генерировать блок предсказания. В этом случае, синтаксические элементы информации предсказания могут указывать опорную картинку в DPB 314, из которой следует извлекать опорный блок, а также вектор движения, идентифицирующий местоположение опорного блока в опорной картинке относительно местоположения текущего блока в текущей картинке. Модуль 316 компенсации движения может, в принципе, выполнять процесс интер-предсказания способом, который по существу аналогичен тому, который описан в отношении модуля 224 компенсации движения (фиг. 6).
[0176] В качестве другого примера, если синтаксические элементы информации преобразования указывают, что текущий блок является интра-предсказанным, модуль 318 интра-предсказания может генерировать блок предсказания в соответствии с режимом интра-предсказания, указанным синтаксическими элементами информации преобразования. Вновь, модуль 318 интра-предсказания может, в принципе, выполнять процесс интра-предсказания способом, по существу сходным с тем, который описан в отношении модуля 226 интра-предсказания (фиг. 6). Модуль 318 интра-предсказания может извлекать данные соседних выборок для текущего блока из DPB 314.
[0177] Модуль 310 восстановления может восстанавливать текущий блок с использованием блока преобразования и остаточного блока. Например, модуль 310 восстановления может добавлять выборки остаточного блока к соответствующим выборкам блока предсказания, чтобы восстановить текущий блок.
[0178] Модуль 312 фильтрации может выполнять одну или более операций фильтрации на восстановленных блоках. Например, модуль 312 фильтрации может выполнять операции устранения блочности, чтобы снизить артефакты блочности вдоль краев восстановленных блоков. Например, модуль 312 фильтрации может быть выполнен с возможностью сравнивать величину изменения для выборки, обусловленную фильтрацией устранения блочности, со значением отсечения, и в ответ на величину изменения для выборки, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять значение посредством значения отсечения, вместо величины изменения для выборки, обусловленной фильтрацией устранения блочности. То есть, модуль 312 фильтрации может быть выполнен с возможностью ограничивать амплитуду величины изменения для выборки. Операции модуля 312 фильтрации не обязательно должны выполняться во всех примерах.
[0179] Декодер 300 видео может сохранять восстановленные блоки в DPB 314. Например, в случаях, где операции модуля 312 фильтрации не требуются, модуль 310 восстановления может сохранять восстановленные блоки в DPB 314. В примерах, где операции модуля 312 фильтрации необходимы, модуль 312 фильтрации может сохранять отфильтрованные восстановленные блоки в DPB 314. Как обсуждено выше, DPB 314 может предоставлять опорную информацию, такую как выборки текущей картинки для интра-предсказания и ранее декодированные картинки для последующей компенсации движения, на модуль 304 обработки предсказания. Более того, декодер 300 видео может выводить декодированные картинки (например, декодированное видео) из DPB 314 для последующего представления на устройстве отображения, таком как устройство 118 отображения на фиг. 1.
[0180] Фиг. 8 показывает примерную реализацию модуля 312 фильтрации согласно фиг. 7. Модуль 216 фильтрации на фиг. 6 может быть реализован тем же самым или подобным образом. Модули 216 и 312 фильтрации могут выполнять методики настоящего раскрытия, возможно во взаимосвязи с другими компонентами кодера 200 видео или декодера 300 видео. В примере на фиг. 8, модуль 312 фильтрации включает в себя фильтр 342 устранения блочности, фильтр 344 SAO и фильтр 346 ALF/GALF. Фильтр 344 SAO может, например, быть выполнен с возможностью определять значения смещения для выборок блока. ALF/GALF 346 может аналогично фильтровать блоки данных видео с использованием адаптивного контурного фильтра и/или геометрической адаптивной контурной фильтрации.
[0181] Модуль 312 фильтрации может включать в себя меньше фильтров и/или может включать в себя дополнительные фильтры. Дополнительно, конкретные фильтры, показанные на фиг. 8, могут быть реализованы в другом порядке. Другие контурные фильтры (либо в контуре кодирования, либо после контура кодирования) могут также использоваться, чтобы сглаживать пиксельные переходы или иным образом улучшать качество видео. Отфильтрованные восстановленные блоки видео, выведенные модулем 312 фильтрации, могут быть сохранены в DPB 314, который хранит опорные картинки, используемые для последующей компенсации движения. DPB 314 может быть частью или отдельным от дополнительной памяти, которая хранит декодированное видео для последующего представления на устройстве отображения, таком как устройство 118 отображения на фиг. 1.
[0182] Декодер 300 видео, например, фильтр устранения блочности 342 модуля 312 фильтрации, может быть выполнен с возможностью получать первый восстановленный блок данных видео и применять фильтрацию устранения блочности к первому восстановленному блоку в соответствии с любой методикой или объединения методик, описанных в настоящем раскрытии. Чтобы получить первый восстановленный блок данных видео, декодер 300 видео может быть выполнен с возможностью определять блок предсказания данных видео и суммировать остаточный блок данных видео с блоком предсказания данных видео. Для применения фильтрации устранения блочности к первому восстановленному блоку, декодер 300 видео может применять фильтрацию устранения блочности к выборкам, расположенным на границе первого восстановленного блока данных видео и второго восстановленного блока данных видео. Чтобы применить фильтрацию устранения блочности к первому восстановленному блоку, декодер 300 видео определяет интенсивность фильтра для фильтрации устранения блочности.
[0183] Чтобы применять фильтрацию устранения блочности к первому восстановленному блоку, декодер 300 видео может выбрать фильтр для фильтрации устранения блочности. Чтобы выбрать фильтр для фильтрации устранения блочности, декодер 300 видео может выбрать фильтр на основе длины блока, ортогонального границе, подлежащей фильтрации. Чтобы выбрать фильтр для фильтрации устранения блочности, декодер 300 видео выбирает фильтр на основе длины блока, выровненного с границей, подлежащей фильтрации. Чтобы выбрать фильтр для фильтрации устранения блочности, декодер 300 видео может выбрать фильтр из множества фильтров устранения блочности с различными длинами. Чтобы выбрать фильтр для фильтрации устранения блочности, декодер 300 видео выбирает фильтр из множества фильтров устранения блочности с различными поддержками фильтров.
[0184] Декодер 300 видео может быть выполнен с возможностью определять доверительный коэффициент и определять величину изменения выборки на основе доверительного коэффициента. Декодер 300 видео может применять фильтрацию устранения блочности к первому восстановленному блоку путем изменения выборки первого восстановленного блока на величину изменения выборки. Декодер 300 видео может определять величину изменения выборки на основе доверительного коэффициента путем ограничения величины изменения выборки до диапазона значений. Доверительный коэффициент может, например, представлять собой интервал.
[0185] Декодер 300 видео может быть выполнен с возможностью определять второй блок предсказания данных видео; добавлять второй остаточный блок данных видео ко второму блоку предсказания данных видео, чтобы определить второй восстановленный блок данных видео, который является смежным с первым восстановленным блоком; определять первый параметр квантования для остаточного блока; определять второй параметр квантования для второго остаточного блока; применять фильтрацию устранения блочности к первому восстановленному блоку на основе первого параметра квантования; и применять фильтрацию устранения блочности ко второму восстановленному блоку на основе второго параметра квантования.
[0186] Чтобы применять фильтрацию устранения блочности к первому восстановленному блоку на основе первого параметра квантования, декодер 300 видео может определять величину изменения выборки для выборки первого восстановленного блока на основе первого параметра квантования, и применять фильтрацию устранения блочности ко второму восстановленному блоку на основе второго параметра квантования путем определения величины изменения выборки для выборки второго восстановленного блока на основе второго параметра квантования. Чтобы определить величину изменения выборки для выборки первого восстановленного блока на основе первого параметра квантования, декодер 300 видео может ограничить величину изменения выборки для выборки первого восстановленного блока до первого диапазона значений и определить величину изменения выборки для выборки второго восстановленного блока на основе второго параметра квантования путем ограничения величины изменения выборки для выборки второго восстановленного блока до второго диапазона значений, который отличается от первого диапазона значений.
[0187] Чтобы применять фильтрацию устранения блочности к первому восстановленному блоку, декодер 300 видео может выбрать параметры фильтра устранения блочности для фильтрации устранения блочности. Параметры фильтрации устранения блочности могут, например, включать в себя одно или более из типа фильтра, длины фильтра, параметров ограничения или пространственного шага пропуска выборки. Чтобы выбрать параметры фильтра устранения блочности для фильтрации устранения блочности, декодер 300 видео может выбрать параметры фильтра устранения блочности на основе одного или более свойств преобразования или коэффициентов преобразования для остаточного блока.
[0188] Чтобы применять фильтрацию устранения блочности к первому восстановленному блоку, декодер 300 видео может определять значения для недоступных выборок и применять фильтрация устранения блочности с использованием определенных значений. Чтобы определить значения для недоступных выборок, декодер 300 видео может выполнять процесс экстраполяции и/или процесс заполнения. Декодер 300 видео может определять недоступные выборки как недоступные на основе блочной характеристики первого восстановленного блока.
[0189] Декодер 300 видео, например, фильтр 342 устранения блочности модуля 312 фильтрации, может быть выполнен с возможностью получать первый восстановленный блок данных видео, причем первый восстановленный блок включает в себя первую выборку с первым значением; применять фильтрацию устранения блочности к первому восстановленному блоку, чтобы создать отфильтрованный блок с устранением блочности; определять первое значение отсечения для первой выборки на основе местоположения первой выборки относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; сравнивать первое значение отсечения с величиной изменения первой выборки, обусловленной фильтрацией устранения блочности; в ответ на величину изменения первой выборки, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первой выборки; и выводить отфильтрованный с устранением блочности блок данных видео, причем в отфильтрованном с устранением блочности блоке первая выборка имеет первое отфильтрованное значение.
[0190] Первое отфильтрованное значение может быть равно первому значению плюс первое значение отсечения или может быть равно первому значению минус первое значение отсечения. Декодер 300 видео может определять первое значение отсечения для первой выборки дополнительно на основе режима фильтрации устранения блочности для первого восстановленного блока.
[0191] Первый восстановленный блок может включать в себя вторую выборку со вторым значением, и декодер 300 видео может определять второе значение отсечения для второй выборки на основе местоположения второй выборки относительно границы первого восстановленного блока и на основе размера первого восстановленного блока и в ответ на величину изменения второй выборки, обусловленную фильтрацией устранения блочности, меньшую, чем второе значение отсечения, изменять второе значение величиной изменения второй выборки, чтобы определять второе отфильтрованное значение для второй выборки. В таком примере, в отфильтрованном с устранением блочности блоке вторая выборка имеет второе отфильтрованное значение.
[0192] Если расстояние между первой выборкой и границей первого восстановленного блока равно расстоянию между второй выборкой и границей первого восстановленного блока, то декодер 300 видео может установить первое значение отсечения равным второму значению отсечения для второй выборки. Если расстояние между первой выборкой и границей первого восстановленного блока отличается от расстояния между второй выборкой и границей первого восстановленного блока, то декодер 300 видео может установить первое значение отсечения отличающимся от второго значения отсечения.
[0193] На основе размера первого восстановленного блока, декодер 300 видео может определить, что фильтр устранения блочности применяется только к выборкам, которые на шесть или менее выборок уделены от границы первого восстановленного блока. На основе размера первого восстановленного блока, декодер 300 видео может определить, что фильтр устранения блочности применяется к выборкам, которые на две или менее выборок удалены от границы первого восстановленного блока.
[0194]Первое значение отсечения может уменьшаться с уменьшением расстояния от границы первого восстановленного блока. Например, в ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка является смежной с границей первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 6. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на одну выборку удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 5. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на две выборки удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 4.
[0195] В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на три выборки удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 3. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на четыре выборки удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 2. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то что первая выборка на пять выборок удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 1.
[0196] В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 2 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка является смежной с границей первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 6. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 2 строк или столбцов границы первого восстановленного блока, и ответ на то, что первая выборка на одну выборку удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 4. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 2 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на две выборки удалена от границы первого восстановленного блока, декодер 300 видео может определить что первое значение отсечения равно 2.
[0197] Декодер 300 видео может также быть выполнен с возможностью получать второй восстановленный блок данных видео, причем второй восстановленный блок включает в себя вторую выборку со вторым значением, причем второй восстановленный блок совместно использует границу с первым восстановленным блоком, и причем первый восстановленный блок и второй восстановленный блок имеют разные размеры; применять фильтрацию устранения блочности ко второму восстановленному блоку, чтобы определять второй отфильтрованный с устранением блочности блок; определять второе значение отсечения для второй выборки на основе местоположения второй выборки относительно границы второго восстановленного блока и на основе размера второго восстановленного блока; в ответ на величину изменения первой выборки, обусловленную фильтрацией устранения блочности, большую, чем второе значение отсечения, изменять первое значение посредством второго значения отсечения для определения второго отфильтрованного значения для второй выборки; и выводить второй отфильтрованный с устранением блочности блок данных видео, причем, во втором отфильтрованном с устранением блочности блоке вторая выборка имеет второе отфильтрованное значение. Декодер 300 видео может применять фильтрацию устранения блочности к первому восстановленному блоку для определения первого отфильтрованного с устранением блочности блока, которая содержит фильтрацию выборок в первом восстановленном блоке с помощью первого фильтра первой длины, и применять фильтрацию устранения блочности ко второму восстановленному блоку для определения второго отфильтрованного с устранением блочности блока, которая содержит фильтрацию выборок во втором восстановленном блоке с помощью второго фильтра второй длины, которая отличается от первой длины.
[0198] На фиг. 9 представлена блок-схема последовательности операций, иллюстрирующая примерный способ для кодирования текущего блока. Текущий блок может включать в себя текущую CU. Хотя описание приведено относительно кодера 200 видео (фиг. 1 и 6), следует понимать, что другие устройства могут быть выполнены с возможностью выполнения способа, аналогичного показанному на фиг. 9.
[0199] В этом примере, кодер 200 видео первоначально предсказывает текущий блок (350). Например, кодер 200 видео может сформировать блок предсказания для текущего блока. Кодер 200 видео может затем вычислить остаточный блок для текущего блока (352). Чтобы вычислить остаточный блок, кодер 200 видео может вычислить разность между исходным, некодированным блоком и блоком предсказания для текущего блока. Кодер 200 видео может затем преобразовывать и квантовать коэффициенты остаточного блока (354). Затем кодер 200 видео может сканировать квантованные коэффициенты преобразования остаточного блока (356). Во время сканирования или после сканирования, кодер 200 видео может энтропийно кодировать коэффициенты (358). Кодер 200 видео может кодировать коэффициенты с использованием CAVLC или CABAC. Кодер 200 видео может затем вывести энтропийно кодированные данные для коэффициентов блока (360).
[0200] На фиг. 10 представлена блок-схема последовательности операций, иллюстрирующая примерный способ для декодирования текущего блока. Текущий блок может содержать текущую CU. Хотя описание приведено относительно декодера 300 видео (фиг. 1 и 7), следует понимать, что другие устройства могут быть выполнены с возможностью выполнения способа, аналогичного показанному на фиг. 10.
[0201] Декодер 300 видео может принять энтропийно кодированные данные для текущего блока, такие как энтропийно кодированная информация предсказания и энтропийно кодированные данные для коэффициентов остаточного блока, соответствующего текущему блоку (370). Декодер 300 видео может энтропийно декодировать энтропийно кодированные данные, чтобы определить информацию предсказания для текущего блока и восстановить коэффициенты остаточного блока (372). Декодер 300 видео может предсказывать текущий блок (374), например, с использованием режима интра- или интер-предсказания, как указывается информацией предсказания для текущего блока, чтобы вычислить блок предсказания для текущего блока. Декодер 300 видео может затем обратно сканировать восстановленные коэффициенты (376), чтобы создать блок квантованных коэффициентов преобразования. Декодер 300 видео может затем обратно квантовать и обратно преобразовать коэффициенты, чтобы сформировать остаточный блок (378). Декодер 300 видео может, в конечном счете, декодировать текущий блок путем объединения блока предсказания и остаточного блока (380). После объединения блока предсказания и остаточного блока для генерации восстановленного блока, декодер 300 видео может применить один или более фильтров (например, устранения блочности, SAO и/или ALF/GALF) к нефильтрованному восстановленному блоку для генерации отфильтрованного восстановленного блока (382).
[0202] На фиг. 11 показана блок-схема последовательности операций, иллюстрирующая примерную методику декодирования видео, описанный в настоящем раскрытии. Методики согласно фиг. 11 будут описаны со ссылкой на типовой декодер видео, такой как, но без ограничения, декодер 300 видео. В некоторых случаях, методики согласно фиг. 11 могут выполняться кодером видео, таким как кодер 200 видео, как часть процесса кодирования видео, и в этом случае типовой декодер видео соответствует контуру декодирования (например, модулю 210 обратного квантования, модулю 212 обработки обратного преобразования, модулю 214 восстановления и модулю 216 фильтрации) кодера 200 видео.
[0203] В примере согласно фиг. 11, декодер видео получает первый восстановленный блок данных видео, который включает в себя первую выборку с первым значением (400). Декодер видео применяет фильтрацию устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока (402). Декодер видео определяет первое значение отсечения для первой выборки на основе местоположения первой выборки относительно границы первого восстановленного блока и на основе размера первого восстановленного блока (404). Декодер 300 видео сравнивает первое значение отсечения с величиной изменения первой выборки, обусловленной фильтрацией устранения блочности (406). В ответ на величину изменения первой выборки, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения (408, ДА), декодер видео изменяет первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первой выборки (410). В ответ на величину изменения первой выборки, обусловленную фильтрацией устранения блочности, не большую, чем первое значение отсечения (408, НЕТ), декодер видео изменяет первое значение величиной изменения первой выборки, обусловленной фильтрацией устранения блочности (412). Декодер видео может, например, сохранять первое отфильтрованное значение равным отфильтрованному значению, определенному фильтрацией устранения блочности, а не устанавливать первое отфильтрованное значение равным первому значению плюс или минус значение отсечения.
[0204] Следует иметь в виду, что, в зависимости от примера, некоторые действия или события любого из описанных здесь методик могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные действия или события необходимы для практической реализации методик). Кроме того, в некоторых примерах, действия или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерываний или с помощью множества процессоров, а не последовательно.
[0205] В одном или более примерах, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любом их объединении. При реализации в программном обеспечении, функции могут сохраняться или передаваться как одна или более инструкций или код на машиночитаемом носителе и исполняться аппаратным модулем обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители, которые соответствуют осязаемому носителю, такому как носитель хранения данных, или коммуникационной среде, включающей в себя любой носитель, который облегчает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, машиночитаемые носители обычно могут соответствовать (1) осязаемым машиночитаемым носителям хранения данных, которые являются долговременными, или (2) коммуникационному носителю (среде), такому как сигнал или несущая волна. Носителями хранения данных могут быть любые доступные носители, к которым может получить доступ один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методик, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
[0206] В качестве примера, а не ограничения, такие машиночитаемые носители хранения данных могут содержать RAM, ROM, EEPROM, CD-ROM или другие устройства хранения на оптических дисках, устройства хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память или любой другой носитель, который может быть использован для хранения желательного программного кода в форме инструкций или структур данных и к которому может получить доступ компьютер. Кроме того, любое соединение надлежащим образом определяется как машиночитаемый носитель. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, волоконно-оптического кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасное излучение, радио и микроволны, то коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасное излучение, радио и микроволны, включаются в определение носителя. Однако следует понимать, что машиночитаемые носители хранения данных и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, а вместо этого направлены на долговременные, осязаемые носители хранения. Магнитный диск (disk) и оптический диск (disc), как используется в настоящем документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и Blu-ray диск, где магнитные диски обычно воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптическим способом с помощью лазеров. Объединения вышеперечисленного также должны быть включены в объем машиночитаемых носителей.
[0207] Инструкции могут исполняться посредством одного или более процессоров, таких как один или более DSP, микропроцессоров общего назначения, ASIC, FPGA или других эквивалентных интегральных схем или дискретных логических схем. Соответственно, термин “процессор”, как используется здесь, может относиться к любой из вышеперечисленных структур или любой другой структуре, подходящей для реализации методик, описанных здесь. Кроме того, в некоторых аспектах, функциональность, описанная здесь, может быть обеспечена в выделенных аппаратных средствах и/или программных модулях, сконфигурированных для кодирования и декодирования или встроенных в объединенный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.
[0208] Методики настоящего раскрытия могут быть реализованы в широком разнообразии устройств или приборов, включая беспроводный телефон, интегральную схему (IC) или набор интегральных схем (например, чипсет). Различные компоненты, модули или блоки описаны в настоящем раскрытии с акцентом на функциональных аспектах устройств, сконфигурированных для выполнения раскрытых методик, но не обязательно требующих реализации различными аппаратными модулями. Скорее, как описано выше, различные модули могут быть объединены в аппаратный модуль кодека или обеспечены набором взаимодействующих аппаратных модулей, включая один или более процессоров, как описано выше, во взаимосвязи с подходящим программным обеспечением и/или микропрограммным обеспечением.
[0209] Были описаны различные примеры. Эти и другие примеры входят в объем следующей формулы изобретения.