KR20040093605A - 고속 움직임 추정을 위한 블록 모드 결정 방법 및 그 장치 - Google Patents
고속 움직임 추정을 위한 블록 모드 결정 방법 및 그 장치 Download PDFInfo
- Publication number
- KR20040093605A KR20040093605A KR1020030027541A KR20030027541A KR20040093605A KR 20040093605 A KR20040093605 A KR 20040093605A KR 1020030027541 A KR1020030027541 A KR 1020030027541A KR 20030027541 A KR20030027541 A KR 20030027541A KR 20040093605 A KR20040093605 A KR 20040093605A
- Authority
- KR
- South Korea
- Prior art keywords
- block mode
- block
- motion estimation
- mode
- cost
- Prior art date
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/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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
고속 움직임 추정을 위한 블록 모드 결정 방법 및 그 장치가 개시된다. 본 발명에 따른 블록 모드 결정 방법은, (a)소정의 참조 픽쳐 및 움직임 추정을 위한 소정의 측정 함수를 이용하여, 입력 비디오 데이터 블록을 n×n 사이즈의 최하위 서브 블록 모드로 움직임 추정하여, 각각의 최하위 서브 블록에 대응하는 모션 벡터를 결정하는 단계; (b)상기 입력 비디오 데이터 블록을 2n×2n 사이즈의 다수의 서브 블록으로 분할하는 단계; 및 (c)상기 서브 블록에 포함된 4개의 최하위 서브 블록들에 각각 대응하는 모션 벡터들의 유사 여부에 따라 각각의 상기 서브 블록의 블록 모드를 결정하는 단계를 포함한다. 본 발명에 따른 고속 움직임 추정을 위한 블록 모드 결정 방법 및 그 장치는 최하위 블록 모드로 움직임 추정을 수행한 결과를 이용함으로써 블록 모드 결정을 위한 계산량을 감소시켜 보다 신속하고 간단하게 블록 모드를 결정할 수 있는 효과를 제공한다.
Description
본 발명은 픽쳐간 예측 부호화를 위한 고속 움직임 추정에 관한 것으로서, 보다 상세하게는 고속 움직임 추정을 위한 블록 모드 결정 방법 및 그 장치에 관한 것이다.
동영상은 다수의 프레임들로 이루어지고, 프레임들이 연속적으로 디스플레이됨으로써 사용자에게 동영상이 제공된다. 한편, 영상 신호의 특성상 이웃하는 프레임간 또는 동일 프레임내의 이웃하는 블록 또는 화소간에는 서로 유사성이 존재한다.
이러한 영상 신호의 유사성을 이용하여 영상을 예측 부호화하여 고효율의 영상 신호 압축이 수행된다. 예측 부호화 중, 이웃하는 프레임 간의 유사성을 이용한 것을 영상간 예측 부호화(inter prediction coding)이라 하고, 영상 내 신호의 유사성을 이용하는 것을 영상내 예측 부호화(intra prediction coding)이라 한다.
영상간 예측 부호화는 현재 프레임에 속하는 영상 데이터를 소정 단위, 예컨대 16×16 화소로 이루어진 매크로 블록으로 분할하여 매크로 블록 단위로 이전 프레임을 탐색하여 움직임 추정을 수행한다. 움직임 추정에 사용되는 이전 프레임을 참조 프레임이라 부른다.
움직임 추정은 소정의 측정 함수, 예컨대 SAD(Sum of Absolute Difference) 함수를 이용하여, 현재 프레임 내의 매크로 블록과 가장 유사한 매크로 블록을 이전 프레임에서 탐색한 후, 양 매크로 블록의 위치의 차이를 나타내는 모션 벡터를 구하는 과정이다.
한편, 움직임 추정의 구체적인 방법은 매우 다양하다. 예컨대, 표준화 작업이 진행 중인 ITU-T H.26L 비디오 압축 표준에서는 다수의 참조 픽쳐(picture)를 이용할 수 있으며, 움직임 추정을 위한 블록 모드를 매크로 블록 모드로 고정하여 수행하지 않고 다양한 사이즈의 블록 모드로 수행하여 부호화 효율의 향상을 도모한다.
도 1은 움직임 추정을 위한 다양한 블록 모드를 나타내는 도면이다. 도 1을 참조하면, 도 1의 (a) 내지 (d)는 각각 16×16 블록 모드, 16×8 블록 모드, 8×16 블록 모드 및 8×8 블록 모드를 나타낸다.
각각의 8×8 블록은 도 1의 (e) 내지 (h)에 도시한 바와 같이 8×8 블록 모드, 8×4 블록 모드, 4×8 블록 모드 및 4×4 블록 모드로 움직임 추정이 수행된다.
도 1에 도시한 바와 같이 7가지 블록 모드가 존재하는 경우, 16×16 매크로블록에 대해 시도해 보아야 하는 블록 모드의 경우는 19가지가 된다. 그리고 이용 가능한 참조 픽쳐의 개수가 다수인 경우, 매크로 블록 단위로 시도해 보아야 하는 블록 모드의 개수는 더 늘어난다.
종래, 다양한 블록 모드를 이용하여 움직임 추정을 하는 경우, 개개의 블록 모드 별로 움직임 추정을 시도하여 모션 벡터를 구한 후, 그 중 부호화 효율이 가장 좋은 것으로 판정된 블록 모드를 영상간 예측 부호화가 수행될 매크로 블록의 최종적인 블록 모드로 결정하므로, 비트 레이트(bit rate) 측면에서 많은 이득을 볼 수 있으며 동일 비트 레이트로 더 좋은 화질을 제공하는 영상 압축이 가능하다.
그러나, 영상 부호화기 측면에서는 참조 픽쳐를 하나만 이용하는 경우 또는다수의 참조 픽쳐를 이용하더라도 이미 참조 픽쳐가 결정된 경우, 영상간 예측 부호화를 위한 블록 모드를 결정하기 위해 다수의 블록 모드를 이용하여 움직임 추정을 수회 수행하는 것은 계산량이 매우 많아 복잡도(complexity)를 매우 증가시키는 문제가 있다.
따라서 본 발명이 이루고자 하는 기술적 과제는, 참조 픽쳐를 하나만 이용하는 경우 또는 다수의 참조 픽쳐를 이용하더라도 이미 참조 픽쳐가 결정된 경우, 입력 비디오 데이터 블록의 영상간 예측 부호화를 위한 블록 모드를 보다 적은 계산량으로 결정하는 방법 및 그 장치를 제공하는데 있다.
도 1은 움직임 추정을 위한 다양한 블록 모드를 나타내는 도면,
도 2는 본 발명의 바람직한 실시예에 따른 동영상 부호화 장치를 나타내는 블록도,
도 3은 본 발명의 바람직한 실시예에 따른 블록 모드 결정 장치를 나타내는 블록도,
도 4는 본 발명의 바람직한 실시예에 따른 블록 모드 결정 방법을 나타내는 흐름도,
도 5는 각 8×8 블록에 포함된 4개의 4×4 블록을 나타내는 도면,
도 6은 도 4에 도시된 제500 단계의 상세 단계를 나타내는 흐름도,
도 7은 입력 매크로 블록에 포함된 4개의 8×8 블록을 나타내는 도면,
도 8은 도 4에 도시된 제700 단계의 상세 단계를 나타내는 흐름도이다.
상기 과제를 이루기 위해, 본 발명에 의한 블록 모드 결정 방법은,
(a) 소정의 참조 픽쳐 및 움직임 추정을 위한 소정의 측정 함수를 이용하여, 입력 비디오 데이터 블록을 n×n 사이즈의 최하위 서브 블록 모드로 움직임 추정하여, 각각의 최하위 서브 블록에 대응하는 모션 벡터를 결정하는 단계; (b) 상기 입력 비디오 데이터 블록을 2n×2n 사이즈의 다수의 서브 블록으로 분할하는 단계; 및 (c) 상기 서브 블록에 포함된 4개의 최하위 서브 블록들에 각각 대응하는 모션 벡터들의 유사 여부에 따라 각각의 상기 서브 블록의 블록 모드를 결정하는 단계를 포함한다.
또한, 상기 (c)단계는 상기 각 서브 블록이 좌측상단부터 시계방향의 순서대로 각각 b1, b2, b3 및 b4의 4개의 최하위 서브 블록들을 포함하고, 상기 최하위서브 블록 b1 내지 b4에 각각 대응하는 모션 벡터가 MV(b1) 내지 MV(b4)인 경우,
상기 MV(b1)과 MV(b2)가 유사하고 상기 MV(b3)과 MV(b4)가 유사하면, 상기 각 서브 블록의 블록 모드를 2n×n 블록 모드로 결정한다.
또한, 상기 (c)단계는 상기 MV(b1)과 MV(b3)가 유사하고, 상기 MV(b2)과 MV(b4)가 유사하면, 상기 각 서브 블록의 블록 모드를 n×2n 블록 모드로 결정한다.
또한, 상기 (c)단계는 상기 MV(b1) 내지 MV(b4) 중, 적어도 세 개의 모션 벡터가 유사하면, 상기 각 서브 블록의 블록 모드를 2n×2n 블록 모드로 결정한다.
또한, 상기 (c)단계는 상기 MV(b1)과 MV(b2)가 유사하지 않거나 상기 MV(b1)과 MV(b3)이 유사하지 않으면, 상기 각 서브 블록의 블록 모드를 n×n 블록 모드로 결정한다.
또한, (d) 상기 (c)단계에서 2n×n 블록 모드로 결정된 서브 블록을 2n×n 블록 모드로 움직임 추정하여, 2n×n 블록 모드로 움직임 추정한 결과에 따른 코스트를 계산하는 단계; 및 (e) 상기 (a)단계에서 최하위 서브 블록 모드로 움직임 추정한 결과에 따른 코스트와 상기 (d)단계에서 2n×n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 서브 블록의 블록 모드로 최종적으로 결정하는 단계를 더 포함한다.
또한, (f) 상기 (c)단계에서 n×2n 블록 모드로 결정된 서브 블록을 n×2n 블록 모드로 움직임 추정하여, n×2n 블록 모드로 움직임 추정한 결과에 따른 코스트를 계산하는 단계; 및 (g) 상기 (a)단계에서 최하위 서브 블록 모드로 움직임 추정한 결과에 따른 코스트와 상기 (d)단계에서 n×2n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 서브 블록의 블록 모드로 최종적으로 결정하는 단계를 더 포함한다.
또한, (h) 상기 (c)단계에서 2n×2n 블록 모드로 결정된 서브 블록을 2n×2n 블록 모드로 움직임 추정하여, 2n×2n 블록 모드로 움직임 추정한 결과에 따른 코스트를 계산하는 단계; 및 (i) 상기 (a)단계에서 최하위 서브 블록 모드로 움직임 추정한 결과에 따른 코스트와 상기 (d)단계에서 2n×2n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 서브 블록의 블록 모드로 최종적으로 결정하는 단계를 더 포함한다.
또한, 상기 입력 비디오 데이터 블록의 사이즈가 4n×4n으로서, 좌측상단부터 시계방향의 순서대로 각각 B1, B2, B3 및 B4의 4개의 상기 서브 블록들을 포함하고, 상기 (h)단계에서 상기 서브 블록 B1 내지 B4에 각각 대응하는 모션 벡터 MV(B1) 내지 MV(B4)가 결정된 경우, (j) 상기 모든 서브 블록들의 최종 블록 모드가 2n×2n 블록 모드로 결정되었는지 여부를 판단하는 단계; 및 (k) 상기 모든 서브 블록들의 최종 블록 모드가 2n×2n 블록 모드인 것으로 판단되면, 상기 MV(B1)과 MV(B2)가 유사하고 상기 MV(B3)과 MV(B4)가 유사하면, 상기 입력 비디오 데이터 블록의 블록 모드를 4n×2n 블록 모드로 결정하는 단계를 더 포함한다.
상기 과제를 이루기 위해, 본 발명에 의한 블록 모드 결정 장치는,
입력된 비디오 데이터 블록을 n×n 사이즈의 다수의 최하위 서브 블록으로 분할하는 블록 분할부; 소정의 참조 픽쳐를 입력받고, 상기 블록 분할부로부터 상기 최하위 서브 블록들을 순차적으로 입력받아, 상기 참조 픽쳐 및 움직임 추정을 위한 소정의 측정 함수를 이용하여, 상기 각각의 최하위 서브 블록에 대한 움직임 추정을 수행하여, 각각의 최하위 서브 블록에 대응하는 측정 함수의 값 및 모션 벡터를 결정하는 움직임 추정부; 및 상기 움직임 추정부로부터 하나의 2n×2n 사이즈의 서브 블록을 포함하는 4개의 최하위 서브 블록에 각각 대응하는 모션 벡터를 입력받아, 상기 모션 벡터들의 유사 여부에 따라 상기 서브 블록의 블록 모드를 결정하는 블록 모드 결정부를 포함한다.
또한, 상기 블록 모드 결정부는 상기 서브 블록이 좌측상단부터 시계방향의 순서대로 각각 b1, b2, b3 및 b4의 4개의 최하위 서브 블록들을 포함하고, 상기 최하위 서브 블록 b1 내지 b4에 각각 대응하는 모션 벡터가 MV(b1) 내지 MV(b4)인 경우, 상기 블록 모드 결정부는 상기 움직임 추정부로부터 상기 모션 벡터 MV(b1) 내지 MV(b4)를 입력받아, 상기 MV(b1)과 MV(b2)가 유사하고 상기 MV(b3)과 MV(b4)가 유사하면, 상기 서브 블록의 블록 모드를 2n×n 블록 모드로 결정한다.
또한, 상기 블록 모드 결정부는 상기 MV(b1)과 MV(b3)가 유사하고, 상기 MV(b2)과 MV(b4)가 유사하면, 상기 서브 블록의 블록 모드를 n×2n 블록 모드로 결정한다.
또한, 상기 블록 모드 결정부는 상기 MV(b1) 내지 MV(b4) 중, 적어도 세 개의 모션 벡터가 유사하면, 상기 서브 블록의 블록 모드를 2n×2n 블록 모드로 결정한다.
또한, 상기 블록 모드 결정부는 상기 MV(b1)과 MV(b2)가 유사하지 않거나 상기 MV(b1)과 MV(b3)이 유사하지 않으면, 상기 서브 블록의 블록 모드를 n×n 블록 모드로 결정한다.
또한, 상기 블록 모드 결정부는 최하위 서브 블록 모드로 움직임 추정한 결과에 따른 코스트와 2n×n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 서브 블록의 블록 모드로 최종적으로 결정한다.
또한, 상기 블록 모드 결정부는 최하위 서브 블록 모드로 움직임 추정한 결과에 따른 코스트와 n×2n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 서브 블록의 블록 모드로 최종적으로 결정한다.
또한, 상기 블록 모드 결정부는 최하위 서브 블록 모드로 움직임 추정한 결과에 따른 코스트와 2n×2n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 서브 블록의 블록 모드로 최종적으로 결정한다.
또한, 상기 입력 비디오 데이터 블록의 사이즈가 4n×4n으로서, 좌측상단부터 시계방향의 순서대로 각각 B1, B2, B3 및 B4의 4개의 서브 블록들을 포함하는 경우에, 상기 블록 모드 결정부는 상기 입력 비디오 데이터 블록을 구성하는 모든 서브 블록들의 최종 블록 모드가 2n×2n 블록 모드인 것으로 판단되면, 상기 움직임 추정부로부터 상기 서브 블록 B1 내지 B4에 각각 대응하는 모션 벡터 MV(B1) 내지 MV(B4)를 입력받아, 상기 MV(B1)과 MV(B2)가 유사하고 상기 MV(B3)과 MV(B4)가유사하면, 상기 입력 비디오 데이터 블록의 블록 모드를 4n×2n 블록 모드로 결정한다.
또한, 상기 움직임 추정부는 n×n 블록 모드의 최하위 서브 블록 모드로 상기 입력 비디오 데이터 블록의 움직임 추정한 결과, 각각의 최하위 블록별로 계산된 소정 함수값을 저장하고, n×n 블록 모드 보다 상위의 블록 모드로 움직임 추정을 수행하는 경우, 미리 저장된 각각의 최하위 블록별로 계산된 소정 함수값을 이용하여 움직임 추정을 수행한다.
이하, 첨부된 도면들을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명한다.
도 2는 본 발명의 바람직한 실시예에 따른 동영상 부호화 장치의 블록도를 나타낸다.
도 2를 참조하면, 동영상 부호화 장치는 Transform/Quantizer(110), Dequantizer/Inverse transform(131), Deblocking filter(133), 픽쳐 재현부(135), Motion compensated predictor(137), Intra prediction부(139), Motion estimator(150), 감산부(170) 및 Entropy coding부(190)를 포함한다.
16×16 화소로 이루어진 매크로 블록 단위로 영상 데이터가 동영상 부호화 장치로 입력된다.
Transform/Quantizer(110)는 입력 매크로 블록을 소정 방식에 따라 변환한 후 양자화한다. 대표적인 영상 데이터 변환 기법으로는 DCT(Discrete CosineTransform)이 있다.
Dequantizer/Inverse transform(131)는 Transform/Quantizer(110)로부터 변환 후 양자화된 영상 데이터를 입력받아 역양자화 및 역변환한다.
Deblocking filter(133)는 Dequantizer/Inverse transform(131)로부터 역양자화 및 역변환된 영상 데이터를 입력받아 블록킹(blocking) 효과를 제거하기 위한 필터링을 수행한다.
픽쳐 재현부(135)는 필터링된 영상 데이터를 Deblocking filter(133)로부터 입력받아 픽쳐(picture) 단위로 영상을 재현하여 저장한다. 픽쳐는 프레임 단위의 영상이거나 필드 단위의 영상이다. 픽쳐 재현부(135)는 다수의 픽쳐를 저장할 수 있는 버퍼(도시되지 않음)를 구비한다. 버퍼에 저장된 다수의 픽쳐는 움직임 추정을 위해 제공되는 픽쳐로서 이하에서는 참조 픽쳐라 한다.
Motion estimator(150)는 픽쳐 재현부(135)에 저장된 적어도 하나의 참조 픽쳐 중 하나의 참조 픽쳐를 제공받아 본 발명에 따라 입력 매크로 블록의 움직임 추정을 수행하여 모션 벡터, 참조 픽쳐를 나타내는 인덱스 및 블록 모드를 포함한 모션 데이터를 출력한다.
Motion compensated predictor(137)는 Motion estimator(150)로부터 입력된 모션 데이터에 따라, 픽쳐 재현부(135)에 저장된 다수의 참조 픽쳐들 중 움직임 추정에 이용된 참조 픽쳐로부터, 입력 매크로 블록에 대응하는 매크로 블록을 추출하여 출력한다.
감산부(170)는 입력 매크로 블록을 픽쳐간 예측 부호화하는 경우, Motioncompensated predictor(137)로부터 입력 매크로 블록에 대응하는 참조 픽쳐 내의 매크로 블록을 입력받아 입력 매크로 블록과의 차분 연산을 수행하여 잔차 신호(residue signal)를 출력한다.
감산부(170)로부터 출력된 잔차 신호는 다시 Transform/Quantizer(110)에 의해 변환 및 양자화되고, Entropy coding부(190)에 의해 엔트로피 부호화되어 출력 비트 스트림이 생성된다.
Intra prediction부(139)는 참조 픽쳐를 이용하여 픽쳐간 예측 부호화가 아닌 픽쳐내 예측 부호화를 수행한다.
한편, 전술한 동영상 부호화 장치에 의해 생성된 비트 스트림을 복호화하는 동영상 복호부(decoder)(130)는 Dequantizer/Inverse transform(131), Deblocking filter(133), 픽쳐 재현부(135), Motion compensated predictor(137) 및 Intra prediction부(139)를 포함한다.
도 3은 본 발명의 바람직한 실시예에 따른 블록 모드 결정 장치의 블록도를 나타낸다.
도 3을 참조하면, 블록 모드 결정 장치는 블록 분할부(151), 움직임 추정부(153) 및 블록 모드 결정부(155)를 포함한다.
도 3에 도시된 블록 모드 결정 장치는 도 2에 도시된 본 발명에 따른 동영상 부호화 장치의 Motion estimator(150)와 동일한 장치이거나 적어도 Motion estimator(150)에 포함되어 본 발명에 따른 블록 모드 결정 방법을 수행한다. 다만, 본 발명에 따른 블록 모드 결정 장치는 움직임 추정을 위해 제공되는 참조 픽쳐가 하나인 경우 또는 다수의 참조 픽쳐가 제공되지만 그 중 하나가 참조 픽쳐로 결정된 경우에 본 발명에 따른 블록 모드 결정 방법을 수행한다.
블록 분할부(151)는 블록 모드 결정부(157)의 제어에 따라 입력 비디오 데이터 블록, 즉 매크로 블록 단위의 영상 데이터를 입력받아 매크로 블록을 소정의 서브 블록으로 분할하여 서브 블록 단위의 영상 데이터를 움직임 추정부(153)로 제공한다.
움직임 추정부(153)는 하나의 참조 픽쳐 및 블록 분할부(151)로부터 소정 크기의 서브 블록을 순차적으로 입력받아 각각의 서브 블록에 대한 움직임 추정을 수행한다.
블록 모드 결정부(155)는 움직임 추정부(153)로부터 블록 모드를 결정하는데 이용되는 데이터를 제공받아 본 발명에 따른 블록 모드 결정을 수행하여 움직임 추정에 이용된 블록 모드 및 모션 벡터를 포함하는 모션 데이터를 출력한다.
이상에서 설명한 본 발명에 따른 블록 모드 결정 장치의 구조에 따라 본 발명에 따른 블록 모드 결정 방법을 설명한다.
도 4는 본 발명의 바람직한 실시예에 따른 블록 모드 결정 방법을 나타내는 흐름도이다.
먼저, 블록 분할부(151)는 최하위 블록 모드인 4×4 블록 모드로 입력 매크로 블록을 움직임 추정하기 위해 입력 매크로 블록을 16개의 4×4 블록으로 분할한 후, 4×4 블록 단위의 영상 데이터를 순차적으로 움직임 추정부(153)로 제공한다. 입력 매크로 블록은 통상 16×16 사이즈이다.
움직임 추정부(153)는 블록 분할부(151)로부터 16개의 4×4 블록을 순차적으로 입력받고, 입력된 하나의 참조 픽쳐를 이용하여 각 4×4 블록의 움직임 추정을 수행하여 모션 벡터를 결정한다(제200 단계). 본 실시예에서 움직임 추정은 SAD(Sum of Absolute Difference) 함수를 이용하여 수행한다.
SAD 함수를 이용한 움직임 추정 동작을 보다 상세하게 설명하면, 블록 분할부(151)로부터 입력된 하나의 4×4 블록과 참조 픽쳐 내의 임의의 위치의 4×4 블록의 서로 대응하는 위치에 있는 각각의 화소의 값의 차의 절대값들을 모두 더함으로써 SAD 함수값이 결정된다.
참조 픽쳐 내의 형성 가능한 모든 4×4 블록들에 대해 각각 SAD 함수값을 계산한 후, SAD 함수값이 최소가 되는 참조 픽쳐 내의 4×4 블록을 현재 4×4 블록에 대응하는 이전 4×4 블록으로 결정한다. 모션 벡터는 이전 4×4 블록과 현재 4×4 블록간의 위치의 변화를 나타내는 벡터값이다.
움직임 추정을 위한 측정 함수로써 SAD가 아닌 다른 함수가 사용될 수도 있다. 다른 측정 함수로는 SATD(Sum of Absolute Transformed Difference) 함수 또는 SSD(Sum of Squared Difference) 함수 등이 있다.
또한, 별도의 단계로 도시하지는 아니하였으나, 움직임 추정부(153)는 제200 단계에서 모션 벡터를 구하기 위해 각각의 4×4 블록별로 계산된 SAD 함수값을 저장한다. 이 후에 4×4 블록 모드 보다 상위의 블록 모드로 움직임 추정을 하여 모션 벡터를 결정하기 위해 SAD 함수값을 계산할 필요가 있는 경우, 미리 저장된 각각의 4×4 블록별로 계산된 SAD 함수값을 이용하기 위함이다.
제200 단계에서 입력 매크로 블록을 4×4 블록 모드로 움직임 추정한 후, 8×8 블록별로 4×4 블록 모드로 움직임 추정을 한 결과에 따른 코스트(cost)를 계산한다(제300 단계). 코스트는 소정 블록 모드로 움직임 추정하여 예측 부호화하는 경우, 부호화 성능을 나타내는 기준값으로서 데이터 압축률 및 영상 품질을 나타내는 정보이다.
SAD(Sum of Absolute Difference) 함수, SATD(Sum of Absolute Transformed Difference) 함수, SSD(Sum of Squared Difference), MAD(Mean of Absolute Difference) 함수 또는 라그랑제(Lagrange) 함수 중 하나의 함수를 이용하여 계산된 함수값을 코스트로 사용할 수 있다.
제300 단계 후에, 블록 분할부(151)는 블록 모드 결정부(155)의 제어에 따라 입력 매크로 블록을 4개의 8×8 블록 B1, B2, B3 및 B4로 분할한다(제400 단계). 각각의 8×8 블록은 4개의 4×4 블록을 포함한다.
움직임 추정부(153)는 8×8 사이즈의 블록 B1, B2, B3 및 B4를 각각 입력받아, 각 8×8 블록에 포함된 4개의 4×4 블록에 대해 제200 단계에서 결정된 모션 벡터를 블록 모드 결정부(155)로 출력한다.
블록 모드 결정부(155)는 각 8×8 블록에 포함된 4개의 4×4 블록의 모션 벡터들의 유사여부에 따라 각 8×8 블록마다 블록 모드를 결정한다(제500 단계).
도 5는 각 8×8 블록에 포함된 4개의 4×4 블록을 나타내는 도면이다. 도 5를 참조하면, 각 8×8 블록은 좌상부터 시계방향의 순서대로 b1, b2, b3 및 b4의 4개의 4×4 블록으로 이루어진다.
도 6은 도 4에 도시된 제500 단계의 상세 단계를 나타내는 흐름도이다.
먼저, 블록 B1에 대해 도 6에 도시된 단계들이 수행되는 경우를 설명한다. 블록 B1에 포함되는 4개의 4×4 블록 b1, b2, b3 및 b4의 모션 벡터를 각각 MV(b1), MV(b2), MV(b3) 및 MV(b4)라 할 때, MV(b1) 내지 MV(b4) 중 세 개 이상이 유사한가를 판단한다(제510 단계).
모션 벡터의 유사 여부 판단은 두 개의 모션 벡터의 X축의 좌표값의 차이와 Y축의 좌표값의 차이가 각각 소정 한계값 내에 있으면 두 개의 모션 벡터가 서로 유사한 것으로 판단할 수 있다.
제510 단계에서의 판단 결과, 네 개의 모션 벡터 MV(b1) 내지 MV(b4) 중 적어도 세 개의 모션 벡터가 유사한 경우, 즉 네 개의 모션 벡터가 모두 유사하거나 그 중 세 개의 모션 벡터가 유사하다면, 블록 모드 결정부(155)는 블록 분할부(151)로 제어신호를 출력하고, 블록 분할부(151)는 그 제어신호에 따라 입력 매크로 블록을 4개의 8×8 블록 B1, B2, B3 및 B4로 분할하고, 현재 블록 모드 결정이 수행되고 있는 블록 B1을 움직임 추정부(153)로 제공한다. 움직임 추정부(153)는 입력된 블록 B1에 대해 8×8 블록 모드로 움직임 추정을 수행한다(제512 단계).
SAD 함수값을 코스트로 이용하는 경우, 움직임 추정부(153)는 블록 B1의 움직임 추정 과정에서 cost(8×8)을 계산한다(제514 단계). SAD 함수값이 아닌 다른 함수 또는 다른 방식을 이용하여 코스트를 계산하는 경우, 코스트는 움직임 추정부(153)가 아닌 다른 장치에서 계산될 수도 있다.
블록 모드 결정부(155)는 움직임 추정부(153)로부터 블록 B1에 대한 cost(8×8)과 cost(4×4)을 입력받아 양자의 크기를 비교한다(제516 단계). 이 때 cost(4×4)는 제300 단계에서 구한 값이다.
cost(8×8)과 cost(4×4)중, cost(8×8)이 작으면 블록 B1의 움직임 추정에 이용되는 블록 모드를 8×8 블록 모드로 최종적으로 결정한다(제518 단계).
그러나, cost(4×4)이 작으면 블록 B1의 움직임 추정에 이용되는 블록 모드를 4×4 블록 모드로 최종적으로 결정한다(제520 단계).
네 개의 모션 벡터 MV(b1) 내지 MV(b4) 중 세 개가 같은 경우에도, 블록 B1 에 대해 8×8 블록 모드가 사용될 경우 8×8 블록 모드가 사용된 경우보다 부호화 성능이 좋을 수 있다고 판단하여 8×8 블록 모드를 시도해 보는 것이다.
제510 단계에서의 판단결과, 네 개의 모션 벡터 MV(b1) 내지 MV(b4) 중 유사한 모션 벡터가 세 개 이상이 아니라고 판단되면, MV(b1)과 MV(b3)이 유사하고 MV(b2)와 MV(b4)가 유사한지를 판단한다(제522 단계). 기호 "=="는 두 모션 벡터의 완전 동일을 의미하는 것이 아니라 유사함을 의미한다.
MV(b1)과 MV(b3)이 유사하고 MV(b2)와 MV(b4)가 유사하다면, 블록 모드 결정부(155)는 블록 분할부(151)로 제어신호를 출력하고, 블록 분할부(151)는 그 제어신호에 따라 입력 매크로 블록을 4개의 8×8 블록 B1, B2, B3 및 B4로 분할하고, 현재 블록 모드 결정이 수행되고 있는 블록 B1을 움직임 추정부(153)로 제공한다. 움직임 추정부(153)는 입력된 블록 B1에 대해 4×8 블록 모드로 움직임 추정을 수행한다(제524 단계).
SAD 함수값을 코스트로 이용하는 경우, 움직임 추정부(153)는 블록 B1의 움직임 추정 과정에서 cost(4×8)을 계산한다(제526 단계).
블록 모드 결정부(155)는 움직임 추정부(153)로부터 블록 B1에 대한 cost(4×8)과 cost(4×4)을 입력받아 양자의 크기를 비교한다(제528 단계). 이 때 cost(4×4)는 제300 단계에서 구한 값이다.
cost(4×8)과 cost(4×4)중, cost(4×8)이 작으면 블록 B1의 움직임 추정에 이용되는 블록 모드를 4×8 블록 모드로 최종적으로 결정한다(제530 단계).
그러나, cost(4×4)이 작으면 블록 B1의 움직임 추정에 이용되는 블록 모드를 4×4 블록 모드로 최종적으로 결정한다(제520 단계).
그러나, 제522 단계에서의 판단결과, MV(b1)과 MV(b3)이 유사하지 않거나 MV(b2)와 MV(b4)가 유사하지 않으면, MV(b1)과 MV(b2)이 유사하고 MV(b3)와 MV(b4)가 유사한지를 판단한다(제532 단계).
만약, MV(b1)과 MV(b2)가 유사하지 않거나 MV(b3)와 MV(b4)가 유사하지 않으면, 블록 B1의 움직임 추정에 이용되는 블록 모드를 4×4 블록 모드로 최종적으로 결정한다(제520 단계).
그러나, MV(b1)과 MV(b2)이 유사하고 MV(b3)와 MV(b4)가 유사하다면, 블록 모드 결정부(155)는 블록 분할부(151)로 제어신호를 출력하고, 블록 분할부(151)는 그 제어신호에 따라 입력 매크로 블록을 4개의 8×8 블록 B1, B2, B3 및 B4로 분할하고, 현재 블록 모드 결정이 수행되고 있는 블록 B1을 움직임 추정부(153)로 제공한다. 움직임 추정부(153)는 입력된 블록 B1에 대해 8×4 블록 모드로 움직임 추정을 수행한다(제534 단계).
SAD 함수값을 코스트로 이용하는 경우, 움직임 추정부(153)는 블록 B1의 움직임 추정 과정에서 cost(8×4)을 계산한다(제536 단계).
블록 모드 결정부(155)는 움직임 추정부(153)로부터 블록 B1에 대한 cost(8×4)과 cost(4×4)을 입력받아 양자의 크기를 비교한다(제538 단계). 이 때 cost(4×4)는 제300 단계에서 구한 값이다.
cost(8×4)과 cost(4×4)중, cost(8×4)이 작으면 블록 B1의 움직임 추정에 이용되는 블록 모드를 8×4 블록 모드로 최종적으로 결정한다(제540 단계).
그러나, cost(4×4)이 작으면 블록 B1의 움직임 추정에 이용되는 블록 모드를 4×4 블록 모드로 최종적으로 결정한다(제520 단계).
이상에서는 블록 B1의 움직임 추정에 이용되는 블록 모드를 결정하는 과정에 대해 설명하였으나, 블록 B1외의 나머지 8×8 블록 B2 내지 B3에 대해서도 블록 B1의 경우와 동일하게 제510 단계 내지 제540 단계를 수행한다.
제500 단계를 통해 입력 매크로 블록을 구성하는 4개의 8×8 블록 B1 내지 B4 각각에 대한 블록 모드가 결정되면, 블록 B1 내지 B4의 최종 블록 모드가 모두 8×8 블록 모드로 결정되었는지 여부를 판단한다(제600 단계).
만약, 블록 B1 내지 B4 중 어느 하나라도 최종 블록 모드가 8×8 블록 모드가 아니라면, 블록 B1 내지 B4의 블록 모드를 제500 단계에서 결정된 블록모드로 최종적으로 결정한다.
그러나, 블록 B1 내지 B4의 최종 블록 모드가 모두 8×8 블록 모드로 결정되었다면, 블록 B1, B2, B3 및 B4의 모션 벡터를 각각 MV(B1), MV(B2), MV(B3) 및 MV(B4)라 할 때, MV(B1) 내지 MV(B4)의 유사여부에 따라 입력 매크로 블록의 블록모드를 결정한다(제700 단계). 도 6에 도시한 단계들과 유사한 단계들을 통해 각 8×8 블록에 대응하는 모션 벡터들의 유사여부에 따라 입력 매크로 블록을 8×8 블록 모드 보다 상위의 블록 모드로 움직임 추정을 수행하고, 그 결과에 따라 계산된 코스트와 8×8 블록 모드로 움직임 추정한 결과에 따라 이미 계산된 코스트를 비교하여 입력 매크로 블록의 최종적인 블록 모드를 결정한다.
도 7은 입력 매크로 블록에 포함된 4개의 8×8 블록을 나타내는 도면이다. 도 7을 참조하면, 입력 매크로 블록은 좌상부터 시계방향의 순서대로 B1, B2, B3 및 B4의 4개의 8×8 블록으로 이루어진다.
도 8은 도 4에 도시된 제700 단계의 상세 단계를 나타내는 흐름도이다.
먼저, 입력 매크로 블록에 포함되는 4개의 8×8 블록 B1, B2, B3 및 B4의 모션 벡터를 각각 MV(B1), MV(B2), MV(B3) 및 MV(B4)라 할 때, MV(B1) 내지 MV(B4) 중 세 개 이상이 유사한가를 판단한다(제710 단계).
모션 벡터의 유사 여부 판단은 두 개의 모션 벡터의 X축의 좌표값의 차이와 Y축의 좌표값의 차이가 각각 소정 한계값 내에 있으면 두 개의 모션 벡터가 서로 유사한 것으로 판단할 수 있다.
제710 단계에서의 판단 결과, 네 개의 모션 벡터 MV(B1) 내지 MV(B4) 중 적어도 세 개의 모션 벡터가 유사한 경우, 즉 네 개의 모션 벡터가 모두 유사하거나 그 중 세 개의 모션 벡터가 유사하다면, 블록 모드 결정부(155)는 블록분할부(151)로 제어신호를 출력하고, 블록 분할부(151)는 그 제어신호에 따라 입력 매크로 블록을 움직임 추정부(153)로 제공한다. 움직임 추정부(153)는 입력된 입력 매크로 블록에 대해 16×16 블록 모드로 움직임 추정을 수행한다(제712 단계).
SAD 함수값을 코스트로 이용하는 경우, 움직임 추정부(153)는 입력 매크로 블록의 움직임 추정 과정에서 cost(16×16)을 계산한다(제714 단계). SAD 함수값이 아닌 다른 함수 또는 다른 방식을 이용하여 코스트를 계산하는 경우, 코스트는 움직임 추정부(153)가 아닌 다른 장치에서 계산될 수도 있다.
블록 모드 결정부(155)는 움직임 추정부(153)로부터 입력 매크로 블록에 대한 cost(8×8)과 cost(16×16)을 입력받아 양자의 크기를 비교한다(제716 단계). 이 때 cost(8×8)는 도 6의 제514 단계에서 B1, B2, B3 및 B4의 각각의 8×8 블록에 대해 구한 코스트를 모두 더한 값이다.
cost(8×8)과 cost(16×16)중, cost(16×16)이 작으면 입력 매크로 블록의 움직임 추정에 이용되는 블록 모드를 16×16 블록 모드로 최종적으로 결정한다(제718 단계).
그러나, cost(8×8)이 작으면 입력 매크로 블록의 움직임 추정에 이용되는 블록 모드를 8×8 블록 모드로 최종적으로 결정한다(제720 단계).
네 개의 모션 벡터 MV(B1) 내지 MV(B4) 중 세 개가 같은 경우에도, 입력 매크로 블록에 대해 16×16 블록 모드가 사용될 경우 8×8 블록 모드가 사용된 경우보다 부호화 성능이 좋을 수 있다고 판단하여 16×16 블록 모드를 시도해 보는 것이다.
제710 단계에서의 판단결과, 네 개의 모션 벡터 MV(B1) 내지 MV(B4) 중 유사한 모션 벡터가 세 개 이상이 아니라고 판단되면, MV(B1)과 MV(B3)이 유사하고 MV(B2)와 MV(B4)가 유사한지를 판단한다(제722 단계).
MV(B1)과 MV(B3)이 유사하고 MV(B2)와 MV(B4)가 유사하다면, 블록 모드 결정부(155)는 블록 분할부(151)로 제어신호를 출력하고, 블록 분할부(151)는 그 제어신호에 따라 입력 매크로 블록을 움직임 추정부(153)로 제공한다. 움직임 추정부(153)는 입력된 입력 매크로 블록에 대해 8×16 블록 모드로 움직임 추정을 수행한다(제724 단계).
SAD 함수값을 코스트로 이용하는 경우, 움직임 추정부(153)는 입력 매크로 블록의 움직임 추정 과정에서 cost(8×16)을 계산한다(제726 단계).
블록 모드 결정부(155)는 움직임 추정부(153)로부터 입력 매크로 블록에 대한 cost(8×8)과 cost(8×16)을 입력받아 양자의 크기를 비교한다(제728 단계). 이 때 cost(8×8)는 도 6의 제514 단계에서 B1, B2, B3 및 B4의 각각의 8×8 블록에 대해 구한 코스트를 모두 더한 값이다.
cost(8×8)과 cost(8×16)중, cost(8×16)이 작으면 입력 매크로 블록의 움직임 추정에 이용되는 블록 모드를 16×16 블록 모드로 최종적으로 결정한다(제730 단계).
그러나, cost(8×8)이 작으면 입력 매크로 블록의 움직임 추정에 이용되는 블록 모드를 8×8 블록 모드로 최종적으로 결정한다(제720 단계).
그러나, 제722 단계에서의 판단결과, MV(B1)과 MV(B3)이 유사하지 않거나MV(B2)와 MV(B4)가 유사하지 않으면, MV(B1)과 MV(B2)이 유사하고 MV(B3)와 MV(B4)가 유사한지를 판단한다(제732 단계).
만약, MV(B1)과 MV(B2)가 유사하지 않거나 MV(B3)와 MV(B4)가 유사하지 않으면, 입력 매크로 블록의 움직임 추정에 이용되는 블록 모드를 8×8 블록 모드로 최종적으로 결정한다(제720 단계).
그러나, MV(B1)과 MV(B2)이 유사하고 MV(B3)와 MV(B4)가 유사하다면, 블록 모드 결정부(155)는 블록 분할부(151)로 제어신호를 출력하고, 블록 분할부(151)는 그 제어신호에 따라 입력 매크로 블록을 움직임 추정부(153)로 제공한다. 움직임 추정부(153)는 입력된 입력 매크로 블록에 대해 16×8 블록 모드로 움직임 추정을 수행한다(제734 단계).
SAD 함수값을 코스트로 이용하는 경우, 움직임 추정부(153)는 입력 매크로 블록의 움직임 추정 과정에서 cost(16×8)을 계산한다(제736 단계).
블록 모드 결정부(155)는 움직임 추정부(153)로부터 입력 매크로 블록에 대한 cost(8×8)과 cost(16×8)을 입력받아 양자의 크기를 비교한다(제738 단계). 이 때 cost(8×8)는 도 6의 제514 단계에서 B1, B2, B3 및 B4의 각각의 8×8 블록에 대해 구한 코스트를 모두 더한 값이다.
cost(8×8)과 cost(16×8)중, cost(16×8)이 작으면 입력 매크로 블록의 움직임 추정에 이용되는 블록 모드를 16×8 블록 모드로 최종적으로 결정한다(제740 단계).
그러나, cost(8×8)이 작으면 입력 매크로 블록의 움직임 추정에 이용되는블록 모드를 8×8 블록 모드로 최종적으로 결정한다(제720 단계).
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는, ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장 장치 등이 있으며, 또한 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
종래에 다양한 블록 모드를 이용하여 움직임 추정을 하는 경우, 각각의 블록 모드로 입력 매크로 블록에 대한 움직임 추정을 모두 수행하여 그 중 부호화 효율이 가장 좋은 블록 모드를 결정하여 픽쳐간 예측 부호화를 수행함으로써 계산량이 매우 많아 인코더에 큰 부담이 되었다.
그러나, 본 발명에 따른 고속 움직임 추정을 위한 블록 모드 결정 방법 및 그 장치는 최하위 블록 모드로 움직임 추정을 먼저 수행하여 각각의 최하위 블록에 대해 구한 모션 벡터의 유사여부에 따라, 보다 상위의 블록 모드로 움직임 추정할 필요가 있을지 여부를 판단함으로써 블록 모드의 결정을 위해 수행해야 할 움직임 추정의 회수를 대폭 감소시킬 수 있다. 즉 본 발명에 의하면 모든 블록 모드로 움직임 추정을 수행할 필요 없이 최소 한 가지, 최대 세 가지 블록 모드로 움직임 추정을 시도해 봄으로써 부호화 성능이 가장 좋은 블록 모드를 결정할 수 있다.
또한, 최초 수행된 최하위 블록 모드로 움직임 추정한 결과 각각의 최하위 블록에 대해 계산된 SAD함수값을 이후의 보다 상위의 블록 모드로 움직임 추정하는 경우에 이용함으로써 움직임 추정을 위해 필요한 SAD 함수값 계산량을 감소시킬 수 있다.
Claims (39)
- (a) 소정의 참조 픽쳐 및 움직임 추정을 위한 소정의 측정 함수를 이용하여, 입력 비디오 데이터 블록을 n×n 사이즈의 최하위 서브 블록 모드로 움직임 추정하여, 각각의 최하위 서브 블록에 대응하는 모션 벡터를 결정하는 단계;(b) 상기 입력 비디오 데이터 블록을 2n×2n 사이즈의 다수의 서브 블록으로 분할하는 단계; 및(c) 상기 서브 블록에 포함된 4개의 최하위 서브 블록들에 각각 대응하는 모션 벡터들의 유사 여부에 따라 각각의 상기 서브 블록의 블록 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 블록 모드 결정 방법.
- 제1 항에 있어서,상기 (c)단계는 상기 각 서브 블록이 좌측상단부터 시계방향의 순서대로 각각 b1, b2, b3 및 b4의 4개의 최하위 서브 블록들을 포함하고, 상기 최하위 서브블록 b1 내지 b4에 각각 대응하는 모션 벡터가 MV(b1) 내지 MV(b4)인 경우,상기 MV(b1)과 MV(b2)가 유사하고 상기 MV(b3)과 MV(b4)가 유사하면, 상기 각 서브 블록의 블록 모드를 2n×n 블록 모드로 결정하는 단계인 것을 특징으로 하는 블록 모드 결정 방법.
- 제2 항에 있어서,상기 (c)단계는 상기 MV(b1)과 MV(b3)가 유사하고, 상기 MV(b2)과 MV(b4)가 유사하면, 상기 각 서브 블록의 블록 모드를 n×2n 블록 모드로 결정하는 단계인 것을 특징으로 하는 블록 모드 결정 방법.
- 제2 항에 있어서,상기 (c)단계는 상기 MV(b1) 내지 MV(b4) 중, 적어도 세 개의 모션 벡터가 유사하면, 상기 각 서브 블록의 블록 모드를 2n×2n 블록 모드로 결정하는 단계인 것을 특징으로 하는 블록 모드 결정 방법.
- 제2 항에 있어서,상기 (c)단계는 상기 MV(b1)과 MV(b2)가 유사하지 않거나 상기 MV(b1)과 MV(b3)이 유사하지 않으면, 상기 각 서브 블록의 블록 모드를 n×n 블록 모드로 결정하는 단계인 것을 특징으로 하는 블록 모드 결정 방법.
- 제2 항에 있어서,(d) 상기 (c)단계에서 2n×n 블록 모드로 결정된 서브 블록을 2n×n 블록 모드로 움직임 추정하여, 2n×n 블록 모드로 움직임 추정한 결과에 따른 코스트를 계산하는 단계; 및(e) 상기 (a)단계에서 최하위 서브 블록 모드로 움직임 추정한 결과에 따른 코스트와 상기 (d)단계에서 2n×n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 서브 블록의 블록 모드로 최종적으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 블록 모드 결정 방법.
- 제3 항에 있어서,(f) 상기 (c)단계에서 n×2n 블록 모드로 결정된 서브 블록을 n×2n 블록 모드로 움직임 추정하여, n×2n 블록 모드로 움직임 추정한 결과에 따른 코스트를 계산하는 단계; 및(g) 상기 (a)단계에서 최하위 서브 블록 모드로 움직임 추정한 결과에 따른 코스트와 상기 (d)단계에서 n×2n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 서브 블록의 블록 모드로 최종적으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 블록 모드 결정 방법.
- 제4 항에 있어서,(h) 상기 (c)단계에서 2n×2n 블록 모드로 결정된 서브 블록을 2n×2n 블록모드로 움직임 추정하여, 2n×2n 블록 모드로 움직임 추정한 결과에 따른 코스트를 계산하는 단계; 및(i) 상기 (a)단계에서 최하위 서브 블록 모드로 움직임 추정한 결과에 따른 코스트와 상기 (d)단계에서 2n×2n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 서브 블록의 블록 모드로 최종적으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 블록 모드 결정 방법.
- 제8 항에 있어서,상기 입력 비디오 데이터 블록의 사이즈가 4n×4n으로서, 좌측상단부터 시계방향의 순서대로 각각 B1, B2, B3 및 B4의 4개의 상기 서브 블록들을 포함하고, 상기 (h)단계에서 상기 서브 블록 B1 내지 B4에 각각 대응하는 모션 벡터 MV(B1) 내지 MV(B4)가 결정된 경우,(j) 상기 모든 서브 블록들의 최종 블록 모드가 2n×2n 블록 모드로 결정되었는지 여부를 판단하는 단계; 및(k) 상기 모든 서브 블록들의 최종 블록 모드가 2n×2n 블록 모드인 것으로 판단되면, 상기 MV(B1)과 MV(B2)가 유사하고 상기 MV(B3)과 MV(B4)가 유사하면, 상기 입력 비디오 데이터 블록의 블록 모드를 4n×2n 블록 모드로 결정하는 단계인 것을 특징으로 하는 블록 모드 결정 방법.
- 제9 항에 있어서,상기 (k)단계는 상기 MV(B1)과 MV(B3)가 유사하고, 상기 MV(B2)과 MV(B4)가 유사하면, 상기 입력 비디오 데이터 블록의 블록 모드를 2n×4n 블록 모드로 결정하는 단계인 것을 특징으로 하는 블록 모드 결정 방법.
- 제9 항에 있어서,상기 (k)단계는 상기 MV(B1) 내지 MV(B4) 중, 적어도 세 개의 모션 벡터가 유사하면, 상기 입력 비디오 데이터 블록의 블록 모드를 4n×4n 블록 모드로 결정하는 단계인 것을 특징으로 하는 블록 모드 결정 방법.
- 제9 항에 있어서,상기 (k)단계는 상기 MV(B1)과 MV(B2)가 유사하지 않거나 상기 MV(B1)과 MV(B3)이 유사하지 않으면, 상기 입력 비디오 데이터 블록의 블록 모드를 2n×2n 블록 모드로 결정하는 단계인 것을 특징으로 하는 블록 모드 결정 방법.
- 제9 항에 있어서,(l) 상기 (k)단계에서 4n×2n 블록 모드로 결정된 상기 입력 비디오 데이터 블록을 4n×2n 블록 모드로 움직임 추정하여, 4n×2n 블록 모드로 움직임 추정한 결과에 따른 코스트를 계산하는 단계; 및(m) 상기 (h)단계에서 계산된 각 서브 블록에 대해 서브 블록 모드로 움직임 추정한 결과에 따른 코스트를 더한 코스트와, 상기 (l)단계에서 4n×2n 블록 모드로 상기 입력 비디오 데이터 블록을 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 입력 비디오 데이터 블록의 블록 모드로 최종적으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 블록 모드 결정 방법.
- 제10 항에 있어서,(n) 상기 (k)단계에서 2n×4n 블록 모드로 결정된 상기 입력 비디오 데이터 블록을 2n×4n 블록 모드로 움직임 추정하여, 2n×4n 블록 모드로 움직임 추정한 결과에 따른 코스트를 계산하는 단계; 및(o) 상기 (h)단계에서 계산된 각 서브 블록에 대해 서브 블록 모드로 움직임 추정한 결과에 따른 코스트를 더한 코스트와, 상기 (n)단계에서 2n×4n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 입력 비디오 데이터 블록의 블록 모드로 최종적으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 블록 모드 결정 방법.
- 제11 항에 있어서,(p) 상기 (k)단계에서 4n×4n 블록 모드로 결정된 상기 입력 비디오 데이터 블록을 4n×4n 블록 모드로 움직임 추정하여, 4n×4n 블록 모드로 움직임 추정한 결과에 따른 코스트를 계산하는 단계; 및(q) 상기 (h)단계에서 계산된 각 서브 블록에 대해 서브 블록 모드로 움직임 추정한 결과에 따른 코스트를 더한 코스트와, 상기 (p)단계에서 4n×4n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 입력 비디오 데이터 블록의 블록 모드로 최종적으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 블록 모드 결정 방법.
- 제6 항 내지 제8 항, 제13 항 내지 제15 항 중 어느 한 항에 있어서, 상기 (a)단계는,(a1) n×n 블록 모드의 최하위 서브 블록 모드로 상기 입력 비디오 데이터 블록의 움직임 추정한 결과, 각각의 최하위 블록별로 계산된 소정 함수값을 저장하는 단계를 더 포함하고,상기 (d), (f), (h), (l), (n) 또는 (p)단계는 상기 (a1)단계에서 저장된 각각의 최하위 블록별로 계산된 소정 함수값을 이용하여 움직임 추정을 수행하는 단계인 것을 특징으로 하는 블록 모드 결정 방법.
- 제1 항에 있어서,상기 (c)단계는 두 모션 벡터의 X축의 좌표값의 차이와 Y축의 좌표값의 차이가 각각 소정 한계값 내에 있으면 상기 두 모션 벡터가 서로 유사한 것으로 판단하는 단계인 것을 특징으로 하는 블록 모드 결정 방법.
- 제1 항에 있어서,상기 (a)단계는 SAD(Sum of Absolute Difference) 함수, SATD((Sum ofAbsolute Transformed Difference) 함수 또는 SSD(Sum of Squared Difference) 함수 중 하나의 함수를 이용하여 움직임 추정을 수행하는 단계인 것을 특징으로 하는 블록 모드 결정 방법.
- 제6 항 내지 제8 항, 제13 항 내지 제15 항 중 어느 한 항에 있어서,상기 코스트는 움직임 추정을 이용한 예측 부호화시의 부호화 효율을 나타내는 값으로서, SAD(Sum of Absolute Difference) 함수, SATD((Sum of Absolute Transformed Difference) 함수, SSD(Sum of Squared Difference) 함수, MAD(Mean of Absolute Difference) 함수 또는 라그랑제 함수 중 하나의 함수를 이용하여 계산된 값인 것을 특징으로 하는 블록 모드 결정 방법.
- 입력된 비디오 데이터 블록을 n×n 사이즈의 다수의 최하위 서브 블록으로 분할하는 블록 분할부;소정의 참조 픽쳐를 입력받고, 상기 블록 분할부로부터 상기 최하위 서브 블록들을 순차적으로 입력받아, 상기 참조 픽쳐 및 움직임 추정을 위한 소정의 측정 함수를 이용하여, 상기 각각의 최하위 서브 블록에 대한 움직임 추정을 수행하여, 각각의 최하위 서브 블록에 대응하는 측정 함수의 값 및 모션 벡터를 결정하는 움직임 추정부; 및상기 움직임 추정부로부터 하나의 2n×2n 사이즈의 서브 블록을 포함하는 4개의 최하위 서브 블록에 각각 대응하는 모션 벡터를 입력받아, 상기 모션 벡터들의 유사 여부에 따라 상기 서브 블록의 블록 모드를 결정하는 블록 모드 결정부를 포함하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제20 항에 있어서,상기 서브 블록이 좌측상단부터 시계방향의 순서대로 각각 b1, b2, b3 및 b4의 4개의 최하위 서브 블록들을 포함하고, 상기 최하위 서브 블록 b1 내지 b4에 각각 대응하는 모션 벡터가 MV(b1) 내지 MV(b4)인 경우,상기 블록 모드 결정부는 상기 움직임 추정부로부터 상기 모션 벡터 MV(b1) 내지 MV(b4)를 입력받아, 상기 MV(b1)과 MV(b2)가 유사하고 상기 MV(b3)과 MV(b4)가 유사하면, 상기 서브 블록의 블록 모드를 2n×n 블록 모드로 결정하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제21 항에 있어서,상기 블록 모드 결정부는 상기 MV(b1)과 MV(b3)가 유사하고, 상기 MV(b2)과 MV(b4)가 유사하면, 상기 서브 블록의 블록 모드를 n×2n 블록 모드로 결정하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제21 항에 있어서,상기 블록 모드 결정부는 상기 MV(b1) 내지 MV(b4) 중, 적어도 세 개의 모션 벡터가 유사하면, 상기 서브 블록의 블록 모드를 2n×2n 블록 모드로 결정하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제21 항에 있어서,상기 블록 모드 결정부는 상기 MV(b1)과 MV(b2)가 유사하지 않거나 상기 MV(b1)과 MV(b3)이 유사하지 않으면, 상기 서브 블록의 블록 모드를 n×n 블록 모드로 결정하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제21 항에 있어서,상기 블록 모드 결정부는 최하위 서브 블록 모드로 움직임 추정한 결과에 따른 코스트와 2n×n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 서브 블록의 블록 모드로 최종적으로 결정하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제22 항에 있어서,상기 블록 모드 결정부는 최하위 서브 블록 모드로 움직임 추정한 결과에 따른 코스트와 n×2n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 서브 블록의 블록 모드로 최종적으로 결정하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제23 항에 있어서,상기 블록 모드 결정부는 최하위 서브 블록 모드로 움직임 추정한 결과에 따른 코스트와 2n×2n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 서브 블록의 블록 모드로 최종적으로 결정하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제27 항에 있어서,상기 입력 비디오 데이터 블록의 사이즈가 4n×4n으로서, 좌측상단부터 시계방향의 순서대로 각각 B1, B2, B3 및 B4의 4개의 서브 블록들을 포함하는 경우에,상기 블록 모드 결정부는 상기 입력 비디오 데이터 블록을 구성하는 모든 서브 블록들의 최종 블록 모드가 2n×2n 블록 모드인 것으로 판단되면, 상기 움직임 추정부로부터 상기 서브 블록 B1 내지 B4에 각각 대응하는 모션 벡터 MV(B1) 내지 MV(B4)를 입력받아, 상기 MV(B1)과 MV(B2)가 유사하고 상기 MV(B3)과 MV(B4)가 유사하면, 상기 입력 비디오 데이터 블록의 블록 모드를 4n×2n 블록 모드로 결정하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제28 항에 있어서,상기 블록 모드 결정부는 상기 MV(B1)과 MV(B3)가 유사하고, 상기 MV(B2)과 MV(B4)가 유사하면, 상기 입력 비디오 데이터 블록의 블록 모드를 2n×4n 블록 모드로 결정하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제28 항에 있어서,상기 블록 모드 결정부는 상기 MV(B1) 내지 MV(B4) 중, 적어도 세 개의 모션 벡터가 유사하면, 상기 입력 비디오 데이터 블록의 블록 모드를 4n×4n 블록 모드로 결정하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제28 항에 있어서,상기 블록 모드 결정부는 상기 MV(B1)과 MV(B2)가 유사하지 않거나 상기 MV(B1)과 MV(B3)이 유사하지 않으면, 상기 입력 비디오 데이터 블록의 블록 모드를 2n×2n 블록 모드로 결정하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제28 항에 있어서,상기 블록 모드 결정부는 서브 블록 모드로 움직임 추정한 결과에 따른 각 서브 블록의 코스트를 더한 코스트와, 상기 4n×2n 블록 모드로 상기 입력 비디오 데이터 블록을 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 입력 비디오 데이터 블록의 블록 모드로 최종적으로 결정하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제29 항에 있어서,상기 블록 모드 결정부는 서브 블록 모드로 움직임 추정한 결과에 따른 각 서브 블록의 코스트를 더한 코스트와, 2n×4n 블록 모드로 움직임 추정한 결과에따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 입력 비디오 데이터 블록의 블록 모드로 최종적으로 결정하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제30 항에 있어서,상기 블록 모드 결정부는 서브 블록 모드로 움직임 추정한 결과에 따른 각 서브 블록의 코스트를 더한 코스트와, 4n×4n 블록 모드로 움직임 추정한 결과에 따른 코스트를 비교하여 코스트가 보다 적은 블록 모드를 상기 입력 비디오 데이터 블록의 블록 모드로 최종적으로 결정하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제25 항 내지 제27 항, 제32 항 내지 제34 항 중 어느 한 항에 있어서,상기 움직임 추정부는 n×n 블록 모드의 최하위 서브 블록 모드로 상기 입력 비디오 데이터 블록의 움직임 추정한 결과, 각각의 최하위 블록별로 계산된 소정 함수값을 저장하고, n×n 블록 모드 보다 상위의 블록 모드로 움직임 추정을 수행하는 경우, 미리 저장된 각각의 최하위 블록별로 계산된 소정 함수값을 이용하여 움직임 추정을 수행하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제20 항에 있어서,상기 블록 모드 결정부는 두 모션 벡터의 X축의 좌표값의 차이와 Y축의 좌표값의 차이가 각각 소정 한계값 내에 있으면 상기 두 모션 벡터가 서로 유사한 것으로 판단하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제20 항에 있어서,상기 움직임 추정부는 SAD(Sum of Absolute Difference) 함수, SATD((Sum of Absolute Transformed Difference) 함수 또는 SSD(Sum of Squared Difference) 함수 중 하나의 함수를 이용하여 움직임 추정을 수행하는 것을 특징으로 하는 블록 모드 결정 장치.
- 제25 항 내지 제27 항, 제32 항 내지 제34 항 중 어느 한 항에 있어서,상기 코스트는 움직임 추정을 이용한 예측 부호화시의 부호화 효율을 나타내는 값으로서, SAD(Sum of Absolute Difference) 함수, SATD((Sum of Absolute Transformed Difference) 함수, SSD(Sum of Squared Difference) 함수, MAD(Mean of Absolute Difference) 함수 또는 라그랑제 함수 중 하나의 함수를 이용하여 계산된 값인 것을 특징으로 하는 블록 모드 결정 장치.
- 제1 항 내지 제15 항에 기재된 방법을 실현하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020030027541A KR20040093605A (ko) | 2003-04-30 | 2003-04-30 | 고속 움직임 추정을 위한 블록 모드 결정 방법 및 그 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020030027541A KR20040093605A (ko) | 2003-04-30 | 2003-04-30 | 고속 움직임 추정을 위한 블록 모드 결정 방법 및 그 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20040093605A true KR20040093605A (ko) | 2004-11-06 |
Family
ID=37373561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020030027541A KR20040093605A (ko) | 2003-04-30 | 2003-04-30 | 고속 움직임 추정을 위한 블록 모드 결정 방법 및 그 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20040093605A (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100742772B1 (ko) * | 2005-04-08 | 2007-07-26 | 고려대학교 산학협력단 | 가변 블록 움직임 추정장치 및 그 방법 |
KR100924487B1 (ko) * | 2007-12-17 | 2009-11-03 | 한국전자통신연구원 | 인터 예측에서의 블록 크기 분할 방법 및 장치 |
KR101121612B1 (ko) * | 2004-06-27 | 2012-02-28 | 애플 인크. | 비디오 데이터 스트림의 인코딩 및 디코딩 시에 스토리지의효율적 사용 |
US8265155B2 (en) | 2009-01-05 | 2012-09-11 | Electronics And Telecommunications Research Institute | Method of block partition for H.264 inter prediction |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100226722B1 (ko) * | 1997-07-30 | 1999-10-15 | 구자홍 | 동영상 움직임 벡터 추정 방법 |
KR20010033798A (ko) * | 1997-12-31 | 2001-04-25 | 윌리암 제이. 버크 | 가변 블록 크기를 이용한 계층적 움직임 추정 장치 및방법 |
-
2003
- 2003-04-30 KR KR1020030027541A patent/KR20040093605A/ko not_active Application Discontinuation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100226722B1 (ko) * | 1997-07-30 | 1999-10-15 | 구자홍 | 동영상 움직임 벡터 추정 방법 |
KR20010033798A (ko) * | 1997-12-31 | 2001-04-25 | 윌리암 제이. 버크 | 가변 블록 크기를 이용한 계층적 움직임 추정 장치 및방법 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101121612B1 (ko) * | 2004-06-27 | 2012-02-28 | 애플 인크. | 비디오 데이터 스트림의 인코딩 및 디코딩 시에 스토리지의효율적 사용 |
KR100742772B1 (ko) * | 2005-04-08 | 2007-07-26 | 고려대학교 산학협력단 | 가변 블록 움직임 추정장치 및 그 방법 |
KR100924487B1 (ko) * | 2007-12-17 | 2009-11-03 | 한국전자통신연구원 | 인터 예측에서의 블록 크기 분할 방법 및 장치 |
US8265155B2 (en) | 2009-01-05 | 2012-09-11 | Electronics And Telecommunications Research Institute | Method of block partition for H.264 inter prediction |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100510137B1 (ko) | 고속 움직임 추정을 위한 참조 픽쳐 및 블록 모드 결정방법, 그 장치, 블록 모드 결정 방법 및 그 장치 | |
JP5422168B2 (ja) | 動画像符号化方法および動画像復号化方法 | |
RU2559738C2 (ru) | Способ и устройство для кодирования/декодирования вектора движения | |
JP4898467B2 (ja) | 可変ブロックサイズ動き予測のための符号化モードの決定方法及び装置 | |
CN103118253B (zh) | 运动图像编码装置以及运动图像译码装置 | |
KR100739714B1 (ko) | 인트라 예측 모드 결정 방법 및 장치 | |
JP4495580B2 (ja) | 面内予測装置および面内予測方法 | |
KR100970726B1 (ko) | 계층적 움직임 추정 방법 | |
WO2017122604A1 (ja) | 動画像符号化装置、動画像符号化方法、及び、動画像符号化プログラムが記憶された記憶媒体 | |
JP2006165840A (ja) | 動き補償画像符号化装置及び符号化方法 | |
KR20090087767A (ko) | 영상의 인트라 예측 부호화 방법 | |
JP2008227670A (ja) | 画像符号化装置 | |
JP4074868B2 (ja) | 画像符号化制御方法及びその装置 | |
JP2011029863A (ja) | 復号化処理方法 | |
US20070133689A1 (en) | Low-cost motion estimation apparatus and method thereof | |
TWI511531B (zh) | 影像編碼裝置、影像編碼方法及影像編碼程式 | |
KR20050041293A (ko) | 움직임 예측 장치 및 방법 | |
KR100982514B1 (ko) | 영상의 인트라 예측 부호화 방법 및 그 장치 | |
JP5180887B2 (ja) | 符号化装置およびその方法 | |
JP4452733B2 (ja) | 動画像符号化における動き評価装置,方法およびそのプログラム並びにその記録媒体 | |
KR20040093605A (ko) | 고속 움직임 추정을 위한 블록 모드 결정 방법 및 그 장치 | |
US6141449A (en) | Coding mode determination system | |
CN115834882A (zh) | 一种帧内预测方法、装置、电子设备及存储介质 | |
JPH10341440A (ja) | 動画像符号化方法および装置 | |
JP2000261809A (ja) | 画像特徴に応じた画像符号化装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |