Способ и устройство для оптимизации кодирования/декодирования компенсационных смещений для набора восстановленных выборок изображения

Иллюстрации

Показать все

Группа изобретений относится к способам и устройствам для кодирования или декодирования последовательности цифровых изображений. Техническим результатом является повышение качества изображения. В способе и устройстве для кодирования и декодирования по меньшей мере части изображения, содержащего множество выборок, каждая выборка содержит по меньшей мере два компонента, причем закодированное изображение содержит по меньшей мере один параметр фильтрации. При фильтрации используют по меньшей мере один параметр фильтрации в качестве общего параметра фильтрации для фильтрации как первого компонента, так и второго компонента восстановленной выборки. 5 н. и 33 з.п. ф-лы, 23 ил.

Реферат

Настоящее изобретение относится к способу и устройству для оптимизации кодирования и/или декодирования компенсационных смещений для набора восстановленных выборок изображения, чтобы повышать эффективность кодирования видеокодека и/или сложности декодирования. Изобретение дополнительно относится к способу и устройству для кодирования или декодирования последовательности цифровых изображений.

Изобретение может применяться в области техники обработки цифровых сигналов и, в частности, в области сжатия видео с использованием компенсации движения, чтобы уменьшать пространственные и временные избыточности в видеопотоках.

Множество форматов сжатия видео, таких как, например, H.263, H.264, MPEG-1, MPEG-2, MPEG-4, SVC, используют дискретное косинусное преобразование (DCT) на основе блоков и компенсацию движения для того, чтобы удалять пространственные и временные избыточности. Они зачастую упоминаются в качестве прогнозирующих видеоформатов. Каждый кадр или изображение видеосигнала разделяется на слайсы, которые кодируются и могут декодироваться независимо. Слайс типично представляет собой прямоугольную часть кадра либо, если обобщать, часть кадра или весь кадр. Дополнительно, каждый слайс может быть разделен на макроблоки (MB), и каждый макроблок дополнительно разделяется на блоки, типично блоки по 64×64, 32×32, 16×16 или 8×8 пикселов.

В стандарте высокоэффективного кодирования видео (HEVC), могут использоваться блоки от 64×64 до 4×4. Сегментирование организуется согласно структуре в виде дерева квадрантов на основе наибольшей единицы кодирования (LCU). LCU соответствует, например, к квадратному блоку 64×64. Если LCU должна быть разделена, флаг разбиения указывает, что LCU разбивается на 4 блока 32×32. Аналогичным образом, если какой-либо из этих 4 блоков должен разбиваться, флаг разбиения задается как "истина", и блок 32×32 разделяется на 4 блока 16×16 и т.д. Когда флаг разбиения задается как "ложь", текущий блок представляет собой единицу CU кодирования. CU имеет размер, равный 64×64, 32×32, 16×16 или 8×8 пикселов.

Предусмотрено два семейства режимов кодирования для кодирования блоков изображения: режимы кодирования на основе пространственного прогнозирования, называемые "внутренним прогнозированием", и режимы кодирования на основе временного прогнозирования (внешний, объединение, пропуск). В режимах пространственного и временного прогнозирования, остаток вычисляется посредством вычитания прогнозирования из исходного блока.

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

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

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

В H.264, например, векторы движения кодируются относительно среднего предиктора, вычисленного из векторов движения, расположенных в причинном окружении блока, который должен быть кодирован, например, из трех блоков, расположенных выше и слева от блока, который должен быть кодирован. Только разность, называемая "остаточным вектором движения", между средним предиктором и вектором движения текущего блока кодируется в потоке битов для того, чтобы уменьшать затраты на кодирование.

Кодирование с использованием остаточных векторов движения дает некоторую экономию скорости передачи битов, но требует того, чтобы декодер выполнял идентичное вычисление предиктора вектора движения, чтобы декодировать значение вектора движения блока, который должен быть декодирован.

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

