KR20220046689A - 비디오 또는 이미지 코딩에서의 디블로킹 필터 선택 - Google Patents

비디오 또는 이미지 코딩에서의 디블로킹 필터 선택 Download PDF

Info

Publication number
KR20220046689A
KR20220046689A KR1020227009527A KR20227009527A KR20220046689A KR 20220046689 A KR20220046689 A KR 20220046689A KR 1020227009527 A KR1020227009527 A KR 1020227009527A KR 20227009527 A KR20227009527 A KR 20227009527A KR 20220046689 A KR20220046689 A KR 20220046689A
Authority
KR
South Korea
Prior art keywords
abs
calculating
value
equal
sample values
Prior art date
Application number
KR1020227009527A
Other languages
English (en)
Inventor
케니스 앤더슨
잭 엔혼
Original Assignee
텔레폰악티에볼라겟엘엠에릭슨(펍)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 텔레폰악티에볼라겟엘엠에릭슨(펍) filed Critical 텔레폰악티에볼라겟엘엠에릭슨(펍)
Publication of KR20220046689A publication Critical patent/KR20220046689A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Processing (AREA)
  • Facsimile Image Signal Circuits (AREA)

Abstract

VVC에서의 긴 필터 결정은 적어도 샘플 p6 또는 q6을 포함하는 적어도 하나의 그레디언트 체크를 부가함으로서 수정된다. 이는 샘플 p6 또는 q6에 일부 자연스러운 구조가 있을 때 긴 필터의 사용을 방지하는 것을 가능하게 만든다. 한가지 특정한 실시예에서는 q6 및 p6 모두를 포함하는 적어도 두가지 그랜드언트 체크가 부가된다. 또 다른 실시예에서는 dpq 한계값이 beta >> 2에서 beta >> 4로 수정된다. 이 한계값 변경 실시예는 p6 및/또는 q6을 포함하는 그레디언트 체크가 긴 필터 결정에 부가되는 실시예와 연관되어, 또는 그 대신에 사용될 수 있다.

Description

비디오 또는 이미지 코딩에서의 디블로킹 필터 선택
본 발명은 비디오 및/또는 이미지 코딩 및 디코딩에 관한 것이다.
비디오 시퀀스는 각 이미지가 하나 이상의 구성성분으로 구성되는 이미지의 시리즈로 구성된다. 각 구성성분은 샘플 값의 이차원 직사각형 어레이로 설명될 수 있다. 비디오 시퀀스 내의 이미지는 세가지 구성성분으로 구성되는 것이 일반적이다; 샘플 값이 루마(luma) 값인 하나의 루마 구성성분 Y, 및 샘플 값이 크로마(chroma) 값인 두개의 크로마 구성성분 Cb와 Cr. 다른 예는 Y' Cb Cr, Yuv 및 ICTCP를 포함한다. ICTCP에서, I는 "강도 루마(intensity luma)" 구성성분이다. 본 문서의 나머지 부분에서는 임의의 루마 구성성분 Y', Y, 또는 I를 Y 또는 간단한 루마라 칭한다. 크로마 구성성분의 차원은 각 차원에서 두배 만큼 루마 구성성분 보다 작은 것이 일반적이다. 예를 들어, HD 이미지의 루마 구성성분의 사이즈는 1920x1080이고, 크로마 구성성분은 각각 960x540의 차원을 갖게 된다. 구성성분은 때로 칼라 구성성분이라 칭하여진다.
"블록(block)"은 샘플의 이차원 어레이다. 비디오 코딩에서, 각 구성성분은 하나 이상의 블록으로 분할되고 코딩된 비디오 비트스트림은 블록의 시리즈이다. 비디오 코딩에서는 이미지가 이미지의 특정 영역을 커버하는 유닛으로 분할되는 것이 일반적이다. 각 유닛은 그 특정 영역을 구성하는 모든 구성성분으로부터의 모든 블록으로 구성되고 각 블록은 전체적으로 하나의 유닛에 속한다. H.264에서의 매크로블록(macroblock) 및 HEVC에서의 코딩 유닛(Coding unit, CU)이 유닛의 예이다.
HEVC에서, 각 이미지는 코딩 트리 유닛(coding tree unit, CTU)으로 분할된다. CTU는 루마 샘플의 NxN 블록과 두개의 MxM 해당 크로마 블록으로 구성된다. HEVC에서의 CTU는 H.264 및 초기 표준에서의 매크로블록과 유사하지만, 매크로블록과 대조적으로 CTU 사이즈가 구성가능하다. 그러나, 대부분의 경우, HEVC에서의 CTU 사이즈는 64x64 루마 샘플로 설정된다. 각 CTU는 재귀적으로 쿼드트리(quadtree) 분할될 수 있다. 이때, 쿼드트리의 루트는 CTU와 연관된다. 쿼드트리는 코딩 유닛(coding unit, CU)이라 칭하여지는 리프(leaf)에 도달할 때까지 분할된다. HEVC에서의 CU는 항상 동일한 높이와 폭을 갖는 루마 블록으로 구성된다. 각 CTU가 분할되는 방법은 비트스트림으로 전달된다. CU는 또한 두개의 다른 트리, 즉 예측 유닛(prediction unit, PU)을 노드로 갖는 예측 트리 및 변환 유닛(transform unit, TU)을 노드로 갖는 변환 트리의 루트 노드가 된다. HEVC에서의 일부 디코딩 프로세스는 CU 레벨에서 수행되고 일부는 PU 레벨에서, 일부는 TU 레벨에서 수행된다. PU 사이의 경계 및 TU 사이의 경계는 TU와 PU 사이의 불연속성을 감소시키도록 디블로킹 필터(deblocking filter)에 의해 필터링된다. HEVC에서는 PU에 대해 두가지 종류의 예측 타입, 즉 예측을 위해 현재 이미지의 이전 디코딩 샘플로부터의 예측만을 사용하는 인트라 예측(intra prediction), 및 적어도 하나의 이전 디코딩 이미지로부터의 예측을 사용하는 인터 예측(inter prediction)의 두가지 종류가 존재한다.
HEVC에서는 디블로킹이 먼저 수직 경계에 적용되고 이어서 수평 경계에 적용된다. 경계는 TU 경계이거나 PU 경계이다. 병렬 친화적 디블로킹을 가능하게 하기 위해, 디블로킹은 8x8 샘플 그리드(grid)에서 실행된다.
디블로킹 필터 강도 매개변수(bs)는 각 경계에 대해 설정된다. bs의 값이 0 보다 크면, 디블로킹이 적용될 수 있다. 경계 강도가 크면 클수록, 더 강한 필터링이 적용된다. 먼저 블록 사이의 PU 경계에 있는 블록 중 임의의 것이 인트라 예측 블록인가 (이때 bs가 =2로 설정), 또는 두 블록 모두가 인터 예측을 사용하지만 다른 기준 프레임을 사용하거나 상당히 다른 모션 벡터를 갖는가 (이때 bs가 =1로 설정) 여부를 체크한다. 또한, 블록 사이의 TU 경계가 블록 중 적어도 하나에서 비-제로 변환 계수를 갖는가 (코드 블록 플래그 CBF가 1) (이때 bs가 =1로 설정) 여부를 체크한다. 이러한 첫번째 체크는 디블로킹이 적용되어야 함을 나타내도록 0 보다 큰 경계 강도(bs)를 설정한다. 경계 강도가 크면 클수록 더 강한 필터링이 적용된다. 디블로킹할 때 자연 구조의 제거를 줄이거나 방지하기 위해, 경계의 양측에 자연 구조가 있는가 여부의 체크가 이어서 루마에 대해 적용된다. HEVC에서는 다음의 부등식을 사용하여 경계의 양측에서 그레디언트 계산(gradient calculation)이 사용된다: abs(p0-2*p1+p2) + abs(q0-2*q1+q2) < beta, 여기서 beta는 (또한 "β"라 표시되는) 블록에 대한 양자화 매개변수를 기반으로 하는 매개변수이고, p0, p1 내지 p2는 블록 경계의 한 측에서의 샘플이고, q0, q1 내지 q2는 블록 경계의 다른 한 측에서의 샘플이다. 경계를 따라 두 지점에서 조건이 체크되고, 두 조건이 모두 충족되면, 루마 샘플은 경계의 그 4개 샘플 부분에 대해 디블로킹된다. 크로마 경계는 인접한 블록 중 임의의 하나가 인트라 코딩된 경우 항상 필터링될 수 있다.
VVC에 대한 사양의 현재 초안에서 (VVC 초안 6 JVET-O2001-v14), 코딩 트리 유닛(CTU)은 HEVC에서의 CTU와 유사하지만, H.266에서의 CTU가 128x128 루마 샘플의 사이즈를 갖는다는 차이점을 갖는다. VVC에서, CTU는 결과의 CU가 직사각형 루마 블록으로 구성될 수 있도록 보다 유연하게 분할될 수 있다. VVC에서는 HEVC에서와 같은 예측 트리 또는 변환 트리가 없다. 그러나, VVC에서의 CU는 다수의 TU 또는 다수의 예측 서브블록으로 분할될 수 있다.
VVC에 대한 사양의 현재 초안에서 (VVC 초안 6 JVET-O2001-v14), 디블로킹은 먼저 수직 경계에서 (CU/암시적인 TU/예측 서브-블록 경계), 이어서 수평 경계에서 (CU/암시적인 TU/예측 서브-블록) CU에 대한 4x4 그리드에 적용된다. CU 내부의 예측 서브-블록 경계는 8x8 그리드에서 필터링된다. 디블로킹은 HEVC 디블로킹을 기반으로 하지만, 또한 더 긴 디블로킹 필터를 갖고, 블록 경계에 직교하는 사이즈가 루마에 대해 적어도 한 측에서 32 보다 크거나 같고 다른 측이 4 보다 크면, 최대 7개 샘블을 수정하고 (최대 8개 샘플을 판독하고), 블록 경계에 직교하는 사이즈가 루마에 대한 한 측에서 32 보다 작으면, 그 측에서 최대 3개 샘플을 수정하고 최대 4개 샘플을 판독하고, 크로마에 대한 크로마 샘플에서의 경계의 양측에서 8 보다 크거나 같으면, 최대 3개 크로마 샘플을 수정하고 최대 4개 크로마 샘플을 판독하고, 그렇지 않은 경우, 경계의 양측에서 각각 최대 하나의 샘플을 수정하고 최대 두개의 샘플을 판독한다.
VVC 사양(JVET-O2001-v14)은 섹션 8.8.3 디블로킹 필터 프로세스에서 지정된 긴 필터 및 결정을 포함한다.
디블로킹 결정은 for 라인의 세그먼트에서 라인 0 및 라인 4에 대해 계산된다.
도 3은 각 라인 및 블록에 대한 8개 샘플, 샘플 0 내지 7에 대해, 또한 4개 라인, 라인 0 내지 3에 대해 제1 블록(302)("P 블록"이라 표시된) 및 제2 블록(304)("Q 블록"이라 표시된) 사이의 경계를 도시한다.
다음은 VVC 사양(JVET-O2001-v14)에서 발췌한 내용이다. 이 발췌 내용은 긴 필터 결정에 대한 것이다.
-- 발췌 시작 --
8.8.3.6.1 루마 블록 엣지에 대한 결정 프로세스
...
다음 순서의 단계가 적용된다:
1. 변수 dp0, dp3, dq0 및 dq3은 다음과 같이 유도된다:
dp0 = Abs(p2,0 - 2 * p1,0 + p0,0 ) (8-1077)
dp3 = Abs(p2,3 - 2 * p1,3 + p0,3 ) (8-1078)
dq0 = Abs(q2,0 - 2 * q1,0 + q0,0 ) (8-1079)
dq3 = Abs(q2,3 - 2 * q1,3 + q0,3 ) (8-1080)
2. maxFilterLengthP 및 maxFilterLengthQ 모두가 3 보다 크거나 같을 때, 변수 sp0, sq0, spq0, sp3, sq3 및 spq3은 다음과 같이 유도된다:
sp0 = Abs(p3,0 - p0,0 ) (8-1081)
sq0 = Abs(q0,0 - q3,0 ) (8-1082)
spq0 = Abs(p0,0 - q0,0 ) (8-1083)
sp3 = Abs(p3,3 - p0,3 ) (8-1084)
sq3 = Abs(q0,3 - q3,3 ) (8-1085)
spq3 = Abs(p0,3 - q0,3 ) (8-1086)
3. 변수 sidePisLargeBlk 및 sideQisLargeBlk는 0으로 설정된다.
4. maxFilterLengthP가 3 보다 클 때, sidePisLargeBlk는 1로 설정된다:
5. maxFilterLengthQ가 3 보다 클 때, sideQisLargeBlk는 1로 설정된다:
6. edgeType이 EDGE_HOR과 같고 (yCb + yBl ) % CtbSizeY가 0과 같을 때, sidePisLargeBlk는 0으로 설정된다.
7. 변수 dSam0 및 dSam3은 0으로 초기화된다.
8. sidePisLargeBlk 또는 sideQisLargeBlk가 0 보다 클 때, 다음이 적용된다:
a. 다음과 같이 변수 dp0L, dp3L이 유도되고 maxFilterLengthP가 수정된다:
- sidePisLargeBlk가 1과 같으면, 다음이 적용된다:
dp0L = ( dp0 + Abs( p5,0 - 2 * p4,0 + p3,0 ) + 1 ) >> 1
(8-1087)
dp3L = ( dp3 + Abs( p5,3 - 2 * p4,3 + p3,3 ) + 1 ) >> 1
(8-1088)
- 그렇지 않은 경우, 다음이 적용된다:
dp0L = dp0 (8-1089)
dp3L = dp3 (8-1090)
maxFilterLengthP = 3 (8-1091)
b. 다음과 같이 변수 dq0L 및 dq3L이 유도된다:
- sideQisLargeBlk가 1과 같으면, 다음이 적용된다:
dq0L = ( dq0 + Abs( q5,0 - 2 * q4,0 + q3,0 ) + 1 ) >> 1
(8-1092)
dq3L = ( dq3 + Abs( q5,3 - 2 * q4,3 + q3,3 ) + 1 ) >> 1
(8-1093)
- 그렇지 않은 경우, 다음이 적용된다:
dq0L = dq0 (8-1094)
dq3L = dq3 (8-1095)
c. 다음과 같이 변수 dpq0L, dpq3L, 및 dL이 유도된다:
dpq0L = dp0L + dq0L (8-1096)
dpq3L = dp3L + dq3L (8-1097)
dL = dpq0L + dpq3L (8-1098)
d. dL이 β 보다 작을 때, 다음 순서의 단계가 적용된다:
i. 변수 dpq는 2 * dpq0L로 설정된다.
ii. 변수 sp는 sp0으로 설정되고, 변수 sq는 sq0으로 설정되고, 변수 spq는 spq0으로 설정된다.
iii. 변수 p0 p3 qo 및 q3은 처음에 0으로 초기화되고, 이어서 다음과 같이 sidePisLargeBlk 및 sideQisLargeBlk에 따라 수정된다:
- sidePisLargeBlk가 1과 같을 때, 다음이 적용된다:
p3 = p3,0 (8-1099)
p0 = pmaxFilterLengthP,0 (8-1100)
- sideQisLargeBlk가 1과 같을 때, 다음이 적용된다:
q3 = q3,0 (8-1101)
q0 = qmaxFilterLengthQ,0 (8-1102)
iv. 샘플 위치 ( xCb + xBl, yCb + yBl )에서, 8.8.3.6.5에 지정된 바와 같은 루마 샘플에 대한 결정 프로세스는 샘플 값 p0, p3, q0, q3, 변수 dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β 및 tC를 입력으로 호출되고, 출력은 결정 dSam0에 지정된다.
v. 변수 dpq는 2 * dpq3L로 설정된다.
vi. 변수 sp는 sp3으로 설정되고, 변수 sq는 sq3으로 설정되고, 변수 spq는 spq3으로 설정된다.
vii. 변수 p0 p3 qo 및 q3은 처음에 0으로 초기화되고, 이어서 다음과 같이 sidePisLargeBlk 및 sideQisLargeBlk에 따라 수정된다:
- sidePisLargeBlk가 1과 같을 때, 다음이 적용된다:
p3 = p3,3 (8-1103)
p0 = pmaxFilterLengthP,3 (8-1104)
- sideQisLargeBlk가 1과 같을 때, 다음이 적용된다:
q3 = q3,3 (8-1105)
q0 = qmaxFilterLengthQ,3 (8-1106)
viii. edgeType이 샘플 위치 ( xCb + xBl, yCb + yBl + 3 )에서 EDGE_VER과 같을 때 또는 edgeType이 샘플 위치 ( xCb + xBl + 3, yCb + yBl )에서 EDGE_HOR과 같을 때, 8.8.3.6.5에 지정된 바와 같은 루마 샘플에 대한 결정 프로세스는 샘플 값 p0, p3, q0, q3, 변수 dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β 및 tC를 입력으로 호출되고, 출력은 결정 dSam3에 지정된다.
9. 변수 dE, dEp 및 dEq는 다음과 같이 유도된다:
- dSam0 및 dSam3 모두가 1과 같으면, 변수 dE는 3으로 설정되고, dEp는 1로 설정되고, dEq는 1로 설정된다.
- 그렇지 않은 경우, 다음 순서의 단계가 적용된다:
a. 변수 dpq0, dpq3, dp, dq 및 d는 다음과 같이 유도된다:
dpq0 = dp0 + dq0 (8-1107)
dpq3 = dp3 + dq3 (8-1108)
dp = dp0 + dp3 (8-1109)
dq = dq0 + dq3 (8-1110)
d = dpq0 + dpq3 (8-1111)
b. 변수 dE, dEp, dEq, sidePisLargeBlk 및 sideQisLargeBlk는 0으로 설정된다.
c. d가 β 보다 작고 maxFilterLengthP 및 maxFilterLengthQ 모두가 2 보다 클 때, 다음 순서의 단계가 적용된다:
i. 변수 dpq는 2 * dpq0으로 설정된다.
ii. 변수 sp는 sp0으로 설정되고, 변수 sq는 sq0으로 설정되고, 변수 spq는 spq0으로 설정된다.
iii. 샘플 위치 ( xCb + xBl, yCb + yBl )에서, 8.8.3.6.5에 지정된 바와 같은 루마 샘플에 대한 결정 프로세스는 모두 0으로 설정된 변수 p0, p3, q0, q3, 변수 dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β 및 tC를 입력으로 호출되고, 출력은 결정 dSam0에 지정된다.
iv. 변수 dpq는 2 * dpq3으로 설정된다.
v. 변수 sp는 sp3으로 설정되고, 변수 sq는 sq3으로 설정되고, 변수 spq는 spq3으로 설정된다.
vi. edgeType이 샘플 위치 ( xCb + xBl, yCb + yBl + 3 )에서 EDGE_VER과 같을 때 또는 edgeType이 샘플 위치 ( xCb + xBl + 3, yCb + yBl )에서 EDGE_HOR과 같을 때, 8.8.3.6.5에 지정된 바와 같은 샘플에 대한 결정 프로세스는 모두 0으로 설정된 변수 p0, p3, q0, q3, 변수 dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β 및 tC를 입력으로 호출되고, 출력은 결정 dSam3에 지정된다.
d. d가 β 보다 작을 때, 다음 순서의 단계가 적용된다:
i. 변수 dE는 1로 설정된다.
ii. dSam0이 1과 같고 dSam3이 1과 같을 때, 변수 dE는 2로 설정된다.
iii. maxFilterLengthP가 1 보다 크고, maxFilterLengthQ가 1 보다 크고, 또한 dp가 ( β + ( β >>  1 ) )  >>  3 보다 작을 때, 변수 dEq는 1로 설정된다.
vi. maxFilterLengthP가 1 보다 크고, maxFilterLengthQ가 1 보다 크고, 또한 dp가 ( β + ( β >>  1 ) )  >>  3 보다 작을 때, 변수 dEq는 1로 설정된다.
도표 8-18: 입력 Q로부터의 한계값 변수 β' 및 tc'의 도출
Figure pct00001
8.8.3.6.2 루마 블록 엣지에 대한 필터링 프로세스
...
edgeType의 값에 따라, 다음이 적용된다:
- edgeType이 EDGE_VER과 같으면, 다음 순서의 단계가 적용된다:
...
3. 각 샘플 위치 ( xCb + xBl, yCb + yBl + k )에 대해 dE가 3과 같고 k = 0...3일 때, 다음 순서의 단계가 적용된다:
a. 8.8.3.6.7절에서 지정된 바와 같은 긴 필터를 사용한 루마 샘플에 대한 필터링 프로세스는 i = 0...maxFilterLengthP 및 j = 0...maxFilterLengthQ를 갖는 샘플 값 pi,k, qj,k, i = 0...maxFilterLengthP - 1를 갖고 ( xCb + xBl - i - 1, yCb+yBl+k )로 설정된 위치 (xPi, yPi) 및 j = 0...maxFilterLengthQ - 1를 갖고 ( xCb + xBl + j, yCb + yBl + k )로 설정된 위치 (xQj, yQj), 변수 maxFilterLengthP, maxFilterLengthQ 및 tC를 입력으로 호출되고 필터링된 샘플 값 pi' 및 qj'이 출력된다.
b. i = 0...maxFilterLengthP - 1을 갖는 필터링된 샘플 값 pi'은 다음과 같이 샘플 어레이 recPicture 내부의 대응하는 샘플을 대체한다:
recPicture[ xCb + xBl - i - 1 ][ yCb + yBl + k ] = pi' (8-1116)
c. j = 0...maxFilterLengthQ - 1을 갖는 필터링된 샘플 값 qj'은 다음과 같이 샘플 어레이 recPicture 내부의 대응하는 샘플을 대체한다:
recPicture[ xCb + xBl + j ][ yCb + yBl + k ] = qj' (8-1117)
...
- 그렇지 않은 경우 (edgeType이 EDGE_HOR과 같으면), 다음 순서의 단계가 적용된다:
...
3. 각 샘플 위치 ( xCb + xBl + k, yCb + yBl )에 대해 dE가 3과 같고 k = 0...3일 때, 다음 순서의 단계가 적용된다:
a. 8.8.3.6.7절에서 지정된 바와 같은 긴 필터를 사용한 루마 샘플에 대한 필터링 프로세스는 i = 0...maxFilterLengthP 및 j = 0...maxFilterLengthQ를 갖는 샘플 값 pi,k, qj,k, i = 0...maxFilterLengthP - 1를 갖고 ( xCb + xBl + k, yCb + yBl - i - 1 )로 설정된 위치 (xPi, yPi) 및 j = 0...maxFilterLengthQ - 1를 갖고 ( xCb + xBl + k, yCb + yBl + j )로 설정된 위치 (xQj, yQj), 변수 maxFilterLengthP, maxFilterLengthQ 및 변수 tC를 입력으로 호출되고 필터링된 샘플 값 pi' 및 qj'이 출력된다.
b. i = 0...maxFilterLengthP - 1을 갖는 필터링된 샘플 값 pi'은 다음과 같이 샘플 어레이 recPicture 내부의 대응하는 샘플을 대체한다:
recPicture[ xCb + xBl + k ][ yCb + yBl - i - 1 ] = pi' (8-1122)
c. j = 0...maxFilterLengthQ - 1을 갖는 필터링된 샘플 값 qj'은 다음과 같이 샘플 어레이 recPicture 내부의 대응하는 샘플을 대체한다:
recPicture[ xCb + xBl + k ][ yCb + yBl + j ] = qj' (8-1123)
...
8.8.3.6.5 루마 샘플에 대한 결정 프로세스
이 프로세스에 대한 입력은:
- 샘플 값 p0, p3, q0 및 q3,
- 변수 dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β 및 tC.
이 프로세스의 출력은 결정을 포함하는 변수 dSam이다.
변수 sp 및 sq는 다음과 같이 수정된다:
- sidePisLargeBlk가 1과 같을 때, 다음이 적용된다:
sp = ( sp + Abs( p3 - p0 ) + 1 )  >>  1 (8-1158)
- sideQisLargeBlk가 1과 같을 때, 다음이 적용된다:
sq = ( sq + Abs( q3 - q0 ) + 1 )  >>  1 (8-1159)
변수 sThr은 다음과 같이 유도된다:
- sidePisLargeBlk가 1과 같거나 sideQisLargeBlk가 1과 같으면, 다음이 적용된다:
sThr = 3 * β  >>  5 (8-1160)
- 그렇지 않은 경우, 다음이 적용된다:
sThr = β  >>  3 (8-1161)
변수 dSam은 다음과 같이 지정된다:
- 다음 조건 모두가 true이면, dSam은 1로 설정된다:
- dpq가 ( β  >>  2 ) 보다 작은 경우,
- sp + sq가 sThr 보다 작은 경우,
- spq가 ( 5 * tC + 1 )  >>  1 보다 작은 경우.
- 그렇지 않은 경우, dSam은 0으로 설정된다.
...
8.8.3.6.6 짧은 필터를 사용한 루마 샘플에 대한 필터링 프로세스
이 프로세스에 대한 입력은:
- i = 0...3인 샘플 값 pi 및 qi,
- i = 0...2인 pi 및 qi의 위치 ( xPi, yPi ) 및 ( xQi, yQi ),
- 변수 dE,
- 각각 필터 샘플 p1 및 q1에 대한 결정을 포함하는 변수 dEp 및 dEq,
- 변수 tc.
이 프로세스의 출력은:
- 필터링된 샘플의 수 nDp 및 nDq,
- i = 0...nDp - 1, j = 0...nDq - 1을 갖는 필터링된 샘플 값 pi' 및 qi'.
dE의 값에 따라, 다음이 적용된다:
- 변수 dE가 2와 같으면, nDp 및 nDq는 모두 3으로 설정되고 다음의 강한 필터링이 적용된다:
p0' = Clip3(p0 - 3 * tC, p0 + 3 * tC, ( p2 + 2 * p1 + 2 * p0 + 2 * q0 + q1 + 4 )  >>  3 ) (8-1162)
p1' = Clip3( p1 - 2 * tC, p1 + 2 * tC, ( p2 + p1 + p0 + q0 + 2 )  >>  2 ) (8-1163)
p2' = Clip3( p2 - 1 * tC, p2 + 1 * tC, ( 2 * p3 + 3 * p2 + p1 + p0 + q0 + 4 )  >>  3 ) (8-1164)
q0' = Clip3( q0 - 3 * tC, q0 + 3 * tC, ( p1 + 2 * p0 + 2 * q0 + 2 * q1 + q2 + 4 )  >>  3 ) (8-1165)
q1' = Clip3( q1 - 2 * tC, q1 + 2 * tC, ( p0 + q0 + q1 + q2 + 2 )  >>  2 ) (8-1166)
q2' = Clip3( q2 - 1 * tC, q2 + 1 * tC, ( p0 + q0 + q1 + 3 * q2 + 2 * q3 + 4 )  >>  3 ) (8-1167)
- 그렇지 않은 경우, nDp 및 nDq는 모두 0으로 설정되고 다음의 약한 필터링이 적용된다:
- 다음이 적용된다:
Δ = ( 9 * ( q0 -  p0 ) - 3 * ( q1 - p1 ) + 8 )  >>  4 (8-1168)
- Abs(Δ)가 tc * 10 보다 작을 때, 다음 순서의 단계가 적용된다:
- 필터링된 샘플 값 p0' 및 q0'는 다음과 같이 지정된다:
Δ = Clip3( -tC, tC, Δ ) (8-1169)
p0' = Clip1γ( p0 + Δ ) (8-1170)
q0' = Clip1γ( q0 - Δ ) (8-1171)
- dEp가 1과 같을 때, 필터링된 샘플 값 p1'은 다음과 같이 지정된다:
Δp = Clip3( -( tC >> 1 ), tC >> 1, ( ( ( p2 + p0 + 1 ) >> 1 ) - p1 + Δ ) >> 1 ) (8-1172)
p1' = Clip1γ( p1 + Δp ) (8-1173)
- dEp가 1과 같을 때, 필터링된 샘플 값 q1'은 다음과 같이 지정된다:
Δq = Clip3( -( tC >> 1 ), tC >> 1, ( ( ( q2 + q0 + 1 ) >> 1 ) - q1 - Δ ) >> 1 ) (8-1174)
q1' = Clip1γ( q1 + Δq ) (8-1175)
- nDp는 dEp + 1로 설정되고 nDq는 dEq + 1로 설정된다.
nDp가 0 보다 크고 다음 조건 중 하나 이상이 true일 때, nDp는 0으로 설정된다:
- 샘플 p0를 포함하는 코딩 블록을 포함한 코딩 유닛의 cu_transquant_bypass_flag가 1과 같은 경우.
- 샘플 p0를 포함하는 코딩 블록을 포함한 코딩 유닛의 pred_mode_plt_flag가 1과 같은 경우.
nDq가 0 보다 크고 다음 조건 중 하나 이상이 true일 때, nDq는 0으로 설정된다:
- 샘플 q0를 포함하는 코딩 블록을 포함한 코딩 유닛의 cu_transquant_bypass_flag가 1과 같은 경우.
- 샘플 q0를 포함하는 코딩 블록을 포함한 코딩 유닛의 pred_mode_plt_flag가 1과 같은 경우.
8.8.3.6.7 긴 필터를 사용한 루마 샘플에 대한 필터링 프로세스
이 프로세스에 대한 입력은:
- 변수 maxFilterLengthP 및 maxFilterLengthQ,
- i = 0...maxFilterLengthP 및 j = 0...maxFilterLengthQ를 갖는 샘플 값 pi, qj,
- i = 0...maxFilterLengthP - 1 및 j = 0...maxFilterLengthQ - 1를 갖는 pi 및 qj의 위치 (xPi, yPi) 및 (xQj, yQj),
- 변수 tc.
이 프로세스의 출력은:
- i = 0...maxFilterLengthP - 1, j = 0...maxFilterLenghtQ - 1을 갖는 필터링된 샘플 값 pi' 및 qi'.
변수 refMiddle는 다음과 같이 유도된다:
- maxFilterLengthP가 maxFilterLengthQ와 같고 maxFilterLengthP가 5와 같으면, 다음이 적용된다:
refMiddle = (p4 + p3 + 2 * ( p2 + p1 + p0 + q0 + q1 + q2 ) + q3 + q4 + 8) >> 4
(8-1176)
- 그렇지 않은 경우, maxFilterLengthP가 maxFilterLengthQ와 같고 maxFilterLengthP가 5와 같지 않으면, 다음이 적용된다:
refMiddle = (p6 + p5 + p4 + p3 + p2 + p1 + 2 * ( p0 + q0 ) + q1 + q2 + q3 + q4 + q5 + q6 + 8) >> 4 (8-1177)
- 그렇지 않은 경우, 다음 조건 중 하나가 true이면,
- maxFilterLengthQ가 7과 같고 maxFilterLengthP가 5와 같은 경우,
- maxFilterLengthQ가 5와 같고 maxFilterLengthP가 7과 같은 경우,
다음이 적용된다:
refMiddle = (p4 + p3 + 2 * ( p2 + p1 + p0 + q0 + q1 + q2 ) + q3 + q4 + 8) >> 4
(8-1178)
- 그렇지 않은 경우, 다음 조건 중 하나가 true이면,
- maxFilterLengthQ가 5와 같고 maxFilterLengthP가 3과 같은 경우,
- maxFilterLengthQ가 3과 같고 maxFilterLengthP가 5와 같은 경우,
다음이 적용된다:
refMiddle = (p3 + p2 + p1 + p0 + q0 + q1 + q2 + q3 + 4) >> 3
(8-1179)
- 그렇지 않은 경우, maxFilterLengthQ가 7과 같고 maxFilterLengthP가 3과 같으면, 다음이 적용된다:
refMiddle = (2 * ( p2 + p1 + p0 + q0 ) + p0 + p1 + q1 + q2 + q3 + q4 + q5 + q6 + 8) >> 4 (8-1180)
- 그렇지 않은 경우, 다음이 적용된다:
refMiddle = (p6 + p5 + p4 + p3 + p2 + p1 + 2 * ( q2 + q1 + q0 + p0) + q0 + q1 + 8) >> 4 (8-1181)
변수 refP 및 refQ는 다음과 같이 유도된다:
refP = ( pmaxFilterLengtP + pmaxFilterLengthP-1 + 1 ) >> 1 (8-1182)
refQ = ( qmaxFilterLengtQ + qmaxFilterLengthQ-1 + 1 ) >> 1 (8-1183)
변수 fi 및 tCPDi는 다음과 같이 정의된다:
- maxFilterLengthP가 7과 같으면, 다음이 적용된다:
f0..6 = { 59, 50, 41, 32, 23, 14, 5 } (8-1184)
tCPD0..6 = { 6, 5, 4, 3, 2, 1, 1 } (8-1185)
- 그렇지 않은 경우, maxFilterLengthP가 5와 같으면, 다음이 적용된다:
f0..4 = { 58, 45, 32, 19, 6 } (8-1186)
tCPD0..4 = { 6, 5, 4, 3, 2 } (8-1187)
- 그렇지 않은 경우, 다음이 적용된다:
f0..2 = { 53, 32, 11 } (8-1188)
tCPD0..2 = { 6, 4, 2} (8-1189)
변수 gj 및 tCQDj는 다음과 같이 정의된다:
- maxFilterLengthQ가 7과 같으면, 다음이 적용된다:
g0..6 = { 59, 50, 41, 32, 23, 14, 5 } (8-1190)
tCQD0..6 = { 6, 5, 4, 3, 2, 1, 1 } (8-1191)
- 그렇지 않은 경우, maxFilterLengthQ가 5와 같으면, 다음이 적용된다:
g0..4 = { 58, 45, 32, 19, 6 } (8-1192)
tCQD0..4 = { 6, 5, 4, 3, 2 } (8-1193)
- 그렇지 않은 경우, 다음이 적용된다:
g0..2 = { 53, 32, 11 } (8-1194)
tCQD0..2 = { 6, 4, 2 } (8-1195)
i = 0...maxFilterLengthP - 1 및 j = 0...maxFilterLengthQ - 1을 갖는 필터링된 샘플 값 pi' 및 qj'은 다음과 같이 유도된다:
pi' = Clip3( pi - ( tC*tCPDi ) >> 1, pi + ( tC*tCPDi ) >> 1, ( refMiddle*fi + refP*( 64 - fi ) + 32) >> 6 ) (8-1196)
qj' = Clip3( qj - ( tC*tCQDj ) >> 1, qj + ( tC*tCQDj ) >> 1, ( refMiddle*gj + refQ*(64 - gj ) + 32) >> 6 ) (8-1197)
다음 조건 중 하나 이상이 true일 때, 필터링된 샘플 값 pi'은 i = 0...maxFilterLengthP - 1인 대응하는 입력 샘플 값 pi로 대체된다:
- 샘플 pi를 포함하는 코딩 블록을 포함한 코딩 유닛의 cu_transquant_bypass_flag가 1과 같은 경우.
- 샘플 pi를 포함하는 코딩 블록을 포함한 코딩 유닛의 pred_mode_plt_flag가 1과 같은 경우.
다음 조건 중 하나 이상이 true일 때, 필터링된 샘플 값 qi'은 j = 0...maxFilterLengthQ - 1인 대응하는 입력 샘플 값 qj로 대체된다:
- 샘플 qi를 포함하는 코딩 블록을 포함한 코딩 유닛의 cu_transquant_bypass_flag가 1과 같은 경우.
- 샘플 qi를 포함하는 코딩 블록을 포함한 코딩 유닛의 pred_mode_plt_flag가 1과 같은 경우.
...
-- 발췌 끝 --
특정한 과제가 존재한다. 예를 들어, 한 측 또는 양측에서 7개 샘플 필터링에 대한 긴 필터 결정은 블록 P에 대한 샘플 p6 또는 블록 Q에 대한 샘플 q6을 고려하지 않고, 이는 긴 필터링이 p6 및/또는 q6을 수정함으로서 이미지 품질을 저하시키게 되는 (예를 들어, 자연스러운 텍스처를 파괴하는) 사실에도 불구하고 긴 필터링을 가능하게 할 수 있다.
다음은 블록 P (p0 내지 p7) 및 블록 Q (q0 내지 q7) 사이의 경계에 걸친 샘플 값의 예이고, 여기서 p0 및 q0는 경계에 인접하고, 현재 긴 필터 결정은 전체적으로 무시되므로 자연스러운 텍스처를 제거하는 디블로킹을 적용할 수 있다.
샘플: p7 p6 p5 p4 p3 p2 p1 p0 | q0 q1 q2 q3 q4 q5 q6 q7
예시 1에 도시된 바와 같이 p6 또는 q6이 인접 샘플 보다 크거나 작은 p6 또는 q6에서의 피크는 검출될 수 없다.
예시 1 10 0 10 10 10 10 10 10 | 10 10 10 10 10 10 0 10
예시 2에 도시된 바와 같이 p4, p5, p6, q4, q5 및 q6이 인접 샘플 보다 크거나 작은 샘플 p5 또는 q5에서의 피크는 검출될 수 없다.
예시 2 10 20 30 20 10 10 10 10 | 10 10 10 10 20 30 20 10
이러한 문제점을 해결하기 위해, 본 개시 내용은 샘플 p6 또는 q6을 적어도 포함하는 적어도 하나의 그레디언트 체크(gradient check)를 부가함으로서 VVC에서의 긴 필터 결정이 수정되는 실시예를 제안한다. 이는 샘플 p6 또는 q6에 일부 자연스러운 구조가 있을 때 긴 필터의 사용을 방지하는 것을 가능하게 만든다. 한가지 특정한 실시예에서는 q6 및 p6 모두를 포함하는 적어도 두가지 그랜드언트 체크가 부가된다. 또 다른 실시예에서는 dpq 한계값이 beta >> 2에서 beta >> 4로 수정된다. 이 한계값 변경 실시예는 p6 및/또는 q6을 포함하는 그레디언트 체크가 긴 필터 결정에 부가되는 실시예와 연관되어, 또는 그 대신에 사용될 수 있다. 제안된 실시예의 이점은 사용자에게 디스플레이되는 이미지의 품질을 증가시킨다는 것이다 (예를 들어, 좁은 라인을 제거하거나 좁은 라인을 흐리게 하는 것을 방지한다).
따라서, 한 측면에서, 이미지와 연관된 샘플 값을 필터링하기 위한 방법(400)이 제공된다. 그 방법은 제1 블록의 샘플 값 및 제2 블록의 샘플 값을 포함하는 제1 세트의 샘플 값을 획득하는 단계(s402)를 포함하고, 여기서 제1 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B1_i,k를 포함하고, 제2 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B2_i,k를 포함한다. 방법은 또한 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하는 단계(s404)를 포함한다. 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하는 단계는: 샘플 값 B1_6,0을 사용하여 제1 그레디언트 값, maxGradB1_6,0을 계산하는 단계(s502); maxGradB1_6,0을 사용하여 제1 pq 값, pq1_0을 계산하는 단계(s504); 및 pq1_0을 한계값에 비교하는 단계(s508)를 포함한다. 또 다른 측면에서, 이 방법을 실행하도록 구성된 장치가 제공된다.
또 다른 측면에서, 이미지와 연관된 샘플 값을 필터링하기 위한 방법(400)이 제공된다. 그 방법은 제1 블록의 샘플 값 및 제2 블록의 샘플 값을 포함하는 제1 세트의 샘플 값을 획득하는 단계(s402)를 포함하고, 여기서 제1 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B1_i,k를 포함하고, 제2 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B2_i,k를 포함한다. 방법은 또한 필터를 선택하는 단계(s404)를 포함한다. 필터를 선택하는 단계는 적어도 Abs( B1_2,0 - 2 * B1_1,0 + B1_0,0 )과 같은 제1 값 및 Abs( B2_2,0 - 2 * B2_1,0 + B2_0,0 )과 같은 제2 값을 사용하여 제1 pq 값, pq2_0을 계산하는 단계(s504); 및 pq2_0을 한계값에 비교하는 단계(s508)를 포함하고, 여기서 한계값은 β >> 4와 같고, β는 양자화 매개변수 값 Q를 기반으로 하는 소정의 beta 값의 세트로부터 선택된다. 또 다른 측면에서, 이 방법을 실행하도록 구성된 장치가 제공된다.
또 다른 측면에서, 이미지와 연관된 샘플 값을 필터링하기 위한 방법이 제공된다. 그 방법은 제1 블록의 샘플 값 및 제2 블록의 샘플 값을 포함하는 제1 세트의 샘플 값을 획득하는 단계(s402)를 포함하고, 여기서 제1 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B1_i,k를 포함하고, 제2 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B2_i,k를 포함한다. 방법은 또한 필터를 선택하는 단계(s404)를 포함한다. 필터를 선택하는 단계는: i) 제1 pq 값, pq1_0을 계산하는 단계로, 여기서 pq1_0을 계산하는 단계는 값 sp를 계산하고, 값 sq를 계산하고, 또한 sp + sq를 계산하는 단계를 포함하고, 여기서 pq1_0 = (sp + sq)인 단계; ii) pq1_0을 제1 한계값에 비교하는 단계; iii) 적어도 Abs( B1_2,0 - 2 * B1_1,0 + B1_0,0 )과 같은 제1 값 및 Abs( B2_2,0 - 2 * B2_1,0 + B2_0,0 )과 같은 제2 값을 사용하여 제2 pq 값, pq2_0을 계산하는 단계(s504); 및 iv) pq2_0을 제2 한계값에 비교하는 단계(s508)를 포함하고, 여기서 제2 한계값은 β >> 4와 같고, β는 양자화 매개변수 값 Q를 기반으로 하는 소정의 beta 값의 세트로부터 선택된다. 또 다른 측면에서, 이 방법을 실행하도록 구성된 장치가 제공된다.
도 1은 한 실시예에 따른 비디오 인코더의 구조적인 블록도이다.
도 2는 한 실시예에 따른 비디오 디코더의 구조적인 블록도이다.
도 3은 제1 블록 (P 블록이라 표시된) 및 제2 블록 (Q 블록이라 표시된) 사이의 경계를 설명한다.
도 4는 한 실시예에 따른 프로세스를 설명하는 흐름도이다.
도 5는 한 실시예에 따른 프로세스를 설명하는 흐름도이다.
도 6은 한 실시예에 따른 장치의 블록도이다.
도 7은 한 실시예에 따른 장치의 기능적인 블록도이다.
여기서 설명되는 실시예는 수직 및/또는 수평 블록 경계를 디블로킹하기 위해 비디오 인코더 또는 비디오 디코더에서 사용될 수 있다. 이는 또한 수직 및/또는 수평 블록 경계를 디블로킹하기 위해 이미지 인코더 또는 이미지 디코더에 적용된다.
도 1은 일부 실시에에 따라 비디오 시퀀스의 비디오 이미지에서 (또한 프레임이라 칭하여지는) 픽셀의 블록을 인코딩하는 비디오 인코더(140)의 구조적인 블록도이다.
현재 픽셀 블록은 동일한 프레임에서 또는 이전 프레임에서 이미 제공된 픽셀 블록으로부터 모션 추정기(150)를 사용하여 모션 추정을 실행함으로서 예측된다. 모션 추정의 결과는 인터 예측의 경우, 기준 블록과 연관된 모션 또는 변위 벡터가 된다. 모션 벡터는 픽셀 블록의 인터 예측을 출력하도록 모션 보상기(150)에 의해 사용될 수 있다.
인트라 예측기(149)는 현재 픽셀 블록의 인트라 예측을 계산한다. 모션 추정기/보상기(150) 및 인트라 예측기(149)로부터의 출력은 현재 픽셀 블록에 대한 인트라 예측 또는 인터 예측을 선택하는 선택기(151)에 입력된다. 선택기(151)로부터의 출력은 또한 현재 픽셀 블록의 픽셀 값을 수신하는 가산기(141)의 형태인 에러 계산기에 입력된다. 가산기(141)는 픽셀 블록과 그 예측 사이의 픽셀 값의 차이로 잔여 에러를 계산하여 출력한다.
에러는 예를 들어, 이산 코사인 변환에 의해 변환기(142)에서 변환되고, 양자화기(143)에 의해 양자화되고, 이어서 엔트로피 인코더와 같은 인코더(144)에서 코딩된다. 인터 코딩에서는 또한 추정된 모션 벤터가 인코더(144)로 전해져 현재 픽셀 블록의 코딩된 표현을 생성한다.
현재 픽셀 블록에 대해 변환되고 양자화된 잔여 에러는 또한 역양자화기(145) 및 역 변환기(146)에 제공되어 원래 잔여 에러를 회복한다. 이 에러는 가산기(147)에 의해 모션 보상기(150) 또는 인트라 예측기(149)로부터의 블록 예측 출력에 가산되어 다음 픽셀 블록의 예측 및 코딩에 사용될 수 있는 기준 픽셀 블록을 생성한다. 이 새로운 기준 블록은 먼저 블로킹 결함을 줄이거나 차단하도록 디블로킹 필터링을 실행하기 위해 상기에 논의된 예시/실시예에 따라 디블로킹 필터(100)에 의해 처리된다. 처리된 새로운 기준 블록은 이어서 일시적으로 프레임 버퍼(148)에 저장되고, 여기서 인트라 예측기(149) 및 모션 추정기/보상기(150)에 이용가능하다.
도 2는 일부 실시예에 따라 디블로킹 필터(100)를 포함하는 비디오 디코더(260)의 대응하는 구조적 블록도이다. 디코더(260)는 픽셀 블록의 인코딩된 표현을 디코딩하여 양자화되고 변환된 잔여 에러의 세트를 얻는, 엔트로피 디코더와 같은, 디코더(261)를 포함한다. 이러한 잔여 에러는 역 양자화기(262)에 의해 양자화되고 역 변환기(263)에 의해 변환되어 잔여 에러 세트를 제공한다.
이러한 잔여 에러는 가산기(264)에 의해 기준 픽셀 블록의 픽셀 값에 가산된다. 기준 블록은 인터 또는 인트라 예측이 실행되는가 여부에 따라, 모션 추정기/보상기(267) 또는 인트라 예측기(266)에 의해 결정된다. 선택기(268)는 그에 의해 가산기(264) 및 모션 추정기/보상기(267)와 인트라 예측기(266)에 상호연결된다. 가산기(264)로부터 출력되는 결과의 디코딩된 픽셀 블록은 블로킹 결함의 디블로킹 필터링을 제공하기 위한 본 발명의 개념의 일부 실시예에 따라 디블로킹 필터(100)에 입력된다. 필터링된 픽셀 블록은 디코더(260)로부터 출력되고, 또한 디코딩되는 이어지는 픽셀 블록에 대한 기준 픽셀 블록으로 사용되도록 프레임 버퍼(265)에 일시적으로 제공될 수 있다. 프레임 버퍼(265)는 그에 의해 모션 추정기/보상기(267)에 연결되어 저장된 픽셀 블록이 모션 추정기/보상기(267)에 이용가능하게 만든다.
가산기(264)로부터의 출력은 또한 필터링되지 않은 기준 픽셀 블록으로 사용되도록 인트라 예측기(266)에 입력될 수 있다.
도 1 및 도 2의 실시예에서, 디블로킹 필터(100)는 소위 인-루프 필터링(in-loop filtering)이라 칭하여지는 디블로킹 필터링을 실행할 수 있다. 디코더(260)에서의 대안적인 실시예에서, 디블로킹 필터(100)는 소위 포스트-프로세싱 필터링(post-processing filtering)이라 칭하여지는 필터링을 실행하도록 배열될 수 있다. 이러한 경우, 디블로킹 필터(100)는 가산기(264), 프레임 버퍼(265), 인트라 예측기(266), 모션 추정기/보상기(267), 및 선택기(268)에 의해 형성될 루프 외부에서 출력 프레임에 동작한다. 이러한 실시예에서는 디블로킹 필터링이 일반적으로 인코더에서 수행되지 않는다. 디블로킹 필터(100)의 동작은 이후 더 상세히 논의된다.
적어도 블록 경계의 한 측에서 수정될 수 있는 최대 샘플 수가 7개 샘플로 결정되고 경계 강도가 샘플의 한 라인에 대해 0 보다 큰 것으로 결정될 때, 긴 필터 결정은 maxFilterLengthP가 7과 같은 경우 블록 P에서의 샘플 값 p6을 사용하여 그레디언트 값을 ("magGradp6"이라 표시되는) (예를 들면, 그레디언트의 크기) 결정하는 것을 기반으로 하고, maxFilterLengthQ가 7과 같은 경우 블록 Q에서의 샘플 값 q6을 사용하여 그레디언트 값을 ("magGradq6"이라 표시되는) 결정하는 것을 기반으로 한다.
한 실시예에서, magGradp6을 계산하는 단계는 p6을 사용하고 p3, p4, p5, 및 p7 중 적어도 하나를 사용하여 magGradp6을 계산하는 단계를 포함하고, magGradq6을 계산하는 단계는 q6을 사용하고 q3, q4, q5, 및 q7 중 적어도 하나를 사용하여 magGradq6을 계산하는 단계를 포함한다.
대안 1
magGradp6 값은 적어도 샘플 p0, p3 및 p7을 포함하는 다른 그레디언트 계산에 가산된다. 예를 들어, 값 sp는 다음과 같이 계산된다:
sp = (Abs(p0 - p3) + Abs(p3 - p7) + magGradp6 + 1) >> 1
magGradq6 값은 적어도 샘플 q0, q3 및 q7을 포함하는 다른 그레디언트 계산에 가산된다. 예를 들어, 값 sq는 다음과 같이 계산된다:
sq = (Abs(q0 - q3) + Abs(q3 - q7) + magGradq6 + 1) >> 1
이어서, 값 spq가 계산될 수 있고, 여기서 spq = sp + sq 이다.
dp = (Abs(p0 - 2*p1 + p2) + Abs(p3 - 2*p4 + p5) + 1) >> 1
dq = (Abs(q0 - 2*q1 + q2) + Abs(q3 - 2*q4 + q5) + 1) >> 1
대안 2
magGradp6 값은 다음과 같이 maxFilterLengthP가 5와 같은 경우에 대해 계산된 크기를 대체한다:
maxFilterLengthP == 7이면,
dp = (Abs(p0 - 2*p1 + p2) + magGradp6 + 1) >> 1, 그렇지 않은 경우
dp = (Abs(p0 - 2*p1 + p2) + Abs(p3 - 2*p4 + p5) + 1) >> 1.
magGradq6 값은 다음과 같이 maxFilterLengthQ가 5와 같은 경우에 대해 계산된 크기를 대체한다:
maxFilterLengthQ == 7이면,
dq = (Abs(q0 - 2*q1 + q2) + magGradq6 + 1) >> 1, 그렇지 않은 경우
dq = (Abs(q0 - 2*q1 + q2) + Abs(q3 - 2*q4 + q5) + 1) >> 1.
이어서, 값 dpq가 dap = dq + dp 로 계산된다.
상기의 대안 1 또는 대안 2의 경우, 한가지 실시예에서는 다음 세가지 조건 모두가 TRUE인 경우 긴 필터를 사용하도록 결정된다:
(1) spq < threshold1,
(2) 2*dpq < threshold2, 또한
(Abs(p0 - q0) < threshold3.
상기 조건 중 하나 이상이 true가 아니면, 긴 필터는 적용되지 않고 maxFilterLengthP 및 maxFilterLengthQ는 3 보다 작거나 같다.
한 실시예에서는 threshold1 = sThr (예를 들어, (3*beta) >> 5) 이다.
한 실시예에서는 threshold2 = beta >> 2 이고, 여기서 beta는 도표 8-18에 도시된 바와 같이, 양자화 매개변수 값 Q에 의존한다.
한 실시예에서는 threshold3 = (5*tC+1) >> 1 이고, 여기서 tC는 도표 8-18에 도시된 바와 같이, 양자화 매개변수 값 Q에 의존한다.
상기의 대안 1 또는 대안 2의 경우, 한가지 실시예에서는 magGradp6이: Abs(p6 - p7)로 결정되고, magGradq6이: Abs(q7 - q6)로 결정된다.
또 다른 실시예에서, magGradp6은 Abs(p4 - p5 - p6 + p7)과 같고, magGradq6은 Abs(q7 - q5 - q6 + q4)와 같다. 두 샘플 사이의 차이로부터 결정된 그레디언트를 갖는 실시예와 비교해 본 실시예의 한가지 이점은 그레디언트의 크기를 결정하는 이 접근법이 p0에서 p7로 또는 q0에서 q7로 증가하거나 감소하는 경사도, 기울기에 민감하게 증가되지 않는다는 점이다.
또 다른 실시예에서, magGradp6은 Abs(p4 - 2*p5 + p6)과 같고, magGradq6은 Abs(q6 - 2*q5 + q4)와 같다. 두 샘플 사이의 차이로부터 결정된 그레디언트를 갖는 실시예와 비교해 본 실시예의 한가지 이점은 그레디언트의 크기를 결정하는 이 접근법이 p0에서 p7로 또는 q0에서 q7로 증가하거나 감소하는 경사도, 기울기에 민감하게 증가되지 않는다는 점이다.
대안 1의 경우, 사양 8.8.3.6.1절의 식 8-1081, 8-1082, 8-1084, 및 8-1085는 다음과 같이 수정될 수 있다:
sp0 = maxFilterLengthP==7 ? Abs( p3,0 - p0,0 ) + magGradp6_0: Abs( p3,0 - p0,0 ) (8-1081)
sq0 = maxFilterLengthQ==7 ? Abs( q0,0 - q3,0 ) + magGradq6_0: Abs( q0,0 - q3,0 ) (8-1082)
sp3 = maxFilterLengthP==7 ? Abs( p3,3 - p0,3 ) + magGradp6_3: Abs( p3,3 - p0,3 ) (8-1084)
sq3 = maxFilterLengthQ==7 ? Abs( q0,3 - q3,3 ) + magGradq6_3: Abs( q0,3 - q3,3 ) (8-1085)
여기서
magGradp6_0 = Abs( p7,0 - p6,0 ) 또는
Abs( p7,0 - p6,0 - p5,0 + p4,0) 또는
Abs( p6,0 -2*p5,0 + p4,0);
magGradp6_3 = Abs( p7,3 - p6,3 ) 또는
Abs( p7,3 - p6,3 - p5,3 + p4,3) 또는
Abs( p6,3 -2*p5,3 + p4,3);
magGradq6_0 = Abs( q6,0 - q7,0 ) 또는
Abs( q4,0 - q6,0 - q5,0 + q7,0) 또는
Abs( q4,0 -2*q5,0 + q6,0); 또한
magGradq6_3 = Abs( q6,3 - q7,3 ) 또는
Abs( q4,3 - q6,3 - q5,3 + q7,3) 또는
Abs( q4,3 -2*q5,3 + q6,3).
대안 2의 경우, 사양 8.8.3.6.1절의 식 8-1087, 8-1088, 8-1092, 및 8-1093은 다음과 같이 수정될 수 있다:
dp0L = ( dp0 + (maxFilterLengthP ==7 ? magGradp6_0: Abs( p5,0 - 2 * p4,0 + p3,0 )) + 1 ) >> 1 (8-1087)
dp3L = ( dp3 + (maxFilterLEngthP == 7 ? magGradp6_3: Abs( p5,3 - 2 * p4,3 + p3,3 )) + 1 ) >> 1 (8-1088)
dq0L = ( dq0 + (maxFilterLEngthQ == 7 ? magGradq6_0: Abs( q5,0 - 2 * q4,0 + q3,0 )) + 1 ) >> 1 (8-1092)
dq3L = ( dq3 + (maxFilterLengthQ == 7 ? magGradq6_3: Abs( q5,3 - 2 * q4,3 + q3,3 ) )+ 1 ) >> 1 (8-1093)
여기서
magGradp6_0 = Abs( p7,0 - p6,0 - p5,0 + p4,0) 또는
Abs( p6,0 -2*p5,0 + p4,0);
magGradp6_3 = Abs( p7,3 - p6,3 - p5,3 + p4,3) 또는
Abs( p6,3 -2*p5,3 + p4,3);
magGradq6_0 = Abs( q4,0 - q6,0 - q5,0 + q7,0) 또는
Abs( q4,0 -2*q5,0 + q6,0); 또한
magGradq6_3 = Abs( q4,3 - q6,3 - q5,3 + q7,3) 또는
Abs( q4,3 -2*q5,3 + q6,3).
또 다른 실시예에서, dpq 한계값은 (즉, "threshold2") threshold2가 beta >> 2와 같은 것 대신에, beta >> 4와 같도록 수정된다. 본 실시예에서는 8.8.3.6.5절이 다음과 같이 수정된다:
변수 sThr1 및 sThr2는 다음과 같이 유도된다:
- sidePisLargeBlk가 1과 같거나 sideQisLargeBlk가 1과 같으면, 다음이 적용된다:
sThr1 = 3 * β >> 5 (8-1160)
sThr2 = β >> 4 (8-1160b)
- 그렇지 않은 경우, 다음이 적용된다:
sThr1 = β >> 3 (8-1161)
sThr2 = β >> 2 (8-1161b)
변수 dSam은 다음과 같이 지정된다:
- 다음 조건 모두가 true이면, dSam은 1로 설정된다:
- dpq가 sThr2 보다 작은 경우,
- sp + sq가 sThr1 보다 작은 경우,
- spq가 ( 5 * tC + 1 ) >> 1 보다 작은 경우.
그렇지 않은 경우, dSam은 0으로 설정된다.
또 다른 실시예에서, dpq 한계값 수정은 또한 강한/약한 필터 결정에도 적용된다. 본 실시예에서는 8.8.3.6.5절이 다음과 같이 수정된다:
변수 sThr1 및 sThr2는 다음과 같이 유도된다:
- sidePisLargeBlk가 1과 같거나 sideQisLargeBlk가 1과 같으면, 다음이 적용된다:
sThr1 = 3 * β >> 5 (8-1160)
sThr2 = β >> 4 (8-1160b)
- 그렇지 않은 경우, 다음이 적용된다:
sThr1 = β >> 3 (8-1161)
sThr2 = β >> 4 (8-1161b)
변수 dSam은 다음과 같이 지정된다:
- 다음 조건 모두가 true이면, dSam은 1로 설정된다:
- dpq가 sThr2 보다 작은 경우,
- sp + sq가 sThr1 보다 작은 경우,
- spq가 ( 5 * tC + 1 ) >> 1 보다 작은 경우.
그렇지 않은 경우, dSam은 0으로 설정된다.
도 4는 일부 실시예에 따른 프로세스(400)를 설명하는 흐름도이다. 프로세스(400)는 단계(s402)에서 시작될 수 있다.
단계(s402)는 제1 세트의 샘플 값을 획득하는 단계를 포함한다. 한 실시예에서, 제1 세트의 샘플 값은 제1 블록의 샘플 값 (예를 들어, 블록(302)) (이후 P 블록이라 칭하여지는) 및 제2 블록의 샘플 값을 (예를 들어, 블록(304)) (이후 Q 블록이라 칭하여지는) 포함한다. 한 실시예에서는 도 3에 도시된 블록과 같이, P 블록이 i = 0 내지 7 및 k = 0 내지 3인 샘플 값의 세트 pi,k를 포함하고, q 블록이 i = 0 내지 7 및 k = 0 내지 3인 샘플 값의 세트 qi,k를 포함한다.
단계(s404)는 제1 세트의 샘플 값 (예를 들면, i = 0 내지 7 및 k = 0 내지 3인 샘플 값 pi,k 및/또는 i = 0 내지 7 및 k = 0 내지 3인 샘플 값 qi,k) 중 적어도 한 서브세트를 필터링하는데 사용하는 필터를 선택하는 단계를 포함한다. 예를 들어, 단계(s404)는 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 또는 강한 필터링을 적용하여 사용하는가 여부를 결정하는 단계를 포함할 수 있다 (예를 들어, 8.8.3.6.6절에서의 VVC 사양을 참조).
단계(s406)은 선택된 필터를 적용하는 단계를 포함한다.
도 5는 단계(s404)를 실행하기 위해 한 실시예에 따른 프로세스(500)를 설명하는 흐름도이다. 프로세스(500)는 단계(s501)에서 시작될 수 있다. 단계(s501)은 k, dSam_0, 및 dSam_3 인 세개의 변수를 초기화하는 단계를 포함하고, 여기서 이들 변수는 모두 0으로 초기화된다.
단계(s501) 이후에, 프로세스(500)는 단계(s506)을 실행하는 대신에, 단계(s502) 및 (s504)를 실행하는 단계를 포함할 수 있다. 단계(s502) 및 (s504)는 maxFilterLengthP = 7 이라는 가정으로 실행된다.
단계(s502)는 샘플 값 p6,k를 사용하여 제1 그레디언트 값 maxGradp6_k를 계산하는 단계를 포함한다. 예를 들어, maxGradp6_k를 계산하는 단계는: Abs( p7,k - p6,k )를 계산하는 단계, Abs( p7,k - p6,k - p5,k + p4,k)를 계산하는 단계, 또는 Abs( p6,k - 2 * p5,k + p4,k )를 계산하는 단계를 포함한다.
단계(s504)는 세개의 pq 값을 (pq1, pq2, 및 pq3) 계산하는 단계를 포함하고, 여기서 적어도 pq1은 maxGradp6_k를 사용하여 계산된다.
예를 들어, 한 실시예에서, pq1을 계산하는 단계는 sp + sq 값을 계산하는 단계를 포함하고, 여기서 sp를 계산하는 단계는 sp = (Abs(p0,k - p3,k) + Abs(p3,k - p7,k) + magGradp6_k + 1) >> 1 을 계산하는 단계를 포함한다. sq를 계산하는 단계는 (Abs(q0,k - q3,k) + Abs(q3,k - q7,k) + magGradq6_k + 1) >> 1 을 계산하는 단계를 포함할 수 있고, 여기서 magGradq6_k는: Abs( q7,k - q6,k ) 또는 Abs( q7,k - q6,k - q5,k + q4,k) 또는 Abs( q6,k - 2 * q5,k + q4,k ) 와 같다.
또 다른 실시예에서, pq1을 계산하는 단계는 2*(dp + dq) 를 계산하는 단계를 포함하고, 여기서 dp를 계산하는 단계는 dp = (Abs( p0,k - 2 * p1,k + p2,k ) + magGradp6_k + 1) >> 1 을 계산하는 단계를 포함한다. dq를 계산하는 단계는 (Abs( q0,k - 2 * q1,k + q2,k ) + magGradq6_k + 1) >> 1 을 계산하는 단계를 포함할 수 있다.
단계(s506)는 maxGradp6_k를 사용하지 않고 (즉, 샘플 값 p6,k를 사용하지 않고) 세개의 pq 값을 (pq1, pq2, 및 pq3) 계산하는 단계를 포함한다. 한 실시예에서, pq1 = sp + sq; pq2 = dpq; 또한 pq3 = Abs( p0,k - q0,k ) 이다.
단계(s508)은: i) pq1을 제1 한계값(t1)에 비교하는 단계, ii) pq2를 제2 한계값(t2)에 비교하는 단계, 및 iii) pq3을 제3 한계값(t3)에 비교하는 단계를 포함한다.
pq1이 t1 보다 작고, pq2가 t2 보다 작고, 또한 pq3가 t3 보다 작으면, 프로세스(500)는 단계(s510)으로 진행되고, 그렇지 않은 경우 단계(s509)로 진행된다 (즉, 제1 필터가 선택된다 (예를 들어, 짧은 필터링이 적용된다)).
단계(s510)은 k가 3과 같은가 여부를 체크하는 단계를 포함한다. k가 3과 같지 않으면, 프로세스(500)는 단계(s512)로 진행되고, 그렇지 않은 경우 단계(s516)으로 진행된다. 단계(s512)에서, k는 3으로 설정되고 dSam_0은 1로 설정된다. 단계(s512) 이후에, 프로세스는 단계(s502) 또는 (s506)으로 복귀한다. 단계(s516)은 dSam_0이 1과 같은가 여부를 체크하는 단계를 포함한다. 아니면, 프로세스(500)는 단계(s509)로 진행되고, 그렇지 않은 경우, 프로세스(500)는 단계(s518)로 진행된다 (즉, 제2 필터가 선택된다 (예를 들어, 긴 필터링이 적용된다)).
단계(s502) 및 (s504) 대신에 단계(s506)이 실행되는 실시예에서, pq1은 2*(dp + dq) 와 같고, 여기서
dp = (Abs(p0 - 2*p1 + p2) + Abs(p5- 2*p4 + p3) +1) >> 1, 또한
dq = (Abs(q0 - 2*q1 + q2) + Abs(q5- 2*q4 + q3) + 1) >> 1 이다. 이러한 실시예에서, 제1 한계값(t1)은 beta >> 4 와 같을 수 있다.
도 6은 비디오 인코더(140) 또는 비디오 디코더(260)를 구현하기 위한, 일부 실시예에 따른 장치(600)의 블록도이다. 도 6에 도시된 바와 같이, 장치(600)는: 하나 이상의 프로세서(P)(655)를 (예를 들어, 애플리케이션 특정 집적 회로(ASIC), 필드-프로그램가능 게이트 어레이(FPGA) 등과 같은, 범용 마이크로프로세서 및/또는 하나 이상의 다른 프로세서) 포함할 수 있고, 그 프로세서가 단일 하우징이나 단일 데이터 센터에 같이 위치하거나 지형적으로 분산될 수 있는 (즉, 장치(600)는 분산 컴퓨팅 장치가 될 수 있다) 프로세싱 회로(PC)(602); 네트워크 인터페이스(648)가 연결되는 (직접적으로 또는 간접적으로) (예를 들어, 네트워크 인터페이스(648)는 무선으로 네트워크(110)에 연결될 수 있고, 그 경우 네트워크 인터페이스(648)는 안테나 배열에 연결된다) 네트워크(110)에 (예를 들어, 인터넷 프로토콜(IP) 네트워크) 연결된 다른 노드에 장치(600)가 데이터를 전송하고 그로부터 데이터를 수신할 수 있게 하는 전송기(Tx)(645) 및 수신기(Rx)(647)를 포함하는 네트워크 인터페이스(648); 및 하나 이상의 비-휘발성 저장 디바이스 및/또는 하나 이상의 휘발성 저장 디바이스를 포함할 수 있는 로컬 저장 유닛 (즉, "데이터 저장 시스템")(608)을 포함할 수 있다. PC(602)가 프로그램가능한 프로세서를 포함하는 실시예에서는 컴퓨터 프로그램 제품(computer program product, CPP)(641)이 제공될 수 있다. CPP(641)는 컴퓨터 판독가능 명령(computer readable instruction, CRI)(644)을 포함하는 컴퓨터 제품(computer program, CP)(643)을 저장하는 컴퓨터 판독가능 매체(computer readable medium, CRM)(642)를 포함한다. CRM(642)은 자기 매체 (예를 들어, 하드 디스크), 광학 매체, 메모리 디바이스 (예를 들어, 랜덤 액세스 메모리, 플래쉬 메모리) 등과 같은, 비-일시적 컴퓨터 판독가능 매체가 될 수 있다. 일부 실시예에서, 컴퓨터 프로그램(643)의 CRI(644)는 PC(602)에 의해 실행될 때, 장치(600)가 여기서 설명된 단계를 (예를 들어, 흐름도를 참조로 여기서 설명된 단계) 실행하게 하도록 구성된다. 다른 실시예에서, 장치(600)는 코드 필요없이 여기서 설명된 단계를 실행하도록 구성될 수 있다. 즉, 예를 들어, PC(602)가 단순히 하나 이상의 ASIC로 구성될 수 있다. 따라서, 여기서 설명된 실시예의 특성은 하드웨어 및/또는 소프트웨어로 구현될 수 있다.
도 7은 일부 다른 실시예에 따른 장치(600)의 기능적 블록도이다. 장치(600)는 획득 모듈(702) 및 필터 선택 모듈(704)을 포함한다. 획득 모듈(702)은 제1 블록의 샘플 값 (이후 P 블록이라 칭하여지는) 및 제2 블록의 샘플 값을 (이후 Q 블록이라 칭하여지는) 포함하는 제1 세트의 샘플 값을 획득하도록 적용되고, 여기서 P 블록은 i = 0-7 및 k = 0-3인 샘플 값의 세트 pi,k를 포함하고, Q 블록은 i = 0-7 및 k = 0-3인 샘플 값의 세트 qi,k를 포함한다.
한 실시예에서, 필터 선택 모듈은 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하도록 적용되고, 여기서 필터 선택 모듈은 다음 단계를 포함하는 프로세스를 실행함으로서 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하도록 구성된다: 샘플 값 p6,0을 사용하여 제1 그레디언트 값 maxGradp6_0을 계산하는 단계; maxGradp6_0을 사용하여 제1 pq 값 pq1_0을 계산하는 단계; 및 pq1_0을 한계값에 비교하는 단계.
또 다른 실시예에서, 필터 선택 모듈은 필터를 선택하도록 적용되고, 여기서 필터 선택 모듈(704)은 다음 단계를 포함하는 프로세스를 실행함으로서 선택하도록 구성된다: 적어도 Abs( p2,0 - 2 * p1,0 + p0,0 )과 같은 제1 값 및 Abs( q2,0 - 2 * q1,0 + q0,0 )과 같은 제2 값을 사용하여 제1 pq 값 pq1을 계산하는 단계; 및 pq1을 한계값에 비교하는 단계로, 여기서 한계값은 β >> 4 와 같고, β는 양자화 매개변수 값 Q를 기반으로 하는 소정의 beta 값의 세트로부터 선택되는 단계.
일부 실시예의 간략한 설명
A1. 이미지와 연관된 샘플 값을 필터링하기 위한 방법(400)으로서: 제1 블록의 샘플 값 (이후 P 블록이라 칭하여지는) 및 제2 블록의 샘플 값을 (이후 Q 블록이라 칭하여지는) 포함하는 제1 세트의 샘플 값을 획득하는 단계(s402)로, 여기서 P 블록은 i = 0-7 및 k = 0-3인 샘플 값의 세트 pi,k를 포함하고, Q 블록은 i = 0-7 및 k = 0-3인 샘플 값의 세트 qi,k를 포함하는 단계; 및 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하는 단계(s404)를 포함하고, 여기서 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하는 단계는: 샘플 값 p6,0을 사용하여 제1 그레디언트 값 maxGradp6_0을 계산하는 단계(s502); maxGradp6_0을 사용하여 제1 pq 값 pq1_0을 계산하는 단계(s504); 및 pq1_0을 한계값에 비교하는 단계(s508)를 포함하는 방법.
A2. 실시예 A1의 방법으로서, 여기서 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하는 단계는: 샘플 값 p6,3을 사용하여 제2 그레디언트 값 maxGradp6_3을 계산하는 단계, maxGradp6_3을 사용하여 제2 pq 값 pq1_3을 계산하는 단계, 및 pq1_3을 한계값에 비교하는 단계(s508)를 더 포함하는 방법.
A3. 실시예 A1 또는 A2의 방법으로서, 여기서 pq1_0을 계산하는 단계는 값 sp + sq를 계산하는 단계를 포함하고, 여기서 sp를 계산하는 단계는 sp = (Abs(p0,0 - p3,0) + Abs(p3,0 - p7,0) + magGradp6_0 + 1) >> 1 을 계산하는 단계를 포함하는 방법.
A4. 실시예 A3의 방법으로서, 여기서 magGradp6_0은 Abs( p7,0 - p6,0 )과 같거나, magGradp6_0은 Abs( p7,0 - p6,0 - p5,0 + p4,0 )과 같거나, 또는 magGradp6_0은 Abs( p6,0 -2*p5,0 + p4,0 )과 같은 방법.
A5. 실시예 A1 또는 A2의 방법으로서, 여기서 pq1_0을 계산하는 단계는 2*(dp + dq)를 계산하는 단계를 포함하고, 여기서 dp 는 (Abs( p0,0 - 2 * p1,0 + p2,0 ) + magGradp6_0 + 1) >> 1 과 같은 방법.
A6. 실시예 A5의 방법으로서, 여기서 magGradp6_0은 Abs( p7,0 - p6,0 - p5,0 + p4,0 )과 같거나, 또는 magGradp6_0은 Abs( p6,0 -2*p5,0 + p4,0 )과 같은 방법.
A7. 실시예 A1 내지 A6 중 임의의 한 실시예의 방법으로서, 여기서 maxGradp6_0을 사용하여 pq1_0을 계산하는 단계는 P 블록에 대한 최대 필터 길이 maxFilterLengthP가 7과 같음을 결정한 결과로 실행되는 방법.
B1. 이미지와 연관된 샘플 값을 필터링하기 위한 방법(400)으로서: 제1 블록의 샘플 값 (이후 P 블록이라 칭하여지는) 및 제2 블록의 샘플 값을 (이후 Q 블록이라 칭하여지는) 포함하는 제1 세트의 샘플 값을 획득하는 단계(s402)로, 여기서 P 블록은 i = 0-7 및 k = 0-3인 샘플 값의 세트 pi,k를 포함하고, Q 블록은 i = 0-7 및 k = 0-3인 샘플 값의 세트 qi,k를 포함하는 단계; 및 필터를 선택하는 단계(s404)를 포함하고, 여기서 필터를 선택하는 단계는: 적어도 Abs( p2,0 - 2 * p1,0 + p0,0 )과 같은 제1 값 및 Abs( q2,0 - 2 * q1,0 + q0,0 )과 같은 제2 값을 사용하여 제1 pq 값 pq1을 계산하는 단계(s504); 및 pq1을 한계값에 비교하는 단계(s508)로, 여기서 한계값은 β >> 4 와 같고, β는 양자화 매개변수 값 Q를 기반으로 하는 소정의 beta 값의 세트로부터 선택되는 단계를 포함하는 방법.
C1. 이미지와 연관된 샘플 값을 필터링하기 위한 방법으로서: 1) 제1 블록의 샘플 값 및 제2 블록의 샘플 값을 포함하는 제1 세트의 샘플 값을 획득하는 단계(s402)로, 여기서 제1 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B1_i,k를 포함하고, 제2 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B2_i,k를 포함하는 단계; 및 2) 필터를 선택하는 단계(s404)를 포함하고, 여기서 필터를 선택하는 단계는: i) 제 pq 값 pq1_0을 계산하는 단계로, 여기서 pq1_0을 계산하는 단계는 값 sp를 계산하는 단계, 값 sq를 계산하는 단계, 및 sp + sq를 계산하는 단계를 포함하고, 여기서 pq1_0 = (sp + sq) 인 단계; ii) pq1_0을 제1 한계값에 비교하는 단계; iii) 적어도 Abs( B1_2,0 - 2 * B1_1,0 + B1_0,0 )과 같은 제1 값 및 Abs( B2_2,0 - 2 * B2_1,0 + B2_0,0 )과 같은 제2 값을 사용하여 제2 pq 값 pq2_0을 계산하는 단계(s505); 및 iv) pq2_0을 제2 한계값에 비교하는 단계(s508)로, 여기서 제2 한계값은 β >> 4 와 같고, β는 양자화 매개변수 값 Q를 기반으로 하는 소정의 beta 값의 세트로부터 선택되는 단계를 포함하는 방법.
C2. 청구항 C1에서의 방법으로서, 여기서 필터를 선택하는 단계는: 제3 pq 값 pq3_0을 계산하는 단계로, 여기서 pq3_0 = Abs(B1_0,0 - B2_0,0)인 단계; 및 pq3_0을 제3 한계값과 비교하는 단계로, 여기서 제3 한계값은 (5*tC+1) >> 1 과 같고, tC는 양자화 매개변수 값 Q를 기반으로 하는 소정의 값의 세트로부터 선택되는 단계를 더 포함하는 방법.
C3. 청구항 C1 또는 청구항 C2에서의 방법으로서, 여기서 필터를 선택하는 단계는: 제4 pq 값 pq2_3을 계산하는 단계; pq2_3을 제2 한계값에 비교하는 단계; 제5 pq 값 pq1_3을 계산하는 단계; 및 pq1_3을 제1 한계값에 비교하는 단계를 더 포함하고, 여기서 pq2_3을 계산하는 단계는 적어도 Abs( B1_2,3 - 2 * B1_1,3 + B1_0,3 )과 같은 제1 값 및 Abs( B2_2,3 - 2 * B2_1,3 + B2_0,3 )과 같은 제2 값을 사용하고, 또한 maxFilterLengthP가 3 보다 클 때 제3 값 Abs(B1_5,3 - 2*B1_4,3 + B1_3,3)을 사용하고, 또한 maxFilterLengthQ가 3 보다 클 때 제4 값 Abs(B2_5,3 - 2*B2_4,3 + B2_3,3)을 사용하여, pq2_3을 계산하는 단계를 포함하고, pq1_3을 계산하는 단계는: 값 sp3를 계산하는 단계, 값 sq3를 계산하는 단계, 및 sp3 + sq3을 계산하는 단계로, 여기서 pq1_3 = (sp3 + sq3) 인 단계를 포함하는 방법.
C4. 청구항 C3에서의 방법으로서, 여기서 필터를 선택하는 단계는 제6 sp 값 pq3_3을 계산하는 단계로, 여기서 pq3_3 = Abs(B1_0,3 - B2_0,3) 인 단계; 및 pq3_3을 제3 한계값과 비교하는 단계를 더 포함하는 방법.
C5. 청구항 C1 내지 C4 중 임의의 한 항의 방법으로서, 여기서 필터는 라인 0 및 라인 3에 대한 조건이 각 한계값 보다 작을 때 (예를 들어, 라인 0에 대해 pq1_0 < thr1 및 pq2_0 < thr2 및 pq3_0 < thr3 이고 라인 3에 대해 pq1_3 < thr1 및 pq2_3 < thr2 및 pq3_3 < thr3 일 때) 블록 B1 내의 라인 0 내지 라인 3 각각에서 7개 샘플을 수정하는데 사용되는 방법.
C6. 청구항 C5에서의 방법으로서, 여기서 thr1은 3 * β >> 5 와 같고, thr2는 β >> 4 와 같고, 또한 thr3은 (5*tC+1) >> 1 과 같은 방법.
C7. 청구항 C1 내지 C6 중 임의의 한 항의 방법으로서, 여기서 제1 블록은 최대 필터 길이 maxFilterLengthP를 갖고, maxFilterLengthP가 7과 같으면, sp를 계산하는 단계는 sp = (Abs(B1_0,0 - B1_3,0) + Abs(B1_3,0 - B1_7,0) + maxGradB1_6,0 + 1) >> 1 을 계산하는 단계로, 여기서 maxGradB1_6,0은 그레디언트 값인 단계를 포함하고, maxFilterLengthP가 5이면, sp를 계산하는 단계는 sp = (Abs(B1_0,0 - B1_3,0) + Abs(B1_3,0 - B1_5,0) + 1) >> 1 을 계산하는 단계를 포함하고, 또한 maxFilterLengthP가 3과 같으면, sp를 계산하는 단계는 sp = Abs(B1_0,0 - B1_3,0)을 계산하는 단계를 포함하는 방법.
C8. 청구항 C7의 방법으로서, 여기서 maxGradB1_6,0은 Abs(B1_7,0 - B1_6,0 - B1_5,0 + B1_4,0 )과 같은 방법.
C9. 청구항 C1 내지 C9 중 임의의 한 항의 방법으로서, 여기서 제2 블록은 최대 필터 길이 maxFilterLengthQ를 갖고, maxFilterLengthQ가 7과 같으면, sq를 계산하는 단계는 sq = (Abs(B2_0,0 - B2_3,0) + Abs(B2_3,0 - B2_7,0) + maxGradB2_6,0 + 1) >> 1 을 계산하는 단계로, 여기서 maxGradB2_6,0은 그레디언트 값인 단계를 포함하고, maxFilterLengthQ가 5와 같으면, sq를 계산하는 단계는 sq = (Abs(B2_0,0 - B2_3,0) + Abs(B2_3,0 - B2_5,0) + 1) >> 1 을 계산하는 단계를 포함하고, 또한 maxFilterLengthQ가 3과 같으면, sq를 계산하는 단계는 sq = Abs(B1_0,0 - B1_3,0)을 계산하는 단계를 포함하는 방법.
C10. 청구항 C9의 방법으로서, 여기서 maxGradB2_6,0은 Abs(B2_7,0 - B2_6,0 - B2_5,0 + B2_4,0 )과 같은 방법.
C11. 청구항 C1 내지 C10 중 임의의 한 항의 방법으로서, 여기서 maxFilterLengthP가 3 보다 클 때 또한 제3 값 Abs(B1_5,0 - 2*B1_4,0 + B1_3,0)을 사용하고, 여기서 제2 블록은 최대 필터 길이 maxFilterLengthQ를 갖고, maxFilterLengthQ가 3 보다 클 때 또한 제4 값 Abs(B2_5,0 - 2*B2_4,0 + B2_3,0)을 사용하는 방법.
C12. 청구항 C3 또는 C4의 방법으로서, 여기서 maxFilterLengthP가 7과 같으면, sp3를 계산하는 단계는 sp3 = (Abs(B1_0,3 - B1_3,3) + Abs(B1_3,3 - B1_7,3) + maxGradB1_6,3 + 1) >> 1 을 계산하는 단계로, 여기서 maxGradB1_6,3은 그레디언트 값인 단계를 포함하고, maxFilterLengthP가 5와 같으면, sp3를 계산하는 단계는 sp3 = (Abs(B1_0,3 - B1_3,3) + Abs(B1_3,3 - B1_5,3) + 1) >> 1 을 계산하는 단계를 포함하고, maxFilterLengthP가 5와 같으면, sp3를 계산하는 단계는 sp3 = Abs(B1_0,3 - B1_3,3)을 계산하는 단계를 포함하고, maxFilterLengthQ가 7과 같으면, sq3를 계산하는 단계는 sq3 = (Abs(B2_0,3 - B2_3,3) + Abs(B2_3,3 - B2_7,3) + maxGradB2_6,3 + 1) >> 1 을 계산하는 단계로, 여기서 maxGradB2_6,3은 그레디언트 값인 단계를 포함하고, maxFilterLengthQ가 5와 같으면, sq3를 계산하는 단계는 sq3 = (Abs(B2_0,3 - B2_3,3) + Abs(B2_3,3 - B2_5,3) + 1) >> 1 을 계산하는 단계를 포함하고, maxFilterLengthQ가 3과 같으면, sq3를 계산하는 단계는 sq3 = Abs(B2_0,3 - B2_3,3)을 계산하는 단계를 포함하는 방법.
D1. 이미지와 연관된 샘플 값을 필터링하기 위한 방법(400)으로서: 제1 블록의 샘플 값 및 제2 블록의 샘플 값을 포함하는 제1 세트의 샘플 값을 획득하는 단계(s402)로, 여기서 제1 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B1_i,k를 포함하고, 제2 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B2_i,k를 포함하는 단계; 및 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하는 단계(s404)를 포함하고, 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하는 단계는: 샘플 값 B1_6,0을 사용하여 제1 그레이언트 값 maxGradB1_6,0을 계산하는 단계(s502); maxGradB1_6,0을 사용하여 제1 pq 값 pq1_0을 계산하는 단계(s504); 및 pq1_0을 한계값에 비교하는 단계(s508)를 포함하는 방법.
D2. 청구항 D1의 방법으로서, 여기서 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하는 단계는: 샘플 값 B1_6,3을 사용하여 제2 그레디언트 값 maxGradB1_6,3을 계산하는 단계, maxGradB1_6,3을 사용하여 제2 pq 값 pq1_3을 계산하는 단계, 및 pq1_3을 한계값에 비교하는 단계(s508)를 더 포함하는 방법.
D3. 청구항 D1 또는 D2의 방법으로서, 여기서 pq1_0을 계산하는 단계는 값 sp를 계산하는 단계, 값 sq를 계산하는 단계, 및 sp + sq를 계산하는 단계로, 여기서 pq1_0 = (sp + sq) 인 단계를 포함하고, 여기서 sp를 계산하는 단계는 sp = (Abs(B1_0,0 - B1_3,0) + Abs(B1_3,0 - B1_7,0) + maxGradB1_6,0 + 1) >> 1 을 계산하는 단계를 포함하는 방법.
D4. 청구항 D3의 방법으로서, 여기서 maxGradB1_6,0은 Abs(B1_7,0 - B1_6,0 - B1_5,0 + B1_4,0 )과 같은 방법.
D5. 청구항 D3 또는 D4의 방법으로서, 여기서 제2 블록은 최대 필터 길이 maxFilterLengthQ를 갖고, maxFilterLengthQ가 7과 같으면, sq = (Abs(B2_0,0 - B2_3,0) + Abs(B2_3,0 - B2_7,0) + maxGradB2_6,0 + 1) >> 1 로, 여기서 maxGradB2_6,0은 제3 그레디언트 값이고, maxFilterLengthQ가 5와 같으면, sq = (Abs(B2_0,0 - B2_3,0) + Abs(B2_3,0 - B2_5,0) + 1) >> 1 이고, maxFilterLengthQ가 7과 같지 않고 5와 같지 않으면, sq = Abs(B2_0,0 - B2_3,0) 인 방법.
D6. 청구항 D5의 방법으로서, 여기서 maxGradB2_6,0은 Abs(B2_7,0 - B2_6,0 - B2_5,0 + B2_4,0 )과 같은 방법.
D7. 청구항 D2 내지 D6 중 임의의 한 항의 방법으로서, 여기서 pq1_3을 계산하는 단계는 값 sp3를 계산하는 단계, 값 sq3를 계산하는 단계, 및 sp3 + sq3를 계산하는 단계로, 여기서 pq1_3 = (sp3 + sq3) 인 단계를 포함하고, 여기서 sp3를 계산하는 단계는 sp3 = (Abs(B1_0,3 - B1_3,3) + Abs(B1_3,3 - B1_7,3) + maxGradB1_6,3 + 1) >> 1 을 계산하는 단계를 포함하는 방법.
D8. 청구항 D7의 방법으로서, 여기서 maxGradB1_6,3은 Abs(B1_7,3 - B1_6,3 - B1_5,3 + B1_4,3 )과 같은 방법.
D9. 청구항 D1 내지 D8 중 임의의 한 항의 방법으로서, 여기서 maxGradB1_6,0을 사용하여 pq1_0을 계산하는 단계는 제1 블록에 대한 최대 필터 길이 maxFilterLengthP가 7과 같음을 결정한 결과로 실행되는 방법.
D10. 청구항 D2 내지 D9 중 임의의 한 항의 방법으로서, 여기서 maxGradB1_6,3을 사용하여 pq1_3을 계산하는 단계는 제1 블록에 대한 최대 필터 길이 maxFilterLengthP가 7과 같음을 결정한 결과로 실행되는 방법.
D11. 청구항 D7의 방법으로서, 여기서 제2 블록은 최대 필터 길이 maxFilterLengthQ를 갖고, maxFilterLengthQ가 7과 같으면, sq3 = (Abs(B2_0,3 - B2_3,3) + Abs(B2_3,3 - B2_7,3) + maxGradB2_6,3 + 1) >> 1 로, 여기서 maxGradB2_6,3은 제4 그레디언트 값이고, maxFilterLengthQ가 5와 같으면, sq3 = (Abs(B2_0,3 - B2_3,3) + Abs(B2_3,3 - B2_5,3) + 1) >> 1 이고, maxFilterLengthQ가 5와 같지 않고 7과 같지 않으면, sq3 = Abs(B2_0,3 - B2_3,3) 인 방법.
D12. 청구항 D11의 방법으로서, 여기서 maxGradB2_6,3은 Abs(B2_7,3 - B2_6,3 - B2_5,3 + B2_4,3 )과 같은 방법.
D13. 청구항 D1 내지 D12 중 임의의 한 항의 방법으로서, 여기서 수직 경계를 디블로킹할 때, i 값은 블록의 컬럼(column)을 식별하고 k 값은 블록의 로우(row)를 식별하며, 수평 경계를 디블로킹할 때, k 값은 블록의 컬럼을 식별하고 i 값은 블록의 로우를 식별하는 방법.
D14. 청구항 D1 내지 D13 중 임의의 한 항의 방법으로서, 여기서 B1_0,0은 제2 블록에서의 샘플 B2_0,0에 가장 가까운 제1 블록에서의 샘플을 칭하고, 여기서 B1_1,0은 B1_0,0에 가장 가깝고, B1_2,0은 B1_1,0에 가장 가깝고, B1_3,0은 B1_2,0에 가장 가깝고, B1_4,0은 B1_3,0에 가장 가깝고, B1_5,0은 B1_4,0에 가장 가깝고, B1_6,0은 B1_5,0에 가장 가깝고, B1_7,0은 B1_6,0에 가장 가깝고, B2_1,0은 B2_0,0에 가장 가깝고, B2_2,0은 B2_1,0에 가장 가깝고, B2_3,0은 B2_2,0에 가장 가깝고, B2_4,0은 B2_3,0에 가장 가깝고, B2_5,0은 B2_4,0에 가장 가깝고, B2_6,0은 B2_5,0에 가장 가깝고, B2_7,0은 B2_6,0에 가장 가깝고, 여기서 B1_0,3은 제2 블록에서의 샘플 B2_0,3에 가장 가까운 제1 블록에서의 샘플을 칭하고, 여기서 B1_1,3은 B1_0,3에 가장 가깝고, B1_2,3은 B1_1,3에 가장 가깝고, B1_3,3은 B1_2,3에 가장 가깝고, B1_4,3은 B1_3,3에 가장 가깝고, B1_5,3은 B1_4,3에 가장 가깝고, B1_6,3은 B1_5,3에 가장 가깝고, B1_7,3은 B1_6,3에 가장 가깝고, B2_1,3은 B2_0,3에 가장 가깝고, B2_2,3은 B2_1,3에 가장 가깝고, B2_3,3은 B2_2,3에 가장 가깝고, B2_4,3은 B2_3,3에 가장 가깝고, B2_5,3은 B2_4,3에 가장 가깝고, B2_6,3은 B2_5,3에 가장 가깝고, B2_7,3은 B2_6,3에 가장 가까운 방법.
D15. 청구항 D1 내지 D14 중 임의의 한 항의 방법으로서, 여기서 maxFilterLengthP가 7과 같을 때 긴 필터에 의해 필터링되는 샘플은 B1_0,0 내지 B1_6,0, B1_0,1 내지 B1_6,1, B1_0,2 내지 B1_6,2, 및 B1_0,3 내지 B1_6,3 인 방법.
D16. 청구항 D1 내지 D15 중 임의의 한 항의 방법으로서, 여기서 maxFilterLengthQ가 7과 같을 때 긴 필터에 의해 필터링되는 샘플은 B2_0,0 내지 B2_6,0, B2_0,1 내지 B2_6,1, B2_0,2 내지 B2_6,2, 및 B2_0,3 내지 B2_6,3 인 방법.
E1. 이미지와 연관된 샘플 값을 필터링하기 위한 방법(400)으로서: 제1 블록의 샘플 값 및 제2 블록의 샘플 값을 포함하는 제1 세트의 샘플 값을 획득하는 단계(s402)로, 여기서 제1 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B1_i,k를 포함하고, 제2 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B2_i,k를 포함하는 단계; 및 필터를 선택하는 단계(s404)를 포함하고, 여기서 필터를 선택하는 단계는: 적어도 Abs( B1_2,0 - 2 * B1_1,0 + B1_0,0 )과 같은 제1 값 및 Abs( B2_2,0 - 2 * B2_1,0 + B2_0,0 )과 같은 제2 값을 사용하여 제1 pq 값 pq2_0을 계산하는 단계(s505); 및 pq2_0을 한계값에 비교하는 단계(s508)로, 여기서 한계값은 β >> 4 와 같고, β는 양자화 매개변수 값 Q를 기반으로 하는 소정의 beta 값의 세트로부터 선택되는 단계를 포함하는 방법.
E2. E1의 방법으로서, 여기서 필터를 선택하는 단계는 적어도 Abs( B1_2,3 - 2 * B1_1,3 + B1_0,3 )과 같은 제1 값 및 Abs( B2_2,3 - 2 * B2_1,3 + B2_0,3 )과 같은 제2 값을 사용하여 제2 pq 값 pq2_3을 계산하는 단계; 및 pq2_3을 한계값에 비교하는 단계를 더 포함하는 방법.
F1. 상기 실시예 중 임의의 한 실시예의 방법을 실행하도록 적용된 인코더(140) 또는 디코더(260).
F2. 장치(500)로서, 여기서 장치는 실시예 F1의 인코더(140) 또는 디코더(260)를 구현하는 장치.
G1. 프로세싱 회로(602)에 의해 실행될 때, 프로세싱 회로(602)가 상기 실시예 중 임의의 한 실시예의 방법을 실행하게 하는 명령(644)을 포함하는 컴퓨터 프로그램(643).
G2. 실시예 G1의 컴퓨터 프로그램을 포함하는 캐리어로서, 여기서 캐리어는 전자 신호, 광학 신호, 무선 신호, 및 컴퓨터 판독가능 저장 매체(642) 중 하나인 캐리어.
H1. 이미지와 연관된 샘플 값을 필터링하기 위한 장치(600)로서: 제1 블록의 샘플 값 (이후 P 블록이라 칭하여지는) 및 제2 블록의 샘플 값을 (이후 Q 블록이라 칭하여지는) 포함하는 제1 세트의 샘플 값을 획득하도록 적용된 획득 모듈(702 (도 7을 참조))로, 여기서 P 블록은 i = 0-7 및 k = 0-3인 샘플 값의 세트 pi,k를 포함하고, Q 블록은 i = 0-7 및 k = 0-3인 샘플 값의 세트 qi,k를 포함하는 획득 모듈(702); 및 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하도록 적용된 필터 선택 모듈(704 (도 7을 참조)을 포함하고, 여기서 필터 선택 모듈(704)은 다음의 단계를 포함하는 프로세스를 실행함으로서 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하도록 구성되는 장치: 샘플 값 p6,0을 사용하여 제1 그레디언트 값 maxGradp6_0을 계산하는 단계(s502); maxGradp6_0을 사용하여 제1 pq 값 pq1_0을 계산하는 단계(s504); 및 pq1_0을 한계값에 비교하는 단계(s508).
I1. 이미지와 연관된 샘플 값을 필터링하기 위한 장치(600)로서: 제1 블록의 샘플 값 (이후 P 블록이라 칭하여지는) 및 제2 블록의 샘플 값을 (이후 Q 블록이라 칭하여지는) 포함하는 제1 세트의 샘플 값을 획득하도록 적용된 획득 모듈(702 (도 7을 참조))로, 여기서 P 블록은 i = 0-7 및 k = 0-3인 샘플 값의 세트 pi,k를 포함하고, Q 블록은 i = 0-7 및 k = 0-3인 샘플 값의 세트 qi,k를 포함하는 획득 모듈(702); 및 필터를 선택하도록 적용된 필터 선택 모듈(704 (도 7을 참조)을 포함하고, 여기서 필터 선택 모듈(704)은 다음의 단계를 포함하는 프로세스를 실행함으로서 선택하도록 구성되는 장치: 적어도 Abs( p2,0 - 2 * p1,0 + p0,0 )과 같은 제1 값 및 Abs( q2,0 - 2 * q1,0 + q0,0 )과 같은 제2 값을 사용하여 제1 pq 값 pq1을 계산하는 단계(s504); 및 pq1을 한계값에 비교하는 단계(s508)로, 여기서 한계값은 β >> 4 와 같고, β는 양자화 매개변수 값 Q를 기반으로 하는 소정의 beta 값의 세트로부터 선택되는 단계.
여기서 다양한 실시예가 설명되지만, 이들은 단지 예시일 뿐이고 제한적이지 않음을 이해하여야 한다. 따라서, 본 발명의 폭과 범위는 상기에 설명된 예시적인 실시예 중 임의의 것에 의해 제한되지 않아야 한다. 또한, 여기서 다른 방법으로 나타내거나 다른 방법으로 문맥상 명백히 모순되지 않는 한, 모든 가능한 변형에서 상기에 설명된 요소의 임의의 조합은 본 발명에 포함된다.
부가적으로, 상기에 설명되고 도면에 도시된 프로세스가 일련의 단계로 도시되지만, 이는 단지 설명을 위해 수행되었다. 따라서, 일부 단계가 추가될 수 있고, 일부 단계가 생략될 수 있고, 단계의 순서가 재배열될 수 있고, 또한 일부 단계가 병렬로 실행될 수 있는 것으로 고려된다.
100 : 디블로킹 필터 유닛
140 : 비디오 인코더
141, 147 : 가산기
142 : 변환기
143 : 양자화기
144 : 엔트로피 인코더
145 : 역 양자화기
146 : 역 변환기
148 : 프레임 버퍼
149 : 인트라 예측기
150 : 모션 추정기/보상기
151 : 선택기
260 : 디코더
261 : 엔트로피 디코더
262 : 역 양자화기
263 : 역 변환기
264 : 가산기
265 : 프레임 버퍼
266 : 인트라 예측기
267 : 모션 추정기/보상기
268 : 선택기
602 : 프로세싱 회로
608 : 데이터 저장 시스템
648 : 네트워크 인터페이스
702 : 획득 모듈
704 : 필터 선택 모듈

Claims (38)

  1. 이미지와 연관된 샘플 값을 필터링하기 위한 방법(400)으로서:
    제1 블록의 샘플 값 및 제2 블록의 샘플 값을 포함하는 제1 세트의 샘플 값을 획득하는 단계(s402)로, 여기서 상기 제1 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B1_i,k를 포함하고, 상기 제2 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B2_i,k를 포함하는 단계; 및
    상기 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하는 단계(s404)를 포함하고, 여기서 상기 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하는 단계는:
    샘플 값 B1_6,0을 사용하여 제1 그레디언트 값, maxGradB1_6,0을 계산하는 단계(s502);
    maxGradB1_6,0을 사용하여 제1 pq 값, pq1_0을 계산하는 단계(s504); 및
    pq1_0을 한계값에 비교하는 단계(s508)를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하는 단계는:
    샘플 값 B1_6,3을 사용하여 제2 그레디언트 값, maxGradB1_6,3을 계산하는 단계,
    maxGradB1_6,3을 사용하여 제2 pq 값, pq1_3을 계산하는 단계; 및
    pq1_3을 상기 한계값에 비교하는 단계(s508)를 더 포함하는 방법.
  3. 제1항 또는 제2항 중 한 항에 있어서,
    pq1_0을 계산하는 단계는 값 sp를 계산하는 단계, 값 sq를 계산하는 단계, 및 sp + sq를 계산하는 단계로, 여기서 pq1_0 = (sp + sq) 인 단계를 포함하고, 여기서 sp를 계산하는 단계는 sp = (Abs(B1_0,0 - B1_3,0) + Abs(B1_3,0 - B1_7,0) + maxGradB1_6,0 + 1) >> 1 을 계산하는 단계를 포함하는 방법.
  4. 제3항에 있어서,
    maxGradB1_6,0은 Abs(B1_7,0 - B1_6,0 - B1_5,0 + B1_4,0 )과 같은 방법.
  5. 제3항 또는 제4항 중 한 항에 있어서,
    상기 제2 블록은 최대 필터 길이, maxFilterLengthQ를 갖고,
    maxFilterLengthQ가 7과 같으면, sq = (Abs(B2_0,0 - B2_3,0) + Abs(B2_3,0 - B2_7,0) + maxGradB2_6,0 + 1) >> 1 이고, 여기서 maxGradB2_6,0은 제3 그레디언트 값이고,
    maxFilterLengthQ가 5와 같으면, sq = (Abs(B2_0,0 - B2_3,0) + Abs(B2_3,0 - B2_5,0) + 1) >> 1 이고, 또한
    maxFilterLengthQ가 7과 같지 않고 5와 같지 않으면, sq = Abs(B2_0,0 - B2_3,0) 인 방법.
  6. 제5항에 있어서,
    maxGradB2_6,0은 Abs(B2_7,0 - B2_6,0 - B2_5,0 + B2_4,0 )과 같은 방법.
  7. 제2항 내지 제6항 중 임의의 한 항에 있어서,
    pq1_3을 계산하는 단계는 값 sp3을 계산하는 단계, 값 sq3을 계산하는 단계, 및 sp3 + sq3을 계산하는 단계로, 여기서 pq1_3 = (sp3 + sq3) 인 단계를 포함하고, 여기서 sp3을 계산하는 단계는 sp3 = (Abs(B1_0,3 - B1_3,3) + Abs(B1_3,3 - B1_7,3) + maxGradB1_6,3 + 1) >> 1 을 계산하는 단계를 포함하는 방법.
  8. 제7항에 있어서,
    maxGradB1_6,3은 Abs(B1_7,3 - B1_6,3 - B1_5,3 + B1_4,3 )과 같은 방법.
  9. 제1항 내지 제8항 중 임의의 한 항에 있어서,
    maxGradB1_6,0을 사용하여 pq1_0을 계산하는 상기 단계는 상기 제1 블록에 대한 최대 필터 길이, maxFilterLengthP가 7과 같음을 결정한 결과로 실행되는 방법.
  10. 제2항 내지 제9항 중 임의의 한 항에 있어서,
    maxGradB1_6,3을 사용하여 pq1_3을 계산하는 상기 단계는 상기 제1 블록에 대한 최대 필터 길이, maxFilterLengthP가 7과 같음을 결정한 결과로 실행되는 방법.
  11. 제7항에 있어서,
    상기 제2 블록은 최대 필터 길이, maxFilterLengthQ를 갖고,
    maxFilterLengthQ가 7과 같으면, sq3 = (Abs(B2_0,3 - B2_3,3) + Abs(B2_3,3 - B2_7,3) + maxGradB2_6,3 + 1) >> 1 이고, 여기서 maxGradB2_6,3은 제4 그레디언트 값이고,
    maxFilterLengthQ가 5와 같으면, sq3 = (Abs(B2_0,3 - B2_3,3) + Abs(B2_3,3 - B2_5,3) + 1) >> 1 이고, 또한
    maxFilterLengthQ가 5와 같지 않고 7과 같지 않으면, sq3 = Abs(B2_0,3 - B2_3,3) 인 방법.
  12. 제11항에 있어서,
    maxGradB2_6,3은 Abs(B2_7,3 - B2_6,3 - B2_5,3 + B2_4,3 )과 같은 방법
  13. 제1항 내지 제12항 중 임의의 한 항에 있어서,
    수직 경계를 디블로킹할 때, 상기 i 값은 한 블록의 컬럼을 식별하고 상기 k 값은 상기 블록의 로우를 식별하고, 또한
    수평 경계를 디블로킹할 때, 상기 k 값은 상기 블록의 컬럼을 식별하고 상기 i 값은 상기 블록의 로우를 식별하는 방법.
  14. 제1항 내지 제13항 중 임의의 한 항에 있어서,
    B1_0,0은 상기 제2 블록에서의 샘플 B2_0,0에 가장 가까운 상기 제1 블록에서의 샘플을 칭하고, 여기서 B1_1,0은 B1_0,0에 가장 가깝고, B1_2,0은 B1_1,0에 가장 가깝고, B1_3,0은 B1_2,0에 가장 가깝고, B1_4,0은 B1_3,0에 가장 가깝고, B1_5,0은 B1_4,0에 가장 가깝고, B1_6,0은 B1_5,0에 가장 가깝고, B1_7,0은 B1_6,0에 가장 가깝고, B2_1,0은 B2_0,0에 가장 가깝고, B2_2,0은 B2_1,0에 가장 가깝고, B2_3,0은 B2_2,0에 가장 가깝고, B2_4,0은 B2_3,0에 가장 가깝고, B2_5,0은 B2_4,0에 가장 가깝고, B2_6,0은 B2_5,0에 가장 가깝고, B2_7,0은 B2_6,0에 가장 가깝고, 여기서 B1_0,3은 상기 제2 블록에서의 샘플 B2_0,3에 가장 가까운 상기 제1 블록에서의 샘플을 칭하고, 여기서 B1_1,3은 B1_0,3에 가장 가깝고, B1_2,3은 B1_1,3에 가장 가깝고, B1_3,3은 B1_2,3에 가장 가깝고, B1_4,3은 B1_3,3에 가장 가깝고, B1_5,3은 B1_4,3에 가장 가깝고, B1_6,3은 B1_5,3에 가장 가깝고, B1_7,3은 B1_6,3에 가장 가깝고, B2_1,3은 B2_0,3에 가장 가깝고, B2_2,3은 B2_1,3에 가장 가깝고, B2_3,3은 B2_2,3에 가장 가깝고, B2_4,3은 B2_3,3에 가장 가깝고, B2_5,3은 B2_4,3에 가장 가깝고, B2_6,3은 B2_5,3에 가장 가깝고, B2_7,3은 B2_6,3에 가장 가까운 방법.
  15. 제1항 내지 제14항 중 임의의 한 항에 있어서,
    maxFilterLengthP가 7과 같을 때 상기 긴 필터에 의해 필터링되는 샘플은 B1_0,0 내지 B1_6,0, B1_0,1 내지 B1_6,1, B1_0,2 내지 B1_6,2, 및 B1_0,3 내지 B1_6,3 인 방법.
  16. 제1항 내지 제15항 중 임의의 한 항에 있어서,
    maxFilterLengthQ가 7과 같을 때 상기 긴 필터에 의해 필터링되는 샘플은 B2_0,0 내지 B2_6,0, B2_0,1 내지 B2_6,1, B2_0,2 내지 B2_6,2, 및 B2_0,3 내지 B2_6,3 인 방법.
  17. 이미지와 연관된 샘플 값을 필터링하기 위한 방법(400)으로서:
    제1 블록의 샘플 값 및 제2 블록의 샘플 값을 포함하는 제1 세트의 샘플 값을 획득하는 단계(s402)로, 여기서 상기 제1 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B1_i,k를 포함하고, 상기 제2 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B2_i,k를 포함하는 단계; 및
    필터를 선택하는 단계(s404)를 포함하고, 여기서 상기 필터를 선택하는 단계는:
    적어도 Abs( B1_2,0 - 2 * B1_1,0 + B1_0,0 )과 같은 제1 값 및 Abs( B2_2,0 - 2 * B2_1,0 + B2_0,0 )과 같은 제2 값을 사용하여 제1 pq 값, pq2_0을 계산하는 단계(s504); 및
    pq2_0을 한계값에 비교하는 단계(S508)를 포함하고, 여기서
    상기 한계값은 β >> 4 와 같고,
    β는 양자화 매개변수 값, Q를 기반으로 하는 소정의 beta 값의 세트로부터 선택되는 방법.
  18. 제17항에 있어서,
    상기 필터를 선택하는 단계는 적어도 Abs( B1_2,3 - 2 * B1_1,3 + B1_0,3 )과 같은 제1 값 및 Abs( B2_2,3 - 2 * B2_1,3 + B2_0,3 )과 같은 제2 값을 사용하여 제2 pq 값, pq2_3을 계산하는 단계; 및
    pq2_3을 상기 한계값에 비교하는 단계를 더 포함하는 방법.
  19. 이미지와 연관된 샘플 값을 필터링하기 위한 방법으로서:
    1) 제1 블록의 샘플 값 및 제2 블록의 샘플 값을 포함하는 제1 세트의 샘플 값을 획득하는 단계(s402)로, 여기서 상기 제1 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B1_i,k를 포함하고, 상기 제2 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B2_i,k를 포함하는 단계; 및
    2) 필터를 선택하는 단계(s404)를 포함하고, 여기서 상기 필터를 선택하는 단계는:
    i) 제1 pq 값, pq1_0을 계산하는 단계로, 여기서 pq1_0을 계산하는 단계는 값 sp를 계산하는 단계, 값 sq를 계산하는 단계, 및 sp + sq를 계산하는 단계로, 여기서 pq1_0 = (sp + sq) 인 단계를 포함하는 단계;
    ii) pq1_0을 제1 한계값에 비교하는 단계;
    iii) 적어도 Abs( B1_2,0 - 2 * B1_1,0 + B1_0,0 )과 같은 제1 값 및 Abs( B2_2,0 - 2 * B2_1,0 + B2_0,0 )과 같은 제2 값을 사용하여 제2 pq 값, pq2_0을 계산하는 단계(s504); 및
    iv) pq2_0을 제2 한계값에 비교하는 단계(s508)로, 여기서 상기 제2 한계값은 β >> 4 와 같고, β는 양자화 매개변수 값, Q를 기반으로 하는 소정의 beta 값의 세트로부터 선택되는 단계를 포함하는 방법.
  20. 제19항에 있어서,
    상기 필터를 선택하는 단계는:
    제3 pq 값, pq3_0을 계산하는 단계로, 여기서 pq3_0 = Abs(B1_0,0 - B2_0,0) 인 단계; 및
    pq3_0을 제3 한계값과 비교하는 단계를 더 포함하고, 여기서
    상기 제3 한계값은 (5*tC+1) >> 1 과 같고, 여기서 tC는 양자화 매개변수 값, Q를 기반으로 하는 소정의 값의 세트로부터 선택되는 방법.
  21. 제19항 또는 제20항 중 한 항에 있어서,
    상기 필터를 선택하는 단계는:
    제4 pq 값, pq2_3을 계산하는 단계;
    pq2_3을 상기 제2 한계값에 비교하는 단계;
    제5 pq 값, pq1_3을 계산하는 단계; 및
    pq1_3을 상기 제1 한계값에 비교하는 단계를 더 포함하고, 여기서
    pq2_3을 계산하는 상기 단계는 적어도 Abs( B1_2,3 - 2 * B1_1,3 + B1_0,3 )과 같은 제1 값 및 Abs( B2_2,3 - 2 * B2_1,3 + B2_0,3 )과 같은 제2 값을 사용하고, 또한 maxFilterLengthP가 3 보다 클 때 제3 값 Abs(B1_5,3 - 2*B1_4,3 + B1_3,3)을 사용하고, 또한 maxFilterLengthQ가 3 보다 클 때 제4 값 Abs(B2_5,3 - 2*B2_4,3 + B2_3,3)을 사용하여, pq2_3을 계산하는 단계를 포함하고,
    pq1_3을 계산하는 상기 단계는: 값 sp3을 계산하는 단계, 값 sq3을 계산하는 단계, 및 sp3 + sq3을 계산하는 단계로, 여기서 pq1_3 = (sp3 + sq3) 인 단계를 포함하는 방법.
  22. 제21항에 있어서,
    상기 필터를 선택하는 단계는:
    제6 pq 값, pq3_3을 계산하는 단계로, 여기서 pq3_3 = Abs(B1_0,3 - B2_0,3) 인 단계; 및
    pq3_3을 상기 제3 한계값과 비교하는 단계를 더 포함하는 방법.
  23. 제19항 내지 제22항 중 임의의 한 항에 있어서,
    상기 필터는 라인 0 및 라인 3에 대한 조건이 각 한계값 보다 작을 때 (예를 들어, 라인 0에 대해 pq1_0 < thr1 및 pq2_0 < thr2 및 pq3_0 < thr3 이고 라인 3에 대해 pq1_3 < thr1 및 pq2_3 < thr2 및 pq3_3 < thr3 일 때) 블록 B1 내의 라인 0 내지 라인 3 각각에서 7개 샘플을 수정하는데 사용되는 방법.
  24. 제23항에 있어서,
    thr1은 3*β >> 5 와 같고, thr2는 β >> 4와 같고, 또한 thr3은 (5*tC+1) >> 1 과 같은 방법.
  25. 제19항 내지 제24항 중 임의의 한 항에 있어서,
    상기 제1 블록은 최대 필터 길이, maxFilterLengthP를 갖고,
    maxFilterLengthP가 7과 같으면, sp를 계산하는 단계는 sp = (Abs(B1_0,0 - B1_3,0) + Abs(B1_3,0 - B1_7,0) + maxGradB1_6,0 + 1) >> 1 을 계산하는 단계로, 여기서 maxGradB1_6,0은 그레디언트 값인 단계를 포함하고,
    maxFilterLengthP가 5이면, sp를 계산하는 단계는 sp = (Abs(B1_0,0 - B1_3,0) + Abs(B1_3,0 - B1_5,0) + 1) >> 1 을 계산하는 단계를 포함하고, 또한
    maxFilterLengthP가 3과 같으면, sp를 계산하는 단계는 sp = Abs(B1_0,0 - B1_3,0)을 계산하는 단계를 포함하는 방법.
  26. 제25항에 있어서,
    maxGradB1_6,0은 Abs(B1_7,0 - B1_6,0 - B1_5,0 + B1_4,0 )과 같은 방법.
  27. 제19항 내지 제26항 중 임의의 한 항에 있어서,
    상기 제2 블록은 최대 필터 길이, maxFilterLengthQ를 갖고,
    maxFilterLengthQ가 7과 같으면, sq를 계산하는 단계는 sq = (Abs(B2_0,0 - B2_3,0) + Abs(B2_3,0 - B2_7,0) + maxGradB2_6,0 + 1) >> 1 을 계산하는 단계로, 여기서 maxGradB2_6,0은 그레디언트 값인 단계를 포함하고,
    maxFilterLengthQ가 5와 같으면, sq를 계산하는 단계는 sq = (Abs(B2_0,0 - B2_3,0) + Abs(B2_3,0 - B2_5,0) + 1) >> 1 을 계산하는 단계를 포함하고, 또한
    maxFilterLengthQ가 3과 같으면, sq를 계산하는 단계는 sq = Abs(B2_0,0 - B2_3,0)을 계산하는 단계를 포함하는 방법.
  28. 제27항에 있어서,
    maxGradB2_6,0은 Abs(B2_7,0 - B2_6,0 - B2_5,0 + B2_4,0 )과 같은 방법.
  29. 제19항 내지 제28항 중 임의의 한 항에 있어서,
    maxFilterLengthP가 3 보다 클 때 또한 제3 값 Abs(B1_5,0 - 2*B1_4,0 + B1_3,0)을 사용하고, 여기서 상기 제2 블록은 최대 필터 길이 maxFilterLengthQ를 갖고, maxFilterLengthQ가 3 보다 클 때 또한 제4 값 Abs(B2_5,0 - 2*B2_4,0 + B2_3,0)을 사용하는 방법.
  30. 제21항 또는 제22항 중 한 항에 있어서,
    maxFilterLengthP가 7과 같으면, sp3을 계산하는 단계는 sp3 = (Abs(B1_0,3 - B1_3,3) + Abs(B1_3,3 - B1_7,3) + maxGradB1_6,3 + 1) >> 1 을 계산하는 단계로, 여기서 maxGradB1_6,3은 그레디언트 값인 단계를 포함하고,
    maxFilterLengthP가 5와 같으면, sp3을 계산하는 단계는 sp3 = (Abs(B1_0,3 - B1_3,3) + Abs(B1_3,3 - B1_5,3) + 1) >> 1 을 계산하는 단계를 포함하고,
    maxFilterLengthP가 3과 같으면, sp3을 계산하는 단계는 sp3 = Abs(B1_0,3 - B1_3,3)을 계산하는 단계를 포함하고,
    maxFilterLengthQ가 7과 같으면, sq3을 계산하는 단계는 sq3 = (Abs(B2_0,3 - B2_3,3) + Abs(B2_3,3 - B2_7,3) + maxGradB2_6,3 + 1) >> 1 을 계산하는 단계로, 여기서 maxGradB2_6,3은 그레디언트 값인 단계를 포함하고,
    maxFilterLengthQ가 5와 같으면, sq3을 계산하는 단계는 sq3 = (Abs(B2_0,3 - B2_3,3) + Abs(B2_3,3 - B2_5,3) + 1) >> 1 을 계산하는 단계를 포함하고, 또한
    maxFilterLengthQ가 3과 같으면, sq3을 계산하는 단계는 sq3 = Abs(B2_0,3 - B2_3,3)을 계산하는 단계를 포함하는 방법.
  31. 프로세싱 회로(602)에 의해 실행될 때, 상기 프로세싱 회로(602)가 제1항 내지 제30항 중 임의의 한 항의 방법을 실행하게 하는 명령(644)을 포함하는 컴퓨터 프로그램(643).
  32. 제31항의 상기 컴퓨터 프로그램을 포함하는 캐리어로서,
    상기 캐리어는 전자 신호, 광학 신호, 무선 신호, 및 컴퓨터 판독가능 저장 매체(642) 중 하나인 캐리어.
  33. 한 장치(600)로서:
    제1 블록의 샘플 값 및 제2 블록의 샘플 값을 포함하는 제1 세트의 샘플 값을 획득하고(s402), 여기서 상기 제1 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B1_i,k를 포함하고, 상기 제2 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B2_i,k를 포함하고; 또한
    상기 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하도록(s404) 구성되고, 여기서 상기 장치는 다음의 단계를 포함하는 프로세스를 실행함으로서 상기 제1 세트의 샘플 값 중 적어도 한 서브세트를 필터링하는데 긴 필터를 사용하는가 여부를 결정하도록 구성되는 장치:
    샘플 값 B1_6,0을 사용하여 제1 그레디언트 값, maxGradB1_6,0을 계산하는 단계(s502);
    maxGradB1_6,0을 사용하여 제1 pq 값, pq1_0을 계산하는 단계(s504); 및
    pq1_0을 한계값에 비교하는 단계(s508).
  34. 제33항에 있어서,
    상기 장치는 제2항 내지 제16항 중 임의의 한 항의 방법을 실행하도록 더 구성되는 장치.
  35. 한 장치(600)로서:
    제1 블록의 샘플 값 및 제2 블록의 샘플 값을 포함하는 제1 세트의 샘플 값을 획득하고(s402), 여기서 상기 제1 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B1_i,k를 포함하고, 상기 제2 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B2_i,k를 포함하고; 또한
    필터를 선택하도록(s404) 구성되고, 여기서 상기 장치는 다음의 단계를 포함하는 프로세스를 실행함으로서 상기 필터를 선택하도록 구성되는 장치:
    적어도 Abs( B1_2,0 - 2 * B1_1,0 + B1_0,0 )과 같은 제1 값 및 Abs( B2_2,0 - 2 * B2_1,0 + B2_0,0 )과 같은 제2 값을 사용하여 제1 pq 값, pq2_0을 계산하는 단계(s504); 및
    pq2_0을 한계값에 비교하는 단계(S508)로, 여기서
    상기 한계값은 β >> 4 와 같고,
    β는 양자화 매개변수 값, Q를 기반으로 하는 소정의 beta 값의 세트로부터 선택되는 단계.
  36. 제35항에 있어서,
    상기 장치는 제18항의 방법을 실행하도록 더 구성되는 장치.
  37. 한 장치(600)로서:
    제1 블록의 샘플 값 및 제2 블록의 샘플 값을 포함하는 제1 세트의 샘플 값을 획득하고(s402), 여기서 상기 제1 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B1_i,k를 포함하고, 상기 제2 블록의 샘플 값은 i = 0-7 및 k = 0-3인 샘플 값의 세트 B2_i,k를 포함하고; 또한
    필터를 선택하도록(s404) 구성되고, 여기서 상기 장치는 다음의 단계를 포함하는 프로세스를 실행함으로서 상기 필터를 선택하도록 구성되는 장치:
    i) 제1 pq 값, pq1_0을 계산하는 단계로, 여기서 pq1_0을 계산하는 단계는 값 sp를 계산하는 단계, 값 sq를 계산하는 단계, 및 sp + sq를 계산하는 단계로, 여기서 pq1_0 = (sp + sq) 인 단계를 포함하는 단계;
    ii) pq1_0을 제1 한계값에 비교하는 단계;
    iii) 적어도 Abs( B1_2,0 - 2 * B1_1,0 + B1_0,0 )과 같은 제1 값 및 Abs( B2_2,0 - 2 * B2_1,0 + B2_0,0 )과 같은 제2 값을 사용하여 제2 pq 값, pq2_0을 계산하는 단계(s504); 및
    iv) pq2_0을 제2 한계값에 비교하는 단계(s508)로, 여기서 상기 제2 한계값은 β >> 4 와 같고, β는 양자화 매개변수 값, Q를 기반으로 하는 소정의 beta 값의 세트로부터 선택되는 단계.
  38. 제37항에 있어서,
    상기 장치는 제20항 내지 제30항 중 임의의 한 항의 방법을 실행하도록 더 구성되는 장치.
KR1020227009527A 2019-09-06 2020-09-04 비디오 또는 이미지 코딩에서의 디블로킹 필터 선택 KR20220046689A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962897004P 2019-09-06 2019-09-06
US62/897,004 2019-09-06
PCT/SE2020/050835 WO2021045671A1 (en) 2019-09-06 2020-09-04 Deblocking filter selection in video or image coding

Publications (1)

Publication Number Publication Date
KR20220046689A true KR20220046689A (ko) 2022-04-14

Family

ID=74852070

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227009527A KR20220046689A (ko) 2019-09-06 2020-09-04 비디오 또는 이미지 코딩에서의 디블로킹 필터 선택

Country Status (11)

Country Link
US (2) US11533481B2 (ko)
EP (1) EP4026324A4 (ko)
JP (1) JP7387878B2 (ko)
KR (1) KR20220046689A (ko)
CN (1) CN114342380A (ko)
AU (1) AU2020341422B2 (ko)
BR (1) BR112022004056A2 (ko)
CA (1) CA3150263A1 (ko)
CO (1) CO2022003876A2 (ko)
MX (1) MX2022002790A (ko)
WO (1) WO2021045671A1 (ko)

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100624429B1 (ko) * 2003-07-16 2006-09-19 삼성전자주식회사 칼라 영상을 위한 비디오 부호화/복호화 장치 및 그 방법
US20070223591A1 (en) * 2006-03-22 2007-09-27 Metta Technology, Inc. Frame Deblocking in Video Processing Systems
JP4834446B2 (ja) * 2006-04-11 2011-12-14 株式会社東芝 画像処理装置
WO2012096623A1 (en) * 2011-01-14 2012-07-19 Telefonaktiebolaget L M Ericsson (Publ) Deblocking filtering
AR092786A1 (es) * 2012-01-09 2015-05-06 Jang Min Metodos para eliminar artefactos de bloque
US9906790B2 (en) 2014-03-14 2018-02-27 Qualcomm Incorporated Deblock filtering using pixel distance
US10645408B2 (en) * 2017-09-17 2020-05-05 Google Llc Dual deblocking filter thresholds
WO2019072582A1 (en) * 2017-10-09 2019-04-18 Canon Kabushiki Kaisha METHOD AND APPARATUS FOR FILTERING WITH DEPRESSION OF A BLOCK OF PIXELS
MX2020006500A (es) * 2017-12-29 2020-09-17 Ericsson Telefon Ab L M Metodos que proporcionan codificacion y/o decodificacion de video usando valores de referencia y dispositivos relacionados.
US20210329266A1 (en) * 2018-01-10 2021-10-21 Telefonaktiebolaget Lm Ericsson (Publ) Determining filter length for deblocking during encoding and/or decoding of video
US10972729B2 (en) * 2018-01-20 2021-04-06 Qualcomm Incorporated Deblocking filter selection and application in video coding
US11153607B2 (en) * 2018-01-29 2021-10-19 Mediatek Inc. Length-adaptive deblocking filtering in video coding
MX2020010128A (es) * 2018-03-28 2020-10-19 Huawei Tech Co Ltd Un dispositivo de procesamiento de imagenes y metodo para ejecutar desbloqueo eficiente.
RU2768016C1 (ru) * 2018-03-30 2022-03-23 Шарп Кабусики Кайся Системы и способы применения фильтров деблокирования к восстановленным видеоданным
US11197032B2 (en) * 2018-11-08 2021-12-07 Telefonaktiebolaget Lm Ericsson (Publ) Asymmetric deblocking in a video encoder and/or video decoder
RU2770650C1 (ru) * 2018-11-14 2022-04-20 Шарп Кабусики Кайся Системы и способы применения фильтров деблокирования к восстановленным видеоданным
WO2020171760A1 (en) * 2019-02-19 2020-08-27 Telefonaktiebolaget Lm Ericsson (Publ) Deblocking on 4x4 grid using long filters
KR20210127709A (ko) 2019-03-07 2021-10-22 디지털인사이트 주식회사 영상 부호화/복호화 방법 및 장치

