ВИДЕОКОДИРОВАНИЕ КОЭФФИЦИЕНТОВ ФИЛЬТРА НА ОСНОВЕ ГОРИЗОНТАЛЬНОЙ И ВЕРТИКАЛЬНОЙ СИММЕТРИИ
VIDEO CODING OF FILTER COEFFICIENTS BASED ON HORIZONTAL AND VERTICAL SYMMETRY

Данная заявка притязает на приоритет предварительной патентной заявки США №61/019831, поданной 8 января 2008 г., которая в полном объеме включена сюда в порядке ссылки.
Область техники
Это изобретение относится к поблочному цифровому видеокодированию, используемому для сжатия видеоданных, и, в частности, к техникам кодирования коэффициентов фильтра, связанных с фильтрацией видеоблоков.
Уровень техники
Возможности цифрового видео можно внедрить в широкий круг устройств, включая цифровые телевизоры, системы прямого цифрового вещания, устройства беспроводной связи, например радиотелефоны, системы беспроводного вещания, карманные персональные компьютеры (КПК), переносные или настольные компьютеры, цифровые камеры, устройства цифровой записи, устройства для видеоигр, телевизионные игровые приставки и т.п. В цифровых видеоустройствах реализованы методы сжатия видеосигнала, например, MPEG-2, MPEG-4 или ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), для более эффективного осуществления передачи и приема цифрового видеосигнала. Методы сжатия видеосигнала предусматривают пространственное и временное прогнозирование для уменьшения или удаления избыточности, свойственной видеопоследовательностям.
Методы поблочного сжатия видеосигнала, в общем случае, предусматривают пространственное прогнозирование и/или временное прогнозирование. Интракодирование опирается на пространственное прогнозирование для уменьшения или удаления пространственной избыточности между видеоблоками в данном кодированном фрагменте, который может содержать видеокадр, срез видеокадра и пр. Интеркодирование, напротив, опирается на временное прогнозирование для уменьшения или удаления временной избыточности между видеоблоками последовательных кодированных фрагментов видеопоследовательности. Для интракодирования, видеокодер осуществляет пространственное прогнозирование для сжатия данных на основе других данных в том же кодированном фрагменте. Для интеркодирования, видеокодер осуществляет оценку движения и компенсацию движения для отслеживания движения соответствующих видеоблоков двух или более соседних кодированных фрагментов.
Кодированный видеоблок можно представить посредством информации прогнозирования, которую можно использовать для создания или идентификации прогнозируемого блока, и остаточного блока данных, указывающего различия между кодируемым блоком и прогнозируемым блоком. В случае интеркодирования, один или несколько векторов движения используются для идентификации прогнозируемого блока данных, а в случае интракодирования режим прогнозирования можно использовать для генерации прогнозируемого блока. Интракодирование и интеркодирование могут задавать несколько разных режимов прогнозирования, которые могут задавать разные размеры блоков и/или техники прогнозирования, используемые при кодировании. Дополнительные типы синтаксических элементов также можно включать как часть кодированных видеоданных для контроля или задания техник или параметров кодирования, используемых в процессе кодирования.
После поблочного кодирования с прогнозированием, видеокодер может применять процессы преобразования, квантования и энтропийного кодирования для дополнительного уменьшения битовой скорости, связанной с передачей остаточного блока. Техники преобразования могут содержать дискретное косинусное преобразование или принципиально сходные процессы, например вейвлетные преобразования, целочисленные преобразования, или другие типы преобразований. В процессе дискретного косинусного преобразования (ДКП), в качестве примера, процесс преобразования преобразует множество пиксельных значений в коэффициенты преобразования, которые могут представлять энергию пиксельных значений в частотном измерении. Квантование применяется к коэффициентам преобразования и, в общем случае, предусматривает процесс, который ограничивает количество битов, связанных с любым данным коэффициентом преобразования. Энтропийное кодирование содержит один или несколько процессов, которые совместно сжимают последовательность квантованных коэффициентов преобразования.
Фильтрацию видеоблоков можно применять как часть циклов кодирования и декодирования или как часть процесса постфильтрации на реконструированных видеоблоках. Фильтрация обычно используется, например, для уменьшения блочности или других артефактов, присущих поблочному видеокодированию. Коэффициенты фильтра (иногда именуемые отводами фильтра) можно задавать или выбирать для достижения желаемых уровней фильтрации видеоблоков, которые позволяют уменьшать блочность и/или повышать качество видео другими путями. Множество коэффициентов фильтра, например, может задавать то, как применяется фильтрация вдоль краев видеоблоков или в других местах в видеоблоках. Разные коэффициенты фильтра могут обеспечивать разные уровни фильтрации по отношению к разным пикселям видеоблоков. Например, фильтрация может сглаживать различия в интенсивности соседних пиксельных значений, что помогает устранять нежелательные артефакты.
Сущность изобретения
В общем случае, это изобретение предусматривает методики, которые позволяют уменьшать объем данных, необходимый для кодирования и переноса информации фильтра от устройства кодирования на устройство декодирования. Для каждого кодированного фрагмента (например, кадра, среза, группы изображений или другого кодированного фрагмента), кодер может задавать или выбирать коэффициенты фильтра для применения к видеоблокам этого кодированного фрагмента. Кодер может применять коэффициенты фильтра для фильтрации видеоблоков реконструированных видеофрагментов, используемых для предиктивного кодирования (кодирования с предсказанием), и декодер может аналогично применять их для повышения качества выходного видео. Однако в этом случае может потребоваться передавать информацию с кодера на декодер, чтобы декодер применял правильные коэффициенты фильтра в процессе фильтрации. В частности, коэффициенты фильтра, применяемые декодером, должны совпадать с коэффициентами фильтра, применяемыми кодером.
Настоящее изобретение распознает и эксплуатирует тот факт, что некоторые из коэффициентов фильтра, заданных на кодере, могут обладать горизонтальной и/или вертикальной симметрией относительно других коэффициентов фильтра. Соответственно, для уменьшения объема данных, необходимого для переноса таких коэффициентов фильтра от устройства кодирования на устройство декодирования, настоящее изобретение предусматривает техники, в которых первое множество коэффициентов фильтра используются для предиктивного кодирования второго множества коэффициентов фильтра, тем самым эксплуатируя горизонтальную и/или вертикальную симметрию, которая может существовать между коэффициентами фильтра. Вместо того чтобы передавать все коэффициенты фильтра на устройство декодирования, устройство кодирования может передавать первое множество коэффициентов фильтра и разностные значения, связанные со вторым множеством коэффициентов фильтра. Используя эту информацию, декодер получает возможность реконструировать все коэффициенты фильтра. Таким образом, можно добиться усовершенствований в сжатии данных по сравнению с техниками, которые передают все коэффициенты фильтра с кодера на декодер. Также описаны дополнительные примеры, в которых декодер может предполагать, что кодер применил коэффициенты фильтра, имеющие совершенную симметрию, в связи с чем разностные значения, связанные со вторым множеством коэффициентов фильтра, можно предположить равными нулю. В этом случае, декодер может применять перемены знака к первому множеству коэффициентов фильтра, чтобы генерировать второе множество коэффициентов фильтра.
В одном примере, настоящее изобретение предусматривает способ кодирования видеоданных. Способ содержит этапы, на которых кодируют фрагмент видеоданных, причем фрагмент включает в себя совокупность видеоблоков. Способ также включает в себя этапы, на которых выбирают коэффициенты фильтра для фильтрации видеоблоков фрагмента видеоданных, и генерируют разностные значения, связанные со вторым множеством коэффициентов фильтра, на основе первого множества коэффициентов фильтра.
В другом примере, настоящее изобретение предусматривает способ декодирования видеоданных. Способ содержит этапы, на которых принимают кодированный битовый поток, причем кодированный битовый поток содержит кодированный фрагмент видеоданных, включающий в себя совокупность видеоблоков, и информацию фильтра, содержащую первое множество коэффициентов фильтра и разностные значения, связанные со вторым множеством коэффициентов фильтра. Способ также включает в себя этапы, на которых декодируют совокупность видеоблоков, генерируют второе множество коэффициентов фильтра на основе первого множества коэффициентов фильтра и разностных значений, и фильтруют декодированную совокупность видеоблоков на основе первого и второго множеств коэффициентов фильтра.
В другом примере, настоящее изобретение предусматривает устройство, которое кодирует видеоданные. Устройство содержит модуль предиктивного кодирования, который кодирует фрагмент видеоданных, причем фрагмент видеоданных включает в себя совокупность видеоблоков. Устройство также содержит модуль фильтрации, который выбирает коэффициенты фильтра для фильтрации видеоблоков фрагмента видеоданных, и генерирует разностные значения, связанные со вторым множеством коэффициентов фильтра, на основе первого множества коэффициентов фильтра.
В другом примере, настоящее изобретение предусматривает устройство, которое декодирует видеоданные. Устройство содержит модуль, который принимает кодированный битовый поток, причем кодированный битовый поток содержит кодированный фрагмент видеоданных, включающий в себя совокупность видеоблоков, и информацию фильтра, содержащую первое множество коэффициентов фильтра и разностные значения, связанные со вторым множеством коэффициентов фильтра. Устройство также содержит модуль прогнозирования, который декодирует совокупность видеоблоков, и модуль фильтрации, который генерирует второе множество коэффициентов фильтра на основе первого множества коэффициентов фильтра и разностных значений, и фильтрует декодированную совокупность видеоблоков на основе первого и второго множеств коэффициентов фильтра.
В другом примере, настоящее изобретение предусматривает устройство, которое кодирует видеоданные, устройство содержит средство для кодирования фрагмента видеоданных, причем фрагмент включает в себя совокупность видеоблоков, средство для выбора коэффициентов фильтра для фильтрации видеоблоков фрагмента видеоданных и средство для генерации разностных значений, связанных со вторым множеством коэффициентов фильтра, на основе первого множества коэффициентов фильтра.
В другом примере, настоящее изобретение предусматривает устройство, которое декодирует видеоданные, устройство содержит средство для приема кодированного битового потока, причем кодированный битовый поток содержит кодированный фрагмент видеоданных, включающий в себя совокупность видеоблоков, и информацию фильтра, содержащую первое множество коэффициентов фильтра и разностные значения, связанные со вторым множеством коэффициентов фильтра, средство для декодирования совокупности видеоблоков, средство для генерации второго множества коэффициентов фильтра на основе первого множества коэффициентов фильтра и разностных значений, и средство для фильтрации декодированной совокупности видеоблоков на основе первого и второго множеств коэффициентов фильтра.
В другом примере, настоящее изобретение предусматривает устройство, содержащее модуль предиктивного кодирования, который кодирует фрагмент видеоданных, причем фрагмент видеоданных включает в себя совокупность видеоблоков, модуль фильтрации, который выбирает коэффициенты фильтра для фильтрации видеоблоков фрагмента видеоданных, и генерирует разностные значения, связанные со вторым множеством коэффициентов фильтра, на основе первого множества коэффициентов фильтра, и беспроводной передатчик, который передает кодированный битовый поток, который включает в себя первое множество коэффициентов фильтра и разностные значения, связанные со вторым множеством коэффициентов фильтра.
В другом примере, настоящее изобретение предусматривает устройство, содержащее беспроводной приемник, который принимает кодированный битовый поток, содержащий кодированный фрагмент видеоданных, включающий в себя совокупность видеоблоков, и информацию фильтра, содержащую первое множество коэффициентов фильтра и разностные значения, связанные со вторым множеством коэффициентов фильтра, модуль энтропийного кодирования, который принимает кодированный битовый поток от беспроводного приемника и декодирует битовый поток для генерации совокупности видеоблоков и информации фильтра, модуль прогнозирования, который декодирует совокупность видеоблоков, и модуль фильтрации, который генерирует второе множество коэффициентов фильтра на основе первого множества коэффициентов фильтра и разностных значений, и фильтруют декодированную совокупность видеоблоков на основе первого и второго множеств коэффициентов фильтра.
Техники, описанные в настоящем изобретении, можно реализовать в оборудовании, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. В случае аппаратной реализации, устройство можно реализовать в виде интегральной схемы, процессора, дискретной логики или любой их комбинации. В случае программной реализации, программное обеспечение может выполняться на одном или нескольких процессорах, например микропроцессоре, специализированной интегральной схеме (ASIC), вентильной матрице, программируемой пользователем (FPGA), или цифровом сигнальном процессоре (DSP). Программное обеспечение, выполняющее техники, может первоначально храниться на компьютерно-считываемом носителе и загружаться и выполняться на процессоре.
Соответственно, настоящее изобретение также предусматривает компьютерно-считываемый носитель, содержащий инструкции, которые, при выполнении в устройстве видеокодирования, предписывают устройству кодировать видеоданные, причем инструкции предписывают устройству кодировать фрагмент видеоданных, причем фрагмент включает в себя совокупность видеоблоков, выбирать коэффициенты фильтра для фильтрации видеоблоков фрагмента видеоданных, и генерировать разностные значения, связанные со вторым множеством коэффициентов фильтра на основе первого множества коэффициентов фильтра.
Кроме того, настоящее изобретение также предусматривает компьютерно-считываемый носитель, содержащий инструкции, которые, при выполнении в устройстве видеокодирования, предписывают устройству декодировать видеоданные, причем инструкции предписывают устройству принимать кодированный битовый поток, причем кодированный битовый поток содержит кодированный фрагмент видеоданных, включающий в себя совокупность видеоблоков, и информацию фильтра, содержащую первое множество коэффициентов фильтра и разностные значения, связанные со вторым множеством коэффициентов фильтра, декодировать совокупность видеоблоков, генерировать второе множество коэффициентов фильтра на основе первого множества коэффициентов фильтра и разностных значений, и фильтровать декодированную совокупность видеоблоков на основе первого и второго множеств коэффициентов фильтра.
В еще одном примере, настоящее изобретение предусматривает способ декодирования видеоданных, способ содержит этапы, на которых принимают кодированный битовый поток, причем кодированный битовый поток содержит кодированный фрагмент видеоданных, включающий в себя совокупность видеоблоков, и информацию фильтра, содержащую первое множество коэффициентов фильтра, декодируют совокупность видеоблоков, генерируют второе множество коэффициентов фильтра на основе первого множества коэффициентов фильтра, и фильтруют декодированную совокупность видеоблоков на основе первого и второго множеств коэффициентов фильтра.
В другом примере, настоящее изобретение предусматривает устройство, которое декодирует видеоданные. В этом случае, устройство содержит модуль, который принимает кодированный битовый поток, причем кодированный битовый поток содержит кодированный фрагмент видеоданных, включающий в себя совокупность видеоблоков, и информацию фильтра, содержащую первое множество коэффициентов фильтра, модуль предиктивного кодирования, который декодирует совокупность видеоблоков, и модуль фильтрации, который генерирует второе множество коэффициентов фильтра на основе первого множества коэффициентов фильтра, и фильтрует декодированную совокупность видеоблоков на основе первого и второго множеств коэффициентов фильтра.
В другом примере, настоящее изобретение предусматривает устройство, содержащее средство для приема кодированного битового потока, причем кодированный битовый поток содержит кодированный фрагмент видеоданных, включающий в себя совокупность видеоблоков, и информацию фильтра, содержащую первое множество коэффициентов фильтра, средство для декодирования совокупности видеоблоков, средство для генерации второго множества коэффициентов фильтра на основе первого множества коэффициентов фильтра, и средство для фильтрации декодированной совокупности видеоблоков на основе первого и второго множеств коэффициентов фильтра.
В другом примере, настоящее изобретение предусматривает компьютерно-считываемый носитель, содержащий инструкции, которые, при выполнении, предписывают устройству декодирования принимать кодированный битовый поток, причем кодированный битовый поток содержит кодированный фрагмент видеоданных, включающий в себя совокупность видеоблоков, и информацию фильтра, содержащую первое множество коэффициентов фильтра, декодировать совокупность видеоблоков, генерировать второе множество коэффициентов фильтра на основе первого множества коэффициентов фильтра и фильтровать декодированную совокупность видеоблоков на основе первого и второго множеств коэффициентов фильтра.
Детали одного или нескольких аспектов изобретения приведены в прилагаемых чертежах и нижеследующем описании. Другие признаки, задачи и преимущества техник, описанных в этом изобретении, явствуют из описания и чертежей, а также из формулы изобретения.
Краткое описание чертежей
Фиг.1 - иллюстративная блок-схема системы кодирования и декодирования видеосигнала.
Фиг.2 - блок-схема иллюстративного видеокодера, отвечающего настоящему изобретению.
Фиг.3 - блок-схема иллюстративного видеодекодера, отвечающего настоящему изобретению.
Фиг.4-6 - векторные диаграммы, демонстрирующие иллюстративные коэффициенты фильтра, которые могут обладать горизонтальной и/или вертикальной симметрией относительно других коэффициентов фильтра.
Фиг.7 и 8 - логические блок-схемы иллюстративных способов кодирования и декодирования, отвечающих настоящему изобретению.
Фиг.9 - другая логическая блок-схема иллюстративного способа декодирования, отвечающего настоящему изобретению.
Подробное описание
Настоящее изобретение предусматривает техники, которые позволяют уменьшать объем данных, необходимый для кодирования и переноса информации фильтра от устройства кодирования на устройство декодирования. Для каждого кодированного фрагмента (например, кадра, среза, группы изображений или другого кодированного фрагмента), кодер может задавать или выбирать коэффициенты фильтра для применения к видеоблокам этого кодированного фрагмента. Кодер может применять коэффициенты фильтра для фильтрации видеоблоков реконструированных видеофрагментов, используемых для предиктивного кодирования, и декодер может аналогично применять их для повышения качества выходного видео. Информацию можно передавать с кодера на декодер, чтобы декодер применял правильные коэффициенты фильтра в процессе фильтрации.
Техники, отвечающие настоящему изобретению, распознают и эксплуатируют тот факт, что некоторые из коэффициентов фильтра, заданных на кодере, могут обладать горизонтальной и/или вертикальной симметрией относительно других коэффициентов фильтра. Соответственно, для уменьшения объема данных, необходимого для переноса таких коэффициентов фильтра, это изобретение предусматривает техники, в которых первое множество коэффициентов фильтра используются для предиктивного кодирования второго множества коэффициентов фильтра, тем самым эксплуатируя любую горизонтальную и/или вертикальную симметрию между коэффициентами фильтра. Вместо того чтобы передавать все коэффициенты фильтра на устройство декодирования, устройство кодирования может передавать первое множество коэффициентов фильтра и разностные значения, связанные со вторым множеством коэффициентов фильтра.
Разностные значения могут задавать различия по абсолютной величине между коэффициентами фильтра в первом множестве и коэффициентам фильтра во втором множестве и также могут идентифицировать различия в знаке между коэффициентами фильтра в первом и втором множествах. Используя эту информацию, декодер получает возможность реконструировать все коэффициенты фильтра. Таким образом, можно добиться усовершенствований в сжатии данных по сравнению с техниками, которые передают все коэффициенты фильтра с кодера на декодер.
На фиг.1 показана блок-схема иллюстративной системы кодирования и декодирования видеосигнала 10, в которой можно реализовать техники, отвечающие настоящему изобретению. Согласно фиг.1, система 10 включает в себя исходное устройство 12, которое передает кодированный видеосигнал на устройство назначения 16 по каналу связи 15. Исходное устройство 12 и устройство назначения 16 могут содержать любое из широкого круга устройств. В ряде случаев, исходное устройство 12 и устройство назначения 16 могут содержать беспроводные телефоны, например так называемые сотовые или спутниковые радиотелефоны. Однако техники, отвечающие настоящему изобретению, которые применяются, в общем случае, к фильтрации видеоблоков, не ограничиваются беспроводными приложениями или установками и могут применяться к устройствам, не относящимся к беспроводной связи, в том числе к функциям кодирования и/или декодирования видеосигнала.
В примере, показанном на фиг.1, исходное устройство 12 может включать в себя источник 20 видеосигнала, видеокодер 22, модулятор/демодулятор (модем) 23 и передатчик 24. Устройство назначения 16 может включать в себя приемник 26, модем 27, видеодекодер 28 и устройство отображения 30. Согласно настоящему изобретению, видеокодер 22 исходного устройства 12 может быть настроен на выбор коэффициентов фильтра для процесса фильтрации видеоблоков с последующим предиктивном кодировании некоторых коэффициентов фильтра на основе других коэффициентов фильтра. Видеодекодер 28 устройства назначения 16 может быть настроен на декодирование коэффициентов фильтра, например, путем реконструкции предиктивно-кодированных коэффициентов фильтра.
В частности, видеокодер 22 исходного устройства 12 может выбирать коэффициенты фильтра, применять такие коэффициенты фильтра в процессе кодирования и затем кодировать коэффициенты фильтра для передачи на видеодекодер 28 устройства назначения 16. При условии сходства между разными коэффициентами фильтра, второе множество коэффициентов фильтра можно предиктивно кодировать как разностные значения относительно первого множества коэффициентов фильтра. Например, коэффициенты фильтра во втором множестве могут иметь величины, близкие к величинам коэффициентов фильтра в первом множестве. Знаки коэффициентов фильтра во втором множестве (например, положительный или отрицательный) могут отличаться от знаков коэффициентов фильтра в первом множестве. Соответственно, разностные значения могут идентифицировать такие различия в знаке, а также любые различия по абсолютной величине. Таким образом, можно уменьшить объем информации, необходимый для переноса коэффициентов фильтра. В общем случае, в этом изобретении, выражение “разностные значения” могут означать различия по абсолютной величине, различия в знаке или различия по величине и знаку.
Система 10, показанная на фиг.1, является исключительно иллюстративной. Методы фильтрации, отвечающие настоящему изобретению, могут применяться любым устройством кодирования или декодирования. Исходное устройство 12 и устройство назначения 16 являются лишь примерами устройств кодирования, которые могут применять такие методы.
Видеокодер 22 исходного устройства 12 может кодировать видеоданные, принятые от источника видеосигнала 20, с использованием техник, отвечающих настоящему изобретению. Источник видеосигнала 20 может содержать устройство видеосъемки, например видеокамеру, видеоархив, содержащий ранее отснятые видеоматериалы или видеоматериалы, поступающие от поставщика видео-контента. В порядке дополнительной альтернативы, источник видеосигнала 20 может генерировать данные на основе компьютерной графики в качестве исходного видео, или комбинацию «живого» видео, архивного видео и видео, созданного на компьютере. В ряде случаев, если источником видеосигнала 20 является видеокамера, исходное устройство 12 и устройство назначения 16 могут образовывать так называемые камерофоны или видеотелефоны. В любом случае, отснятое, заранее отснятое или компьютерно-создаваемое видео может кодироваться видеокодером 22.
После кодирования видеоданных видеокодером 22, кодированная видеоинформация может модулироваться модемом 23 согласно стандарту связи, например множественного доступа с кодовым разделением (CDMA) или другому стандарту или методу связи, и передаваться на устройство назначения 16 посредством передатчика 24. Модем 23 может включать в себя различные смесители, фильтры, усилители или другие компоненты, предназначенные для модуляции сигнала. Передатчик 24 может включать в себя схемы, предназначенные для передачи данных, включая усилители, фильтры и одну или несколько антенн.
Приемник 26 устройства назначения 16 принимает информацию по каналу 15, и модем 27 демодулирует информацию. Процесс декодирования видео, осуществляемый видеодекодером 28, может включать в себя фильтрацию, например, как часть циклического декодирования или как этап постфильтрации, выполняемый после цикла декодирования. Так или иначе, коэффициенты фильтра, применяемые видеодекодером 28, можно декодировать с использованием техник, отвечающих настоящему изобретению. Опять же, сходство между разными коэффициентами фильтра можно эксплуатировать для уменьшения объема информации, переносимой по каналу 15. В частности, второе множество коэффициентов фильтра можно предиктивно кодировать как разностные значения относительно первого множества коэффициентов фильтра. В этом случае, видеодекодер 28 принимает кодированный битовый поток, содержащий видеоблоки и информацию фильтра, которая включает в себя первое множество коэффициентов фильтра и разностные значения, связанные со вторым множеством коэффициентов фильтра.
Видеодекодер 28 декодирует видеоблоки, генерирует второе множество коэффициентов фильтра на основе первого множества коэффициентов фильтра и разностных значений и фильтрует декодированные видеоблоки на основе первого и второго множеств коэффициентов фильтра. Декодированные и фильтрованные видеоблоки можно собирать в видеокадры для формирования декодированного видео. Устройство отображения 28 отображает декодированные видеоданные пользователю и может содержать любое из разнообразных устройств отображения, например электронно-лучевую трубку (ЭЛТ), жидкокристаллический дисплей (ЖКД), плазменный дисплей, дисплей на основе органических светодиодов (ОСИД) или устройство отображения другого типа.
Канал связи 15 может содержать любую беспроводную или проводную среду связи, например радиочастотный (РЧ) спектр или одно или несколько физических линий связи, или любую комбинацию беспроводных или проводных сред. Канал связи 15 может составлять часть сети с коммутацией пакетов, например локальной сети, крупномасштабной сети или глобальной сети, например интернета. Канал связи 15, в общем случае, представляет любую подходящую среду связи или совокупность различных сред связи, для передачи видеоданных от исходного устройства 12 на устройство назначения 16.
Видеокодер 22 и видеодекодер 28 могут действовать согласно стандарту сжатия видео, например стандарту ITU-T H.264, альтернативно именуемому MPEG-4, Part 10, Advanced Video Coding (AVC). Однако техники, отвечающие настоящему изобретению, можно легко применять к любым из различных других стандартов видеокодирования. В частности, любой стандарт, который позволяет осуществлять фильтрацию на кодере и декодере, может использовать принципы этого изобретения путем сокращения объема данных, необходимого для передачи информации фильтра с кодера на декодер.
Хотя это не показано на фиг.1, в некоторых аспектах, видеокодер 22 и видеодекодер 28 могут быть объединены с аудиокодером и декодером, и могут включать в себя соответствующие модули мультиплексирования/демультиплексирования, или другое оборудование и программное обеспечение, для обработки кодирования аудио- и видеосигналов в общем потоке данных или в раздельных потоках данных. Если применимо, модули мультиплексирования/демультиплексирования могут соответствовать протоколу мультиплексирования ITU H.223 или другим протоколам, например протоколу пользовательских дейтаграмм (UDP).
Видеокодер 22 и видеодекодер 28 можно реализовать в виде одного или нескольких микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), вентильных матриц, программируемых пользователем (FPGA), дискретной логики, программного обеспечения, оборудования, программно-аппаратного обеспечения или любой их комбинации. Видеокодер 22 и видеодекодер 28 могут входить в состав одного или нескольких кодеров или декодеров, любой из которых можно интегрировать как часть объединенного кодера/декодера (кодека) в соответствующее мобильное устройство, абонентское устройство, широковещательное устройство, сервер и т.п.
В ряде случаев, устройства 12, 16 могут действовать, по существу, симметрично. Например, каждое из устройств 12, 16 может включать в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю или двустороннюю передачу видео между видеоустройствами 12, 16, например, для организации видеопотока, воспроизведения видео, вещания видео или видеотелефонии.
В процессе кодирования, видеокодер 22 может выполнять несколько методов или этапов кодирования техники. В общем случае, видеокодер 22 работает над видеоблоками в отдельных видеокадрах (или других независимо кодируемых фрагментах, например срезах) для кодирования видеоблоков. Кадры, срезы, участки кадров, группы изображений или другие структуры данных можно задавать как независимо декодируемые фрагменты, которые включают в себя совокупность видеоблоков. Видеоблоки в кодированных фрагментах могут иметь фиксированные или переменные размеры и могут отличаться по размеру согласно указанному стандарту кодирования. В ряде случаев, каждый видеокадр может включать в себя ряд независимо декодируемых срезов, и каждый срез может включать в себя ряд макроблоков, которые могут делиться на еще меньшие блоки.
Макроблоки обычно составляют 16×16 блоков данных. Стандарт ITU-T H.264 поддерживает интрапрогнозирование в различных размерах блоков, например 16×16, 8×8 или 4×4 для яркостных компонентов, и 8×8 для цветностных компонентов, а также интерпрогнозирование в различных размерах блоков, например 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4 для яркостных компонентов и соответствующим образом масштабированных размеров для цветностных компонентов. В этом изобретении, термин “видеоблоки” относится к любому размеру видеоблока. Кроме того, видеоблоки могут означать блоки видеоданных в пиксельном измерении или блоки данных в измерении преобразования, например в измерении дискретного косинусного преобразования (ДКП), в измерении, аналогичном ДКП, в вейвлетном измерении и т.д.
Видеокодер 22 может осуществлять предиктивное кодирование, в котором кодируемый видеоблок сравнивается с прогнозируемым кадром (или другим кодированным фрагментом) для идентификации прогнозируемого блока. Различия между текущим кодируемым видеоблоком и прогнозируемым блоком кодируются как остаточный блок, и синтаксис прогнозирования используется для идентификации прогнозируемого блока. Остаточный блок можно преобразовывать и квантовать. Техники преобразования может содержать процесс ДКП или принципиально сходные процесс, целочисленные преобразования, вейвлетные преобразования или другие типы преобразований. В процессе ДКП, в качестве примера, процесс преобразования преобразует множество пиксельных значений в коэффициенты преобразования, которые могут представлять энергию пиксельных значений в частотном измерении. Квантование обычно применяется к коэффициентам преобразования и, в общем случае, предусматривает процесс, который ограничивает количество битов, связанных с любым данным коэффициентом преобразования.
После преобразования и квантования, энтропийное кодирование может осуществляться на квантованных и преобразованных остаточных видеоблоках. Синтаксические элементы, например информация фильтра и векторы прогнозирования, задаваемые в ходе кодирования, также можно включать в энтропийно-кодированный битовый поток. В общем случае, энтропийное кодирование содержит один или несколько процессов, которые совместно сжимают последовательность квантованных коэффициентов преобразования и/или другую синтаксическую информацию. Методы сканирования, например методы зигзагообразного сканирования, осуществляются над квантованными коэффициентами преобразования для задания одного или нескольких последовательных одномерных векторов коэффициентов из двухмерных видеоблоков. Затем сканированные коэффициенты подвергаются энтропийному кодированию совместно с любой синтаксической информацией, например, посредством content adaptive variable length coding (контентно-адаптивного кодирования с переменной длиной) (CAVLC), context adaptive binary arithmetic coding (контекстно-адаптивного двоично-арифметического кодирования) (CABAC), или другого процесса энтропийного кодирования.
Как часть процесса кодирования, кодированные видеоблоки можно декодировать для генерации видеоданных, используемых для последующего кодирования на основе прогнозирования последующих видеоблоков. На этой стадии, фильтрацию можно применять для повышения качества видео и, например, удаления артефактов блочности из декодированного видео.
Кодер может выбирать коэффициенты фильтра таким образом, чтобы повышать качество видео. Такие коэффициенты фильтра можно выбирать из заранее заданных множеств коэффициентов, или можно адаптивно задавать для повышения качества видео. В порядке примера, видеокодер 22 может выбирать или задавать множество коэффициентов фильтра для данного кодированного фрагмента таким образом, чтобы одни и те же коэффициенты фильтра использовались для всех видеоблоков этого кодированного фрагмента. В ряде случаев, видеокодер 22 может применять несколько множеств коэффициентов фильтра и выбирать множество, которое обеспечивает наилучшее качество видео или наивысшие уровни сжатия. В любом случае, будучи выбранным, множество коэффициентов фильтра, применяемых видеокодером 22 для каждого кодированного фрагмента, может потребоваться кодировать и передавать на видеодекодер 28 устройства назначения 18, чтобы видеодекодер 28 мог применять ту же фильтрацию, которая была применена в процессе кодирования для каждого данного кодированного фрагмента.
На фиг.2 показана блок-схема видеокодера 50, отвечающего настоящему изобретению. Видеокодер 50 может соответствовать видеокодеру 22 устройства 20 или видеокодеру другого устройства. Согласно фиг.2, видеокодер 50 включает в себя модуль прогнозирования 32, сумматоры 48 и 51 и элемент 34 хранения опорных кадров. Видеокодер 50 также включает в себя модуль преобразования 38 и модуль квантования 40, а также модуль обратного квантования 42 и модуль обратного преобразования 44. Видеокодер 50 также включает в себя модуль сканирования 45 и модуль энтропийного кодирования 46. Модуль фильтрации 47 видеокодера 50 может осуществлять фильтрацию и может кодировать информацию фильтра согласно настоящему изобретению, чтобы информацию фильтра можно было эффективно передавать на другое устройство.
В процессе кодирования, видеокодер 50 принимает кодируемый видеоблок, и модуль прогнозирования 32 осуществляет методы предиктивного кодирования. Для интеркодирования, модуль прогнозирования 32 сравнивает кодируемый видеоблок с различными блоками в одном или нескольких опорных видеокадрах или срезах для задания прогнозируемого блока. Для интракодирования, модуль прогнозирования 32 генерирует прогнозируемый блок на основе соседних данных в том же кодированном фрагменте. Модуль прогнозирования 32 выводит блок прогнозирования, и сумматор 48 вычитает блок прогнозирования из кодируемого видеоблока для генерации остаточного блока.
Для интеркодирования, модуль прогнозирования 32 может содержать модули оценки движения и компенсации движения, которые идентифицируют вектор движения, указывающий на блок прогнозирования, и генерируют блок прогнозирования на основе вектора движения. Обычно оценка движения рассматривается как процесс генерации вектора движения, который служит оценкой движения. Например, вектор движения может указывать перемещение прогнозируемого блока в прогнозируемом кадре относительно текущего кодируемого блока в текущем кадре. Компенсация движения обычно рассматривается как процесс выборки или генерации прогнозируемого блока на основе вектора движения, определенного путем оценки движения. Для интракодирования, модуль прогнозирования 32 генерирует прогнозируемый блок на основе соседних данных в том же кодированном фрагменте. Один или несколько режимов интрапрогнозирования могут определять, как можно задавать блок интрапрогнозирования.
После того, как модуль прогнозирования 32 выводит блок прогнозирования, и сумматор 48 вычитает блок прогнозирования из кодируемого видеоблока для генерации остаточного блока, модуль преобразования 38 применяет преобразование к остаточному блоку. Преобразование может содержать дискретное косинусное преобразование (ДКП) или принципиально сходное преобразование, например, отвечающее стандарту H.264. Также можно использовать вейвлетные преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований. В любом случае, модуль преобразования 38 применяет преобразование к остаточному блоку, создавая блок остаточных коэффициентов преобразования. Преобразование может преобразовывать остаточную информацию из пиксельного измерения в частотное измерение.
Затем модуль квантования 40 квантует остаточные коэффициенты преобразования для дополнительного уменьшения битовой скорости. Модуль квантования 40, например, может ограничивать количество битов, используемых для кодирования каждого из коэффициентов. После квантования, модуль сканирования 45 сканирует блок квантованных коэффициентов из двухмерного представления в один или несколько последовательных одномерных векторов. Порядок сканирования может быть заранее запрограммирован на осуществление в заданном порядке (например, зигзагообразное сканирование или другой заранее заданный порядок), а может задаваться адаптивно на основе предыдущей статистики кодирования.
После этого процесса сканирования, модуль энтропийного кодирования 46 кодирует квантованные коэффициенты преобразования (вместе с любыми синтаксическими элементами) согласно методу энтропийного кодирования, например CAVLC или CABAC, для дополнительного сжатия данных. Синтаксические элементы, включенные в энтропийно-кодированный битовый поток, могут включать в себя синтаксис прогнозирования из модуля прогнозирования 32, например векторы движения для интеркодирования или режимы прогнозирования для интракодирования. Синтаксические элементы, включенные в энтропийно-кодированный битовый поток, также могут включать в себя информацию фильтра из модуля фильтрации 47, которая может кодироваться вышеописанным образом.
CAVLC это один из методов энтропийного кодирования, поддерживаемый стандартом AVC ITU H.264/MPEG4, который модуль энтропийного кодирования 46 может применять на векторизованной основе. CAVLC использует таблицы кодирования с переменной длиной (VLC), которые позволяют эффективно сжимать последовательные “серии” коэффициентов преобразования и/или синтаксических элементов. CABAC это другой метод энтропийного кодирования, поддерживаемый стандартом AVC ITU H.264/MPEG4, который модуль энтропийного кодирования 46 может применять на векторизованной основе. CABAC может осуществляться в несколько этапов, включая преобразование к двоичному виду, выбор контекстной модели и двоично-арифметическое кодирование. В этом случае, модуль энтропийного кодирования 46 кодирует коэффициенты преобразования и синтаксические элементы согласно CABAC. Существует много других методов энтропийного кодирования, и в будущем, вероятно, появятся новые методы энтропийного кодирования. Это изобретение не ограничивается никаким конкретным методом энтропийного кодирования.
После энтропийного кодирования, произведенного модулем энтропийного кодирования 46, кодированный видеосигнал можно передавать на другое устройство или архивировать для дальнейшей передачи или извлечения. Опять же, кодированный видеосигнал может содержать энтропийно-кодированные векторы и какой-либо синтаксис, декодер, который может использовать для правильного конфигурирования процесса декодирования. Модуль обратного квантования 42 и модуль обратного преобразования 44 применяют обратное квантование и обратное преобразование, соответственно, для восстановления остаточного блока в пиксельном измерении. Сумматор 51 прибавляет реконструированный остаточный блок к блоку прогнозирования, сгенерированному модулем прогнозирования 32, для создания реконструированного видеоблока для сохранения в хранилище опорных кадров 34. Однако до такого сохранения, модуль фильтрации 47 может применять фильтрацию на видеоблоке для повышения качество видео. Такая фильтрация модулем фильтрации 47 может уменьшать блочность или другие артефакты. Кроме того, фильтрация может улучшать сжатие за счет генерации прогнозируемых видеоблоков, которые содержат близкие совпадения с кодируемыми видеоблоками. После фильтрации, модуль прогнозирования 32 может использовать реконструированный видеоблок как опорный блок для интеркодирования блока в последующем видеокадре или другом кодированном фрагменте.
Фильтрация посредством модуля фильтрации 47 может включать в себя выбор коэффициента фильтра таким образом, чтобы повышать качество видео. Например, модуль фильтрации 47 может выбирать коэффициенты фильтра из заранее заданных множеств коэффициентов или может адаптивно задавать коэффициенты фильтра для повышения качества видео или улучшения сжатия. Модуль фильтрации 47 может выбирать или задавать множество коэффициентов фильтра для данного кодированного фрагмента таким образом, чтобы одни и те же коэффициенты фильтра использовались для всех видеоблоков этого кодированного фрагмента. В ряде случаев, модуль фильтрации 47 может применять несколько множеств коэффициентов фильтра и выбирать множество, которое обеспечивает наилучшее качество видео или наивысшие уровни сжатия. В любом случае, будучи выбранным, множество коэффициентов фильтра, применяемых модулем фильтрации 47 для каждого кодированного фрагмента, может понадобиться кодировать и передавать на устройство декодирования.
Согласно настоящему изобретению, модуль фильтрации 47 осуществляет методы кодирования в отношении информации фильтра, которые могут уменьшать объем данных, необходимый для кодирования и переноса информации фильтра от кодера 50 на другое устройство. Опять же, для каждого кодированного фрагмента (например, кадра, группы изображений, среза или другого кодированного фрагмента), модуль фильтрации 37 может задавать или выбирать коэффициенты фильтра для применения к видеоблокам этого кодированного фрагмента. Модуль фильтрации 37 применяет коэффициенты фильтра для фильтрации видеоблоков из реконструированных видеоблоков, хранящихся в хранилище опорных кадров 34, которые можно использовать для предиктивного кодирования. Модуль фильтрации может кодировать коэффициенты фильтра как информацию фильтра, которая пересылается на модуль энтропийного кодирования 46 для включения в кодированный битовый поток.
Техники, отвечающие настоящему изобретению, распознают и эксплуатируют тот факт, что некоторые из коэффициентов фильтра, заданные или выбранные модулем фильтрации 47, могут обладать горизонтальной и/или вертикальной симметрией относительно других коэффициентов фильтра. Соответственно, для уменьшения объема данных, необходимого для переноса таких коэффициентов фильтра, модуль фильтрации 47 предиктивно кодирует второе множество коэффициентов фильтра на основе первого множества коэффициентов фильтра, эксплуатируя любую горизонтальную и/или вертикальную симметрию между коэффициентами фильтра. Таким образом, информация фильтра из модуля фильтрации 47 на модуль энтропийного кодирования 46 может включать в себя первое множество коэффициентов фильтра и разностные значения, связанные со вторым множеством коэффициентов фильтра. Разностные значения могут задавать различия по величине и, возможно, различия в знаке между коэффициентами фильтра в первом множестве и коэффициентами фильтра во втором множестве. Используя эту информацию, декодер получает возможность реконструировать все коэффициенты фильтра. Таким образом, можно добиться улучшений в сжатии данных по сравнению с техниками, которые передают все коэффициенты фильтра от видеокодера 50 на другое устройство.
На фиг.3 показана блок-схема иллюстративного видеодекодера 60, который декодирует видеопоследовательность, закодированную вышеописанным образом. Принятая видеопоследовательность может содержать кодированный набор кадров изображений, набор срезов кадров, совместно кодированные группы изображений (GOP) или самые разнообразные кодированные видеофрагменты, которые включают в себя кодированные видеоблоки и синтаксис для задания, как декодировать такие видеоблоки.
Видеодекодер 60 включает в себя модуль энтропийного декодирования 52, который осуществляет функцию декодирования, обратную функции кодирования, осуществляемой модулем энтропийного кодирования 46, показанным на фиг.2. В частности, модуль энтропийного декодирования 52 может осуществлять декодирование CAVLC или CABAC или энтропийное декодирование любого другого типа, используемое видеокодером 50. Энтропийно-декодированные видеоблоки в одномерным сериализованном формате можно пересылать на модуль сканирования 55. Энтропийно-декодированный синтаксис прогнозирования можно передавать от модуля энтропийного декодирования 52 на модуль прогнозирования 54, и энтропийно-декодированную информацию фильтра можно передавать от модуля энтропийного декодирования 52 на модуль фильтрации 57.
Модуль сканирования 55 осуществляет обратное сканирование, обратное сканированию, осуществляемому модулем сканирования 45, показанным на фиг.2. В этом случае, модуль сканирования 55 может преобразовывать один или несколько одномерных векторов коэффициентов обратно в формат двухмерных блоков. Количество и размер векторов, а также порядок сканирования, заданные для видеоблоков, могут задавать, как реконструируется двухмерный блок.
Видеодекодер 60 также включает в себя модуль прогнозирования 54, модуль обратного квантования 56, модуль обратного преобразования 58, хранилище 62 опорных кадров и сумматор 64. Кроме того, видеодекодер 60 включает в себя модуль фильтрации 57, который фильтрует выход сумматора 64. Согласно настоящему изобретению, модуль фильтрации 57 может принимать энтропийно-декодированную информацию фильтра, которая включает в себя первое множество коэффициентов фильтра и разностные значения, связанные со вторым множеством коэффициентов фильтра. Модуль фильтрации 57 можно приспособить для генерации второго множества коэффициентов фильтра на основе первого множества коэффициентов фильтра и разностных значений. Затем модуль фильтрации 57 может фильтровать декодированные видеоблоки на основе первого и второго множеств коэффициентов фильтра.
Модуль прогнозирования 54 принимает синтаксис прогнозирования (например, векторы движения) от модуля энтропийного декодирования 52. Используя синтаксис прогнозирования, модуль прогнозирования 54 генерирует блоки прогнозирования, которые использовались для кодирования видеоблоков. Модуль обратного квантования 56 осуществляет обратное квантование, и модуль обратного преобразования 58 осуществляет обратные преобразования для перевода коэффициентов остаточных видеоблоков обратно в пиксельное измерение. Сумматор 64 объединяет каждый блок прогнозирования с соответствующим остаточным блоком, выдаваемым модулем обратного преобразования 58, для реконструкции видеоблока.
Модуль фильтрации 57 генерирует коэффициенты фильтра, применяемые для каждого кодированного фрагмента, и затем применяет такие коэффициенты фильтра для фильтрации реконструированных видеоблоков этого кодированного фрагмента. Фильтрованные видеоблоки накапливаются в хранилище опорных кадров 62 для реконструкции декодированных кадров (или других декодируемых фрагментов) видеоинформации. Декодированные фрагменты могут выводиться из видеодекодера 60 для представления пользователю, а также могут сохраняться для использования при последующем предиктивном декодировании.
На фиг.4-6 показаны векторные диаграммы, демонстрирующие иллюстративные коэффициенты фильтра, которые могут обладать горизонтальной и/или вертикальной симметрией относительно других коэффициентов фильтра. Техники, отвечающие настоящему изобретению, эксплуатируют такую горизонтальную и/или вертикальную симметрию между разными коэффициентами фильтра для уменьшения объема данных, необходимого для переноса коэффициентов фильтра от видеокодера на видеодекодер. В частности, вместо того чтобы передавать все коэффициенты фильтра, техники, отвечающие настоящему изобретению, передают первое множество коэффициентов фильтра и разностные значения, связанные со вторым множеством коэффициентов фильтра. Разностные значения могут указывать различия между первым множеством коэффициентов фильтра и вторым множеством коэффициентов фильтра, например, различия по величине и знаку. Таким образом, второе множество коэффициентов фильтра предиктивно кодируется на основе первого множества коэффициентов фильтра.
Разностные значения могут содержать меньше данных, чем иначе потребовалось бы для передачи второго множества коэффициентов фильтра. Соответственно, техники, отвечающие настоящему изобретению, могут улучшить сжатие данных, связанных с кодированным видеосигналом, которые включают в себя коэффициенты фильтра, обладающие, по меньшей мере, некоторой симметрией. В концептуальных примерах, приведенных на фиг.4-6, коэффициенты фильтра, обозначенные “X”, могут представлять коэффициенты, которые передаются от устройства кодирования на устройство декодирования, тогда как коэффициенты, обозначенные “O”, могут представлять коэффициенты, предиктивно кодируемые таким образом, чтобы разностные значения передавались от устройства кодирования на устройство декодирования для коэффициентов, обозначенных “O”.
На фиг.4 показаны иллюстративные коэффициенты фильтра, расположенные в двухмерном пространстве. Значение f(l, k) может представлять каждый коэффициент фильтра таким образом, что каждый коэффициент имеет компонент “l” и компонент “k” в двухмерном пространстве k-l. Согласно фиг.4, коэффициенты, находящиеся в квадранте Q1, могут обладать горизонтальной, вертикальной и диагональной симметрией относительно коэффициентов, находящихся в квадрантах Q2, Q3 и Q4. В частности, коэффициенты в квадранте Q2 могут быть аналогичны коэффициентам квадранта Q1, но симметричны относительно вертикальной оси (l). Аналогично, коэффициенты в квадранте Q3 могут быть аналогичны коэффициентам квадранта Q1, но симметричны относительно горизонтальной оси (k). Коэффициенты в квадранте Q4 могут быть аналогичны коэффициентам квадранта Q1, но симметричны относительно вертикальной оси (l) и горизонтальной оси (k), что можно называть диагональной симметрией. В любом случае, коэффициенты фильтра в квадранте Q1 можно использовать для прогнозирования коэффициентов в квадрантах Q2-Q4. Соответственно, устройство кодирования может передавать коэффициенты фильтра для квадранта Q1 и разностные значения для коэффициентов в квадрантах Q2-Q4 на устройство декодирования. Устройство декодирования может использовать коэффициенты фильтра для квадранта Q1 и разностные значения для квадрантов Q2-Q4 для генерации фактических коэффициентов, связанных с квадрантами Q2-Q4. Опять же, разностные значения могут содержать меньше данных, чем иначе потребовалось бы для передачи второго множества коэффициентов фильтра. Коэффициенты фильтра в квадранте Q1 могут содержать приблизительно четверть всех коэффициентов фильтра, тогда как коэффициенты фильтра в квадрантах Q2-Q4 могут содержать приблизительно три четверти всех коэффициентов фильтра. Перекрывание может происходить по вертикальной оси (l) и горизонтальной оси (k).
В ряде случаев, существует только вертикальная симметрия или только горизонтальная симметрия в отношении коэффициентов фильтра в двухмерном пространстве. В концептуальном примере, приведенном на фиг.5, коэффициенты, находящиеся в квадрантах Q1 и Q2, могут быть аналогичны коэффициентам в квадрантах Q3 и Q4, но симметричны относительно горизонтальной оси (k). В этом случае, коэффициенты фильтра в квадрантах Q1 и Q2 можно использовать для прогнозирования коэффициентов в квадрантах Q3 и Q4. Соответственно, устройство кодирования может передавать коэффициенты фильтра для квадрантов Q1 и Q2 и разностные значения для квадрантов Q3 и Q4 на устройство декодирования. Устройство декодирования может использовать коэффициенты фильтра для квадрантов Q1 и Q2 и разностные значения для квадрантов Q3 и Q4 для генерации фактических коэффициентов, связанных с квадрантами Q3 и Q4. Коэффициенты фильтра в квадрантах Q1 и Q2 могут содержать приблизительно половину всех коэффициентов фильтра, и коэффициенты фильтра в квадрантах Q3 и Q4 могут содержать приблизительно половину всех коэффициентов фильтра. В этом случае, перекрывание может происходить по горизонтальной оси (k).
В концептуальном примере, приведенном на фиг.6, коэффициенты, находящиеся в квадрантах Q1 и Q3 могут быть аналогичны коэффициентам в квадрантах Q2 и Q4, но симметричны относительно вертикальной оси (l). В этом случае, коэффициенты фильтра в квадрантах Q1 и Q3 можно использовать для прогнозирования коэффициентов в квадрантах Q2 и Q4. Соответственно, устройство кодирования может передавать коэффициенты фильтра для квадрантов Q1 и Q3 и разностные значения для квадрантов Q2 и Q4 на устройство декодирования. Устройство декодирования может использовать коэффициенты фильтра для квадрантов Q1 и Q3 и разностные значения для квадрантов Q2 и Q4 для генерации фактических коэффициентов, связанных с квадрантами Q2 и Q4. Коэффициенты фильтра в квадрантах Q1 и Q3 могут содержать приблизительно половину всех коэффициентов фильтра, и коэффициенты фильтра в квадрантах Q2 и Q4 могут содержать приблизительно половину всех коэффициентов фильтра. В этом случае, перекрывание может происходить по вертикальной оси (l).
В ряде случаев, конкретные коэффициенты фильтра могут быть важнее для фильтрации, чем другие коэффициенты. В таких случаях, выгодно кодировать более важные коэффициенты фильтра большим количеством битов, чем менее важные коэффициенты фильтра. Таким образом, устройство кодирования может выделять разные количества битов разным коэффициентам фильтра в первом множестве коэффициентов фильтра. Часто, например, коэффициенты фильтра, лежащие на оси “l” или на оси “k”, могут быть важнее для фильтрации, чем другие коэффициенты фильтра. В этом случае, выгодно назначать более высокое разрешение или более широкую полосу коэффициентам фильтра, которые имеют нулевые значения l или k и поэтому лежат на оси “l” или оси “k”.
В общем случае, желательный фильтр (например, модуль фильтрации 47 на фиг.2) можно построить путем минимизации ошибки между исходным сигналом и декодированным фильтрованным сигналом. Коэффициенты фильтра можно представить в виде:
Затем коэффициенты фильтра g(k,l) можно квантовать и представить в виде:
Значение  представляет нормирующий множитель. Значение  может быть равно , но может принимать и другие значения нормирования. Более высокие значения  обеспечивают более высокую точность, в результате чего квантованные коэффициенты фильтра  обеспечивают более высокую производительность по сравнению с коэффициентами фильтра, которые используют меньшие значения . С другой стороны, более высокие значения  дают коэффициенты , для передачи которых требуется больше битов, чем для коэффициентов фильтра, которые используют меньшие значения .
R(i,j)
На декодере, декодированные коэффициенты фильтра  применяются к реконструированному изображению  следующим образом:
,
где i и j представляют положения пикселей, связанные с изображением или видеоблоком R, и i=0,…,M-1 и j=0,..,N-1. Это изобретение предусматривает техники, которые позволяют уменьшать количество битов, необходимое для передачи коэффициентов фильтра .
Коэффициенты фильтра с индексами k и l, причем k>0 или l>0 можно прогнозировать из коэффициентов , для которых k<=0 и l<=0, следующим образом, где d(k,l) представляет разностное значение в данном положении, заданном величинами k и l:
Коэффициент  можно прогнозировать следующим образом:
k=-K,…,0
l=-L,…,0
k
l
n
n
m
m
Модуль фильтрации 47 может сначала кодировать коэффициенты , для которых  и  и  или  не равны оба 0. Количество битов , необходимое для представления  наибольшей величины, может кодироваться модулем фильтрации 47 и передаваться видеокодером 50, причем каждый коэффициент  кодируется и передается с использованием  битов. Затем значения разности величин коэффициентов  может кодироваться модулем фильтрации 47 и передаваться видеокодером 50. Опять же, количество битов , необходимое для представления  наибольшей величины, может сначала передаваться видеокодером 50, и затем, последовательно, каждая разность коэффициентов  может передаваться с использованием  битов.
k
l
k
l
k
l
k=-K,…,0
l=-L,…,0, n
k
l
n
Величина коэффициентов  может зависеть от значений k и l. Обычно коэффициент с наибольшей амплитудой является коэффициентом . Кроме того, другие коэффициенты, которые, предположительно, имеют большие амплитуды, являются коэффициентами, для которых значение  или  равно 0. Это наблюдение можно использовать для дополнительного уменьшения количества битов, необходимого для передачи коэффициентов. В частности, , используемый при квантовании коэффициентов фильтра, может зависеть от значений  и . Соответственно, количество битов, используемое для представления коэффициентов, может зависеть от значений  и . Например, при кодировании и передаче коэффициентов , для которых  и битов можно использовать для передачи коэффициентов, для которыхилиравно 0, тогда как -1 битов можно использовать для передачи остальных коэффициентов.
Для еще большего уменьшения количества битов, необходимого для передачи коэффициентов фильтра, строгая симметрия может быть установлена для коэффициентов фильтра. Например, в некоторых примерах, все значения разности коэффициентов фильтра  можно задать равными нулю, тем самым ограничивая количество передаваемых коэффициентов фильтра примерно четвертью тех, которые иначе были бы необходимы для передачи всех коэффициентов фильтра. Альтернативно, можно установить строго горизонтальную или строго вертикальную симметрию, тем самым ограничивая количество передаваемых коэффициентов фильтра примерно половиной тех, которые иначе были бы необходимы для передачи всех коэффициентов фильтра.
В этих примерах, где строгая симметрия установлена в вертикальном измерении, горизонтальном измерении или в вертикальном и горизонтальном измерениях, может отпадать необходимость в передаче разностных значений, но их можно предположить равными нулю. Устройство декодирования будет принимать кодированный битовый поток, который содержит кодированный фрагмент видеоданных, включающий в себя совокупность видеоблоков, и информацию фильтра, содержащую первое множество коэффициентов фильтра. В этом случае, устройство декодирования будет декодировать совокупность видеоблоков, генерировать второе множество коэффициентов фильтра на основе первого множества коэффициентов фильтра и фильтровать декодированную совокупность видеоблоков на основе первого и второго множеств коэффициентов фильтра.
Согласно фиг.4, если на кодере установлена полная симметрия, разностные значения, связанные с различиями по величине для коэффициентов в квадрантах Q2-Q4 относительно квадрату 1, могут быть равны нулю и могут предполагаться таковыми без передачи какой-либо информации для коэффициентов фильтра в квадрантах Q2-Q4. Однако передача разностных значений для различий по величине в квадрантах Q2-Q4, может иметь преимущества для кодирования благодаря тому, что величины коэффициентов фильтра в квадрантах Q2-Q4 могут немного отличаться от соответствующих величин для квадранта Q1.
На фиг.7 показана логическая блок-схема способа кодирования, отвечающего настоящему изобретению. Фиг.7 будет описана применительно к видеокодеру 50, показанному на фиг.2. Согласно фиг.7, видеокодер 50 кодирует фрагмент из видеоблоков (71), например, вызывая модуль прогнозирования 32 для предиктивного кодирования каждого из видеоблоков. Модуль фильтрации 47 выбирает коэффициенты фильтра для фрагмента из видеоблоков (72) и фильтрует эти видеоблоки на основе выбранных коэффициентов фильтра (73). Модуль фильтрации 47 кодирует второе множество коэффициентов фильтра на основе горизонтальной и/или вертикальной симметрии относительно первого множества коэффициентов фильтра (74), для чего может потребоваться генерировать разностные значения для второго множества коэффициентов фильтра, указывающие различия между вторым множеством коэффициентов фильтра и первым множеством коэффициентов фильтра. Затем видеокодер 50 выводит первое множество коэффициентов фильтра и разностные значения, чтобы эту информацию можно было передавать на другое устройство (75). В частности, модуль энтропийного кодирования 46 может генерировать выходной битовый поток, содержащий энтропийно-кодированные видеоблоки и энтропийно-кодированную информацию фильтра, которая включает в себя первое множество коэффициентов фильтра и разностные значения, связанные со вторым множеством коэффициентов фильтра.
На фиг.8 показана логическая блок-схема способа кодирования, отвечающего настоящему изобретению. Фиг.8 будет описана применительно к видеодекодеру 60, показанному на фиг.3. Согласно фиг.8, видеодекодер 60 принимает кодированный фрагмент в кодированном битовом потоке (81). Модуль энтропийного декодирования 52 может декодировать битовый поток для генерации квантованных коэффициентов и различного синтаксиса, например синтаксиса прогнозирования и информации фильтра. Модуль фильтрации 47 принимает информацию фильтра и идентифицирует первое множество коэффициентов фильтра и разностные значения, связанные со вторым множеством коэффициентов фильтра (82). Модуль фильтрации 47 генерирует второе множество коэффициентов фильтра на основе первого множества коэффициентов фильтра и разностных значений (83). Затем модуль фильтрации 47 фильтрует видеоблоки кодированного фрагмента на основе коэффициентов фильтра (84). Поскольку второе множество коэффициентов фильтра не включено в битовый поток, уровень сжатия в битовом потоке можно повысить. Разностные значения могут содержать меньше данных, чем второе множество коэффициентов фильтра, но, принимая во внимание первое множество коэффициентов фильтра, разностные значения можно использовать для генерации второго множества коэффициентов фильтра, как описано здесь.
На фиг.9 показана логическая блок-схема способа кодирования, отвечающего настоящему изобретению. Однако в примере, приведенном на фиг.9, установлена строгая симметрия, в связи с чем, разностные значения, связанные с различиями по величине, предполагаются равными нулю для второго множества коэффициентов фильтра. В этом случае, второе множество коэффициентов фильтра можно исключить из битового потока и выводить на декодере на основе первого множества коэффициентов фильтра и известной симметрии. Фиг.9 будет описана применительно к видеодекодеру 28 устройства назначения 16, показанного на фиг.1.
Согласно фиг.9, видеодекодер 28 принимает кодированный битовый поток, включающий в себя кодированный фрагмент и первое множество коэффициентов фильтра (91). Видеодекодер 28 генерирует второе множество коэффициентов фильтра на основе первого множества коэффициентов фильтра и известной симметрии (92). В этом случае, видеодекодер 28 можно запрограммировать так, чтобы он знал, что видеокодер 22 установил полную симметрию для коэффициентов фильтра в процессе кодирования. Видеодекодер 28 фильтрует видеоблоки кодированного фрагмента на основе коэффициентов фильтра (93), которые включают в себя как первое множество, включенное в битовый поток, так и второе множество, выведенное на основе первого множества коэффициентов фильтра и известной симметрии.
В ряде случаев, согласующихся с фиг.9, битовый поток может включать в себя простой синтаксический элемент, например однобитовый или двухбитовый флаг, для указания, установлена ли полная симметрия для коэффициентов фильтра в вертикальном и/или горизонтальном измерениях, чтобы разностные значения можно было предположить равными нулю. В этом случае, видеодекодер 28 может идентифицировать симметрию или отсутствие симметрии на основе флага, и, при наличии симметрии, видеодекодер 28 может генерировать второе множество коэффициентов фильтра на основе первого множества коэффициентов фильтра и известной симметрии (92). Известная симметрия может приводить к сменам знака во втором множестве коэффициентов фильтра относительно первого множества коэффициентов фильтра.
Техники, отвечающие настоящему изобретению, можно реализовать в различных устройствах или приспособлениях, включая беспроводной телефон, интегральную схему (ИС) или комплект ИС (т.е. чипсет). Любые описанные компоненты, модули или устройства призваны подчеркивать функциональные аспекты и не обязательно требуют реализации в виде разных аппаратных модулей.
Соответственно, описанные здесь техники можно реализовать в оборудовании, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. Любые признаки, описанные как модули или компоненты, можно реализовать совместно в интегрированном логическом устройстве или по отдельности как разные, но взаимосвязанные логические устройства. В случае программной реализации, техники можно реализовать, по меньшей мере, отчасти, в виде компьютерно-считываемого носителя, содержащего инструкции, которые, при выполнении, осуществляет один или несколько из вышеописанных способов. Компьютерно-считываемый носитель данных может составлять часть компьютерного программного продукта, который может включать в себя упаковочные материалы.
Компьютерно-считываемый носитель может содержать оперативную память (ОЗУ), например синхронную динамическую оперативную память (SDRAM), постоянную память (ПЗУ), энергонезависимую оперативную память (NVRAM), электрически стираемую программируемую постоянную память (ЭСППЗУ), флэш-память, магнитные или оптические носители данных и пр. Техники, дополнительно или альтернативно, можно реализовать, по меньшей мере, отчасти, в виде компьютрено-считываемой среды связи, которая переносит или передает код в форме инструкций или структур данных, допускающие доступ, чтение и/или выполнение со стороны компьютера.
Код может выполняться одним или несколькими процессорами, например одним или несколькими цифровыми сигнальными процессорами (DSP), микропроцессорами общего назначения, специализированными интегральными схемами (ASIC), логическими матрицами, программируемыми пользователем (FPGA), или другими эквивалентными интегральными ли дискретными логическими схемами. Соответственно, используемый здесь термин “процессор” может относиться к любой вышеупомянутой структуре или любой другой структуре, пригодной для реализации описанных здесь техник. Кроме того, в некоторых аспектах, описанные здесь функции можно обеспечить в специализированных программных модулях или аппаратных модулях, приспособленных для кодирования и декодирования, или входящих в состав объединенного видеокодера-декодера (кодека). Кроме того, техники можно полностью реализовать в одной или нескольких схемах или логических элементах.
Были описаны различные аспекты изобретения. Эти и другие аспекты входят в объем нижеследующей формулы изобретения.