Чтобы восстанавливать кодированный кадр, остаток обратно квантуется и обратно преобразуется, чтобы предоставлять "декодированный" остаток в пиксельной области. Первое восстановление затем фильтруется посредством одного или нескольких видов процессов постфильтрации. Эти постфильтры применяются для восстановленного кадра на стороне кодера и декодера, чтобы идентичный опорный кадр использовался на обеих сторонах. Цель этой постфильтрации состоит в том, чтобы удалять артефакты сжатия и повышать качество изображений. Например, H.264/AVC использует фильтр удаления блочности. Этот фильтр может удалять артефакты блочности вследствие DCT-квантования остатка и блочной компенсации движения. В текущем HEVC-стандарте, используются 3 типа контурных фильтров: фильтр удаления блочности, адаптивное к выборке смещение (SAO) и адаптивный контурный фильтр (ALF).

Фиг. 1 является блок-схемой последовательности операций способа, иллюстрирующей этапы процесса контурной фильтрации в известной HEVC-реализации. На начальном этапе 101, кодер или декодер формирует восстановление полного кадра. Затем, на этапе 102 фильтр удаления блочности применяется для этого первого восстановления, чтобы формировать восстановление 103 с удаленной блочностью. Цель фильтра удаления блочности состоит в том, чтобы удалять артефакты блочности, сформированные посредством остаточного квантования и блочной компенсации движения или блочного внутреннего прогнозирования. Эти артефакты являются визуально важными на низких скоростях передачи битов. Фильтр удаления блочности работает с возможностью сглаживать границы блоков согласно характеристикам двух соседних блоков. Учитываются режим кодирования каждого блока, параметры квантования, используемые для остаточного кодирования, и соседние пиксельные разности на границе. Идентичный критерий/классификация применяется для всех кадров, и дополнительные данные не передаются. Фильтр удаления блочности повышает визуальное качество текущего кадра посредством удаления артефактов блочности, и он также улучшает оценку движения и компенсацию движения для последующих кадров. Фактически, высокие частоты артефакта блочности удаляются, и в силу этого данные высокие частоты не должны компенсироваться с помощью остатка текстуры следующих кадров.

После фильтра удаления блочности восстановление с удаленной блочностью фильтруется посредством контурного фильтра на основе адаптивного к выборке смещения (SAO) на этапе 104. Результирующий кадр 105 затем фильтруется с помощью адаптивного контурного фильтра (ALF) на этапе 106, чтобы формировать восстановленный кадр 107, который должен отображаться и использоваться в качестве опорного кадра для следующих внешних кадров.

Цель контурного SAO-фильтра и ALF состоит в том, чтобы улучшать восстановление кадра посредством отправки дополнительных данных, в отличие от фильтра удаления блочности, в котором информация не передается.

Принцип контурного SAO-фильтра состоит в том, чтобы классифицировать каждый пиксел на класс и суммировать идентичное значение смещения с соответствующим пиксельным значением каждого пиксела класса. Таким образом, одно смещение передается для каждого класса. Контурная SAO-фильтрация предоставляет два вида классификации для области кадра: краевое смещение и полосовое смещение. Классификация краевых смещений заключает в себе определение класса для каждого пиксела посредством сравнения его соответствующего пиксельного значения с пиксельными значениями двух соседних пикселов. Кроме того, два соседних пиксела зависят от параметра, который указывает направление 2 соседних пикселов. Эти направления составляют 0 градусов (горизонтальное направление), 45 градусов (диагональное направление), 90 градусов (вертикальное направление) и 135 градусов (второе диагональное направление). Направление, которое должно быть использовано, задается посредством SAO-параметра, называемого sao_type_idx в текущих технических спецификациях HEVC. Его значение типично варьируется от нуля до пяти, как показано в таблице 1 приложения. Sao_type_idx также используется для того, чтобы указывать, должна или нет выполняться SAO-фильтрация и тип SAO-фильтрации.

Для иллюстрации, смещение, которое должно суммироваться с пиксельным значением C (или выборкой), может быть определено, для данного направления, согласно правилам, как указано в таблице 2 приложения, при этом Cn1 и Cn2 обозначают значение двух соседних пикселов или выборок (согласно данному направлению). Соответственно, когда значение C меньше двух значений Cn1 и Cn2, смещение, которое должно суммироваться с C, составляет +O1, когда оно меньше Cn1 или Cn2 и равно другому значению (Cn1 или Cn2), смещение, которое должно быть использовано, составляет +O2, когда оно превышает Cn1 или Cn2, и равно другому значению (Cn1 или Cn2), смещение, которое должно быть использовано, составляет -O3, а когда оно превышает Cn1 и Cn2, смещение, которое должно быть использовано, составляет -O4. Когда ни одно из этих условий не удовлетворяется, значение смещения не суммируется с текущим пиксельным значением C.

Следует отметить, что согласно режиму краевого смещения, только абсолютное значение каждого смещения кодируется в потоке битов, причем знак, который должен применяться, определяется в качестве функции от категории, которой принадлежит текущий пиксел. Следовательно, согласно таблице 2 приложения, положительное смещение ассоциировано с категориями 1 и 2, в то время как отрицательное смещение ассоциировано с категориями 3 и 4.

Второй тип классификации представляет собой классификацию полосовых смещений, которая зависит от пиксельного значения. Класс в полосовом SAO-смещении соответствует диапазону пиксельных значений. Таким образом, идентичное смещение добавляется во все пикселы, имеющие пиксельное значение в данном диапазоне пиксельных значений.

Чтобы обеспечивать большую адаптивность к контенту кадра, SAO-фильтрация применяется к нескольким областям кадра, которые разделяют текущий кадр на несколько пространственных областей. В настоящее время, области кадра соответствуют конечному номеру наибольшей единицы кодирования в HEVC. Следовательно, одна область кадра может фильтроваться или не фильтроваться посредством SAO, так что фильтруются только некоторые области кадра. Кроме того, когда активируется SAO, используется только одна SAO-классификация: краевое смещение или полосовое смещение, согласно связанным параметрам, передаваемым для каждой классификации. В завершение, для каждого концевого SAO-узла, передается SAO-классификация, а также ее параметры и смещения всех классов.

Изображение видеоданных, которые должны кодироваться, может предоставляться в качестве набора двумерных матриц (также известных как цветовые каналы) значений выборки, каждая запись которых представляет интенсивность цветового компонента, к примеру, показатель интенсивности яркости и интенсивности цветности от нейтрального полутонового цвета к синему или красному (YUV), либо показатель интенсивности компонентов красного, зеленого или синего света (RGB). YUV-модель задает цветовое пространство с точки зрения одного компонента сигнала (Y) яркости и двух компонентов цветности (UV). В общем, Y означает компонент сигнала яркости, а U и V - компоненты цветности (цвета) или сигнала цветности.

SAO-фильтрация типично применяется независимо для компонента сигнала яркости и для компонентов сигнала цветности U и V.

Известная реализация полосового SAO-смещения разбивает диапазон пиксельных значений на 32 предварительно заданных диапазона идентичного размера, как проиллюстрировано на фиг. 2. Минимальное значение диапазона пиксельных значений всегда равно нулю, а максимальное значение зависит от битовой глубины пиксельных значений согласно следующей взаимосвязи Max=2Bitdepth-1.

Разбиение полного диапазона пиксельных значений на 32 диапазона обеспечивает использование пяти битов для классификации каждого пиксела, обеспечивая возможность быстрой классификации. Соответственно, только 5 битов проверяются, чтобы классифицировать пиксел в одном из 32 классов или диапазонах полного диапазона. Это, в общем, выполняется посредством проверки пяти старших битов значений, кодированных для 8 битов.

Например, когда битовая глубина составляет 8 битов, максимальное возможное значение пиксела составляет 255. Таким образом, диапазон пиксельных значений составляет между 0 и 255. Для этой битовой глубины 8 битов каждый класс включает в себя диапазон из 8 пиксельных значений.

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

Для иллюстрации, группа из четырех последовательных классов или диапазонов 201-204 пикселов, которые должны быть фильтрованы, представляется на фиг. 2 в качестве серой области. Как описано выше, эта группа может быть идентифицирована посредством ее позиции (например, sao_band_position). Согласно данному примеру, класс или диапазон 201 связан с пикселами, имеющими значения, содержащиеся между 64 и 71. Аналогично, классы или диапазоны 202-204 связаны с пикселами, имеющими значения, содержащиеся значения между 72 и 79, 80 и 87, 88 и 96, соответственно.

