KR20050121627A - 동영상 코덱의 필터링 방법 및 필터링 장치 - Google Patents
동영상 코덱의 필터링 방법 및 필터링 장치 Download PDFInfo
- Publication number
- KR20050121627A KR20050121627A KR1020040055893A KR20040055893A KR20050121627A KR 20050121627 A KR20050121627 A KR 20050121627A KR 1020040055893 A KR1020040055893 A KR 1020040055893A KR 20040055893 A KR20040055893 A KR 20040055893A KR 20050121627 A KR20050121627 A KR 20050121627A
- Authority
- KR
- South Korea
- Prior art keywords
- filtering
- loop
- boundary
- pixels
- block
- Prior art date
- Legal status (The legal status 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 status listed.)
- Withdrawn
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/86—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
Abstract
본 발명은 동영상 코덱에 관한 것으로, 보다 구체적으로는, 동영상 코덱에서 필터링 하는 방법 및 그 필터링 장치에 관한 것이다. 본 발명에 따른 동영상 코덱의 필터링 방법은, 매크로 블록 단위로 필터링 영역을 결정하는 단계; 필터링 영역으로 결정된 매크로 블록과 인접한 이전의 매크로 블록간의 경계 부분의 소정 영역을 필터링 영역에 더 포함시키는 단계; 및 필터링 영역에 대하여 시간적 순서에 따라 인과적(causal)으로 디블로킹(de-blocking) 필터링을 수행하는 단계를 포함하는 것을 특징으로 한다.
이에 따라, VC9에서 채택하고 있는 비인과적인(non-causal) 루프 필터를 변형하여 소정의 버퍼를 더 구비함으로써, 메모리 대역폭의 증가나 프레임 딜레이 등의 문제없이, 블로킹 현상(blocking artifact)을 효율적으로 필터링할 수 있다.
Description
본 발명은 동영상 코덱(coder and decoder: 이하 CODEC이라 약칭)에 관한 것으로, 보다 구체적으로는, 동영상 코덱에서 필터링하는 방법 및 그 필터링 장치에 관한 것이다.
최근 마이크로소프트(Microsoft)사는 국제 표준화 기구 중 하나인 SMPTE (the Society of Motion Picture and Television Engineers)에 동영상 압축 표준안인 VC9를 제출하였다. 현재 VC9 표준안에 대한 검토가 활발히 진행 중이며, 조만간 일부 수정을 거쳐 국제 표준으로 채택될 전망이다.
이미 동영상 압축 표준으로 채택되어 널리 응용되고 있는 MPEG(Motion Picture Experts Group)-2, MPEG-4, H.264 등에 더하여, VC9도 대표적인 동영상 압축 표준으로 자리잡을 것으로 기대된다. VC9은 가장 압축 효율이 좋은 H.264에 대비하여 압축 효율이 80% 가까이 근접하면서도, 구현에 있어서의 복잡도는 H.264의 60% 수준으로 복잡도 대 성능비가 우수한 것으로 평가되고 있다. 물론, MPEG-2나 MPEG-4에 비해서는 화질 측면에서 우위를 보이는 것으로 알려지고 있다.
전술한 동영상 압축 표준들에 따르면, 블록 단위로 디지털 영상을 부호화(encoding: 이하 인코딩이라 함) 및 복호화(decoding: 이하 디코딩이라 함)한다. 이때, 디코딩 과정을 거쳐 재생되는 디지털 영상에서는 시각적으로 블록의 경계선이 구별되어 보이는 현상이 발생한다. 이러한 현상을 블로킹 현상(blocking artifact)이라고 하며, 블로킹 현상을 제거하기 위하여 루프 필터(loop filter)가 사용된다. 즉, 루프 필터는 블로킹 현상을 제거(de-blocking)하기 위해 코덱(CODEC: coder and decoder)의 코딩 루프 안에 삽입된 필터를 말한다.
이하에서는, 보다 구체적으로, VC9의 디코딩 과정을 살펴본다.
도 1은 VC9 디코더의 블록도 이다.
도 1을 참조하면, VC9 디코더는, 비트스트림 파싱부(bitstream parsing unit), 역 VLC부(inverse Variable Length Coding unit), 역 양자화부(inverse Quantization unit), 역 변환부(inverse Transforming unit), 움직임 보상부(motion compensation unit), 오버랩 스무딩 및 루프 필터링부(overlap smoothing and loop filtering unit), 강도 보상 및 범위 조절부(intensity compensation and range scaling unit), 그리고 메모리 등을 구비한다. 특히, 본 발명은 전술한 디코더의 구성부분 중 오버랩 스무딩 및 루프 필터(loop filter)에 관한 것이다.
VC9 디코더에서 시퀀스 파라미터 중 OVERLAP과 LOOPFILTER가 1로 설정되어 있으면, 그림과 같이 역 VLC부, 역 양자화부, 및 역 변환부를 거친 복원 영상(reconstructed picture)에 대해 오버랩 스무딩 및 루프 필터링 과정이 몇 가지 조건에 따라 수행될 수 있다. 이 필터링 과정은 복원 영상이 움직임 보상을 위한 참조 프레임(reference frame)으로 사용되기 전에 적용되어야 한다. 이와 같이 복원 영상이 필터링 과정을 거쳐 움직임 보상을 위한 참조 프레임으로 사용되므로, 디코더는 표준에서 정한 필터링 과정을 엄격하게 수행해야 한다. 일반적으로 하나의 픽처(picture)는 여러 개의 슬라이스(slice)로 구성되므로, 각 슬라이스를 위한 오버랩 스무딩 및 루프 필터링은 독립적으로 수행된다.
이하, 먼저 루프 필터링에 대해 구체적으로 살펴본다.
루프 필터링의 주된 목적은 양자화로 인해 블록 경계에서 발생하는 블로킹 현상을 제거하거나 줄이는 데 있다. 이 때, I 픽처의 경우 8x8 블록 단위로 변환되므로 수직 및 수평으로 8화소 단위로 필터링이 수행된다. 즉, 8화소, 16화소, 24 화소마다 루프 필터링이 수행된다.
한편, P 픽처의 경우 변환 타입이 8x8, 8x4, 4x8중 어느 것인가에 따라 블록 경계가 수직 혹은 수평으로 4 화소 단위마다 발생할 수 있다. 따라서, 수직 및 수평으로 4화소 단위로 루프 필터링이 수행된다. 즉, 4화소, 8 화소, 12화소마다 필터링이 수행된다.
루프 필터링 과정을 보다 구체적으로 살펴보면 다음과 같다.
1) I
픽처에서의
루프
필터링
I 픽처에서는 블로킹 현상을 제거하기 위한 디블로킹 필터링이 모든 8x8 블록 경계에서 수행된다. 도 2는 I 픽처에서 루프 필터링된 수평/수직 블록 경계의 화소들을 나타내는 도면이다.
도 2를 참조하면, YCbCr 각 원소로 구성된 픽처의 좌측 상단 부분이 도시되어 있다. 그림에서 십자 표시(+)는 화소(pixel)를 나타내며, 동심원(o)은 필터링 된 화소를 나타낸다. 그림에 도시된 바와 같이, 최상단의 수평 방향 한 줄과 좌측의 첫 수직 방향 한 줄은 필터링되지 않는다. 또한, 표시되지는 않았지만, 최하단 수평 방향 한 줄과 마지막 수직 방향 한 줄도 필터링되지 않는다. 즉, 하나의 프레임에 대해, N이 수평으로 8x8 블록들의 수이고, M이 수직으로 8x8 블록들의 수라고 가정하면, 수평 방향으로는 (7,8), (15,16) .. ((N-1)*8-1, (N-1)*8) 번째 수평 라인만 루프 필터링된다. 또한, 수직 방향으로는 (7, 8), (15, 16) .. ((M-1)*8-1, (M-1)*8) 번째 수직 라인만 루프 필터링된다.
나아가, 루프 필터링되는 순서도 매우 중요하다. 즉, 하나의 프레임 전체에 대하여, 모든 수평 경계 라인들이 필터링되고 난 후, 모든 수직 경계 라인들이 필터링된다. 따라서, 하나의 프레임을 필터링하기 위하여, 수평 방향으로 모든 경계 라인에 대해 필터링하고, 그 결과를 메모리에 저장하고 나서, 수직 방향으로 모든 경계 라인에 대해 필터링하여야 한다. 이와 같은 비인과적인(non-causal) 필터링 방식 때문에, 하나의 프레임을 필터링 하는데 많은 메모리 대역폭(bandwidth)이 필요하며, 수평 및 수직 방향의 필터링이 모두 끝날 때까지 기다려야 하므로 프레임 딜레이(frame delay)가 발생할 수 있다.
2) P
픽처에서의
루프
필터링
P 픽처는 블록들이 인트라 모드(Intra mode)일수도 있고, 인터 모드(Inter mode)일 수도 있다. 인트라 모드의 블록들은 항상 8x8 변환만 사용하므로, 8x8 블록 경계만 루프 필터링된다. 반면, 인터 모드의 블록들은 잔존 에러(residual error)를 디코딩하기 위해 8x8, 8x4, 4x8 또는 4x4 역 변환을 사용한다. 따라서, 주변 블록들의 상황에 따라, 현재 블록과 인접 블록간의 경계가 루프 필터링될 수도 있고, 그렇지 않을 수도 있다. 어떤 블록 경계(8x8) 또는 서브블록 경계(8x4, 4x8, 또는 4x4)를 루프 필터링할지는 다음의 기준에 따라 결정된다.
(1) 8x8 블록 내의 인코딩된 서브 블록들 (8x4, 4x8 or 4x4) 간의 경계들은 무조건 루프 필터링된다.
(2) 한 블록(또는 서브블록)과 이웃한 블록(또는 서브블록)이 동일한 움직임 벡터를 갖고 둘 다 잔존 에러를 갖지 않으면, 그 블록 경계는 필터링하지 않는다. 이 경우를 제외하고는 루프 필터링된다.
도 3은 P 픽처에서 루프 필터링되는 블록 경계의 예들을 나타내는 도면이다.
도 3을 참조하면, 인접한 블록들간의 경계에서 언제 루프 필터링이 수행되는지가 도시되어 있다. 해당 블록들의 움직임 벡터들이 같다고 가정하면(만약 다르다면 무조건 루프 필터링을 수행한다), 회색으로 표시된 블록(또는 서브 블록들)은 변환 계수가 존재하는 부호화된 블록(또는 서브 블록)들이다. 흰색으로 표시된 블록(또는 서브 블록들)은 어떤 변환 계수들도 갖지 않는 블록들이다. 두꺼운 라인으로 표시된 부분은 필터링 된 경계들을 의미하며, 얇은 라인으로 표시된 부분들은 필터링되지 않은 경계들을 나타낸다. 전술한 두 가지 기준에 따라, 필터링될 블록의 경계들 또는 서브 블록의 경계들이 결정된다. 도 3에 도시된 예들은 두 블록이 수평으로 이웃한 경우들만을 도시하지만, 두 블록이 수직으로 이웃한 경우에도 동일한 방식이 적용된다.
도 4는 P 픽처에서 루프 필터링 된 블록 수평/수직 경계의 화소들을 나타내는 도면이다.
도 4(a)를 참조하면, 루프 필터링이 가능한 수평 경계들이 도시되어 있다. 8x8 및 8x4 수평 경계들이 필터링 가능하므로 매 4번째와 5번째, 8번째와 9번째, 12번째와 13번째 라인들이 루프 필터링 가능한 경계 화소들이 될 수 있다.
한편, 도 4(b)를 참조하면, 루프 필터링 가능한 수직 경계들이 도시되어 있다.
8x8 및 4x8 수직 경계들이 루프 필터링 가능하므로 매 4번째와 5번째, 8번째와 9번째, 12번째와 13번째 라인들이 루프 필터링 가능한 경계 화소들이 될 수 있다. I 픽처와 마찬가지로 맨 처음과 맨 마지막 수직/수평 라인들은 루프 필터링되지 않는다.
나아가, P 픽처의 경우에도 루프 필터링되는 순서가 매우 중요하다. 첫째, 프레임 전체에 대하여 모든 8x8 블록의 수평 경계들이 상단 라인부터 차례로 루프 필터링된다. 8x8 블록의 수평 경계들의 필터링 결과는 메모리에 저장된다. 둘째, 프레임 전체에 대하여 모든 8x4 수평 경계 라인들이 역시 상단 라인부터 차례로 루프 필터링된다. 그 필터링 결과 또한 메모리에 저장된다. 셋째, 수직 방향으로는 프레임 전체에 대하여 모든 8x8 수직 경계들이 좌측부터 시작해서 루프 필터링되고 그 결과는 메모리에 저장된다. 마지막으로, 프레임 전체에 대하여 모든 4x8 블록 경계들은 역시 좌측부터 시작해서 루프 필터링되어 그 결과가 메모리에 저장된다 즉, 하나의 프레임 전체에 대하여, 모든 수평 경계 라인들이 두 단계에 걸쳐 필터링되고 난 후, 모든 수직 경계 라인들에 대해 두 단계에 걸쳐 루프 필터링된다. 이와 같은 비인과적인(non-causal) 필터링 방식 때문에, 하나의 프레임을 필터링하기 위하여, 네 단계의 루프 필터링 과정을 거쳐야 하므로 프레임 딜레이가 발생할 수 있다. 또한, 하나의 프레임을 루프 필터링 하는데 많은 메모리 대역폭이 필요하게 된다.
3) B
픽처에서의
루프
필터링
B 픽처에 대한 루프 필터링은 전술한 I 픽처의 경우와 동일하다.
이하, 보다 구체적으로 각 블록(또는 서브 블록)들간의 경계에서 루프 필터링이 수행되는 과정을 살펴본다.
도 5는 인접한 블록들간의 경계에서 루프 필터링되는 화소들의 예를 나타내는 도면이다.
수직 방향이든 수평 방향이든 루프 필터링되어야 할 연속된 화소들의 최소 개수는 4이고, 수직 혹은 수평 라인에 있는 전체 화소 수는 4의 배수이므로, 루프 필터링 과정은 4화소 단위로 이루어 질 수 있다. 도 5(a)를 참조하면, 예를 들어 두 블록간 경계가 8화소의 짝으로 구성된다면, 8화소들은 두 개의 4 화소 세그먼트로 나뉜다. 각 4화소 세그먼트에서, 그림과 같이 X로 표시된 세 번째 화소의 짝이 다른 화소들에 비해 먼저 루프 필터링된다. 또한, 그 루프 필터링 결과에 따라 나머지 세 화소 짝들의 필터링 수행여부도 결정된다. 표시된 세 번째 화소의 짝을 비교해본 결과 블로킹 현상이 발생하지 않아 루프 필터링이 필요 없다고 되면, 굳이 나머지 세 화소의 짝들에 대해서는 루프 필터링을 생략해도 무방하기 때문이다.
도 5(b)를 참조하면, 세 번째 화소의 짝에서 수행되는 루프 필터링 과정을 도시한다. 화소 P4와 P5는 필터링 과정에서 교환 가능한 화소들이다. 화소 P4와 P5를 기준으로 좌측의 화소들(P1 내지 P4)과 우측의 화소들(P5 내지 P8)간의 가중치가 적용된 평균에 대하여 소정의 보상 값을 구하여, 각 화소 P4와 P5에 각각 가감함으로써, 블록의 경계에서 급격한 화소 값의 변화가 발생하는 것을 제거하거나 감소시킬 수 있다. 이 경우, 전술한 도 5(a)와 같이 세 번째 화소의 짝이 필터링이 필요하면 나머지 세 화소의 짝들도 필터링을 수행하고, 그렇지 않으면, 나머지 세 화소의 짝들에 대한 루프 필터링을 생략하고 다음의 4화소 세그먼트로 넘어간다.
한편, 이하에서는 오버랩 스무딩에 대해 구체적으로 살펴본다.
도 6은 오버랩스무딩의 일 예를 나타내는 도면이다.
시퀀스 파라미터 중 하나인 OVERLAP 이 1로 설정되어 있으면, Y는 물론 CbCr에 대해 인접한 두 개의 인트라(Intra) 블록간의 에지에 대해 오버랩 스무딩(overlap Smoothing)이라는 필터링 연산이 조건부로 수행된다. 오버랩 스무딩(또는 오버랩 트랜스폼(Overlap Transform)이라고도 함)은 도 2 내지 도 5에서 전술한 루프 필터링 직전에 수행된다, 오버랩 스무딩은 블록 경계의 정보를 교환하는 일종의 블록 기반의 변환이다. 잘 설계된 오버랩 스무딩을 수행하면 블로킹 잡음이 최소화될 수 있다.
도 6을 참조하면, I 블록들을 포함하는 P 프레임의 일부가 도시되어 있다. 사각형으로 표시된 각 화소들은 Y 일수도 있고 CbCr일 수도 있다. I 블록은 빗금친 부분으로 표시되어 있고, P 블록은 점으로 채워진 부분으로 표시되어 있다. 이 중 오버랩 스무딩이 수행될 부분은 점으로 채워진 부분으로 블록 경계의 각 방향으로 두 화소들에 오버랩 스무딩이 수행된다. 원으로 표시된 부분의 안쪽의 2x2 화소들은 양 방향으로 필터링되는 화소들이다.
먼저, 수직 에지 경계에서 수평 방향으로 연속한 네 화소들에 대해 오버랩 스무딩이 수행된다. 그림에서 (a0, a1, a2, a3)로 표시된 부분이다. a0 및 a1은 블록 경계를 기준으로 좌측의 두 화소를 나타내고, a2 및 a3는 우측의 두 화소를 나타낸다. 다음으로 수평 경계 에지에서 수직 방향으로 연속한 네 화소들 (p0, p1, p2, p3)에 대하여도 오버랩 스무딩이 수행된다. 즉, 먼저 수직 에지에 대한 수평 방향 화소들 (a0, a1, a2, a3)이 오버랩 스무딩 되고, 다음에 수평 에지에 대한 수직 방향 화소들 (p0, p1, p2, p3)이 오버랩 스무딩 된다. 필터링의 중간 결과는 메모리에 일시 저장된다.
한편, I, P, 또는 B 프레임에 대하여 소정의 조건에 따라 오버랩 스무딩의 수행 여부가 결정된다. 오버랩 스무딩이 수행되는 구체적인 조건에 대하여는 VC9 관련 자료들에 상세히 설명되어 있으므로, 설명을 생략한다. 오버랩 스무딩을 위한 조건이 충족되지 않으면, 오버랩 스무딩은 생략된다. 예를 들면, 인터 블록만 있는 경우에는 오버랩 스무딩이 생략될 수 있다. 다만, 설명의 편의를 위하여, 이하에서는 오버랩 스무딩 및 루프 필터링이 모두 발생하는 경우를 예로 들어 설명한다. 그러나, 오버랩 스무딩은 소정의 조건에서 수행되면, 언제나 수행되는 것은 아니다.
이상에서 살펴본 VC9의 블로킹 현상을 제거하기 위한 오버랩 스무딩 및 루프 필터링 과정은 프레임 단위 또는 슬라이스 단위로 수직 경계 및 수평 경계에 대하여 오버랩 스무딩을 수행하고 난 후, 다시 수평 경계 및 수직 경계에 대하여 루프 필터링을 수행하므로, 이전의 수평 방향 필터링의 결과를 메모리에 저장하고 있어야 한다. 따라서, 많은 메모리 대역폭이 요구되며, 불필요한 프레임 딜레이를 발생시키고 프레임 메모리가 증가하는 문제점을 갖는다. 이와 같은 VC9 오버랩 스무딩 및 루프 필터링의 비인과성(non-causality) 때문에, 코덱의 하드웨어 구현이 어려운 문제점이 있다.
따라서, 본 발명의 기술적 과제는 동영상 코덱에 있어서 비인과성 (non-causal) 오버랩 스무딩 및 루프 필터링을 개선하여 메모리의 증가나 대역폭의 증가 없이 효율적으로 필터링하는 방법 및 그 필터링 장치를 제공하는 것이다.
전술한 기술적 과제는 본 발명에 따라, 동영상 코덱의 필터링 방법에 있어서, 매크로 블록 단위로 필터링 영역을 결정하는 단계; 필터링 영역으로 결정된 매크로 블록과 인접한 이전의 매크로 블록간의 경계 부분의 소정 영역을 필터링 영역에 더 포함시키는 단계; 및 블록간의 경계부분의 소정 영역을 더 포함하는 필터링 영역에 대하여 시간적 순서에 따라 인과적(causal)으로 디블로킹(de-blocking) 필터링을 수행하는 단계를 포함하는 것을 특징으로 하는 필터링 방법에 의해 달성된다.
상기 디블로킹 필터링은, 하나의 필터링 영역에 대하여 수평 방향으로 디블로킹 필터링한 후 수직 방향으로 디블로킹 필터링하고 다음 필터링 영역으로 넘어가는 인과적(causal) 방식으로 디블로킹 필터링하는 것이 바람직하다.
또한, 상기 블록 간 경계 부분의 소정의 영역은 최소 4화소 단위의 복수의 화소들을 포함하는 것이 바람직하다.
상기 디블로킹 필터링은, 오버랩 스무딩 및 루프 필터링 중 적어도 하나를 포함하며, 매크로 블록 단위로 소정의 조건에 따라 오버랩 스무딩을 수행한 후, 루프 필터링을 수행하는 것이 바람직하다.
또한, 상기 오버랩 스무딩은, 블록간의 경계 부분을 대칭으로 양 방향으로 최소 2화소씩의 값을 이용하여 오버랩 스무딩을 수행하는 것이 바람직하며, 수평 방향으로 8x8 블록 경계 부분을 오버랩 스무딩한 후, 수직 방향으로 8x8 블록 경계 부분을 오버랩 스무딩 하는 것이 바람직하다.
또한, 상기 루프 필터링은, 블록간의 경계 부분을 대칭으로 양 방향으로 최소 4화소씩의 값을 이용하여 루프 필터링을 수행하는 것이 바람직하다.
상기 루프 필터링은, 수평 방향으로 8x8 블록 경계 부분을 루프 필터링한 후, 8x4 블록 경계 부분을 루프 필터링하며, 수직 방향으로 8x8 블록 경계 부분을 루프 필터링한 후, 4x8 블록 경계 부분을 루프 필터링하는 것이 바람직하다.
특히, 상기 동영상 코덱은 SMPTE (the Society of Motion Picture and Television Engineers)의 VC9 표준을 따르는 것이 바람직하다.
한편, 본 발명의 다른 분야에 따르면, 전술한 기술적 과제는, 동영상 코덱의 필터링 장치에 있어서, 매크로 블록 단위의 필터링 영역을 저장하는 버퍼부; 버퍼부에 저장된 매크로 블록과 인접한 이전의 매크로 블록간의 경계 부분의 소정 영역을 저장하는 행 버퍼와 열 버퍼; 및 버퍼부, 행 버퍼, 및 열 버퍼에 저장된 필터링 영역에 대하여 시간적 순서에 따라 인과적(causal)으로 디블로킹(de-blocking) 필터링을 수행하는 필터링부를 포함하는 것을 특징으로 하는 필터링 장치에 의해서 달성된다.
이하에서는 첨부한 도면을 참조하여 본 발명에 따른 바람직한 실시예를 살펴본다.
도 7은 본 발명의 바람직한 실시예에 따른 필터링 장치의 블록도 이다.
도 7을 참조하면, 프레임 단위로 필터링을 하던 VC9의 종래의 필터에 비하여, 본 발명에 따른 필터는 매크로 블록(macro block) 단위로 필터링을 수행함을 그 특징으로 한다. 이를 위해 이전 매크로 블록의 경계부분의 화소 정보를 일시 저장할 별도의 행 버퍼(630)와 열 버퍼(640)가 더 포함된다.
즉, 본 발명에 따른 필터링 장치는 블로킹 현상을 제거하기 위한 필터링부(610)와 필터링될 데이터 및 그 필터링 결과가 저장되는 버퍼부(L_BUF)(620), 및 이전 매크로 블록의 경계부분의 화소 정보를 저장하고 있는 행 버퍼(ROW_BUF)(630)와 열 버퍼(COL_BUF)(640)를 구비한다.
VC9 코덱은 16x16 크기의 매크로 블록을 기본 처리 단위로 한다. 따라서, 본 발명의 오버랩 스무딩 및 루프 필터링도 16x16 매크로 블록 단위로 처리할 수 있도록 구성된다. 즉, 각 매크로 블록 단위로 오버랩 스무딩이 수행된 후, 각 매크로 블록 단위로 루프 필터링이 수행된다. 버퍼부(620)는 16x16 크기의 버퍼로서, 16x16 매크로 블록의 필터링 중간 결과 및 최종 결과를 저장한다. 행 버퍼(630)는 최소 20x8의 크기를 갖는 버퍼이며, 현재 필터링 중인 매크로 블록의 상단에 위치한 블록의 경계 부분의 수평 방향 화소들을 저장하고, 필터링 된 화소들의 중간 결과 및 최종 결과를 저장한다. 열 버퍼(640)는 최소 8x16의 크기를 가지며, 현재 필터링 중인 매크로 블록의 좌측에 위치한 블록의 경계 부분의 수직 방향 화소들을 저장하고, 필터링 된 화소들의 중간 결과 및 최종 결과를 저장한다.
본 발명에 따른 필터링 장치의 동작을 설명하기 위해 수평 방향으로 4개의 매크로 블록, 수직 방향으로 3개의 MB들로 구성된 하나의 프레임을 가정한다. 도 8은 본 발명에 따라 오버랩 스무딩 및 루프 필터링이 수행될 프레임을 나타내는 도면이다.
도 8을 참조하면, 각 매크로 블록의 번호가 매겨져 있다. 본 발명에 따라 매크로 블록 단위로 오버랩 스무딩 및 루프 필터링을 처리하기 위하여 4가지 경우의 매크로 블록의 필터링 동작을 살펴본다. 특히, 수평 방향으로, 매크로 블록 MB1의 필터링 영역으로 CASE 1 영역, 매크로 블록 MB2의 필터링 영역으로 CASE 2 영역에서의 필터링 동작을 살펴본다. 또한, 수직 방향으로, 매크로 블록 MB5의 필터링 영역으로 CASE 3 영역, 매크로 블록 MB6의 필터링 영역으로 CASE4 영역에서의 필터링 동작을 각각 살펴본다.
먼저, 도 9는 도 8에 도시된 CASE 1 영역에서 본 발명에 따라 블록 단위로 필터링되는 순서를 나타내는 일 실시예이다.
하나의 매크로 블록에 대한 움직임 보상(도 1 참조)이 끝나면 그 매크로 블록에 대한 오버랩 스무딩이 수행되고, 곧이어 그 매크로 블록에 대하여 루프 필터링이 수행된다. CASE 1의 경우 매크로 블록 MB1에 대한 오버랩 스무딩 및 루프 필터링 과정을 보여 준다.
도 9 및 도 7을 참조하면, 움직임 보상된 매크로 블록 MB1이 버퍼부(L_BUF)(620)에 저장된다. 먼저, 전술한 소정의 조건에 따라 해당 매크로 블록을 오버랩 스무딩을 수행할지 여부가 결정된다. 만약 오버랩 스무딩을 수행해야할 조건에 해당하지 않는 경우라면, 오버랩 스무딩 과정이 생략되고, 바로 루프 필터링을 수행할 수 있다. 그러나, 설명의 편의를 위해 오버랩 스무딩이 필요한 경우를 예로 들어 설명한다.
도 9(a)는 CASE 1 의 경우 필터링 대상 영역을 도시한다. 매크로 블록 MB1은 첫 번째 슬라이스의 첫 번째 매크로 블록이므로 행 버퍼(630) 및 열 버퍼(640)는 비어 있는 상태이다. MB1과 MB2의 경계 부분은 MB2의 처리 시에 필터링된다.
먼저, 도 9(b) 및 도 9(c)에 도시된 바와 같이, 오버랩 스무딩이 수행된다. 도 9(b)를 참조하면, 굵은 점선으로 표시된 부분의 검은색으로 표시된 화소들이 오버랩 스무딩을 위해 사용된다. (p1, p0, q0, q1)로 표시된 4개의 화소들로 구성된 모두 16개의 행(row)들이 차례로 도 7의 p1, p0 및 q0, q1 래치에 행단위로 입력된다. 즉, 좌측의 두 화소는 p1, p0에, 그리고 우측의 두 화소는 q0, q1에 입력된다. 래치의 화소들은 한 사이클에 필터링부(610)로 입력된다. 이 모듈에서 오버랩 스무딩이 수행된다. 오버랩 스무딩을 수행하는 필터링부(610)의 출력값들은 P1, P0, Q0, Q1에 각각 입력된다. P1, P0, Q0, Q1 값들은 다시 버퍼부(L_BUF)(620)의 해당 값들을 업데이트 한다. 실제 업데이트는 도 9(b)에 도시된 바와 같이 조건이 맞는 경계부분에서만 이루어진다.
한편, 도 9(c)는 수평 방향의 블록 경계에서 오버랩 스무딩이 수행되는 과정을 도시한다. 수직, 수평이 바뀌었을 뿐 기본 동작은 도 9(b)의 경우와 동일하다. 그림에서 우측의 4열의 화소들의 처리는 매크로 블록 MB2의 처리 시에 함께 처리된다. 그러나, 최소 우측 2열의 화소들의 처리를 MB2의 처리시에 함께 처리하는 것도 가능하다.
MB1 매크로 블록에 대한 오버랩 스무딩이 완료되면, 바로 루프 필터링이 수행된다. 도 9(d)를 참조하면, 8x8 수평 방향 블록 경계의 루프 필터링 과정이 도시된다. 검은색 동심원으로 표시된, 매크로 블록 MB1 내의 수평 방향 8x8 블록 경계의 화소들이 루프 필터링된다. 매크로 블록 MB1과 그 하단의 매크로 블록 MB5와의 경계 부분은 매크로 블록 MB5의 필터링 처리 시에 루프 필터링된다. 또한, 매크로 블록 MB1의 오른 쪽 4 개의 화소 짝들은 인접한 매크로 블록 MB2의 필터링 처리 시에 루프 필터링된다. 따라서, 굵은 점선으로 표시된 부분의 화소들이 검은 색 화소들의 루프 필터링을 위해 사용되는 화소들이다.
굵은 점선으로 표시된 부분은 모두 12개의 수직 방향 화소 쌍인 열 벡터(column vector)들이 차례로 도 6에 도시된 p0, p1, p2, p3, q0, q1, q2, q3 래치(latch)에 입력된다. 각 열은 8개의 화소로 구성된다. 즉, 그림과 같이, 상위 4 화소는 p3, p2, p1, p0에, 하위 4 화소는 q0, q1, q2, q3에 입력된다.
또한, 도 9(d)의 상단에 표시된 바와 같이, 12개의 열 벡터들이 입력되는 순서가 도시되어 있다. 즉, 도 5에서 상술한 바와 같이 4개의 화소 세그먼트 중 세 번째 화소의 짝이 먼저 루프 필터링 처리되므로, 1, 5, 9 열 벡터가 각 4화소 세그먼트에서 먼저 루프 필터링된다. 그 필터링 결과에 따라 4개의 화소 세그먼트의 나머지 화소들의 짝들의 루프 필터링 여부가 결정된다. p3, p2, p1, p0과 q0, q1, q2, q3 래치에 입력된 각 화소들은 한 사이클에 도 6에 도시된 필터링부(610)로 입력되어 루프 필터링 처리된다. 실제 루프 필터링이 수행되는 과정은 도 5에서 상술한 바와 같다. 루프 필터링이 수행되는 과정은 VC9에서 제시하는 필터링 방법을 포함한 임의의 필터링 방법을 적용할 수 있음은 물론이다. 그 필터링 결과 중 검은색 동심원으로 표시된 블록의 경계에 해당하는 화소들만 도 7의 P0, Q0에 입력된다. 필터링이 필요하다고 판단된 경우, 즉, 블록의 경계부가 영상의 아우트라인이 아니라 블로킹 현상이 발생한 부분이라고 판단되면, P0와 Q0의 값들로 버퍼부(630)(L_BUF)에서 대응되는 값을 업데이트 한다.
같은 방법으로, 5, 6, 7, 8번째 열 벡터들의 필터링 처리가 이루어지고, 다음 9, 10, 11, 12번째 열 벡터들의 필터링 처리가 이루어진다. 전술한 설명처럼 대상 영역에 포함된 각 열 벡터들에 대하여 루프 필터링 처리는 이루어지지만, 실제 메모리의 업데이트는 블록의 경계 부분의 화소들에 대해서만 이루어진다. 예를 들어 I 픽처의 경우 8x8 경계라든지, P 픽처의 경우 인코딩된 블록(coded block)간의 경계에서만 업데이트가 이루어진다.
한편, 도 9(e)를 참조하면, 8x4 수평 방향 블록 경계의 필터링 과정이 도시된다. 검은색 동심원으로 표시된, 매크로 블록 MB1 내의 수평 방향 8x4 블록 경계의 화소들이 루프 필터링된다. 굵은 점선으로 표시된 부분의 화소들이 검은 색 화소들의 루프 필터링을 위해 사용되는 화소들이다. 실제 루프 필터링되는 과정은 전술한 도 9(d)의 설명과 동일하다. 만약, VC9의 경우 현재 매크로 블록이 인트라인 경우, 8x4 블록 수평 경계의 화소들에 대한 루프 필터링은 생략될 수도 있다.
매크로 블록 MB1에 대한 수평 방향의 블록 경계의 화소들에 대한 루프 필터링이 끝나면, 매크로 블록 MB1에 대한 수직 방향의 블록 경계의 화소들에 대한 루프 필터링이 수행된다. 먼저, 도 9(f)에 도시된 바와 같이, 먼저 매크로 블록 MB1 내의 수직 방향 8x8 블록 경계의 화소들이 루프 필터링된다. 이 때 블록 경계의 하위 8 화소 행(row)들에 대한 필터링 처리는 매크로 블록 MB5의 처리 시에 이루어진다. 또한, 매크로 블록 MB1의 오른 쪽 4 개의 화소 짝들은 인접한 매크로 블록 MB2의 필터링 처리 시에 필터링된다. 따라서, 굵은 점선으로 표시된 부분의 화소들이 검은 색 화소들의 루프 필터링을 위해 사용되는 화소들이다.
다음은, 도 9(g)에 도시된 바와 같이 매크로 블록 MB1 내의 수직 방향 4x8 블록 경계의 화소들이 루프 필터링된다. 수직, 수평 방향이 바뀌었을 뿐 실제 루프 필터링 과정은 수평 방향에 대한 도 9(d) 및 도 9(e)의 설명과 동일하다. 만약, VC9의 경우 현재 매크로 블록이 인트라인 경우, 4x8 블록 수직 경계의 화소들에 대한 루프 필터링은 생략될 수도 있다.
루프 필터링 된 결과는 버퍼부(620)에 일시 저장되었다가 외부 프레임 메모리에 기록된다. 매크로 블록 MB1의 경우는 도 9(a)에 도시된 영역 내의 화소들에 대해서만 변화가 있게 되므로, 도 9(a)에 표시된 영역의 데이터를 외부 프레임 메모리에 기록한다. 도 9(h)는 필터링 결과 외부의 프레임 메모리에 기록될 내용을 표시한다.
그리고 나서, 다음 매크로 블록인 MB2의 오버랩 스무딩 및 루프 필터링 처리를 위해 양 블록의 경계부분에 해당하는 매크로 블록 MB1의 우측 8x16 화소들을 열 버퍼(640)에 로드한다. 또한, 오버랩 스무딩 및 루프 필터링될 매크로 블록 MB2의 16x16 화소 값들이 버퍼부(620)에 로드된다(도 7 참조).
전술한 바와 같이 모든 오버랩 스무딩 및 루프 필터링 과정은 4화소 단위의 세그먼트 별로 이루어진다. 또한, 하나의 매크로 블록에 대하여 수평 방향 오버랩 스무딩이 완료된 후, 수직 방향 오버랩 스무딩이 수행되며, 오버랩 스무딩이 모드 완료되면, 수평 방향 과 수직 방향으로 루프 필터링이 수행된다.
한편, 도 10a 및 도 10b는 도 8에 도시된 CASE 2 영역에서 본 발명에 따라 블록 단위로 오버랩 스무딩 및 루프 필터링되는 순서를 나타내는 일 실시예이다.
도 10a 및 도 10b를 참조하면, 매크로 블록 MB2의 오버랩 스무딩 및 루프 필터링 과정이 도시되어 있다. (a)는 오버랩 스무딩 및 루프 필터링 대상 영역을 표시한다. 매크로 블록 MB2 외에 매크로 블록 MB1의 오버랩 스무딩 및 루프 필터링 시에 열 버퍼에 일시 저장된 8x16 화소들도 대상 영역에 포함된다.
먼저, (b) 내지 (d)에 도시된 바와 같이 8x8 블록 경계에 대하여 수평 방향 및 수직 방향으로 오버랩 스무딩이 수행된다. 자세한 과정은 도 9의 (b) 및 (c)에서 상술한 바와 같다. 특히, (d)의 좌측의 4화소 세그먼트들은 CASE 1의 MB1 매크로 블록의 오버랩 스무딩 처리 시에 이미 처리되었고, (d)의 우측의 4화소 세그먼트들은 다음의 MB3 매크로 블록의 오버랩 스무딩 처리 시에 처리될 것이므로, 오버랩 스무딩 처리범위에 포함되지 않는다.
(a)에 표시된 영역에 대하여 오버랩 스무딩이 완료되면, 다음으로 루프 필터링이 수행된다. 수평 방향 8x8 블록 경계의 필터링될 화소들이 (e)에 검은색 동심원으로 표시되어 있다. 하위의 8x8 화소들과 우측의 4개의 화소들은 다음 슬라이스 또는 다음 매크로 블록의 필터링 시에 처리되며, 굵은 점선으로 표시된 부분의 화소들만 검은색 동심원으로 표시된 화소들의 필터링을 위해 사용된다. 즉, 8개의 화소 열로 이루어진 모두 16개의 열 벡터들이 차례로 도 7에 도시된 p 및 q 래치에 입력되어 루프 필터링 처리된다. 구체적인 루프 필터링 과정은 도 9의 (d) 내지 (h) 에서 상술한 바와 동일하다. 다음은, 도 10b의 (f)에 도시된 바와 같이 8x4 수평경계에 대한 루프 필터링 처리가 이루어진다. 루프 필터링 과정에 대한 설명은 전술한 바와 같다.
한편, 수직 방향으로 8x8 수직 경계 필터링과 4x8 수직 경계 필터링 과정은 도 10b의 (g) 및 (k)에 도시되어 있다. (g)를 참조하면, 점선으로 표시된 영역 내의 8개의 행 벡터들이 좌측에 표시된 순서대로 입력되어 필터링된다. 즉, 각 벡터의 8 화소들이 각각 p3, p2, p1, p0, q0, q1, q2, q3 래치에 입력되어 필터링된다. 수직, 수평이 바뀌었을 뿐 루프 필터링 과정은 각 4화소 세그먼트별로 도 5에 설명한 바와 같다.
다음은, 도 10b의 (h)와 같이 4x8 수직 경계 화소들이 필터링된다. 또한, 유사하게 나머지 8x8 수직 경계 및 4x8 수직 경계에 대한 처리 과정이 도 (i) 및(j)에 도시되어 있다. (k)는 필터링 결과 외부의 프레임 메모리에 기록될 내용을 표시한다.
그리고 나서, 다음 매크로 블록인 MB3의 필터링 처리를 위해 양 블록의 경계부분에 해당하는 매크로 블록 MB2의 우측 8x16 화소들을 열 버퍼(640)에 로드한다. 또한, 필터링될 매크로 블록 MB3의 16x16 화소 값들이 버퍼부(620)에 로드된다(도 7 참조). 이와 같은 방식으로 수평 방향의 매크로 블록 MB1 내지 MB4까지 첫 번째 슬라이스에 대한 필터링 처리가 이루어진다.
도 11a 및 도 11b는 도 8에 도시된 CASE 3 영역에서 본 발명에 따라 블록 단위로 오버랩 스무딩 및 루프 필터링되는 순서를 나타내는 일 실시예이다.
도 11a 및 도 11b를 참조하면, 두 번째 슬라이스의 첫 매크로 블록인 MB5에 대한 오버랩 스무딩 및 루프 필터링 과정이 도시되어 있다. 매크로 블록 MB4의 필터링 처리 후 매크로 블록 MB1의 하위 16x8 화소들이 행 버퍼(630)에 로드된다. 또한, 필터링될 매크로 블록 MB5의 16x16 데이터가 버퍼부(620)에 로드된다.
매크로 블록 MB5의 수평 및 수직 방향 8x8 경계의 화소들에 대한 오버랩 스무딩 처리는 도 11a의 (b) 내지 (d)에 도시되어 있다. 대상 화소들만 바뀌었을 뿐 오버랩 스무딩 동작 원리는 전술한 도 9 또는 도 10a 및 도 10b의 경우와 동일하다.
또한, 매크로 블록 MB5의 수평 방향 8x8 경계 및 8x4 경계의 화소들에 대한 루프 필터링 처리는 도 11a의 (e)와 도 11b의 (f) 내지 (h)에 도시되어 있다. 역시, 대상 화소들만 바뀌었을 뿐 필터링 동작 원리는 전술한 도 9나 도 10a 및 도 10b의 경우와 동일하다. 또한, 수직 방향 8x8 경계 및 4x8 경계의 화소들에 대한 필터링 처리는 도 11b의 (i) 및 (j)에 도시되어 있다.
오버랩 스무딩 및 루프 필터링 결과는 도 11b의 (k)에 도시되어 있으며, 필터링 된 결과 값이 외부 메모리에 기록된다.
이제 다음 매크로 블록의 필터링을 위해 버퍼부(620), 행 버퍼(630), 및 열 버퍼(640)를 업데이트 한다. 이 때 업데이트 되는 화소들은 필터링 이전의 원래의 화소 값이 아니고, 이미 필터링 된 결과의 화소들임을 주의한다.
도 12a 내지 도 12c는 도 8에 도시된 CASE 4 영역에서 본 발명에 따라 블록 단위로 오버랩 스무딩 및 루프 필터링되는 순서를 나타내는 일 실시예이다.
도 12a 내지 도 12c를 참조하면, (b) 내지 (e)는 수평 및 수직 방향의 오버랩 스무딩 과정을 도시한다. 또한, (f) 내지 (i)는 수평 방향의 블록 경계의 화소들에 대한 루프 필터링 과정을 도시하고, (j) 내지 (m)는 수직 방향의 블록 경계의 화소들에 대한 루프 필터링 과정을 도시한다. (n)은 오버랩 스무딩 및 루프 필터링 결과를 표시하며, 굵은 점선 내 화소들이 외부 프레임 메모리에 기록된다. 나머지 매크로 블록들의 필터링 처리과정은 모두 같은 원리로 이루어진다.
이와 같이 본 발명에 따른 필터링 장치는, 프레임 단위로 오버랩 스무딩 및 루프 필터링을 하던 VC9의 종래의 필터에 비하여, 매크로 블록(macro block) 단위로 오버랩 스무딩 및 루프 필터링을 수행함을 그 특징으로 한다. 이를 위해 이전 매크로 블록의 경계부분의 화소 정보를 일시 저장할 별도의 행 버퍼(630)와 열 버퍼(640)가 더 포함된다.
즉, 매크로 블록 단위로 소정의 조건에 따라 수평 8x8 및 수직 8x8 경계부분에 오버랩 스무딩을 수행하고 난 후, 수평 8x8, 8x4 블록 경계부분의 루프 필터링을 수행하고, 수직 방향으로 8x8, 4x8 블록 경계부분의 루프 필터링을 수행한다. 수행된 결과 중 다음 매크로 블록의 오버랩 스무딩 및 루프 필터링에 이용될 경계부분의 화소들은 행 버퍼 또는 열 버퍼에 저장되어 다음 매크로 블록의 오버랩 스무딩 및 루프 필터링에 사용된다.
이에 따라, 시간 순서에 따라 매크로 블록 순서대로 필터링을 해나가는 인과적(causal) 필터링이 가능해진다. 따라서, 프레임 단위의 필터링 처리를 하는 것에 비하여 상대적으로 필요로 하는 메모리 대역폭이 감소되며, 또한, 프레임 딜레이를 방지할 수 있다.
이상에서 상술한 실시예는 매크로 블록 단위의 필터링 처리 방법(방법 1)으로서, 메모리 대역폭을 줄이기에 적합하나, 제어가 복잡해진다. 본 발명에 따른 다른 실시예로서, 메모리 대역폭은 방법 1에 비해 조금 늘어나지만, 제어가 간단해지는 방법(방법2)이 있다.
즉, 수평 필터링 처리와 수직 필터링 처리를 분리하는 것이다. 먼저, 하나의 슬라이스에 대하여, 이에 포함되는 각 매크로 블록들에 대한 수평 경계부분에 대하여 오버랩 스무딩 및 루프 수평 필터링 처리를 완료한다. 또한, 다음 슬라이스에 포함되는 각 매크로 블록들에 대해서도 수평 경계부분에 대하여 오버랩 스무딩 및 루프 필터링을 완료한다. 이와 같이 모든 슬라이스의 수평 경계부분에 대하여 오버랩 스무딩 및 루프 필터링을 완료하고 난 후, 다시 처음 슬라이스부터 수직 경계부분에 대한 오버랩 스무딩 및 루프 필터링을 수행하는 것이다. 이와 같이 수평 방향 및 수직 방향에 대하여 차례대로 오버랩 스무딩 및 루프 필터링 처리가 끝나면, 그 결과를 외부의 프레임 메모리에 기록한다.
설명의 편의를 위하여 위의 실시예들에서는 버퍼부, 행 버퍼, 및 열 버퍼의 크기를 일정하게 제한하였으나, 실제 구현 시에는 버퍼의 크기를 유동적으로 정할 수 있다. 예를 들어, 버퍼부와 행 버퍼의 수평 방향 크기를 최대 하나의 슬라이스 크기까지로 늘릴 수 있다. 이 경우, 행 버퍼의 데이터를 메모리에 로드하는 대역폭이 제거된다. 즉, 버퍼의 크기를 늘리는 대신 메모리 대역폭이 줄어들므로 양자간에 적절하게 조정할 수 있다.
이상에서는 VC9의 코덱에서의 필터링 방법 및 장치를 살펴보았으나, 루프 필터가 포함되는 다른 표준들에서도 다양하게 응용될 수 있다. 즉, 이상의 설명은 본 발명의 일 실시예에 불과할 뿐, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 본질적 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현할 수 있을 것이다. 따라서, 본 발명에 따른 실시예에 한정되지 않고 특허 청구범위에 기재된 내용과 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.
상술한 바와 같이 본 발명에 따르면, 동영상 코덱에 있어서 매크로 블록 단위로 시간적 순서에 따라 인과적(causal)으로 처리하는 필터링 방법 및 그 필터링 장치가 제공된다.
즉, VC9에서 채택하고 있는 비인과적인(non-causal) 루프 필터를 변형하여 소정의 버퍼를 더 구비함으로써, 메모리 대역폭의 증가나 프레임 딜레이 등의 문제없이, 블로킹 현상(blocking artifact)을 효율적으로 필터링할 수 있다.
도 1은 VC9 디코더의 블록도,
도 2는 I 픽처에서 루프 필터링된 수평/수직 블록 경계의 화소들을 나타내는 도면,
도 3은 P 픽처에서 루프 필터링되는 블록 경계의 예들을 나타내는 도면,
도 4는 P 픽처에서 루프 필터링된 블록 수평/수직 경계의 화소들을 나타내는 도면,
도 5는 인접한 블록들간의 경계에서 루프 필터링되는 화소들의 예를 나타내는 도면,
도 6은 오버랩 스무딩의 일 예를 나타내는 도면,
도 7은 본 발명의 바람직한 실시예에 따른 필터링 장치의 블록도,
도 8은 본 발명에 따라 필터링이 수행될 프레임을 나타내는 도면,
도 9는 도 8에 도시된 CASE 1 영역에서 본 발명에 따라 블록 단위로 필터링되는 순서를 나타내는 일 실시예,
도 10a 및 도 10b는 도 8에 도시된 CASE 2 영역에서 본 발명에 따라 블록 단위로 필터링되는 순서를 나타내는 일 실시예,
도 11a 및 도 11b는 도 8에 도시된 CASE 3 영역에서 본 발명에 따라 블록 단위로 필터링되는 순서를 나타내는 일 실시예,
도 12a 내지 도 12c는 도 8에 도시된 CASE 4 영역에서 본 발명에 따라 블록 단위로 필터링되는 순서를 나타내는 일 실시예이다.
Claims (20)
- 동영상 코덱의 필터링 방법에 있어서,매크로 블록 단위로 필터링 영역을 결정하는 단계;상기 필터링 영역으로 결정된 매크로 블록과 인접한 이전의 매크로 블록간의 경계 부분의 소정 영역을 상기 필터링 영역에 더 포함시키는 단계; 및상기 블록간의 경계부분의 소정 영역을 더 포함하는 필터링 영역에 대하여 시간적 순서에 따라 인과적(causal)으로 디블로킹(de-blocking) 필터링을 수행하는 단계를 포함하는 것을 특징으로 하는 필터링 방법.
- 제1항에 있어서,상기 디블로킹 필터링은, 하나의 필터링 영역에 대하여 수평 방향으로 디블로킹 필터링한 후 수직 방향으로 디블로킹 필터링하고 다음 필터링 영역으로 넘어가는 인과적(causal) 방식으로 디블로킹 필터링하는 것을 특징으로 하는 필터링 방법.
- 제1항에 있어서,상기 블록 간 경계 부분의 소정의 영역은 최소 4화소 단위의 복수의 화소들을 포함하는 것을 특징으로 하는 필터링 방법.
- 제1항에 있어서,상기 디블로킹 필터링은, 오버랩 스무딩 및 루프 필터링 중 적어도 하나를 포함하는 것을 특징으로 하는 필터링 방법.
- 제4항에 있어서,매크로 블록 단위로 소정의 조건에 따라 상기 오버랩 스무딩을 수행한 후, 상기 루프 필터링을 수행하는 것을 특징으로 하는 필터링 방법.
- 제4항에 있어서,상기 오버랩 스무딩은, 상기 블록간의 경계 부분을 대칭으로 양 방향으로 최소 2화소씩의 값을 이용하여 오버랩 스무딩을 수행하는 것을 특징으로 하는 필터링 방법.
- 제4항에 있어서,상기 오버랩 스무딩은, 수평 방향으로 8x8 블록 경계 부분을 오버랩 스무딩한 후, 수직 방향으로 8x8 블록 경계 부분을 오버랩 스무딩 하는 것을 특징으로 하는 필터링 방법.
- 제4항에 있어서,상기 루프 필터링은, 상기 블록간의 경계 부분을 대칭으로 양 방향으로 최소 4화소씩의 값을 이용하여 루프 필터링을 수행하는 것을 특징으로 하는 필터링 방법.
- 제4항에 있어서,상기 루프 필터링은, 수평 방향으로 8x8 블록 경계 부분을 루프 필터링한 후, 8x4 블록 경계 부분을 루프 필터링하며, 수직 방향으로 8x8 블록 경계 부분을 루프 필터링한 후, 4x8 블록 경계 부분을 루프 필터링하는 것을 특징으로 하는 필터링 방법.
- 제1항에 있어서,상기 동영상 코덱은 SMPTE (the Society of Motion Picture and Television Engineers)의 VC9 표준을 따르는 것을 특징으로 하는 필터링 방법.
- 동영상 코덱의 필터링 장치에 있어서,매크로 블록 단위의 필터링 영역을 저장하는 버퍼부;상기 버퍼부에 저장된 매크로 블록과 인접한 이전의 매크로 블록간의 경계 부분의 소정 영역을 저장하는 행 버퍼와 열 버퍼; 및상기 버퍼부, 상기 행 버퍼, 및 상기 열 버퍼에 저장된 필터링 영역에 대하여 시간적 순서에 따라 인과적(causal)으로 디블로킹(de-blocking) 필터링을 수행하는 필터링부를 포함하는 것을 특징으로 하는 필터링 장치.
- 제11항에 있어서,상기 필터링부는, 하나의 필터링 영역에 대하여 수평 방향으로 디블로킹 필터링한 후 수직 방향으로 디블로킹 필터링하고 다음 필터링 영역으로 넘어가는 인과적(causal) 방식으로 디블로킹 필터링하는 것을 특징으로 하는 필터링 장치.
- 제11항에 있어서,상기 블록 간 경계 부분의 소정의 영역은 최소 4화소 단위의 복수의 화소들을 포함하는 것을 특징으로 하는 필터링 장치.
- 제11항에 있어서,상기 디블로킹 필터링은, 오버랩 스무딩 및 루프 필터링 중 적어도 하나를 포함하는 것을 특징으로 하는 필터링 장치.
- 제14항에 있어서,매크로 블록 단위로 소정의 조건에 따라 상기 오버랩 스무딩을 수행한 후, 상기 루프 필터링을 수행하는 것을 특징으로 하는 필터링 장치.
- 제14항에 있어서,상기 오버랩 스무딩은, 상기 블록간의 경계 부분을 대칭으로 양 방향으로 최소 2화소씩의 값을 이용하여 오버랩 스무딩을 수행하는 것을 특징으로 하는 필터링 장치.
- 제14항에 있어서,상기 오버랩 스무딩은, 수평 방향으로 8x8 블록 경계 부분을 오버랩 스무딩한 후, 수직 방향으로 8x8 블록 경계 부분을 오버랩 스무딩 하는 것을 특징으로 하는 필터링 장치.
- 제14항에 있어서,상기 루프 필터링은, 상기 블록간의 경계 부분을 대칭으로 양 방향으로 최소 4화소씩의 값을 이용하여 루프 필터링을 수행하는 것을 특징으로 하는 필터링 장치.
- 제14항에 있어서,상기 루프 필터링은, 수평 방향으로 8x8 블록 경계 부분을 루프 필터링한 후, 8x4 블록 경계 부분을 루프 필터링하며, 수직 방향으로 8x8 블록 경계 부분을 루프 필터링한 후, 4x8 블록 경계 부분을 루프 필터링하는 것을 특징으로 하는 필터링 장치.
- 제11항에 있어서,상기 동영상 코덱은 SMPTE (the Society of Motion Picture and Television Engineers)의 VC9 표준을 따르는 것을 특징으로 하는 필터링 장치.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/156,603 US20050281339A1 (en) | 2004-06-22 | 2005-06-21 | Filtering method of audio-visual codec and filtering apparatus |
US11/178,409 US20060013315A1 (en) | 2004-07-19 | 2005-07-12 | Filtering method, apparatus, and medium used in audio-video codec |
CNB2005100848539A CN100490538C (zh) | 2004-07-19 | 2005-07-19 | 在音频视频编解码器中使用的滤波方法和设备 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20040046653 | 2004-06-22 | ||
KR1020040046653 | 2004-06-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20050121627A true KR20050121627A (ko) | 2005-12-27 |
Family
ID=35912736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020040055893A Withdrawn KR20050121627A (ko) | 2004-06-22 | 2004-07-19 | 동영상 코덱의 필터링 방법 및 필터링 장치 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR20050121627A (ko) |
CN (1) | CN1722842A (ko) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100753504B1 (ko) * | 2005-12-20 | 2007-08-31 | 엘지전자 주식회사 | 비디오 디코더의 인-루프 디블럭킹 필터 시스템 및 그의필터링 방법 |
KR100816461B1 (ko) * | 2006-04-12 | 2008-03-26 | 주식회사 칩스앤미디어 | 실시간 디블록킹 필터 및 이를 이용한 디블록킹 방법 |
KR20140114436A (ko) * | 2012-01-20 | 2014-09-26 | 퀄컴 인코포레이티드 | 멀티-쓰레딩된 텍스처 디코딩 |
US9491478B2 (en) | 2010-08-17 | 2016-11-08 | M&K Holdings Inc. | Method for decoding in intra prediction mode |
US11284072B2 (en) | 2010-08-17 | 2022-03-22 | M&K Holdings Inc. | Apparatus for decoding an image |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101115195B (zh) * | 2006-07-24 | 2010-08-18 | 同济大学 | 视频码流的宏块级耦合的解码和环路滤波方法和装置 |
CN101193305B (zh) * | 2006-11-21 | 2010-05-12 | 安凯(广州)微电子技术有限公司 | 用于视频编解码芯片中帧内预测的数据存储和交换方法 |
CN101742318B (zh) * | 2010-01-06 | 2015-01-21 | 威盛电子股份有限公司 | 视频解码解块的装置与方法 |
KR101750046B1 (ko) * | 2010-04-05 | 2017-06-22 | 삼성전자주식회사 | 트리 구조에 따른 부호화 단위에 기반한 인루프 필터링을 수반하는 비디오 부호화 방법과 그 장치 및 복호화 방법과 그 장치 |
KR101682147B1 (ko) | 2010-04-05 | 2016-12-05 | 삼성전자주식회사 | 변환 및 역변환에 기초한 보간 방법 및 장치 |
-
2004
- 2004-07-19 KR KR1020040055893A patent/KR20050121627A/ko not_active Withdrawn
-
2005
- 2005-06-22 CN CNA2005100922132A patent/CN1722842A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100753504B1 (ko) * | 2005-12-20 | 2007-08-31 | 엘지전자 주식회사 | 비디오 디코더의 인-루프 디블럭킹 필터 시스템 및 그의필터링 방법 |
KR100816461B1 (ko) * | 2006-04-12 | 2008-03-26 | 주식회사 칩스앤미디어 | 실시간 디블록킹 필터 및 이를 이용한 디블록킹 방법 |
US9491478B2 (en) | 2010-08-17 | 2016-11-08 | M&K Holdings Inc. | Method for decoding in intra prediction mode |
US11284072B2 (en) | 2010-08-17 | 2022-03-22 | M&K Holdings Inc. | Apparatus for decoding an image |
KR20140114436A (ko) * | 2012-01-20 | 2014-09-26 | 퀄컴 인코포레이티드 | 멀티-쓰레딩된 텍스처 디코딩 |
Also Published As
Publication number | Publication date |
---|---|
CN1722842A (zh) | 2006-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112006000270B4 (de) | Arbeitspuffer zum Speichern von Schleifenfilterzwischendaten | |
JP5396478B2 (ja) | 適応ループフィルタを用いた動画符号化方法 | |
JP5763210B2 (ja) | 改良されたループ型フィルタリング処理のための方法と装置 | |
EP2708027B1 (en) | Method and apparatus for reduction of in-loop filter buffer | |
US8577168B2 (en) | System and method for in-loop deblocking in scalable video coding | |
CA2454867C (en) | Adaptive filtering based upon boundary strength | |
US20160241881A1 (en) | Method and Apparatus of Loop Filters for Efficient Hardware Implementation | |
KR101253156B1 (ko) | 영상 신호의 인코딩/디코딩 방법 | |
TWI709333B (zh) | 一種解塊濾波的方法 | |
US20060013315A1 (en) | Filtering method, apparatus, and medium used in audio-video codec | |
US20060133504A1 (en) | Deblocking filters for performing horizontal and vertical filtering of video data simultaneously and methods of operating the same | |
CN113994670A (zh) | 具有虚拟边界的跨分量自适应环路滤波的视频编解码方法及装置 | |
US20060115002A1 (en) | Pipelined deblocking filter | |
US20130022103A1 (en) | Method and apparatus for sample adaptive offset parameter estimationfor image and video coding | |
US20140269913A1 (en) | Method and apparatus for loop filtering | |
US20150326886A1 (en) | Method and apparatus for loop filtering | |
CN105898335A (zh) | 提升硬件效率的环路滤波方法以及环路滤波装置 | |
JP4680608B2 (ja) | 画像復号装置及び方法 | |
US9154808B2 (en) | Method and apparatus for INTRA prediction for RRU | |
US20050281339A1 (en) | Filtering method of audio-visual codec and filtering apparatus | |
US20090279611A1 (en) | Video edge filtering | |
KR20050121627A (ko) | 동영상 코덱의 필터링 방법 및 필터링 장치 | |
US20100014597A1 (en) | Efficient apparatus for fast video edge filtering | |
KR101063421B1 (ko) | 영상 디코더 및 영상 디코딩 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20040719 |
|
PG1501 | Laying open of application | ||
PC1203 | Withdrawal of no request for examination | ||
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |