ДЕБЛОКИРУЮЩАЯ ФИЛЬТРАЦИЯ
DEBLOCKING FILTRATION

ОБЛАСТЬ ТЕХНИКИ
Настоящее описание относится к фильтрации для удаления блочности для уменьшения артефактов блокирования на границах блоков.
УРОВЕНЬ ТЕХНИКИ
Деблокирующие фильтры используются в стандартах кодирования видеосигнала для борьбы с артефактами блочности. Артефакты блочности возникают из-за того, что исходное видео делится на блоки, которые обрабатываются относительно независимо. Артефакты блочности могут возникать, например, вследствие разных внутренних предсказаний блоков, эффектов квантования и компенсации движения. Ниже описаны два конкретных варианта деблокирования (удаления блочности).
ДЕБЛОКИРОВАНИЕ H.264
При традиционном кодировании видеосигнала, например H.264, предусмотрен фильтр удаления блочности, также именуемый контурным фильтром, после предсказания и реконструкции остатка, но до сохранения реконструкции для дальнейшего обращения при кодировании или декодировании последующих кадров. Фильтрация для удаления блочности состоит из нескольких этапов, например, решений по фильтру, операций фильтрации, ограничивающей функции и изменений пиксельных значений. Решение, фильтровать или не фильтровать границу, принимается на основании оценивания нескольких условий. Решения по фильтрации зависят от типа макроблока (MB), разности векторов движения (MV) между соседними блоками, имеют ли соседние блоки кодированные остатки, и от локальной структуры текущего и/или соседних блоков.
Кроме того, степень фильтрации для пикселя зависит, помимо прочего, от позиции этого пикселя относительно границы блоков и от значения параметра квантования (QP), используемого для кодирования остатка.
Решение по фильтрации основано на сравнении трех пиксельных разностей с тремя порогами. Пороги адаптированы к параметру квантования (QP). Например, рассмотрим вертикальную границу блоков в виде
a b c d | e f g h,
где a, b c и d обозначают пиксельные значения пикселей строки пикселей в текущем блоке, при этом e, f, g и h обозначают соответствующие пиксельные значения пикселей соответствующей строки пикселей в соседнем блоке. Если следующие условия выполняются, принимается положительное решение по фильтрации, например abs(d-e)<thr1, abs(c-d)<thr2 и abs(e-f)<thr2, где thr1 и thr2 адаптированы на основании QP.
В H.264 предусмотрены два режима фильтрации. В первом режиме фильтрации, именуемом нормальной фильтрацией, фильтрацию можно описать значением дельта, с которым фильтрация изменяет текущее значение. Фильтрация для пикселей, ближайших к границе блоков, выражается как d'=d+ дельта и e'=e - дельта, где дельта ограничена порогом ±thr3 до значения, ограниченного QP. Таким образом, для высокого QP допустима большая фильтрация, чем для низкого QP. Ограничение можно описать как дельта_ограниченная = max(-thr3,min(thr3,дельта)), где thr3 управляет «силой» (степенью фильтрации) фильтра. Большее значение thr3 означает более сильную фильтрацию, а это, в свою очередь, означает, что будет иметь место эффект более сильной низкочастотной фильтрации.
Сила фильтра может возрастать, если любое из следующих двух условий также выполняется, например abs(b-d)<thr2 и abs(e-g)<thr2. Сила фильтра адаптируется за счет меньшего ограничения на дельту, например, увеличения возможности изменения.
Второй режим фильтрации, именуемый сильной фильтрацией, применяется только для внутренних границ макроблока, когда выполняется следующее условие abs(d-e)<thr1/4.
Дополнительную информацию о фильтрации для удаления блочности в H.264 можно найти у автора List и др., Adaptive Deblocking Filter, IEEE Transactions on Circuits and Systems for Video Technology, vol. 13, no. 7, July 2003.
ДЕБЛОКИРОВАНИЕ В ПРОЕКТЕ HEVC
В спецификации проекта HEVC (High Efficiency Video Coding, кодирование видео с высокой эффективностью) “Test Model under Consideration”, документ ITU-T SG16 WP3, JCTVC-B205, глава 6.5 In-loop filter process, фильтр удаления блочности работает иначе, чем в H.264. Фильтрация осуществляется, если, по меньшей мере, один из блоков на стороне границы является внутренним, или имеет ненулевые коэффициенты, или разность между компонентами вектора движения блоков больше или равна одному целому пикселю. Например, при фильтрации границы между блоками с вертикальной границей блоков в виде
i
i
i
i
i
i
i
i
p3 p2 p1 p0|q0 q1 q2 q3,
i
i
где pj обозначает пиксельное значение пикселя номер j строки номер i в текущем блоке, и qj обозначает пиксельное значение пикселя номер j строки номер i в соседнем блоке, i=0…7, j=0…3, должно также выполняться следующее условие:
d
2
2
2
2
2
2
5
5
5
5
5
5
=|p2-2×p1+p0|+|q2-2×q1+q0|+|p2-2×p1+p0|+|q2-2×q1+q0|<β,
где β зависит от QP. В вышеупомянутой спецификации HEVC приведена таблица значений β, где β возрастает с QP.
Если условия выполняются, и производится фильтрация между текущим блоком и соседним блоком осуществляется, один из двух типов фильтрации, именуемых слабой и сильной фильтрацией, соответственно. Выбор между сильной и слабой фильтрацией производится по отдельности для каждой линии в зависимости от следующих условий. Для каждой линии i=0…7, сильная фильтрация осуществляется, если выполняются все следующие условия, в противном случае осуществляется слабая фильтрация:
d<(β>>2)
i
i
i
i
(|p3-p0|+|q0-q3|)<(β>>3)
i
i
C
|p0-q0|<((5×t+1)>>1),
C
где t и β зависят от QP, и >> обозначает оператор сдвига вправо.
СЛАБАЯ ФИЛЬТРАЦИЯ В ПРОЕКТЕ HEVC
Слабая фильтрация осуществляется на основании вышеописанных условий. Фактическая фильтрация действует путем вычисления смещения (Δ), прибавления его к исходному пиксельному значению и ограничения суммы фильтрованным выходным пиксельным значением в диапазоне 0-255:
C
C
i
i
i
i
i
i
Δ=Clip(-t,t,(13×(q0-p0)+4×(q1-p1)-5×(q2-p2)+16)>>5))
i
0-255
i
p0=Clip(p0+Δ)
i
0-255
i
q0=Clip(q0-Δ)
i
0-255
i
p1=Clip(p1+Δ/2)
i
0-255
i
q1=Clip(q1-Δ/2),
0-255
где ограничивающая функция Clip(A,B,x) определяется как Clip(A,B,x)=A, если x<A, Clip(A,B,x)=B, если x>B, и Clip(A,B,x)=x, если A≤x≤B и Clip(x) определяется как Clip(0,255,x).
СИЛЬНАЯ ФИЛЬТРАЦИЯ В ПРОЕКТЕ HEVC
Режим сильной фильтрации осуществляется следующим набором операций:
i
0-255
i
i
i
i
i
p0=Clip((p2+2×p1+2×p0+2×q0+q1+4)>>3)
i
0-255
i
i
i
i
i
q0=Clip((p1+2×p0+2×q0+2×q1+q2+4)>>3)
i
0-255
i
i
i
i
p1=Clip((p2+p1+p0+q0+2)>>2)
i
0-255
i
i
i
i
q1=Clip((p0+q0+q1+q2+2)>>2)
i
0-255
i
i
i
i
i
p2=Clip((2×p3+3×p2+p1+p0+q0+4)>>3)
i
0-255
i
i
i
i
i
q2=Clip((p0+q0+q1+3×q2+2×q3+4)>>3)
i
i
i
i
Одна проблема с удалением блочности в HEVC состоит в том, что слабый фильтр не обладает хорошими низкочастотными характеристиками. Можно видеть, что первый и второй пиксели от границы блоков изменяются путем прибавления или вычитания Δ и Δ/2 соответственно. Такой фильтр не может удалять высокие частоты, которые могут возникать вблизи границы блоков и не может удалять звон. Кроме того, частотные характеристики фильтра в HEVC демонстрируют небольшое усиление более высоких частот при фильтрации второго пикселя (p1 и q1) от границы блоков, что может приводить к ухудшению характеристики частота следования (битов) -искажение (RD) кодера. Кроме того, смещение для пикселя p1 равно по величине смещению пикселя q1, хотя структура сигнала может различаться на разных сторонах границы блоков. Таким образом, фильтр HEVC не обладает хорошей адаптируемостью к локальной структуре стороны границы блоков.
Следовательно, существует потребность в эффективном фильтре удаления блочности, который можно использовать для уменьшения артефактов блочности на границах блоков и который не имеет вышеупомянутых недостатков.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Общей задачей является борьба с артефактами блочности на границах блоков между блоками пикселей в кадре видео.
Эта и другие цели достигаются раскрытыми здесь вариантами осуществления.
Аспект вариантов осуществления задает способ уменьшения артефактов блочности на границе блоков между блоком пикселей и соседним блоком пикселей в кадре видео. Способ вычисляет первое смещение на основании (9×(q0-p0)-3×(q1-p1))/16, где p0 обозначает пиксельное значение пикселя, ближайшего к границе блоков на линии пикселей в блоке, p1 обозначает пиксельное значение пикселя, следующего ближайшего к границе блоков на линии пикселей, q0 обозначает пиксельное значение пикселя, ближайшего к границе блоков на соответствующей линии пикселей в соседнем блоке, и q1 обозначает пиксельное значение пикселя, следующего ближайшего к границе блоков на соответствующей линии пикселей. Линия пикселей и соответствующая линия пикселей перпендикулярны к границе блоков. Пиксельное значение пикселя, ближайшего к границе блоков на линии пикселей, изменяется путем прибавления первого смещения к пиксельному значению этого пикселя для формирования измененного пиксельного значения. Соответственно, пиксельное значение пикселя, ближайшего к границе блоков, но на соответствующей линии пикселей изменяется путем вычитания первого смещения из пиксельного значения этого пикселя для формирования измененного пиксельного значения.
В необязательном варианте осуществления этого аспекта, первое смещение вычисляется равным (9×(q0-p0)-3×(q1-p1)+8)>>4, где >> обозначает операцию сдвига вправо.
C
C
C
C
C
C
C
В необязательном варианте осуществления этого аспекта, способ дополнительно содержит ограничение первого смещения, чтобы было в интервале от -t до t путем задания первого смещения равным -t, если первое смещение меньше -t, и путем задания первого смещения равным t, если первое смещение больше t, где t - пороговое значение, которое зависит от значения параметра квантования, присвоенного блоку.
В необязательном варианте осуществления этого аспекта, способ дополнительно содержит ограничение измененного пиксельного значения пикселя, ближайшего к упомянутой границе блоков на линии пикселей, чтобы было в интервале от нуля до заданного максимального значения и ограничение измененного пиксельного значения пикселя, ближайшего к границе блоков на соответствующей линии пикселей, чтобы было в интервале от нуля до заданного максимального значения. Это необязательное ограничение достигается путем задания измененного пиксельного значения равным нулю, если измененное пиксельное значение меньше нуля, и путем задания измененного пиксельного значения равным заданному максимальному значению, если измененное пиксельное значение больше заданного максимального значения.
В необязательном варианте осуществления этого аспекта, способ дополнительно содержит вычисление второго смещения на основании (p2+p0-2×p1+2×Δ)/4, где p2 обозначает пиксельное значение пикселя, второго следующего ближайшего к границе блоков на линии пикселей, и Δ обозначает первое смещение. Способ также содержит, в этом необязательном варианте осуществления, вычисление третьего смещения на основании (q2+q0-2×q1-2×Δ)/4, где q2 обозначает пиксельное значение пикселя, второго следующего ближайшего к границе блоков на соответствующей линии пикселей. Затем пиксельное значение пикселя, следующего ближайшего к границе блоков на линии пикселей изменяется путем прибавления второго смещения к пиксельному значению пикселя, следующего ближайшего к границе блоков на линии пикселей, для формирования измененного пиксельного значения. Соответственно, способ также содержит, в этом необязательном варианте осуществления, изменение пиксельного значения пикселя, следующего ближайшего к границе блоков на соответствующей линии пикселей, путем прибавления третьего смещения к пиксельному значению пикселя, следующего ближайшего к границе блоков на соответствующей линии пикселей, для формирования измененного пиксельного значения.
В необязательном варианте осуществления этого аспекта, второе смещение вычисляется равным (((p2+p0+1)>>1)-p1+Δ)>>1, где >> обозначает операцию сдвига вправо, и третье смещение вычисляется равным (((q2+q0+1)>>1)-q1-Δ)>>1.
C2
C2
C2
C2
C2
C2
C2
C2
C2
В необязательном варианте осуществления этого аспекта, способ дополнительно содержит ограничение второго смещения интервалом от -t до t и ограничение третьего смещения интервалом от -t до t, где t - пороговое значение, которое зависит от значения параметра квантования, присвоенного блоку. Это необязательное ограничение достигается путем задания второго или третьего смещения равным -t, если второе или третье смещение меньше -t, и путем задания второго или третьего смещения равным t, если второе или третье смещение больше t.
В необязательном варианте осуществления этого аспекта, способ дополнительно содержит ограничение измененного пиксельного значения пикселя, следующего ближайшего к границе блоков на линии пикселей, интервалом от нуля до заданного максимального значения и ограничение измененного пиксельного значения пикселя, следующего ближайшего к границе блоков на соответствующей линии пикселей, интервалом от нуля до заданного максимального значения. Это необязательное ограничение достигается путем задания измененного пиксельного значения равным нулю, если измененное пиксельное значение меньше нуля, и путем задания измененного пиксельного значения равным заданному максимальному значению, если измененное пиксельное значение больше заданного максимального значения.
p1
p1
q1
q1
В необязательном варианте осуществления этого аспекта, способ дополнительно содержит вычисление четвертого смещения на основании (p3+p1-2×p2+2×Δ)/4, где p3 обозначает пиксельное значение пикселя, третьего следующего ближайшего к границе блоков на линии пикселей, и Δ обозначает второе смещение. Способ также содержит, в этом необязательном варианте осуществления, вычисление пятого смещения на основании (q3+q1-2×q2+2×Δ)/4, где q3 обозначает пиксельное значение пикселя, третьего следующего ближайшего к границе блоков на соответствующей линии пикселей, и Δ обозначает третье смещение. Пиксельное значение пикселя, второго следующего ближайшего к границе блоков на линии пикселей, изменяется путем прибавления четвертого смещения к пиксельному значению пикселя, второго следующего ближайшего к границе блоков на линии пикселей, для формирования измененного пиксельного значения. Способ также содержит, в этом необязательном варианте осуществления, изменение пиксельного значения пикселя, второго следующего ближайшего к границе блоков на соответствующей линии пикселей, путем прибавления пятого смещения к пиксельному значению пикселя, второго следующего ближайшего к границе блоков на соответствующей линии пикселей, для формирования измененного пиксельного значения.
p1
q1
В необязательном варианте осуществления этого аспекта, четвертое смещение вычисляется равным (((p3+p1+1)>>1)-p2+Δ)>>1, где >> обозначает операцию сдвига вправо, и пятое смещение вычисляется равным (((q3+q1+1)>>1)-q2+Δ)>>1.
В необязательном варианте осуществления этого аспекта, узел фильтрации для удаления блочности вычисляет первое смещение на основании (9×(q0-p0)-3×(q1-p1))/16. Узел фильтрации для удаления блочности изменяет пиксельное значение пикселя, ближайшего к границе блоков на линии пикселей, путем прибавления первого смещения к пиксельному значению пикселя, ближайшего к границе блоков на линии пикселей, для формирования измененного пиксельного значения. Узел фильтрации для удаления блочности также изменяет пиксельное значение пикселя, ближайшего к границе блоков на соответствующей линии пикселей, путем вычитания первого смещения из пиксельного значения пикселя, ближайшего к границе блоков на соответствующей линии пикселей, для формирования измененного пиксельного значения.
Другой аспект вариантов осуществления задает узел фильтрации для удаления блочности для уменьшения артефактов блочности на границе блоков между блоком пикселей и соседним блоком пикселей в кадре видео. Узел фильтрации для удаления блочности содержит вычислитель первого смещения, сконфигурированный с возможностью вычисления первого смещения на основании (9×(q0-p0)-3×(q1-p1))/16, где p0 обозначает пиксельное значение пикселя, ближайшего к границе блоков на линии пикселей в блоке, p1 обозначает пиксельное значение пикселя, следующего ближайшего к границе блоков на линии пикселей, q0 обозначает пиксельное значение пикселя, ближайшего к границе блоков на соответствующей линии пикселей в соседнем блоке, и q1 обозначает пиксельное значение пикселя, следующего ближайшего к границе блоков на соответствующей линии пикселей. Линия пикселей и соответствующая линия пикселей перпендикулярны к границе блоков. Узел фильтрации для удаления блочности также содержит модификатор пиксельного значения, сконфигурированный с возможностью изменения пиксельного значения пикселя, ближайшего к границе блоков на линии пикселей, путем прибавления первого смещения к пиксельному значению этого пикселя для формирования измененного пиксельного значения. Модификатор пиксельного значения также сконфигурирован с возможностью изменения пиксельного значения пикселя, ближайшего к границе блоков, но на соответствующей линии пикселей, путем вычитания первого смещения из пиксельного значения этого пикселя для формирования измененного пиксельного значения.
В необязательном варианте осуществления этого аспекта, вычислитель первого смещения сконфигурирован с возможностью вычисления первого смещения равным (9×(q0-p0)-3×(q1-p1)+8)>>4, где >> обозначает операцию сдвига вправо.
C
C
C
C
C
C
C
В необязательном варианте осуществления этого аспекта, узел фильтрации для удаления блочности содержит первый узел ограничения, сконфигурированный с возможностью ограничения первого смещения, чтобы было в интервале от -t до t путем задания первого смещения равным -t, если первое смещение меньше -t, и путем задания первого смещения равным t, если первое смещение больше t, где t - пороговое значение, которое зависит от значения параметра квантования, присвоенного блоку.
В необязательном варианте осуществления этого аспекта, узел фильтрации для удаления блочности содержит второй узел ограничения, сконфигурированный с возможностью ограничения измененного пиксельного значения пикселя, ближайшего к границе блоков на линии пикселей интервалом от нуля до заданного максимального значения, и ограничения измененного пиксельного значения пикселя, ближайшего к границе блоков на соответствующей линии пикселей, интервалом от нуля до заданного максимального значения. Это необязательное ограничение необязательным вторым узлом ограничения достигается путем задания измененного пиксельного значения равным нулю, если измененное пиксельное значение меньше нуля, и путем задания измененного пиксельного значения равным заданному максимальному значению, если измененное пиксельное значение больше заданного максимального значения.
В необязательном варианте осуществления этого аспекта, узел фильтрации для удаления блочности содержит вычислитель второго смещения, сконфигурированный с возможностью вычисления второго смещения на основании (p2+p0-2×p1+2×Δ)/4, где p2 обозначает пиксельное значение пикселя, второго следующего ближайшего к границе блоков на линии пикселей, и Δ обозначает первое смещение. Узел фильтрации для удаления блочности также содержит, в этом необязательном варианте осуществления, вычислитель третьего смещения, сконфигурированный с возможностью вычисления третьего смещения на основании (q2+q0-2×q1-2×Δ)/4, где q2 обозначает пиксельное значение пикселя, второго следующего ближайшего к границе блоков на соответствующей линии пикселей. В этом необязательном варианте осуществления, модификатор пиксельного значения сконфигурирован с возможностью изменения пиксельного значения пикселя, следующего ближайшего к границе блоков на линии пикселей, путем прибавления второго смещения к пиксельному значению пикселя, следующего ближайшего к границе блоков на линии пикселей, для формирования измененного пиксельного значения, и для изменения пиксельного значения пикселя, следующего ближайшего к границе блоков на соответствующей линии пикселей, путем прибавления третьего смещения к пиксельному значению пикселя, следующего ближайшего к границе блоков на соответствующей линии пикселей, для формирования измененного пиксельного значения.
В необязательном варианте осуществления этого аспекта, вычислитель второго смещения сконфигурирован с возможностью вычисления второго смещения равным (((p2+p0+1)>>1)-p1+Δ)>>1, где >> обозначает операцию сдвига вправо, и вычислитель третьего смещения сконфигурирован с возможностью вычисления третьего смещения равным (((q2+q0+1)>>1)-q1-Δ)>>1.
C2
C2
C2
C2
C2
C2
C2
C2
C2
В необязательном варианте осуществления этого аспекта, узел фильтрации для удаления блочности содержит третий узел ограничения, сконфигурированный с возможностью ограничения второго смещения интервалом от -t до t, и ограничения третьего смещения интервалом от -t до t, где t - пороговое значение, которое зависит от значения параметра квантования, присвоенного блоку. Это необязательное ограничение необязательным третьим узлом ограничения достигается путем задания второго или третьего смещения равным -t, если второе или третье смещение меньше -t, и путем задания второго или третьего смещения равным t, если второе или третье смещение больше t.
В необязательном варианте осуществления этого аспекта, узел фильтрации для удаления блочности содержит второй узел ограничения, сконфигурированный с возможностью ограничения измененного пиксельного значения пикселя, следующего ближайшего к границе блоков на линии пикселей, интервалом от нуля до заданного максимального значения, и ограничения измененного пиксельного значения пикселя, следующего ближайшего к границе блоков на соответствующей линии пикселей, интервалом от нуля до заданного максимального значения. Это необязательное ограничение необязательным вторым узлом ограничения достигается путем задания измененного пиксельного значения равным нулю, если измененное пиксельное значение меньше нуля, и путем задания измененного пиксельного значения равным заданному максимальному значению, если измененное пиксельное значение больше заданного максимального значения.
p1
p1
q1
q1
В необязательном варианте осуществления этого аспекта, узел фильтрации для удаления блочности содержит вычислитель четвертого смещения, сконфигурированный с возможностью вычисления четвертого смещения на основании (p3+p1-2×p2+2×Δ)/4, где p3 обозначает пиксельное значение пикселя, третьего следующего ближайшего к границе блоков на линии пикселей, и Δ обозначает второе смещение. Узел фильтрации для удаления блочности также содержит, в этом необязательном варианте осуществления, вычислитель пятого смещения, сконфигурированный с возможностью вычисления пятого смещения на основании (q3+q1-2×q2+2×Δ)/4, где q3 обозначает пиксельное значение пикселя, третьего следующего ближайшего к границе блоков на соответствующей линии пикселей, и Δ обозначает третье смещение. В этом необязательном варианте осуществления, модификатор пиксельного значения сконфигурирован с возможностью изменения пиксельного значения пикселя, второго следующего ближайшего к границе блоков на линии пикселей, путем прибавления четвертого смещения к пиксельному значению пикселя, второго следующего ближайшего к границе блоков на линии пикселей, для формирования измененного пиксельного значения, и изменения пиксельного значения пикселя, второго следующего ближайшего к границе блоков на соответствующей линии пикселей, путем прибавления пятого смещения к пиксельному значению пикселя, второго следующего ближайшего к границе блоков на соответствующей линии пикселей, для формирования измененного пиксельного значения.
p1
q1
В необязательном варианте осуществления этого аспекта, вычислитель четвертого смещения сконфигурирован с возможностью вычисления четвертого смещения равным (((p3+p1+1)>>1)-p2+Δ)>>1, где >> обозначает операцию сдвига вправо, и вычислитель пятого смещения сконфигурирован с возможностью вычисления пятого смещения равным (((q3+q1+1)>>1)-q2+Δ)>>1.
Дополнительные аспекты вариантов осуществления задают кодер и декодер, соответственно, содержащий заданный выше узел фильтрации для удаления блочности.
Кроме того, аспект вариантов осуществления задает пользовательское оборудование, содержащее память, сконфигурированную для хранения кодированных кадров видео, заданный выше декодер, сконфигурированный с возможностью декодирования кодированных кадров видео в декодированные кадры видео и медиаплеер, сконфигурированный с возможностью представления декодированных кадров видео в видеоданных, отображаемых на дисплее.
Другой аспект задает сетевое устройство, являющееся или принадлежащее узлу сети в сети связи между передающим узлом и принимающим пользовательским оборудованием. Сетевое устройство содержит заданный выше кодер и/или декодер.
Дополнительный аспект вариантов осуществления задает компьютерную программу для подавления артефактов блочности на границе блоков между блоком пикселей и соседним блоком пикселей в кадре видео. Компьютерная программа содержит кодовое средство, которое, при выполнении на компьютере, предписывает компьютеру вычислять смещение на основании (9×(q0-p0)-3×(q1-p1))/16, где p0 обозначает пиксельное значение пикселя, ближайшего к границе блоков на линии пикселей в блоке, p1 обозначает пиксельное значение пикселя, следующего ближайшего к границе блоков на линии пикселей, q0 обозначает пиксельное значение пикселя, ближайшего к границе блоков на соответствующей линии пикселей в соседнем блоке, и q1 обозначает пиксельное значение пикселя, следующего ближайшего к границе блоков на соответствующей линии пикселей. Линия пикселей и соответствующая линия пикселей перпендикулярны к границе блоков. Компьютеру также предписывается изменять пиксельное значение пикселя, ближайшего к границе блоков на линии пикселей, путем прибавления смещения к пиксельному значению этого пикселя. Кодовое средство дополнительно предписывает компьютеру изменять пиксельное значение пикселя, ближайшего к границе блоков на соответствующей линии пикселей, путем вычитания смещения из пиксельного значения этого пикселя.
Еще один аспект вариантов осуществления задает компьютерный программный продукт, содержащий машиночитаемое кодовое средство и заданную выше компьютерную программу, хранящуюся на машиночитаемом средстве.
Настоящие варианты осуществления позволяют эффективно подавлять артефакты блочности и также обеспечивают хорошие низкочастотные характеристики.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Изобретение, совместно с его дополнительными задачами и преимуществами, можно наилучшим образом понять, обратившись к нижеследующему описанию, приведенному совместно с прилагаемыми чертежами, в которых:
Фиг. 1 - блок-схема операций, демонстрирующая способ подавления артефактов блочности согласно варианту осуществления;
Фиг. 2A и 2B иллюстрируют два варианта осуществления соседних блоков и границы блоков, к которой можно применять фильтрацию для удаления блочности;
Фиг. 3 - блок-схема операций, демонстрирующая дополнительные, необязательные этапы способа, показанного на Фиг. 1 согласно варианту осуществления;
Фиг. 4 - блок-схема операций, демонстрирующая дополнительные, необязательные этапы способа, показанного на Фиг. 1 и 5, согласно варианту осуществления;
Фиг. 5 - блок-схема операций, демонстрирующая дополнительные, необязательные этапы способа, показанного на Фиг. 1, согласно другому варианту осуществления;
Фиг. 6 - блок-схема операций, демонстрирующая дополнительные, необязательные этапы способа, показанного на Фиг. 5, согласно варианту осуществления;
Фиг. 7 - блок-схема операций, демонстрирующая дополнительные, необязательные этапы способа, показанного на Фиг. 5, согласно другому варианту осуществления;
Фиг. 8 - упрощенная блок-схема узла фильтрации для удаления блочности согласно варианту осуществления;
Фиг. 9 - упрощенная блок-схема узла фильтрации для удаления блочности согласно другому варианту осуществления;
Фиг. 10 - упрощенная блок-схема программной реализация модуля фильтрации для удаления блочности в компьютере согласно варианту осуществления;
Фиг. 11 - упрощенная блок-схема кодера согласно варианту осуществления;
Фиг. 12 - упрощенная блок-схема декодера согласно варианту осуществления;
Фиг. 13 - упрощенная блок-схема пользовательского оборудования согласно варианту осуществления; и
Фиг. 14 - схематический обзор участка сети связи, содержащей сетевое устройство согласно варианту осуществления.
ПОДРОБНОЕ ОПИСАНИЕ
В чертежах, одинаковые ссылочные позиции используются для аналогичных или соответствующих элементов.
Варианты осуществления, в целом, относятся к фильтрации для удаления блочности для борьбы с артефактами блочности по границам блоков в кадре видео. Варианты осуществления используют фильтр удаления блочности, обладающий хорошими частотными характеристиками. Настоящий фильтр удаления блочности сконфигурирован не для изменения пиксельных значений по границе блоков, если эти пиксельные значения формируют линейное изменение, а для сглаживания пиксельных значений, если они, напротив, имеют форму ступени. Это подразумевает, что фильтр удаления блочности будет иметь хорошие низкочастотные характеристики и может удалять высокие частоты, которые могут возникать вблизи границы блоков.
На Фиг. 1 показана блок-схема операций способа уменьшения артефактов блочности на границе блоков между блоком множественных пикселей и соседним блоком множественных пикселей в кадре видео согласно варианту осуществления. Как хорошо известно в технике, кадр видео делится на неперекрывающиеся блоки пикселей, которые кодируются и декодируются согласно различным доступным режимам внутреннего и внешнего кодирования. В целом, кадр видео делится на неперекрывающиеся макроблоки 16×16 пикселей. Такой макроблок, в свою очередь, может делиться на меньшие блоки разных размеров, например, 4×4 или 8×8 пикселей. Однако, согласно вариантам осуществления, возможны и прямоугольные блоки, например, 4×8, 8×4, 8×16 или 16×8. Варианты осуществления можно применять к любому такому блоку пикселей, включая макроблоки или даже более крупные блоки пикселей.
В выходящем стандарте кодирования видео с высокой эффективностью (HEVC) используются единицы кодирования (CU), единицы предсказания (PU) и единицы преобразования (TU). Единицы предсказания задаются в блоке кодирования и содержат режимы внутреннего или внешнего предсказания. Единицы преобразования задаются в узле кодирования, и наибольший размер преобразования равен 32×32 пикселям, и наименьший размер равен 4×4 пикселям. Размер CU в настоящее время варьируется от 64×64 пикселя (наибольшего) до 4×4 пикселя (наименьшего). Таким образом, наибольшую CU можно разбить на меньшие CU, “уровень гранулярности” которых зависит от локальных характеристик кадра. Это означает, что наибольшую CU можно разбить на меньшие CU разных размеров. Варианты осуществления также можно использовать в связи с такими единиц единицами кодирования, которые рассматриваются как охватываемые используемым здесь выражением “блок пикселей”.
Каждый пиксель в блоке имеет соответствующее пиксельное значение. Кадры видео, в целом, имеют значения цвета, присвоенные пикселям, где значения цвета представлены в заданных форматах цвета. Один из общих форматов цвета использует одну компоненту яркости и две компоненты цветности для каждого пикселя, хотя существуют другие форматы, например, использующие красную, зеленую и синюю компоненты для каждого пикселя.
Традиционно, фильтрация компоненты яркости и фильтрация компоненты цветности производятся по отдельности, возможно, с использованием разных решений по фильтрации и разных фильтров удаления блочности. Однако возможно, что решения по фильтрации яркости используются в фильтрации цветности, как в HEVC. Варианты осуществления можно применять для фильтрации компоненты яркости, фильтрации компоненты цветности или фильтрации как компоненты яркости, так и компоненты цветности. В конкретном варианте осуществления, варианты осуществления применяются для достижения фильтрации яркости. Затем решения по фильтрации, или части решений по фильтрации для одной компоненты, например, яркости, можно использовать при принятии решений по фильтрации для других компонент, например, цветности.
Фильтрация для удаления блочности производится по границе или рубежу между соседними блоками. В результате, такими границами могут быть вертикальные границы 1, см. Фиг. 2A, между двумя соседними блоками 10, 20, располагающимися рядом в кадре видео. Альтернативно, границы являются горизонтальными границами 1, см. Фиг. 2B, между двумя соседними блоками 10, 20, где один блок 10 располагается над другим блоком 20 в кадре видео. В конкретном варианте осуществления, вертикальные границы фильтруются, начиная с самой левой границы и переходя через границы к правой стороне в их геометрическом порядке. Затем, горизонтальные границы фильтруются, начиная с границы вверху и переходя через границы вниз в их геометрическом порядке. Однако варианты осуществления не ограничиваются этим конкретным порядком фильтрации и фактически могут применяться к любому заранее заданному порядку фильтрации. В конкретном варианте осуществления, границы на краю кадра видео, предпочтительно, не фильтруются и, таким образом, исключаются из фильтрации для удаления блочности.
Способ этого варианта осуществления начинается на этапе S1, где первое смещение или дельта вычисляется для линии 12 пикселей 11, 13, 15, 17 в блоке 10. Согласно вариантам осуществления, это первое смещение вычисляется на основании (9×(q0-p0)-3×(q1-p1))/16, где p0 обозначает пиксельное значение пикселя 11, ближайшего к границе 1 блоков на линии 12 пикселей 11, 13, 15, 17 в блоке 10, p1 обозначает пиксельное значение пикселя 13, следующего ближайшего к границе 1 блоков на линии 12 пикселей 11, 13, 15, 17, q0 обозначает пиксельное значение пикселя 21, ближайшего к границе 1 блоков на соответствующей или противоположной линии 22 пикселей 21, 23, 25, 27 в соседнем блоке 20, и q1 обозначает пиксельное значение пикселя 23, следующего ближайшего к границе 1 блоков на соответствующей линии 22 пикселей 21, 23, 25, 27.
N
Линия 12 пикселей 11, 13, 15, 17 в блоке 10 и соответствующая линия 22 пикселей 21, 23, 25, 27 в соседнем блоке 20 принадлежат одной и той же горизонтальной линии пикселей, т.е. строке пикселей, проходящей по вертикальной границе 1, см. Фиг. 2A, или принадлежат одной и той же вертикальной линии пикселей, т.е. столбцу пикселей, проходящему по горизонтальной границе 1, см. Фиг. 2B. Следовательно, линия 12 пикселей 11, 13, 15, 17 и соответствующая линия 22 пикселей 21, 23, 25, 27 перпендикулярны к границе 1 блоков между блоком 10 и соседним блоком 20. Кроме того, линия 12 пикселей 11, 13, 15, 17 в блоке 10 и соответствующая линия 22 пикселей 21, 23, 25, 27 в соседнем блоке 20 имеют один и тот же номер линии. Например, если блок 10 и соседний блок 20 содержит каждый , например, восемь, строк или столбцов пикселей, имеющих номера строки или столбца i=0…N-1, то линия 10 пикселей 11, 13, 15, 17 имеет номер линии i в блоке 10, и соответствующая линия 20 пикселей 21, 23, 25, 27 также имеет номер линии i, но в соседнем блоке 20. Таким образом, линия 12 пикселей 11, 13, 15, 17 в блоке и соответствующая линия 22 пикселей 21, 23, 25, 27 в соседнем блоке 20 являются противоположными линиями по отношению к границе 1 блоков.
Согласно вариантам осуществления, “линия пикселей” и “соответствующая линия пикселей” используются для обозначения “строки пикселей” и “соответствующей строки пикселей” в случае вертикальной границы блоков, показанной на Фиг. 2A, и обозначают “столбец пикселей” и “соответствующий столбец пикселей” в случае горизонтальной границы блоков, показанной на Фиг. 2B.
На следующем этапе S2 происходит изменение пиксельного значения пикселя 11, ближайшего к границе 1 блоков на линии 12 пикселей 11, 13, 15, 17, путем прибавления первого смещения, вычисленного на этапе S1, к пиксельному значению этого пикселя 11 для формирования измененного пиксельного значения p0. Таким образом, измененное пиксельное значение p0′ для этого пикселя 11 равно p0′=p0+Δ, где Δ обозначает первое смещение, полученное на этапе S1. Соответственно, пиксельное значение пикселя 21, ближайшего к границе 1 блоков, но на соответствующей линии 22 пикселей 21, 23, 25, 27 в соседнем блоке 20, изменяется на этапе S3 путем вычитания первого смещения из пиксельного значения этого пикселя 21 для формирования измененного пиксельного значения q0′. Измененное пиксельное значение q0′, таким образом, вычисляется как q0′=q0-Δ.
Изменение пиксельного значения для пикселя 11, ближайшего к границе 1 блоков на линии 12 пикселей 11, 13, 15, 17 в блоке 10 на этапе S2 и изменение пиксельного значения для пикселя 21, ближайшего к границе 1 блоков на соответствующей линии 22 пикселей 21, 23, 25, 27 в соседнем блоке 20 на этапе S3 может осуществляться последовательно, как показано на Фиг. 1, или последовательно, но в противоположном порядке, т.е. этап S3 до этапа S2. Альтернативно, два этапа S2 и S3 могут осуществляться, по меньшей мере, частично, параллельно.
Способ, представленный на Фиг. 1 и включающий в себя этапы S1-S3, подавляет артефакты блочности на границе 1 блоков посредством обработки пикселей на одной линии 11 пикселей 11, 13, 15, 17 в блоке и также на соответствующей линии 22 пикселей 21, 23, 25, 27 в соседнем блоке 20. Это изменение пикселя может осуществляться для одной из (горизонтальной или вертикальной) линий 12 в блоке 10 или для множественных, т.е. по меньшей мере, двух, линий 12 в блоке 10, возможно, для всех (горизонтальных или вертикальных) линий 12 в блоке 10. Это схематически показано линией L1.
В целом, что было рассмотрено выше, фильтрация для удаления блочности предусматривает решения по фильтру, которые определяют, следует ли применять фильтр удаления блочности по горизонтальной или вертикальной границе блоков для блока. Если такое решение является положительным, то фильтр удаления блочности можно затем применять ко всем столбцам (вертикальным линиям) или строкам (горизонтальным линиям) блока. Альтернативно, дополнительные решения по фильтрации принимаются для каждого столбца или строки для определения, следует ли применять фильтр удаления блочности и/или какой тип фильтра удаления блочности использовать для этого конкретного столбца или строки. Таким образом, способ, показанный на Фиг. 1, можно применять к столбцу, строке, к множественным столбцам, к множественным строкам или обоим для, по меньшей мере, одного столбца и, по меньшей мере, одной строки в блоке пикселей в кадре видео. Дополнительно предполагается, что эту фильтрацию для удаления блочности не обязательно применять ко всем блокам в кадре видео. В отчетливом контрасте, такую фильтрацию для удаления блочности предпочтительно применять только к блокам и по границам блоков, где присутствуют артефакты блочности, что определяется одним или более решениями по фильтру.
Далее будет дополнительно описана фильтрация для удаления блочности в связи с различными вариантами осуществления реализации.
C
C
C
Ограничение первого смещения может осуществляться согласно варианту осуществления, чтобы, таким образом, ограничивать значение первого смещения интервалом от -t до t. Пороговое значение t, предпочтительно, зависит от значения параметра квантования (QP), присвоенного блоку. В таком случае, можно использовать таблицу разных пороговых значений для разных значений QP. Нижеприведенная Таблица 1 является примером такой таблицы.
Таблица 1
<b>Значения t</b><sub>C</sub><b> для разных значений QP</b>
QP
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
t<sub>C</sub>
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
QP
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
t<sub>C</sub>
1
1
1
1
1
1
1
1
2
2
2
2
3
3
3
3
4
4
4
QP
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
t<sub>C</sub>
5
5
6
6
7
8
9
9
10
10
11
11
12
12
13
13
14
14
C
C
Однако настоящие варианты осуществления не ограничиваются конкретным соотношением между t и QP, представленным в таблице 1, но, напротив, могут определять значение t для блока на основании значение QP для блока каким-то другим образом.
C
C
C
C
C
C
C
C
Фиг. 3 иллюстрирует это ограничивающее действие. Затем способ продолжается от этапа S1 на Фиг. 1. На следующем этапе S10 производится проверка, находится ли первое смещение в интервале от -t до t, т.е. справедливо ли -t≤Δ≤t. В таком случае, способ переходит к этапу S2 на Фиг. 1, и никакого изменения первого смещения не требуется. Однако если на этапе S10 выясняется, что первое смещение не находится в интервале, способ переходит к этапу S11, где первое смещение ограничивается, чтобы иметь значение в интервале. Таким образом, если Δ<-t, первое смещение устанавливается со значением -t на этапе S11. Соответственно, если Δ>t, то первое смещение устанавливается со значением t на этапе S11. Затем способ переходит к этапу S2 на Фиг. 2.
m
Соответственно, измененные пиксельные значения, вычисленные на этапах S2 и S3 на Фиг. 1, можно ограничивать, чтобы они находились в разрешенном интервале. Это схематически показано блок-схемой операций на Фиг. 4. Затем способ продолжается от этапа S2 или S3 на Фиг. 1, и на следующем этапе S20 производится проверка, находится ли измененное пиксельное значение, т.е. p0′ или q0′, в разрешенном интервале от 0 до M. Параметр M обозначает заданное максимальное значение, которое могут принимать измененные пиксельные значения. В конкретном варианте осуществления, это максимальное значение задается на основании количества битов, необходимого для представления пиксельных значений. Таким образом, если предположить, что пиксельные значения имеют вид m-битового значения, то M, предпочтительно, равно 2-1. Например, если каждое пиксельное значение является 8-битовым значением, т.е. m=8, то M=255. Таким образом, на этапе S20 производится проверка условий 0≤p0′≤M или 0≤q0′≤M. Если измененное пиксельное значение находится в интервале [0,M], способ переходит к этапу S3 на Фиг. 1 или заканчивается. Однако если измененное пиксельное значение выходит за пределы интервала, оно ограничивается на этапе S21, чтобы иметь значение в интервале. Другими словами, если p0′<0 или q0′<0, то измененное пиксельное значение устанавливается на этапе S21 равным p0′=0 или q0′=0. Соответственно, если p0′>M или q0′>M, то на этапе S21 измененное пиксельное значение устанавливается равным p0′=M или q0′=M.
На этапе S1 на Фиг. 1 вычисляется первое смещение на основании (9×(q0-p0)-3×(q1-p1))/16. В конкретном варианте осуществления, первое смещение вычисляется на этапе S1 равным (9×(q0-p0)-3×(q1-p1))/16. Согласно варианту осуществления, пиксельные значения, таким образом, обновляются предложенным фильтром удаления блочности с использованием следующих вычислений:
Δ=(9×(q0-p0)-3×(q1-p1))/16
p0′=p0+Δ
q0′= q0-Δ
Также можно использовать ограничение первого смещения и/или измененные пиксельные значения, как показано на Фиг. 3 и 4.
В альтернативном варианте осуществления, смещение вычисляется как функция (9×(q0-p0)-3×(q1-p1))/16. Такую функцию можно задать так, чтобы вычисление первого смещения эффективно осуществлялось аппаратными средствами. В таком случае, в целом, предпочтительно не пользоваться никакими операциями деления и/или задать функцию так, чтобы первое смещение имело целочисленное значение. Согласно варианту осуществления, (X+8)>>4 используется в качестве целочисленного выражения X/16, где >> обозначает операцию сдвига вправо. Таким образом, в конкретном варианте осуществления на этапе S1 вычисляется первое смещение на основании и, предпочтительно, равным (9×(q0-p0)-3×(q1-p1)+8)>>4.
В этом варианте осуществления, пиксельные значения, таким образом, обновляются предложенным фильтром удаления блочности с использованием следующих вычислений:
Δ=(9×(q0-p0)-3×(q1-p1)+8)>>4
p0′=p0+Δ
q0′=q0-Δ
или, если используется ограничение:
C
C
Δ=Clip3(-t,t,(9×(q0-p0)-3×(q1-p1)+8)>>4)
p0′=Clip(p0+Δ)
q0′=Clip(q0-Δ),
и
где Clip3(A,B,x) определяется как Clip3(A,B,x)=A, если x<A, Clip3(A,B,x)=B, если x>B, Clip3(A,B,x)=x, если A≤x≤B, и Clip(x) определяется как Clip(0,M,x).
В альтернативных вариантах осуществления используются другие реализации, например целочисленные представления (9×(q0-p0)-3×(q1-p1))/16 и, предпочтительно, такие целочисленные представления, которые эффективно реализуются аппаратными средствами.
Вышеприведенные раскрытые варианты осуществления задают фильтр удаления блочности, который генерирует первое смещение для пикселей, ближайших к границе блоков согласно формуле, которая дает приблизительно нуль, предпочтительно, в точности нуль, в случае применения к линейному изменению пиксельных значений, и которая дает значение смещения, которое сглаживает ступеньку в пиксельных значениях в случае применения к ступеньке пиксельных значений. Например, линейное изменение можно описать как линейно возрастающие или убывающие пиксельные значения, например 10, 20, 30, 40. При вычислении первого смещения для этих пиксельных значений, т.е. p1=10, p0=20, q0=30, q1=40, первое смещение будет равно нулю. Соответственно, ступеньку можно описать как ступенчатое увеличение или уменьшение пиксельных значений, например 10, 10, 20, 20. При вычислении первого смещения для этих пиксельных значений, т.е. p1=10, p0=10, q0=230, q1=20, первое смещение будет равно 3.75, если Δ=(9×(q0-p0)-3×(q1-p1))/16 или 4, если Δ=(9×(q0-p0)-3×(q1-p1)+8)>>4. Тогда измененные пиксельные значения будут равны 10, 13.75, 16.25, 30 или 10, 14, 16, 20 и, таким образом, достигается сглаживание ступеньки. Первое смещение также равно нулю для плоской линии, т.е. если пиксельные значения равны, p0=p1=q0=q1.
В конкретном варианте осуществления, также можно изменять пиксельные значения пикселей, следующих ближайших к границе блоков. Это дополнительно описано здесь со ссылкой на Фиг. 2A, 2B и 5. Затем способ продолжается от этапа S3 на Фиг. 1 или от этапа S2 или даже этапа S1. На следующем этапе S30 вычисляется второе смещение на основании (p2+p0-2×p1+2×Δ)/4, где p2 обозначает пиксельное значение пикселя 15, второго следующего ближайшего к границе 1 блоков на линии 12 пикселей 11, 13, 15, 17 в блоке 10. На следующем этапе S31 вычисляется третье смещение на основании (q2+q0-2×q1-2×Δ)/4, где q2 обозначает пиксельное значение пикселя 25, второго следующего ближайшего к границе 1 блоков на соответствующей линии 22 пикселей 21, 23, 25, 27 в соседнем блоке 20. Этапы S30 и S31 могут осуществляться последовательно в любом порядке или, по меньшей мере, частично, параллельно.
Второе смещение, вычисленное на этапе S30, используется на этапе S32 для изменения пиксельного значения пикселя 13, следующего ближайшего к границе 1 блоков на линии 12 пикселей 11, 13, 15, 17. Согласно варианту осуществления, второе смещение прибавляется к пиксельному значению этого пикселя 13 для получения измененного пиксельного значения. Соответственно, на этапе S33 изменяется пиксельное значение пикселя 23, следующего ближайшего к границе 1 блоков на соответствующей линии 22 пикселей 21, 23, 25, 27, путем прибавления третьего смещения к пиксельному значению этого пикселя 23 для формирования измененного пиксельного значения. Этапы S32 и S33 может осуществляться в любом последовательном порядке или, по меньшей мере, частично, параллельно.
p
q
p
q
Предложенный фильтр удаления блочности является, в этом варианте осуществления, фильтром низких частот во всех позициях p0, p1, q0, q1 фильтра. В случае применения к сигналу линейного изменения, фильтр удаления блочности не будет изменять его, поскольку Δ, Δ, Δ все будут равны нулю, где Δ обозначает второе смещение, и Δ обозначает третье смещение. В случае применения к ступенчатому сигналу, т.е. артефакту удаления блочности, фильтр удаления блочности будет сглаживать его, т.е. подавлять артефакт блочности. В отчетливом контрасте с текущим фильтром HEVC, предложенный фильтр удаления блочности будет сглаживать и, таким образом, ослаблять малые пульсации на сторонах границы блоков.
В вышеописанном варианте осуществления, фильтры для коэффициентов, которые стоят во второй позиции от границы блоков (p1,q1), создаются с использованием комбинации первого смещения и симметричного фильтра низких частот. Преимущество этого варианта осуществления состоит в том, что смещения для пикселей, вторых следующих ближайших к границе блоков, могут иметь разные значения, что позволяет улучшить локальную адаптацию.
C2
C2
C2
C2
C
C2
C
C2
C
По аналогии с первым смещением, второе и третье смещения можно ограничивать интервалом от -t до t, где пороговое значение t определяется на основании значения QP, присвоенного блоку. В конкретном варианте осуществления пороговое значение t определяется на основании порогового значения t, используемого для ограничения первого смещения на Фиг. 3. Например, t=t/2 или, в аппаратной реализации, t=t>>1.
C2
C2
C2
C2
C2
p,q
C2
C2
p,q
C2
На Фиг. 6 показана блок-схема операций, демонстрирующая такое ограничение второго и третьего смещений. Способ продолжается от этапа S30 или S31 на Фиг. 5. На следующем этапе S40 производится проверка, находится ли второе или третье смещение в интервале от -t до t. Если это так, способ переходит к этапу S32 или S33 на Фиг. 5. Однако если второе или третье смещение меньше -t или больше t, способ переходит к этапу S41. На этом этапе S41 второе или третье смещение ограничивается величиной -t, если Δ<-t, или второе или третье смещение устанавливается равным t, если Δ>t.
Измененные пиксельные значения пикселей, следующих ближайших к границе блоков, предпочтительно, ограничиваются, чтобы было в интервале от 0 до M наподобие измененных пиксельных значений для пикселей, ближайших к границе блоков. Следовательно, этапы способа, представленного на Фиг. 4, можно применять и к этим пикселям для приведения пиксельных значений к интервалу [0, M].
Согласно варианту осуществления, измененные пиксельные значения пикселей 13, 23, следующих после ближайшего к границе 1 блоков, вычисляются в виде:
p
Δ=(p2+p0-2×p1+2×Δ)/4
p
p1′=p1+Δ
q
Δ=(q2+q0-2×q1-2×Δ)/4
q
q1′=q1+Δ
В необязательном порядке, используются ограничение второго и третьего смещений и/или раскрытые выше измененные пиксельные значения.
В альтернативном варианте осуществления, вычисления смещений можно осуществлять независимо друг от друга.
Δ=(9×(q0-p0)-3×(q1-p1)+8)>>4
p0′=p0+Δ
q0′=q0-Δ
p
Δ=(p0+p2-2×p1)/4
p
p1′=p1+Δ+Δ/2
q
Δ=(q0+q2-2×q1)/4
q
q1′=q1+Δ-Δ/2
Математически это эквивалентно ранее раскрытому варианту осуществления. Для этого варианта осуществления также можно осуществлять необязательное ограничение.
В альтернативном варианте осуществления, второе и третье смещения вычисляются на основании, например, функции от (p2+p0-2×p1+2×Δ)/4 и (q2+q0-2×q1-2×Δ)/4, соответственно. Например, такая функция может быть адаптирована для аппаратной реализации и/или быть целочисленным представлением (p2+p0-2×p1+2×Δ)/4 и (q2+q0-2×q1-2×Δ)/4. Конкретный пример такой аппаратной реализации, которая дает целочисленные значения, предусматривает вычисление второго смещения на основании или, предпочтительно, равным (((p2+p0+1)>>1)-p1+Δ)>>1. Соответственно, третье смещение, предпочтительно, вычисляется на основании или, предпочтительно, равным (((q2+q0+1)>>1)-q1-Δ)>>1.
В таком случае, измененные пиксельные значения вычисляются в виде:
p
Δ=(((p2+p0+1)>>1)-p1+Δ)>>1
p
p1′=p1+Δ
q
Δ=(((q2+q0+1)>>1)-q1-Δ)>>1
q
q1′=q1+Δ
или, если используется ограничение:
p
C2
C2
Δ=Clip3(-t,t,(((p2+p0+1)>>1)-p1+Δ)>>1)
p
p1′=Clip(p1+Δ)
q
C2
C2
Δ=Clip3(-t,t,(((q2+q0+1)>>1)-q1-Δ)>>1)
q
q1′=Clip(q1+Δ)
Альтернативный вариант осуществления для вычисления второго и третьего смещения, который адаптирован для аппаратной реализации, представляет собой:
p
C2
C2
Δ=Clip3(-t,t,((p2+p0-((p1-Δ)<<1)+2)>>2))
q
C2
C2
Δ=Clip3(-t,t,((q2+q0-((q1+Δ)<<1)+2)>>2)),
где << обозначает операцию сдвига влево.
Дополнительный альтернативный вариант осуществления для вычисления второго и третьего смещения, который адаптирован для аппаратной реализации, представляет собой:
p
C2
C2
Δ=Clip3(-t,t,((((p2+p0+1)>>1)-p1+Δ+1)>>1))
q
C2
C2
Δ=Clip3(-t,t,((((q2+q0+1)>>1)-q1-Δ+1)>>1))
В другом варианте осуществления, можно использовать более сильный фильтр низких частот в сочетании с первым смещением. В этом случае, второе смещение вычисляется на основании, например, равным (p2+p0-2×p1+Δ)/2 или, в аппаратной реализации, на основании или, предпочтительно, равным, ((p2+p0+1+Δ)>>1)-p1 или, альтернативно, ((p2+p0+Δ-(p1<<1)+1)>>1). Затем третье смещение можно вычислить на основании, например, равным (q2+q0-2×q1-Δ)/2 или, в аппаратной реализации, на основании или, предпочтительно, равным, ((q2+q0+1-Δ)>>1)-q1 или, альтернативно, ((q2+q0-Δ-(q1<<1)+1)>>1).
Конкретный вариант осуществления вычисляет первое, второе и третье смещения для линии пикселей в блоке, чтобы, таким образом, изменить пиксельные значения, как пикселей, ближайших к границе блоков, так и пикселей, следующих ближайших к границе блоков.
В альтернативном варианте осуществления, сначала принимается решение, вычислять ли второе и третье смещения, и, таким образом, изменять ли пиксельные значения пикселей, следующих после ближайшего к границе блоков, наряду с изменением пиксельных значений пикселей, ближайших к границе блоков.
Наподобие раскрытых выше вариантов осуществления, предусматривающих вычисление второго и третьего смещений для изменения пиксельных значений пикселей, следующих ближайших к границе блоков, можно вычислять четвертое и пятое смещения для изменения пиксельных значений пикселей, вторых следующего ближайшего к границе блоков.
p1
p1
q1
q1
На Фиг. 7 показана блок-схема операций, демонстрирующая такой вариант осуществления. Способ продолжается от этапа S33 на Фиг. 5. На следующем этапе S50 вычисляется четвертое смещение на основании (p3+p1-2×p2+2×Δ)/4, где p3 обозначает пиксельное значение пикселя 17, третьего следующего ближайшего к границе 1 блоков на линии 12 пикселей 11, 13, 15, 17 в блоке 10, и Δ обозначает второе смещение. На этапе S51, соответственно, вычисляется пятое смещение на основании (q3+q1-2×q2+2×Δ)/4, где q3 обозначает пиксельное значение пикселя 27, третьего ближайшего к границе 1 блоков на соответствующей линии 22 пикселей 21, 23, 25, 27 в соседнем блоке 20, и Δ обозначает третье смещение. Этапы S50 и S51 могут осуществляться последовательно в любом порядке или, по меньшей мере, частично, параллельно.
p1
q1
p1
q1
В альтернативном варианте осуществления, четвертое и пятое смещения можно вычислять на основании (p3+p1-2×p2+Δ)/2 и (q3+q1-2×q2+Δ)/2, соответственно, или, альтернативно, (p3+p1-2×p2+2×Δ)/4 и (q3+q1-2×q2+2×Δ)/4.
На следующих двух этапах пиксельные значения изменяются на основании четвертого и пятого смещения. Таким образом, этап S52 изменяет пиксельное значение пикселя 15, второго следующего ближайшего к границе 1 блоков на линии 12 пикселя 11, 13, 15, 17 в блоке 10, путем прибавления четвертого смещения к пиксельному значению этого пикселя 15 для формирования измененного пиксельного значения. На этапе S53, соответственно, изменяется пиксельное значение пикселя 25, второго следующего ближайшего к границе 1 блоков на соответствующей линии 22 пикселей 21, 23, 25, 27 в соседнем блоке 20, путем прибавления пятого смещения к пиксельному значению этого пикселя 25 для формирования измененного пиксельного значения. Этапы S52 и S53 могут осуществляться последовательно в любом порядке или, по меньшей мере, частично, параллельно.
Этот принцип также можно распространить на фильтры, производящие изменение более чем в трех пикселях от границы блоков. Например, четвертый пиксель 17, 27 от границы 1 блоков можно получить с использованием комбинации смещений для третьих пикселей 15, 25 (или смещения от вторых пикселей 13, 23 или смещения от первых пикселей 11, 21) и симметричного фильтра низких частот. Возможны также еще более длинные фильтры.
C3
C3
C3
Наподобие предыдущих вариантов осуществления, четвертое и пятое смещения также можно ограничивать. В таком случае, можно использовать такой же интервал, что и для второго и третьего смещений или половину этого интервала. В альтернативном варианте осуществления, интервал ограничения составляет от -t до t, где пороговое значение t определяется на основании значения QP, связанного с блоком. Кроме того, измененные пиксельные значения пикселей, вторых следующих ближайших к границе блоков, можно ограничивать, чтобы было в интервале от 0 до M, как указано на Фиг. 4.
В конкретном варианте осуществления изменение этих пиксельных значений осуществляется следующим образом:
p2
p1
Δ=(p3+p1-2×p2+2×Δ)/4
p2
p2′=p2+Δ
q2
q1
Δ=(q3+q1-2×q2+2×Δ)/4
q2
q2′=q2+Δ,
p2
q2
где Δ, Δ обозначают четвертое и пятое смещения, соответственно. В необязательном порядке, ограничение может осуществляться вышеописанным образом.
p1
q1
p1
q1
Представление (p3+p1-2×p2+2×Δ)/4 и (q3+q1-2×q2+2×Δ)/4 пригодное для аппаратной реализации можно использовать для получения четвертого и пятого смещений в качестве целочисленных значений. В конкретном варианте осуществления, четвертое смещение вычисляется на основании или, предпочтительно, равным, (((p3+p1+1)>>1)-p2+Δ)>>1. Соответственно, (((q3+q1+1)>>1)-q2+Δ)>>1 является целочисленным представлением пятого смещения.
Настоящие варианты осуществления адаптированы для борьбы с артефактами блочности в связи с кодированием и декодированием кадров видео. Таким образом, варианты осуществления можно применять к таким стандартам кодирования и декодирования видеосигнала, которые предусматривают деление кадров видео на блоки пикселей и, таким образом, создают опасность возникновения артефактов блочности по границам блоков. Примерами таких стандартов, к которым можно применять настоящие варианты осуществления, являются H.264 и HEVC. В частности, HEVC имеет возможность выбора между режимом слабой фильтрации и режимом сильной фильтрации. Настоящие варианты осуществления можно преимущественно использовать в режиме слабой фильтрации для вычисления смещений, которые используются для изменения пиксельных значений на линии пикселей и соответствующей линии пикселей по границе блоков. Следовательно, решения, осуществлять ли такую фильтрацию для удаления блочности согласно традиционному HEVC, можно преимущественно использовать для настоящих вариантов осуществления.
Конкретный аспект относится к способу уменьшения артефактов блочности на границе блоков между блоком множественных пикселей и соседним блоком множественных пикселей в кадре видео. Согласно Фиг. 1, способ содержит вычисление, на этапе S1, первого смещения на основании пиксельного значения пикселя, ближайшего к границе блоков на линии пикселей в блоке, пиксельного значения пикселя, следующего ближайшего к границе блоков на линии пикселей, пиксельного значения пикселя, ближайшего к границе блоков на соответствующей или противоположной линии пикселей в соседнем блоке, и пиксельного значения пикселя, следующего ближайшего к границе блоков на соответствующей линии пикселей. Линия пикселей и соседняя линия пикселей перпендикулярны к границе блоков. Первое смещение вычисляется на основании этих пиксельных значений и формулы, которая дает значение смещения, которое приближается к нулю, предпочтительно, равно нуль, когда пиксельные значения линейно возрастают или убывают или остаются одинаковыми на протяжении линии пикселей и соответствующей линии пикселей и дает значение смещения, которое сглаживает ступеньку в пиксельных значениях, когда пиксельные значения ступенчато увеличиваются или уменьшаются на протяжении линии пикселей и соответствующей линии пикселей. Способ также содержит изменение, на этапе S2, пиксельного значения пикселя, ближайшего к границе блоков на линии пикселей, путем прибавления первого смещения к пиксельному значению пикселя, ближайшего к границе блоков на линии пикселей. На следующем этапе S3 пиксельное значение пикселя, ближайшего к границе блоков на соответствующей линии пикселей, изменяется путем вычитания первого смещения из пиксельного значения пикселя, ближайшего к границе блоков на соответствующей линии пикселей.
Этот конкретный аспект можно комбинировать с вариантами осуществления, рассмотренными выше в связи с Фиг. 1-7.
Способ уменьшения артефактов блочности согласно варианту осуществления, раскрытому на Фиг. 1, предпочтительно осуществляется узлом фильтрации для удаления блочности. Следовательно, такой узел фильтрации для удаления блочности затем вычисляет первое смещение на этапе S1 и изменяет пиксельные значения пикселей, ближайших к границе блоков на этапах S2 и S3. На Фиг. 8 показана упрощенная блок-схема варианта осуществления такого узла 100 фильтрации для удаления блочности.
Узел 100 фильтрации для удаления блочности содержит вычислитель 110 первого смещения, сконфигурированный с возможностью вычисления первого смещения на основании (9×(q0-p0)-3×(q1-p1))/16, что ранее раскрыто здесь для линии пикселей в блоке пикселей в кадре видео. Модификатор 120 пикселей узла 100 фильтрации для удаления блочности сконфигурирован с возможностью изменения пиксельного значения пикселя, ближайшего к границе блоков на линии пикселей в блоке, путем прибавления первого смещения, вычисленного вычислителем 110 первого смещения, к пиксельному значению этого пикселя для формирования измененного пиксельного значения. Модификатор 120 пикселей дополнительно изменяет пиксельное значение пикселя, ближайшего к границе блоков, но на соответствующей линии пикселей в соседнем блоке пикселей в кадре видео. Это изменение модификатором 120 пиксельного значения достигается путем вычитания первого смещения, вычисленного вычислителем 110 первого смещения, из пиксельного значения этого пикселя для формирования измененного пиксельного значения.
Следовательно, в конкретном варианте осуществления модификатор 120 пикселей сконфигурирован с возможностью прибавления первого смещения к пиксельному значению пикселя, ближайшего к границе блоков на линии пикселей, для формирования измененного пиксельного значения. Модификатор 120 пикселей дополнительно сконфигурирован с возможностью вычитания первого смещения из пиксельного значения пикселя, ближайшего к границе блоков на соответствующей линии пикселей, для формирования измененного пиксельного значения.
В конкретном варианте осуществления, вычислитель 110 первого смещения сконфигурирован с возможностью вычисления первого смещения равным f((9×(q0-p0)-3×(q1-p1))/16), т.е. функции f() или представлению (9×(q0-p0)-3×(q1-p1))/16. Эта функция, предпочтительно, выводит целочисленное представление (9×(q0-p0)-3×(q1-p1))/16, и, предпочтительно, функция пригодна для аппаратной реализации. Вычислитель 110 первого смещения сконфигурирован, согласно варианту осуществления, для вычисления первого смещения на основании или, предпочтительно, равным, (9×(q0-p0)-3×(q1-p1)+8)>>4.
C
C
C
На Фиг. 9 показана упрощенная блок-схема узла 200 фильтрации для удаления блочности согласно другому варианту осуществления. Узел 200 фильтрации для удаления блочности содержит вычислитель 210 первого смещения и модификатор 220 пиксельного значения. Эти узлы 210, 220 действуют, как рассмотрено выше в связи с Фиг. 8. Предпочтительно, узел 200 фильтрации для удаления блочности также содержит первый узел 230 ограничения. Этот первый узел 230 ограничения сконфигурирован с возможностью ограничения первого смещения интервалом от -t до t. В этом случае пороговое значение t зависит от значения QP, связанного с блоком, и может, например, быть выбрано из таблицы 1 на основании значения QP блока.
Необязательный второй узел 240 ограничения реализован в узле 200 фильтрации для удаления блочности для ограничения измененных пиксельных значений, вычисленных модификатором 220 пиксельного значения. Таким образом, второй узел 240 ограничения ограничивает эти измененные пиксельные значения интервалом от нуля до заданного максимального значения M.
В предпочтительном варианте осуществления узел 200 фильтрации для удаления блочности также содержит вычислитель 250 второго смещения, сконфигурированный с возможностью вычисления второго смещения на основании (p2+p0-2×p1+2×Δ)/4 для линии пикселей в блоке.
В конкретном варианте осуществления, вычислитель 250 второго смещения сконфигурирован с возможностью вычисления второго смещения равным g((p2+p0-2×p1+2×Δ)/4), т.е. функции g() или представлению (p2+p0-2×p1+2×Δ)/4. Эта функция, предпочтительно, выводит целочисленное представление (p2+p0-2×p1+2×Δ)/4, и, предпочтительно, функция пригодна для аппаратной реализации. Вычислитель 250 второго смещения сконфигурирован, согласно варианту осуществления, для вычисления второго смещения на основании или, предпочтительно, равным, (((p2+p0+1)>>1)-p1+Δ)>>1.
Узел 200 фильтрации для удаления блочности, предпочтительно, содержит вычислитель 260 третьего смещения, сконфигурированный с возможностью вычисления третьего смещения на основании (q2+q0-2×q1-2×Δ)/4 для соответствующей линии пикселей в соседнем блоке.
В конкретном варианте осуществления, вычислитель 260 третьего смещения сконфигурирован с возможностью вычисления третьего смещения равным h((q2+q0-2×q1-2×Δ)/4), т.е. функции h() или представлению (q2+q0-2×q1-2×Δ)/4. Эта функция, предпочтительно, выводит целочисленное представление (q2+q0-2×q1-2×Δ)/4, и, предпочтительно, функция пригодна для аппаратной реализации. Вычислитель 260 третьего смещения сконфигурирован, согласно варианту осуществления, для вычисления третьего смещения на основании или, предпочтительно, равным, (((q2+q0+1)>>1)-q1-Δ)>>1.
Кроме того, модификатор 220 пикселей узла 200 фильтрации для удаления блочности сконфигурирован с возможностью изменения пиксельного значения пикселя, следующего ближайшего к границе блоков на линии пикселей в блоке. Модификатор 220 пикселей прибавляет второе смещение, вычисленное вычислителем 250 второго смещения, к пиксельному значению этого пикселя. Модификатор 220 пикселей дополнительно сконфигурирован с возможностью изменения пиксельного значения пикселя, следующего ближайшего к границе блоков, но на соответствующей линии пикселей в соседнем блоке. Это изменение достигается путем прибавления третьего смещения, вычисленного вычислителем 260 третьего смещения, к пиксельному значению этого пикселя.
C2
C2
C2
C
Необязательный третий узел 270 ограничения узла 200 фильтрации для удаления блочности сконфигурирован с возможностью ограничения второго смещения, вычисленного вычислителем 250 второго смещения, и третьего смещение, вычисленного вычислителем 260 третьего смещения, интервалом от -t до t. Пороговое значение t, предпочтительно, зависит от значения QP, связанного с блоком и, преимущественно, вычисляется на основании порогового значения t, используемого для ограничения первого смещения. В альтернативном варианте осуществления, третий блок 270 ограничения не включен, и любое ограничение второго и третьего смещений, напротив, осуществляется первым узлом 230 ограничения.
Второй узел 240 ограничения, предпочтительно, ограничивает не только измененные пиксельные значения пикселей, ближайших к границе блоков, но и, измененные пиксельные значения пикселей, следующих ближайших к границе блоков, и вычисленные с использованием второго и третьего смещений, соответственно. Таким образом, эти измененные пиксельные значения также, предпочтительно, ограничиваются в интервале от нуля до заданного максимального значения M.
Вычислитель 250 второго смещения и вычислитель 260 третьего смещения могут быть сконфигурированы для вычисления второго и третьего смещений для каждой линии пикселей и каждой соответствующей линии пикселей, для которой фильтрация для удаления блочности подлежит применению по границе блоков между блоком и соседним блоком. Согласно альтернативному подходу, узел 200 фильтрации для удаления блочности осуществляет выбор, вычислять ли только первое смещение и, таким образом, изменять только пиксельные значения пикселей, ближайших к границе блоков, или вычислять первое, второе и третье смещения и, таким образом, изменять пиксельные значения пикселей, ближайших к границе блоков, и пикселей, следующих после ближайшего.
p1
В необязательном варианте осуществления, узел 200 фильтрации для удаления блочности может содержать вычислитель 280 четвертого смещения, сконфигурированный с возможностью вычисления четвертого смещения на основании (p3+p1-2×p2+2×Δ)/4.
p1
p1
p1
p1
В конкретном варианте осуществления, вычислитель 280 четвертого смещения сконфигурирован с возможностью вычисления четвертого смещения равным b((p3+p1-2×p2+2×Δ)/4), т.е. функции b() или представлению (p3+p1-2×p2+2×Δ)/4. Эта функция, предпочтительно, выводит целочисленное представление (p3+p1-2×p2+2×Δ)/4 и, предпочтительно, функция пригодна для аппаратной реализации. Вычислитель 280 четвертого смещения сконфигурирован, согласно варианту осуществления, для вычисления четвертого смещения на основании или, предпочтительно, равным, (((p3+p1+1)>>1)-p2+Δ)>>1.
q1
Фильтр удаления блочности 200 также может содержать необязательный вычислитель 290 пятого смещения, сконфигурированный с возможностью вычисления пятого смещения на основании (q3+q1-2×q2+2×Δ)/4.
q1
q1
q1
q1
В конкретном варианте осуществления, вычислитель 290 пятого смещения сконфигурирован с возможностью вычисления пятого смещения равным k((q3+q1-2×q2+2×Δ)/4), т.е. функции k() или представлению (q3+q1-2×q2+2×Δ)/4. Эта функция, предпочтительно, выводит целочисленное представление (q3+q1-2×q2+2×Δ)/4 и, предпочтительно, функция пригодна для аппаратной реализации. Вычислитель 290 пятого смещения сконфигурирован, согласно варианту осуществления, для вычисления пятого смещения на основании или, предпочтительно, равным, (((q3+q1+1)>>1)-q2+Δ)>>1.
В этом варианте осуществления, модификатор 220 пиксельного значения также сконфигурирован с возможностью изменения пиксельного значения пикселя, второго следующего ближайшего к границе блоков на линии пикселей в блоке, путем прибавления четвертого смещения, вычисленного вычислителем 280 четвертого смещения к пиксельному значению этого пикселя. Модификатор 220 пиксельного значения дополнительно изменяет, в этом варианте осуществления, пиксельное значение пикселя, второго следующего ближайшего к границе блоков на соответствующей линии пикселей в соседнем блоке путем прибавления пятого смещения, вычисленного вычислителем пятого смещения, к пиксельному значению этого пикселя.
C
Второй узел 240 ограничения, предпочтительно, обрабатывает измененные пиксельные значения для ограничения их в интервале от нуля до заранее заданного максимального значения M. Третий узел 270 ограничения также можно использовать для ограничения четвертого и пятого смещений наподобие второго и третьего смещений. Альтернативно, узел 200 фильтрации для удаления блочности содержит четвертый узел ограничения, сконфигурированный с возможностью ограничения четвертого и пятого смещений интервалом, концевые точки которого задаются на основании значения QP блока и, предпочтительно, на основании порогового значения t.
Конкретный аспект относится к узлу фильтрации для удаления блочности для уменьшения артефактов блочности на границе блоков между блоком множественных пикселей и соседним блоком множественных пикселей в кадре видео. Согласно Фиг. 8, узел 100 фильтрации для удаления блочности содержит вычислитель 110 первого смещения, сконфигурированный с возможностью вычисления первого смещения на основании пиксельного значения пикселя, ближайшего к границе блоков на линии пикселей в блоке, пиксельного значения пикселя, следующего ближайшего к границе блоков на линии пикселей, пиксельного значения пикселя, ближайшего к границе блоков на соответствующей или противоположной линии пикселей в соседнем блоке, и пиксельного значения пикселя, следующего ближайшего к границе блоков на соответствующей линии пикселей. Линия пикселей и соседняя линия пикселей перпендикулярны к границе блоков. Первое смещение вычисляется вычислителем 110 первого смещения на основании этих пиксельных значений и формулы, которая дает значение смещения, которое приближается к нулю, предпочтительно, равно нулю, когда пиксельные значения линейно возрастают или убывают или остаются одинаковыми на протяжении линии пикселей и соответствующей линии пикселей и дает значение смещения, которое сглаживает ступеньку в пиксельных значениях, когда пиксельные значения ступенчато увеличиваются или уменьшаются на протяжении линии пикселей и соответствующей линии пикселей. Узел 100 фильтрации для удаления блочности также содержит Модификатор 120 пиксельного значения сконфигурированный с возможностью изменения пиксельного значения пикселя, ближайшего к границе блоков на линии пикселей, путем прибавления первого смещения к пиксельному значению пикселя, ближайшего к границе блоков на линии пикселей, для формирования измененного пиксельного значения. Модификатор 120 пиксельного значения дополнительно сконфигурирован с возможностью изменения пиксельного значения пикселя, ближайшего к границе блоков на соответствующей линии пикселей, путем вычитания первого смещения из пиксельного значения пикселя, ближайшего к границе блоков на соответствующей линии пикселей, для формирования измененного пиксельного значения.
Хотя соответствующие узлы 110, 120 и 210-290, раскрытые в связи с Фиг. 8 и 9, раскрыты как физически раздельные узлы 110, 120 и 210-290 в устройстве 100, 200, и все они могут быть схемами специального назначения, например, ASIC (специализированными интегральными схемами), возможны альтернативные варианты осуществления устройства 100, 200, где некоторые или все узлы 110, 120 и 210-290 реализованы в виде модулей компьютерной программы, выполняющейся на процессоре общего назначения. Такой вариант осуществления раскрыт на Фиг. 10.
Фиг. 10 схематически иллюстрирует вариант осуществления компьютера 70, имеющего узел 72 обработки, например, DSP (цифровой сигнальный процессор) или ЦП (центральный процессор). Узел 72 обработки может представлять собой один узел или множество узлов для осуществления различных описанных здесь этапов способа. Компьютер 70 также содержит узел 71 ввода/вывода (I/O) для приема записанных или сгенерированных кадров видео или кодированных кадров видео и кодированного кадра видео или декодированных видеоданных. Узел 71 I/O проиллюстрирован как один узел на Фиг. 10, но аналогично может иметь форму отдельного узла ввода и отдельного узла вывода.
Кроме того, компьютер 70 содержит, по меньшей мере, один компьютерный программный продукт 73 в форме энергонезависимой памяти, например ЭСППЗУ (электрически стираемой программируемой постоянной памяти), флэш-памяти или накопителя на дисках. Компьютерный программный продукт 73 содержит компьютерную программу 74, которая содержит кодовое средство, которое, при выполнении на компьютере 70, например, узлом 72 обработки, предписывает компьютеру 70 осуществлять этапы способа, описанные выше в связи с Фиг. 1. Следовательно, согласно варианту осуществления кодовое средство в компьютерной программе 74 содержит модуль вычисления первого смещения или вычислитель 310 первого смещения для вычисления первого смещения и модуль изменения пиксельного значения или модификатор 320 пиксельного значения для изменения пиксельных значений модуля 300 фильтрации для удаления блочности или устройства фильтра удаления блочности. Эти модули 310, 320 по существу осуществляют этапы блок-схемы операций на Фиг. 1 при выполнении на узле 72 обработки. Таким образом, когда разные модули 310, 320 выполняются на узле 72 обработки, они соответствуют соответствующим узлам 110, 120 на Фиг. 8 и узлам 210, 220 на Фиг. 9.
Компьютерная программа 74 может дополнительно содержать первый модуль ограничения, второй модуль ограничения, модуль вычисления второго смещения, модуль вычисления третьего смещения и, в необязательном порядке, также третий модуль ограничения, модуль вычисления четвертого смещения и модуль вычисления пятого смещения для осуществления операций соответствующих узлов 230-290 на Фиг. 9.
Компьютер 70, показанный на Фиг. 10, может быть пользовательским оборудованием или входить в состав пользовательского оборудования 80. В таком случае, пользовательское оборудование 80 может дополнительно содержать дисплей 88 для отображения видеоданных или быть подключенным к нему.
Узел 100, 200 фильтрации для удаления блочности, показанный на Фиг. 8 и 9, предпочтительно, используется при кодировании видеосигнала. Он функционирует и, таким образом, предпочтительно, реализован в видеокодере и в видеодекодере. Видеодекодер можно реализовать, предпочтительно, аппаратными средствами, а также программными средствами. То же самое справедливо для видеокодера.
На Фиг. 11 показана упрощенная блок-схема кодера 40 для кодирования блока пикселей в кадре видео видеопоследовательности согласно варианту осуществления.
Текущий блок пикселей предсказывается путем осуществления оценивания движения узлом 50 оценки движения из ранее предоставленного блока пикселей в одном и том же кадре или в предыдущем кадре. Результатом оценивания движения является вектор движения или перемещения, связанный с опорным блоком, в случае внешнего предсказания. Вектор движения используется узлом 50 компенсации движения для вывода внешнего предсказания блока пикселей.
Узел 49 внутреннего предсказания вычисляет внутреннее предсказание текущего блока пикселей. Выходные сигналы узла 50 оценки/компенсации движения и узла 49 внутреннего предсказания поступают на узел 51 выбора, который выбирает внутреннее предсказание или внешнее предсказание для текущего блока пикселей. Выходной сигнал от блока 51 выбора поступает на вычислитель ошибки в виде сумматора 41, который также принимает пиксельные значения текущего блока пикселей. Сумматор 41 вычисляет и выводит остаточную ошибку как разность в пиксельных значениях между блоком пикселей и его предсказанием.
Ошибка преобразуется на преобразователе 42, например, посредством дискретного косинусного преобразования, и квантуется квантователем 43, после чего, кодируется на кодере 44, например, статистическом кодере. При внешнем кодировании, оцененный вектор движения также подается на кодер 44 для генерации кодированного представления текущего блока пикселей.
Преобразованная и квантованная остаточная ошибка для текущего блока пикселей также подается на обратный квантователь 45 и обратный преобразователь 46 для извлечения исходной остаточной ошибки. Эта ошибка суммируется сумматором 47 с выходным сигналом предсказания блока из узла 50 компенсации движения или узла 49 внутреннего предсказания для создания опорного блока пикселей, который можно использовать при предсказании и кодировании следующего блока пикселей. Этот новый опорный блок сначала обрабатывается узлом 100 фильтрации для удаления блочности согласно вариантам осуществления для осуществления фильтрации для удаления блочности для борьбы с какими-либо артефактами блочности. Затем обработанный новый опорный блок временно хранится в буфере 48 кадров, где он доступен узлу 49 внешнего предсказания и узлу 50 оценки/компенсации движения.
На Фиг. 12 показана соответствующая упрощенная блок-схема декодера 60, содержащего узел 100 фильтрации для удаления блочности согласно вариантам осуществления. Декодер 60 содержит декодер 61, например, статистический декодер, для декодирования кодированного представления блока пикселей для получения набора квантованных и преобразованных остаточных ошибок. Эти остаточные ошибки деквантуются на обратном квантователе 62 и обратно преобразуются на обратном преобразователе 63 для получения набора остаточных ошибок.
Эти остаточные ошибки суммируются на сумматоре 64 с пиксельными значениями опорного блока пикселей. Опорный блок определяется узлом 67 оценки/компенсации движения или узлом 66 внутреннего предсказания, в зависимости от того, осуществляется ли внешнее или внутреннее предсказание. Селектор 68, таким образом, соединен с сумматором 64 и узлом 67 оценки/компенсации движения и узлом 66 внутреннего предсказания. Результирующий декодированный блок пикселей, выводимый из сумматора 64, поступает на узел 100 фильтрации для удаления блочности согласно вариантам осуществления для осуществления фильтрации для удаления блочности любых артефактов блочности. Фильтрованный блок пикселей выводится из декодера 60 и, кроме того, предпочтительно, временно поступает в буфер 65 кадров и может использоваться как опорный блок пикселей для последующего блока пикселей, подлежащего декодированию. Буфер 65 кадров, таким образом, подключен к узлу 67 оценки/компенсации движения, чтобы сохраненные блоки пикселей были доступны узлу 67 оценки/компенсации компенсации движения.
Выходной сигнал из сумматора 64, предпочтительно также поступает на узел 66 внутреннего предсказания для использования в качестве нефильтрованного опорного блока пикселей.
В вариантах осуществления, раскрытых на Фиг. 11 и 12, узел 100 фильтрации для удаления блочности осуществляет фильтрацию для удаления блочности в виде так называемой контурной фильтрации. В альтернативной реализации на декодере 60 узел 100 фильтрации для удаления блочности выполнен с возможностью осуществлять так называемую фильтрацию последующей обработки. В таком случае, узел 100 фильтрации для удаления блочности работает на кадрах выходного сигнала вне контура, образованного сумматором 64, буфером 65 кадров, узлом 66 внутреннего предсказания, узлом 67 оценки/компенсации движения и узлом 68 выбора. После этого на кодере обычно не производится фильтрации для удаления блочности.
На Фиг. 13 показана упрощенная блок-схема пользовательского оборудования или медиатерминала 80, включающего в себя декодер 60 с узлом фильтрации для удаления блочности. Пользовательское оборудование 80 может представлять собой любое устройство, имеющее функции декодирования медиасигналов, которое работает на кодированном видеопотоке кодированных кадров видео, чтобы, таким образом, декодировать кадры видео и сделать видеоданные доступными. Неограничительные примеры таких устройств включают в себя мобильные телефоны и другие портативные медиаплееры, планшеты, настольные компьютеры, ноутбуки, персональные видеомагнитофоны, мультимедийные проигрыватели, серверы видеопотоков, телевизионные приставки, телевизоры, компьютеры, декодеры, игровые приставки и т.д. Пользовательское оборудование 80 содержит память 84, сконфигурированную для хранения кодированных кадров видео. Эти кодированные кадры видео могут генерироваться самим пользовательским оборудованием 80. В таком случае, пользовательское оборудование 80, предпочтительно, содержит процессор среды или устройство записи совместно с подключенным кодером, например, кодером, показанным на Фиг. 11. Альтернативно, кодированные кадры видео генерируются некоторым другим устройством и передаются по проводам или беспроводным образом на пользовательское оборудование 80. В этом случае пользовательское оборудование 80 содержит приемопередатчик (передатчик и приемник) или порт 82 ввода/вывода для обеспечения переноса данных.
Кодированные кадры видео переносятся из памяти 84 на декодер 60, например, декодер, представленный на Фиг. 12. Декодер 60 содержит узел 100 фильтрации для удаления блочности согласно вариантам осуществления. Затем декодер 60 декодирует кодированные кадры видео в декодированные кадры видео. Декодированные кадры видео поступают на медиаплеер 86, который сконфигурирован с возможностью представления декодированных кадров видео в видеоданных, отображаемых на дисплее или экране 88, входящем в состав или соединенном с пользовательским оборудованием 80.
На Фиг. 13 пользовательское оборудование 80 проиллюстрировано как содержащее и декодер 60, и медиаплеер 86, причем декодер 60 реализован как часть медиаплеера 86. Однако это следует рассматривать лишь как иллюстративный, но не ограничительный пример вариант осуществления реализации для пользовательского оборудования 80. Возможны также распределенные реализации, где декодер 60 и медиаплеер 86 обеспечены в двух физически разделенных устройствах, что входит в объем пользовательского оборудования 80, используемого в данном описании. Дисплей 88 также может быть обеспечен как отдельное устройство, подключенное к пользовательскому оборудованию 80, где происходит фактическая обработка данных.
Как показано на Фиг. 14, кодер 40 и/или декодер 60, например, представленный на Фиг. 11 и 12, можно реализовать в сетевом устройстве 30, являющемся или принадлежащем узлу сети в сети 32 связи между передающим узлом 34 и принимающим пользовательским оборудованием 36. Такое сетевое устройство 30 может быть устройством для преобразования видео согласно одному стандарту кодирования видеосигнала в другой стандарт кодирования видеосигнала, например, если было установлено, что принимающее пользовательское оборудование 36 приспособлено для работы или лучше работает с другим стандартом кодирования видеосигнала, отличным от передаваемого с передающего узла 34. Сетевое устройство 30 может быть выполнено в форме или входить в состав базовой станции радиосвязи, Node-B или любого другого узла сети в сети 32 связи, например, базовой сети радиосвязи.
Вышеописанные варианты осуществления следует рассматривать как несколько иллюстративных примеров настоящего изобретения. Специалистам в данной области техники понятно, что могут быть осуществлены различные модификации, комбинации и изменения в вариантах осуществления, не выходя за рамки объема настоящего изобретения. В частности, различные частичные решения в различных вариантах осуществления можно комбинировать в других конфигурациях, когда это технически возможно. Однако объем настоящего изобретения задан нижеследующей формулой изобретения.