Фиг. 3 является блок-схемой последовательности операций, иллюстрирующей этапы способа для выбора смещений в кодере для текущей области 303 кадра (типично LCU-блока, соответствующего одному компоненту обработанного изображения). Область кадра содержит N пикселов. На начальном этапе 301 переменные Sumj и SumNbPixj задаются равными значению нуль для каждого из четырех диапазонов; j обозначает текущее число диапазонов или классов. Sumj обозначает сумму разности между значением пикселов в диапазоне j и значением их соответствующих исходных пикселов. SumNbPixj обозначает число пикселов в диапазоне j.

На этапе 302, счетная переменная i задается равной значению нуль. Затем, первый пиксел Pi области 303 кадра извлекается на этапе 304, и число J классов, соответствующее текущему пикселу Pi, получается на этапе 305. Затем, на этапе 306 выполняется тест, чтобы определять то, соответствует или нет число J классов текущего пиксела Pi значению "Н/д", как описано выше в отношении таблицы 2 приложения. Если число J классов текущего пиксела Pi соответствует значению "Н/д", значение счетной переменной i увеличивается на единицу, чтобы классифицировать последующие пикселы области 303 кадра. В противном случае, если число J классов текущего пиксела Pi не соответствует значению "Н/д", переменная SumNbPixj, соответствующая текущему пикселу Pi, увеличивается на единицу, и разность между Pi и его исходным значением Piorg суммируется с Sumj на этапе 307.

На следующем этапе счетная переменная i увеличивается на единицу с тем, чтобы применять классификацию к другим пикселам области 303 кадра. На этапе 309 определяется то, все или нет N пикселов области 303 кадра классифицированы (т.е. i≥N); если да, Offsetj для каждого класса вычисляется на этапе 310, чтобы формировать таблицу 311 смещений, представляющую смещение для каждого класса j в качестве окончательного результата алгоритма выбора смещения. Это смещение вычисляется в качестве среднего разности между пиксельными значениями пикселов класса j и их соответствующими исходными пиксельными значениями. Offsetj для класса j задается посредством следующего уравнения:

Вычисленное смещение Offsetj может рассматриваться как оптимальное смещение с точки зрения искажения. Оно упоминается как Ooptj далее. Из этого смещения, можно определять улучшенное значение 0_RDj смещения согласно критерию искажения в зависимости от скорости передачи.

Фиг. 4 является блок-схемой последовательности операций, иллюстрирующей этапы способа для определения улучшенного смещения согласно критерию искажения в зависимости от скорости передачи. На начальном этапе 401, значение Jj искажения в зависимости от скорости передачи текущего числа диапазонов или классов инициализируется равным предварительно определенному максимальному возможному значению (MAX_VALUE).

Затем, на этапе 402 начинается контур для того, чтобы инструктировать смещению Oj варьироваться от Ooptj до нуля. Если значение Ooptj является отрицательным, переменная Oj увеличивается на единицу до тех пор, пока она не достигнет нуля, а если значение Ooptj является положительным, переменная Oj уменьшается на единицу до тех пор, пока она не достигнет нуля.

На этапе 403, вычисляется функция затрат на искажение в зависимости от скорости передачи, связанная с переменной Oj, обозначаемой J(Oj), например, согласно следующей формуле:

λ является параметром Лагранжа, и R(Oj) является функцией, которая предоставляет число битов, необходимое для кодового слова, ассоциированного с Oj. Часть формулы, соответствующая SumNbPixj × Oj × Oj-Sumj × Oj × 2, относится к улучшению с точки зрения искажения, заданному посредством смещения Oj.

На этапе 404, значения J(Oj) и Jj сравниваются между собой. Если значение J(Oj) меньше значения Jj, то Jj задается равным значению J(Oj), а O_RDj задается равным значению Oj.

На этапе 405 определяется то, все или нет возможные значения смещения Oj обработаны (т.е. Oj=0). Если смещение Oj равно нулю, контур завершается, и идентифицируется улучшенное значение (O_RDj) смещения для класса j. В противном случае, контур продолжается для следующего значения Oj.

Следует отметить, что алгоритм, описанный в отношении фиг. 3, может быть использован для того, чтобы определять позицию первого класса или диапазона (sao_band_position) согласно типу классификации полосовых смещений. С этой целью, индекс j представляет значение интервала [0, 32] (вместо [1, 4]). Другими словами, значение 4 заменяется на значение 32 в модулях 301, 310 и 311 по фиг. 3.

Более конкретно, разность Sumj между значением текущего пиксела и его исходным значением Porgi может быть вычислена для каждого из 32 классов, представленных на фиг. 2, другими словами для каждого диапазона j (j принадлежит интервалу [0, 32]).

Затем, улучшенное смещение 0_RDj, с точки зрения искажения в зависимости от скорости передачи, может быть вычислено для 32 классов согласно алгоритму, аналогичному алгоритму, описанному в отношении фиг. 4.

Далее может определяться позиция первого класса или диапазона.

Фиг. 5 является блок-схемой последовательности операций, иллюстрирующей этапы способа для определения полосовой SAO-позиции для полосового SAO-смещения HEVC. Поскольку эти этапы выполняются после этапов, описанных в отношении фиг. 4, значение искажения в зависимости от скорости передачи, обозначаемое Jj, уже вычислено для каждого класса j.

На начальном этапе 501 значение J искажения в зависимости от скорости передачи инициализируется равным предварительно определенному максимальному возможному значению (MAX_VALUE). Затем, на этапе 502 начинается контур для того, чтобы инструктировать индексу i варьироваться от нуля до 27 согласно 28 возможным позициям первого класса группы из четырех последовательных классов.

На этапе 503, переменная J′j, соответствующая значению искажения в зависимости от скорости передачи текущей полосы, другими словами полосы, содержащей четыре последовательных класса из класса, имеющего индекс i, инициализируется равной нулю. Затем, на этапе 504 начинается контур для того, чтобы инструктировать индексу j варьироваться от I до i+3 согласно 4 классам текущей полосы.

Затем, на этапе 505, значение переменной J′i увеличивается на значение искажения в зависимости от скорости передачи класса, имеющего индекс j (Jj). Этот этап повторяется для четырех классов текущей полосы, другими словами, до тех пор, пока индекс j не достигнет i+3 (этап 506). На этапе 507, выполняется тест, чтобы определять то, меньше или нет значение J′j искажения в зависимости от скорости передачи текущей полосы значения J искажения в зависимости от скорости передачи. Если значение J′j искажения в зависимости от скорости передачи текущей полосы меньше значения J искажения в зависимости от скорости передачи, значение J искажения в зависимости от скорости передачи задается равным значению искажения J′j в зависимости от скорости передачи текущей полосы, и значение полосовой позиции, обозначаемое sao_band_position, задается равным значению индекса i.

Эти этапы повторяются для 28 возможных позиций первого класса группы из четырех последовательных классов (этап 508), чтобы определять полосовую позицию, которая должна быть использована.

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

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

На начальном этапе 601, получаются параметры SAO-фильтрации, например, из принимаемого потока битов. Для данной области кадра эти параметры типично содержат четыре смещения, которые могут быть сохранены в таблице 603, и параметр sao_type_idx. В зависимости от последнего, эти параметры дополнительно могут содержать полосовую SAO-позицию. Для иллюстрации, если полученный параметр типа sao_type_idx равен пяти, то получается соответствующий параметр типа sao_band_position (602). Могут быть получаться другие параметры, к примеру, параметры, позволяющие определять значение SAO-параметра данной области кадра в качестве функции от значения соответствующего параметра области предыдущего кадра. Следует отметить, что данное значение данного SAO-параметра, к примеру, значение нуль для параметра sao_type_idx может указывать, что SAO-фильтрация не должна применяться.

На этапе 604, счетная переменная j задается равной значению нуль. Затем, первый пиксел Pi области 605 кадра, содержащей N пикселов, извлекается на этапе 606 и классифицируется на этапе 607 согласно классификации краевых смещений или классификации полосовых смещений, как описано выше.

На этапе 608 выполняется тест, чтобы определять то, принадлежит или нет пиксел Pi классу пикселов, которые должны быть фильтрованы. Если пиксел Pi принадлежит классу пикселов, которые должны быть фильтрованы, его связанное число j классов идентифицируется, и его связанное значение Offsetj смещения получается на этапе 610 из таблицы смещений 603. Затем, на этапе 611, Offsetj суммируется со значением пиксела Pi, чтобы формировать новое пиксельное значение, упоминаемое как P′i (612). На этапе 613, пиксел P′i заменяет пиксел Pi в области 616 обработанного кадра. В противном случае, если пиксел Pi не принадлежит классу пикселов, которые должны быть фильтрованы, пиксел Pi 609 остается неизменным в области кадра на этапе 613.