Also Published As

Publication number Publication date
US11533481B2 (en) 2022-12-20
CN114342380A (zh) 2022-04-12
US20230199180A1 (en) 2023-06-22
EP4026324A4 (en) 2023-02-22
WO2021045671A1 (en) 2021-03-11
MX2022002790A (es) 2022-04-06
CO2022003876A2 (es) 2022-05-31
JP7387878B2 (ja) 2023-11-28
AU2020341422B2 (en) 2024-02-29
AU2020341422A1 (en) 2022-03-31
US20220191488A1 (en) 2022-06-16
JP2022547459A (ja) 2022-11-14
EP4026324A1 (en) 2022-07-13
US12003716B2 (en) 2024-06-04
BR112022004056A2 (pt) 2022-05-24
CA3150263A1 (en) 2021-03-11

Similar Documents

Publication Publication Date Title
JP6345694B2 (ja) 大きなhevcブロックアーティファクト用のブロッキネスメトリック
CN111630857B (zh) 视频编解码方法/装置和相应非易失性计算机可读介质
KR20200128588A (ko) 재구성된 비디오 데이터에 디블록킹 필터들을 적용하기 위한 시스템들 및 방법들
KR102359415B1 (ko) 비디오 코딩을 위한 인터 예측 장치 및 방법을 위한 보간 필터
US12003785B2 (en) Asymmetric deblocking in a video encoder and/or video decoder
KR20210113371A (ko) 변환 서브-블록 경계의 디블록킹
CN113812163B (zh) 用于视频编解码的去方块滤波器
CN114041285A (zh) 视频处理中去方块滤波器的边界强度确定
US20220329875A1 (en) Deblocking between block boundaries and sub-block boundaries in a video encoder and/or video decoder
US20220141464A1 (en) Deblocking in a video encoder and/or video decoder
JP7387878B2 (ja) ビデオまたは画像コーディングにおけるデブロッキングフィルタ選択
JP7386883B2 (ja) サブペル動きベクトルしきい値を使用するデブロッキング
JP6357133B2 (ja) イントラ予測処理装置、イントラ予測処理方法、イントラ予測処理プログラム、画像符号化装置及び画像復号装置
WO2023059235A1 (en) Combining deblock filtering and another filtering for video encoding and/or decoding
EP4128761A1 (en) Video processing

Legal Events

Date Code Title Description
A201 Request for examination