Затем, после обработки пиксела Pi счетная переменная i увеличивается на единицу на этапе 614 с тем, чтобы применять фильтр аналогично следующему пикселу области 605 текущего кадра.

На этапе 615 определяется то, все или нет N пикселов области 605 текущего кадра обработаны (i≥N). Если да, область 616 обработанного кадра восстанавливается и может добавляться в восстановленный SAO-кадр, как описано выше в отношении фиг. 1 (ссылка с номером 105).

Недостаток известного процесса для выбора и передачи компенсаций состоит в том, что большое число параметров должно быть передано из кодера в декодер и сохранено в SAO-буфере. Кроме того, процесс, выполняемый посредством декодера для декодирования и обработки этих параметров, является сложным.

Настоящее изобретение разработано, чтобы разрешать одну или более вышеприведенных проблем.

Согласно первому аспекту настоящего изобретения, предусмотрен способ кодирования, по меньшей мере, части изображения, содержащего множество выборок, причем каждая выборка содержит по меньшей мере два компонента, причем закодированное изображение содержит по меньшей мере один параметр фильтрации, при этом способ содержит:

- кодирование первого и второго компонента по меньшей мере одной выборки изображения, чтобы предоставлять по меньшей мере одну закодированную выборку;

- декодирование по меньшей мере одной закодированной выборки;

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

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

Согласно второму аспекту настоящего изобретения, предусмотрен способ декодирования, по меньшей мере, части изображения, содержащего множество выборок, причем каждая выборка содержит по меньшей мере два компонента, причем закодированное изображение содержит по меньшей мере один параметр фильтрации, при этом способ содержит:

- декодирование первого и второго компонента по меньшей мере одной закодированной выборки, чтобы предоставлять первый и второй компонент по меньшей мере одной восстановленной выборки;

- декодирование по меньшей мере одного параметра фильтрации;

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

Согласно третьему аспекту настоящего изобретения, предусмотрено устройство кодирования для кодирования, по меньшей мере, части изображения, содержащего множество выборок, причем каждая выборка содержит по меньшей мере два компонента, причем закодированное изображение содержит по меньшей мере один параметр фильтрации, причем устройство кодирования содержит:

- средство для кодирования первого и второго компонента по меньшей мере одной выборки изображения, чтобы предоставлять по меньшей мере одну закодированную выборку;

- средство для декодирования по меньшей мере одной закодированной выборки;

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

Согласно четвертому аспекту настоящего изобретения, предусмотрено устройство декодирования для декодирования, по меньшей мере, части изображения, содержащего множество выборок, причем каждая выборка содержит по меньшей мере два компонента, причем закодированное изображение содержит по меньшей мере один параметр фильтрации, причем устройство декодирования содержит:

- средство для декодирования первого и второго компонента по меньшей мере одной закодированной выборки, чтобы предоставлять первый и второй компонент по меньшей мере одной восстановленной выборки;

- средство для декодирования по меньшей мере одного параметра фильтрации;

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

По меньшей мере, части способов согласно изобретению могут быть реализованы компьютером. Соответственно, настоящее изобретение может принимать форму полностью аппаратного варианта осуществления, полностью программного варианта осуществления (включающего в себя микропрограммное обеспечение, резидентное программное обеспечение, микрокод и т.д.) или варианта осуществления, комбинирующего программные и аппаратные аспекты, которые могут совместно, в общем, упоминаться в данном документе как "схема", "модуль" или "система". Кроме того, настоящее изобретение может принимать форму компьютерного программного продукта, осуществленного в любом материальном носителе, в представлении, имеющем применяемый компьютером программный код, осуществленный на носителе.

Поскольку настоящее изобретение может быть реализовано в программном обеспечении, настоящее изобретение может быть осуществлено в качестве считываемого компьютером кода для предоставления в программируемое устройство на любом подходящем носителе. Материальный носитель может содержать носитель данных, такой как гибкий диск, CD-ROM, жесткий диск, устройство на магнитных лентах или полупроводниковое запоминающее устройство и т.п. Переходная несущая среда может включать в себя такой сигнал, как электрический сигнал, электронный сигнал, оптический сигнал, акустический сигнал, магнитный сигнал либо электромагнитный сигнал, например, микроволновый или RF-сигнал.

Таким образом, согласно пятому аспекту настоящего изобретения, предусмотрен компьютерный программный продукт для программируемого устройства, причем компьютерный программный продукт содержит последовательность инструкций для реализации каждого этапа способа, осуществляющего вышеуказанный первый или второй аспект настоящего изобретения, при загрузке и исполнении посредством программируемого устройства.

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

Далее описываются варианты осуществления изобретения, только в качестве примера и со ссылкой на прилагаемые чертежи, на которых:

Фиг. 1 является блок-схемой последовательности операций способа, иллюстрирующей этапы процесса контурной фильтрации предшествующего уровня техники;

Фиг. 2 графически иллюстрирует классификацию адаптивного к выборке полосового смещения HEVC-процесса предшествующего уровня техники;

Фиг. 3 является блок-схемой последовательности операций способа, иллюстрирующей этапы процесса для определения компенсационных смещений для полосового SAO-смещения HEVC;

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

Фиг. 5 является блок-схемой последовательности операций, иллюстрирующей этапы способа для определения полосовой SAO-позиции для полосового SAO-смещения HEVC;

Фиг. 6 является блок-схемой последовательности операций, иллюстрирующей этапы способа для фильтрации области кадра согласно контурному SAO-фильтру;

Фиг. 7 является блок-схемой, схематично иллюстрирующей систему передачи данных, в которой могут быть реализованы один или более вариантов осуществления изобретения;

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

Фиг. 9 является блок-схемой последовательности операций, иллюстрирующей этапы способа кодирования согласно вариантам осуществления изобретения;

Фиг. 10 является блок-схемой последовательности операций способа, иллюстрирующей этапы процесса контурной фильтрации в соответствии с одним или более вариантов осуществления изобретения;

Фиг. 11 является блок-схемой последовательности операций, иллюстрирующей этапы способа декодирования согласно вариантам осуществления изобретения;

Фиг. 12 является блок-схемой последовательности операций, иллюстрирующей этапы способа для получения SAO-параметров из потока битов согласно режиму адаптивного набора параметров;

Фиг. 13 является блок-схемой последовательности операций, иллюстрирующей этапы способа для получения SAO-параметров из потока битов согласно LCU-режиму;

Фиг. 14 является блок-схемой последовательности операций, иллюстрирующей этапы способа для считывания SAO-параметров в потоке битов;

Фиг. 15 и 16 являются блок-схемами последовательности операций, иллюстрирующими этапы способа согласно первому варианту осуществления изобретения для определения параметров, которые должны быть использованы в контурном фильтре для обработки области текущего кадра;

Фиг. 17 иллюстрирует конкретный вариант осуществления, согласно которому значения смещений, ассоциированных с компонентом, соответствуют зеркальным значениям смещений, ассоциированных со вторым компонентом;

Фиг. 18 иллюстрирует то, как значения смещений, ассоциированных со вторым компонентом, могут быть получены из значений смещений, ассоциированных с первым компонентом, при применении контурного SAO-фильтра с использованием классификации полосовых смещений;

Фиг. 19 иллюстрирует то, как значение параметра sao_band_position, ассоциированного со вторым компонентом Z, может быть получено из значения параметра sao_band_position, ассоциированного с первым компонентом X, при применении контурного SAO-фильтра с использованием классификации полосовых смещений;

Фиг. 20 является блок-схемой последовательности операций, иллюстрирующей этапы способа для определения оптимального смещения, которое должно быть использовано посредством двух или трех компонентов согласно критерию искажения в зависимости от скорости передачи;

Фиг. 21 является блок-схемой последовательности операций, иллюстрирующей этапы способа для определения полосовой SAO-позиции, совместно используемой двумя компонентами;

Фиг. 22 является блок-схемой последовательности операций, иллюстрирующей этапы способа для декодирования потока битов согласно конкретному варианту осуществления изобретения; и

Фиг. 23 иллюстрирует использование SAO-классификации одного компонента X для того, чтобы аналогично фильтровать другой компонент Z