KR20120023234A - 동영상 부호화를 위한 움직임 추정 방법 및 장치 - Google Patents

동영상 부호화를 위한 움직임 추정 방법 및 장치 Download PDF

Info

Publication number
KR20120023234A
KR20120023234A KR1020100085386A KR20100085386A KR20120023234A KR 20120023234 A KR20120023234 A KR 20120023234A KR 1020100085386 A KR1020100085386 A KR 1020100085386A KR 20100085386 A KR20100085386 A KR 20100085386A KR 20120023234 A KR20120023234 A KR 20120023234A
Authority
KR
South Korea
Prior art keywords
block
interpolation
motion estimation
pixel
pixels
Prior art date
Application number
KR1020100085386A
Other languages
English (en)
Other versions
KR101184571B1 (ko
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 아주대학교산학협력단
Priority to KR1020100085386A priority Critical patent/KR101184571B1/ko
Publication of KR20120023234A publication Critical patent/KR20120023234A/ko
Application granted granted Critical
Publication of KR101184571B1 publication Critical patent/KR101184571B1/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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/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

Landscapes

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

Abstract

본 발명에 따른 움직임 추정 방법은, 정화소 움직임 추정을 통하여 매크로 블록을 복수 개의 서브 블록들로 분할하는 단계; 및 상기 복수 개의 서브 블록에 대하여 부화소 보간을 수행하되, 상기 분할된 복수 개의 서브 블록을 하나의 매크로 블록으로 결합한 다음 부화소 보간을 수행하는 단계를 포함하는 것을 특징으로 한다. 본 발명에 의하면, 부화소 움직임 추정에서 성능의 열화를 방지하면서도 연산량을 감소시킬 수 있는 효과가 있다.

Description

동영상 부호화를 위한 움직임 추정 방법 및 장치{Motion estimation method and apparatus for video encoding}
본 발명은 동영상 압축에 관한 것으로 보다 상세하게는 H.264/AVC비디오 코덱의 움직임 추정 연산에서 부화소 움직임 추정에 관한 것이다.
동영상 압축 표준들은 동영상 데이터에 존재하는 중복성을 제거하여 데이터의 압축률을 향상시킨다. 동일 프레임 내에서 화소들 간의 통계적 발생 확률에 의한 통계적 중복성과 공간적 중복성, 그리고 프레임 사이에 존재하는 시간적 중복성은 동영상 데이터의 대표적인 특징들이다. 이 중에서 동영상의 압축률을 가장 효과적으로 높일 수 있는 시간적 중복성 제거는 이전 영상과 현재 영상의 유사성을 이용하여 움직임 추정 및 보상을 통해 이루어진다.
H.264/AVC의 움직임 추정 연산은 이전의 비디오 압축 표준보다 높은 압축률을 얻기 위해 다중 프레임 참조, 가변 블록 움직임 추정 및 보상 그리고 높은 움직임 벡터 정확도 등을 다양한 압축 방법을 지원한다. 그 결과 움직임 추정 연산이 전체 부호화기에서 차지하는 연산 비율이 60%가 넘어 하드웨어 및 실시간 구현에 가장 큰 걸림돌이 되고 있다.
움직임 추정 연산은 일반적으로 두 단계로 이루어진다. 먼저 정화소 단위에서 움직임 추정을 수행하여 블록 매칭 오차가 최소가 되는 지점을 찾는다. 그 후 최소 블록 매칭 오차 지점을 중심으로 부화소 움직임 추정을 수행하여 최소 블록 매칭 오차 지점을 찾는다.
부화소 움직임 추정은 MPEG-1, 2 와 H.263에서는 1/2 화소 지점까지 MPEG-4와 H.264/AVC에서는 1/4 화소 지점까지 탐색을 수행한다. 1/4 화소까지 부화소 움직임 추정을 수행하면 정화소 움직임 추정만을 수행하였을 때보다 영상의 화질이 PSNR 측면에서 1?3dB 가량 향상된다. 그렇지만 부화소 움직임 추정은 부화소 보간 및 탐색 연산으로 인해 연산량이 크게 증가하게 된다. 일반적으로 부화소 움직임 추정 연산은 1/2 화소와 1/4 화소 보간으로 인해 정화소 움직임 추정 연산보다 수십 배에 달하는 많은 연산량을 필요로 한다.
본 발명이 이루고자 하는 기술적 과제는 부화소 움직임 추정에서 성능의 열화를 방지하면서도 연산량을 감소시킬 수 있는 부화소 움직임 추정 방법 및 장치를 제공하는 데 있다.
상기 기술적 과제를 해결하기 위하여 본 발명의 일 태양에 따른 움직임 추정 방법은, (a) 정화소 움직임 추정을 통하여 매크로 블록을 복수 개의 서브 블록들로 분할하는 단계; 및 (b) 상기 복수 개의 서브 블록에 대하여 부화소 보간을 수행하되, 상기 분할된 복수 개의 서브 블록을 하나의 매크로 블록으로 결합한 다음 부화소 보간을 수행하는 단계를 포함하는 것을 특징으로 한다.
상기 매크로 블록은 16×16 블록일 수 있다.
또한, 상기 서브 블록은 16×8, 8×16, 8×8, 8×4, 4×8, 4×4 블록 중 적어도 하나일 수 있다.
또한, 상기 복수 개의 서브 블록을 하나의 매크로 블록으로 결합함에 있어서, 각 서브 블록의 매크로 블록 외곽 측의 화소를 더욱 포함하여 결합할 수 있다.
또한, 상기 부화소 보간에 있어서, 1/2 화소 보간은 6-tap 필터 보간을 이용할 수 있다.
또한, 상기 분할된 복수 개의 서브 블록을 하나의 매크로 블록으로 결합함에 있어서, 상기 각 서브 블록의 매크로 블록 외곽 측의 3 화소를 더욱 결합함으로써 22×22 블록을 구성할 수 있다.
상기 기술적 과제를 해결하기 위하여 본 발명의 다른 태양에 따른 움직임 추정 방법은, (a) 정화소 움직임 추정을 통하여 16×16 매크로 블록을 복수 개의 서브 블록들로 분할하는 단계; (b) 상기 분할된 복수 개의 서브 블록을 하나의 매크로 블록으로 결합하되, 각 서브 블록의 매크로 블록 외곽 측의 화소를 더욱 포함하여 22×22 블록으로 결합하는 단계; 및 (c) 상기 22×22 블록의 화소들을 이용하여 각 서브 블록에 대하여 부화소 보간을 수행하는 단계를 포함하는 것을 특징으로 한다.
상기 (c) 단계는, 상기 22×22 블록의 화소들을 이용하여 각 서브 블록에 대하여 1/2 화소 보간을 수행하는 단계; 및 정화소와 상기 1/2 화소 보간의 결과 생성된 1/2 화소를 이용하여 1/4 화소 보간을 수행하는 단계를 포함할 수 있다.
또한, 상기 서브 블록은 16×8, 8×16, 8×8, 8×4, 4×8, 4×4 블록 중 적어도 하나일 수 있다.
또한, 상기 1/2 화소 보간은 6-tap 필터 보간을 이용할 수 있다.
상기 기술적 과제를 해결하기 위하여 본 발명의 일 태양에 따른 움직임 추정장치는, 정화소 움직임 추정을 통하여 매크로 블록을 복수 개의 서브 블록들로 분할하는 정화소 움직임 추정부; 상기 분할된 복수 개의 서브 블록을 하나의 매크로 블록으로 결합하는 화소 재구성부; 및 상기 복수 개의 서브 블록에 대하여 부화소 보간을 수행하는 부화소 움직임 추정부를 포함하는 것을 특징으로 한다.
상기 매크로 블록은 16×16 블록일 수 있다.
또한, 상기 서브 블록은 16×8, 8×16, 8×8, 8×4, 4×8, 4×4 블록 중 적어도 하나일 수 있다.
또한, 상기 복수 개의 서브 블록을 하나의 매크로 블록으로 결합함에 있어서, 각 서브 블록의 매크로 블록 외곽 측의 화소를 더욱 포함하여 결합할 수 있다.
또한, 상기 부화소 보간에 있어서, 1/2 화소 보간은 6-tap 필터 보간을 이용할 수 있다.
또한, 상기 화소 재구성부는 각 서브 블록의 매크로 블록 외곽 측의 3 화소를 더욱 결합함으로써 22×22 블록을 구성할 수 있다.
상기 기술적 과제를 해결하기 위하여 본 발명의 다른 태양에 따른 움직임 추정장치는, 정화소 움직임 추정을 통하여 16×16 매크로 블록을 복수 개의 서브 블록들로 분할하는 정화소 움직임 추정부; 상기 분할된 복수 개의 서브 블록을 하나의 매크로 블록으로 결합하되, 각 서브 블록의 매크로 블록 외곽 측의 화소를 더욱 포함하여 22×22 블록으로 구성하는 화소 재구성부; 및 상기 22×22 블록의 화소들을 이용하여 각 서브 블록에 대하여 부화소 보간을 수행하는 부화소 움직임 추정부를 포함하는 것을 특징으로 한다.
상기 부화소 움직임 추정부는, 상기 22×22 블록의 화소들을 이용하여 각 서브 블록에 대하여 1/2 화소 보간을 수행하고, 정화소와 상기 1/2 화소 보간의 결과 생성된 1/2 화소를 이용하여 1/4 화소 보간을 수행할 수 있다.
상기 서브 블록은 16×8, 8×16, 8×8, 8×4, 4×8, 4×4 블록 중 적어도 하나일 수 있다.
상기 1/2 화소 보간은 6-tap 필터 보간을 이용할 수 있다.
상기된 본 발명에 의하면, 부화소 움직임 추정에서 성능의 열화를 방지하면서도 연산량을 감소시킬 수 있는 효과가 있다.
도 1은 H.264/AVC에 따른 동영상 부호화 장치의 구성을 간략하게 나타낸 예시도이다.
도 2는 H.264/AVC의 매크로 블록 및 서브 매크로 블록의 분할에 따른 예측 모드를 나타내는 도면이다.
도 3은 부화소 움직임 추정의 1/2 화소의 보간을 나타내는 도면이다.
도 4는 1/4 화소의 보간을 나타내는 도면이다.
도 5는 분할된 4개의 4x4 서브 블록에 대하여 부화소 보간을 수행하기 위하여 필요한 화소를 표시한 도면이다.
도 6은 본 발명에서 이러한 중복을 피하기 위하여 서브 블록을 결합하는 방법을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 움직임 추정부(120)의 블록도이다.
도 8은 정화소 움직임 추정에 의하여 하나의 16x16 매크로 블록이 여러 서브 블록들로 분할된 모습을 나타낸다.
도 9는 서브 블록의 화소 값과 해당 서브 블록의 매크로 블록 외곽 측의 화소 값을 가져오는 모습을 나타낸다.
도 10은 도 8과 같이 분할된 서브 블록을 하나의 매크로 블록으로 결합한 모습을 나타낸다.
도 11은 본 발명의 일 실시예에 따른 움직임 추정 방법의 흐름도이다.
도 12는 본 발명이 일 실시예에 따른 부화소 움직임 추정부(123)의 상세 구성을 나타낸다.
이하에서는 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 이하 설명 및 첨부된 도면들에서 실질적으로 동일한 구성요소들은 각각 동일한 부호들로 나타냄으로써 중복 설명을 생략하기로 한다. 또한 본 발명을 설명함에 있어 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그에 대한 상세한 설명은 생략하기로 한다.
도 1은 H.264/AVC에 따른 동영상 부호화 장치의 구성을 간략하게 나타낸 예시도이다.
대부분의 상용 비디오 압축 방식 및 그 장치(H.263, MPEG-4, H.264/AVC 등)에서는, 영상의 공간적 중복성과 시간적 중복성을 제거하기 위해 부호화 블록으로서 매크로블록 또는 서브블록 등 다양한 크기의 블록을 정의하고, 현재 부호화하고자 하는 현재 블록을 기반으로 예측(Prediction Process)을 수행하고 예측 블록(Prediction Block)을 구한다. 이와 같이 구한 예측 블록을 현재 블록에서 감산하여 생성되는 잔차 블록을 변환, 양자화 및 엔트로피 부호화하여 영상을 압축한다.
H.263, MPEG-4, H.264/AVC 등의 압축 방식에 따라 다르지만, 예측의 방법으로는 주로 인트라 예측(Intra Prediction)과 인터 예측(Inter Prediction)의 2 가지가 존재한다. 인터 예측의 경우 시간적 중복성을 이용한 것으로 부호화된 영상을 다시 복호화하여 만들어진 참조 프레임(Reference Frame)을 참고함으로써 움직임 보상/추정(Motion Compensation/Estimation)을 수행한다. 이때, 표준안에 따라 다양한 형태의 블록으로 움직임 보상을 수행한다.
도 1에 예시적으로 나타낸 H.264/AVC의 압축 방식에 따른 영상 부호화 장치(100)는 인트라 예측 수행부(110), 움직임 추정부(120), 움직임 보상부(130), 감산기(140), 변환 및 양자화부(150), 엔트로피 코딩부(160), 역변환 및 역양자화부(170), 가산기(180) 및 디블로킹 필터(190)를 포함하여 이루어진다.
인트라 예측 수행부(110)는 현재 부호화하고자 하는 현재 블록(Current Block)의 화소들을 주변 블록의 인접 화소들을 이용하여 예측함으로써 예측 블록(Predicted Block)을 생성한다.
움직임 추정부(120)는 현재 블록을 포함하는 현재 프레임(Current Frame)이 참조하는 참조 프레임(Refernece Frame)을 이용하여 현재 블록의 움직임을 추정하여 움직임 벡터를 결정하고, 움직임 보상부(130)는 움직임 추정기(120)에 의해 결정된 움직임 벡터를 이용하여 현재 블록의 움직임을 보상함으로써 현재 블록을 예측하여 예측 블록을 생성한다.
감산기(140)는 입력 영상의 현재 블록과 화면내 예측기(110) 또는 움직임 보상기(122)로부터 출력되는 예측 블록을 감산하여 잔차 신호를 포함하는 잔차 블록을 생성한다.
변환 및 양자화부(150)는 잔차 블록의 잔차 신호들을 이산 코사인 변환(Discrete Cosine Transform) 또는 하다마드 변환(Hadamard Transform) 등 다양한 주파수 변환 기법을 이용하여 주파수 영역으로 변환하여 주파수 계수들을 생성하고, 주파수 계수들을 양자화 가중치 매트릭스(Quantization Weighted Matrix) 등의 다양한 양자화 기법을 이용하여 양자화하여 양자화된 주파수 계수를 가지는 잔차 블록을 생성한다.
엔트로피 코딩부(160)는 양자화된 주파수 계수를 가지는 잔차 블록을 엔트로피 부호화(Entropy Coding) 부호화 기법을 이용하여 부호화하여 비트스트림을 생성한다.
한편, 인트라 예측 수행부(110)와 움직임 보상부(130)는 미리 부호화되고 복호화되어 복원되는 주변 블록 또는 참조프레임의 참조 블록을 이용하여 현재 블록을 예측하는데, 이를 위해, 역변환 및 역양자화부(170)는 변환 및 양자화부(150)에 의해 양자화된 양자화 주파수 계수들을 역 양자화하여 주파수 계수를 가지는 잔차 블록을 복원하고, 주파수 계수를 가지는 잔차 블록을 역 주파수 변환하여 잔차 신호를 가지는 잔차 블록을 복원한다.
가산기(180)는 복원된 잔차 블록의 잔차 신호와 인트라 예측 수행부(110) 또는 움직임 보상부(130)에 의해 예측된 예측 블록을 가산하여 현재 블록을 복원하고, 복원된 현재 블록은 디블로킹 필터(190)에서 디블로킹 필터링되어 블록 왜곡이 보정되어 움직임 보상부(130)로 출력된다. 이와 같이 복원된 현재 블록은 다음 블록 또는 그 이후에 부호화되는 블록을 예측하는데 활용된다.
본 발명에서는, 움직임 추정부(120)에서 이루어지는 부화소 움직임 추정 연산이 많은 연산량을 필요로 하는 점을 개선하기 위하여, 정화소 움직임 추정을 통하여 매크로 블록이 복수 개의 서브 블록들로 분할되면, 부화소 보간을 수행함에 있어서, 분할된 복수 개의 서브 블록을 하나의 매크로 블록으로 결합한 다음 복수 개의 서브 블록에 대하여 부화소 보간을 수행한다.
도 2는 H.264/AVC의 매크로 블록 및 서브 매크로 블록의 분할에 따른 예측 모드를 나타내는 도면이다.
도 2를 참조하면, 인터 예측을 수행하는 경우, 가능한 블록의 모양 및 크기를 나타내는 예측 모드가 도시되어 있다. 가능한 예측 모드는 매크로 블록(macro block: 이하 MB라 약칭함)에 대하여 16x16 예측 모드, 8x16 예측 모드, 16x8 예측 모드, 8x8 예측 모드가 존재한다. 또한, 8x8의 서브 매크로 블록에 대하여 4x8 예측 모드, 8x4 예측 모드, 4x4 예측 모드가 존재한다.
인터 예측의 경우에는 이상의 7가지 예측 모드 단위로 예측을 수행할 수 있다. 예를 들어, 8x8 예측 모드의 경우, 매크로 블록 내의 4개의 8x8 블록이 각각의 움직임 벡터(motion vector)를 가질 수 있다. 또한, 각 8x8 블록들은 그 내부에서 다시 작은 블록 단위로 나뉘어 예측을 할 수 있다. 이에 따라 주어진 픽처의 특성에 따라 효율적인 예측 모드를 선택함으로써 압축 효율을 높일 수 있다.
인터 예측의 경우에는, 정화소 움직임 추정을 수행한 후에, 가장 코스트가 작은 픽셀을 중심으로 부화소 움직임 추정을 수행한다. 이와 같이 정화소 움직임 추정과 부화소 움직임 추정을 수행한 후에 각각의 코스트(cost) 값들을 비교하여 최소의 코스트를 갖는 예측 모드로 최종 예측 모드를 정한다.
부화소 움직임 추정은 정화소 움직임 추정보다 더 좋은 영상의 화질을 개선하기 위하여 정화소를 이용하여 정화소와 정화소 사이에 부화소를 보간하여 부화소 탐색을 수행함으로써 정화소 움짐임 추정보다 원본 영상에 가깝게 영상을 복원한다.
도 3은 부화소 움직임 추정의 1/2 화소의 보간을 나타내는 도면이다. 정화소를 이용하여 1/2 화소를 보간하는 방법은 아래 수학식과 같이 6-tap 필터 보간을 이용한다.
[수학식 1]
Original integer pixels G, H, M, N
Interpolated pixels (½ pel) b, h, j, m, s
b = (E - 5F + 20G + 20H - 5I + J) / 32
h = (A - 5C + 20G + 20M - 5R + T) / 32
j = (aa - 5bb + 20b + 20s - 5gg + hh) / 32
1/2 화소 보간을 수행한 후에, 다시 1/4 화소 보간을 수행하게 된다. 도 4는 1/4 화소의 보간을 나타내는 도면이다. 1/4 화소 보간 시에는 도시된 바와 같이 수평, 수직, 또는 대각 방향의 두 개의 1/2 화소 또는 정수 화소를 가지고 선형 보간한다.
도 3을 참조하면, 1/2 화소의 보간 시에 상, 하 각각의 3 화소값 또는 좌, 우 각각의 3 화소값이 필요하므로 이 값들을 메모리로부터 읽어와 보간을 수행한다.
도 5는 분할된 4개의 4x4 서브 블록에 대하여 부화소 보간을 수행하기 위하여 필요한 화소를 표시한 도면이다. 도 5의 (a)를 참조하면, 각각의 4x4 서브 블록마다 상, 하, 좌, 우의 3 화소값이 필요하므로, 각 4x4 서브 블록마다 10x10 블록만큼의 화소가 필요하다. 따라서, 10x10블록 4개, 즉 총 400개의 화소 값이 필요하게 된다. 그러나 이 화소 값들 중 일부는 중복되어 사용된다. 도 5의 (b)는 중복되어 사용되는 화소들을 나타낸다. 도 5의 (b)에 회색으로 표시된 화소들은 적게는 두 번, 많게는 네 번까지 중복적으로 사용된다. 이러한 중복으로 인하여 부화소 보간은 많은 연산을 필요로 하게 된다.
도 6은 본 발명에서 이러한 중복을 피하기 위하여 서브 블록을 결합하는 방법을 설명하기 위한 도면이다.
도 6의 (a)는 매크로 블록이 분할된 4개의 서브 블록을 나타내고, 도 6의 (b)는 본 발명에 따라 4개의 서브 블록을 하나의 매크로 블록으로 결합한 것을 나타낸다. 원래는 도 6의 (a)에서 빗금친 부분에 해당하는 화소들이 보간에 사용되나, 본 발명에 의하면, 분할된 4개의 서브 블록을 도 6 (b)에 도시된 바와 같이 하나로 결합하여 부화소 보간을 수행한다. 따라서 도 6의 (a)에서 빗금친 부분에 해당하는 화소들은 부화소 보간에 사용되지 않는다. 즉, 본 발명에 의하면 화소의 보간 전에 보간 시 중복하여 사용되는 화소를 미리 제거하는 것이다. 따라서 매크로 블록을 보간하는데 필요한 화소의 수가 일반적인 부화소 움직임 추정의 부화소 보간보다 적게 들어간다. 즉, 화소 보간을 위한 메모리 액세스가 줄어들고 보간의 연산량 감소의 효과가 나타난다.
예컨대, 도 5에서 4x4 서브 블록 4개에 대하여 부화소 보간을 수행하는 경우 일반적인 부화소 움직임 추정에 의하면, 400개의 화소가 요구되나, 본 발명에 따라 서브 블록을 결합하여 화소 중복을 제거하면, 부화소 보간을 수행하는 경우 14x14 블록을 이용하여 보간을 수행할 수 있다. 이때 화소 보간에 필요한 화소 수는 196개가 된다. 따라서 보간에 필요한 화소 수가 51%로 줄어들게 되며, 그만큼의 메모리 액세스 감소 효과를 볼 수 있다. 영상에서, 분할된 각 서브 블록은 인접한 다른 서브 블록과 화소 값이 일반적으로 유사성을 가지고 있으므로, 본 발명에서와 같이 하나의 매크로 블록으로 결합한 다음 부화소 보간을 수행하더라도 부화소 움직임 추정의 성능을 크게 저하시키지 않는다.
도 7은 본 발명의 일 실시예에 따른 움직임 추정부(120)의 블록도이다. 움직임 추정부(120)는 정화소 움직임 추정부(121), 화소 재구성부(122), 부화소 움직임 추정부(123)를 포함하여 이루어진다.
정화소 움직임 추정부(121)는 입력되는 매크로 블록에 대하여 정화소 움직임 추정을 수행하여 매크로 블록을 복수 개의 서브 블록들로 분할하고 각 서브 블록의 예측 모드와 움직임 벡터를 구한다. 여기서, 매크로 블록은 16×16 블록이고, 예측 모드로는 16x16 예측 모드, 8x16 예측 모드, 16x8 예측 모드, 8x8 예측 모드가 존재할 수 있다.
화소 재구성부(122)는 분할된 복수 개의 서브 블록을 하나의 매크로 블록으로 결합한다. 매크로 블록이 16×16 블록인 경우, 각 서브 블록의 매크로 블록 외곽 측의 3 화소를 더욱 포함하여 22×22 블록으로 구성할 수 있다.
이하에서는 도 8 내지 도 10을 참조하여, 화소 재구성부(122)가 서브 블록을 결합하는 예를 설명한다.
도 8은 정화소 움직임 추정에 의하여 하나의 16x16 매크로 블록이 여러 서브 블록들로 분할된 모습을 나타낸다. 정화소 움직임 추정에 의하여 4x4 블록 4개와 8x8 블록 1개, 8x4 블록 2개, 4x8블록 2개로 분할된 서브 블록들이 참조 프레임의 탐색영역에서 현재 프레임의 영상과 가장 유사한 값을 갖는 최적의 서브 블록들로 지정 된 것이다.
이렇게 지정된 서브 블록들을 가지고 다음과 같은 과정을 수행함으로써 화소를 재구성한다.
(1) 정화소 움직임 추정부(121)에서 구해진 각각의 서브 블록의 예측 모드 값과 움직임 벡터 값을 가져온다.
(2) 예측 모드 값과 움직임 벡터 값을 이용하여 각 서브 블록에 대하여 메모리에서 얼마만큼의 데이터를 가져올지 결정한다. 이때, 예측 모드 값과 움직임 벡터 값을 이용하여, 참조 프레임의 서브 블록의 화소 값과 해당 서브 블록의 매크로 블록 외곽 측의 화소 값을 가져온다. 이렇게 함으로써 부화소 보간 시에 중복하여 사용되는 화소를 제거하는 것이다.
예컨대, 도 8의 서브 블록 4X4_1_1을 예로 들면, 도 9에 도시된 바와 같이 서브 블록의 화소 값과 해당 서브 블록의 매크로 블록 외곽 측인, 상단, 좌상단, 좌단 각각의 3 화소의 화소 값을 가져온다(빗금친 영역). 일반적인 움직임 추정의 경우 회색 영역의 화소가 보간에 사용될 것이나, 본 실시예의 경우 이를 메모리에서 가져오지 않음으로써 제외시킨다. 즉, 일반적인 부화소 보간에서 4x4_1_1 서브 블록을 보간하기 위해서는 서브 블록을 중심으로 상, 하, 좌, 우 +- 3 화소씩 총 100화소가 필요하다. 그러나, 본 실시예에 의하면 중복으로 사용되는 화소를 제거함으로써 49 화소만을 이용하게 된다.
(3) 상기 과정 (2)에서 가져온 각 서브 블록에 해당하는 화소 데이터를 결합하여 22x22 크기의 하나의 블록으로 조합한다. 조합된 22x22의 화소값을 가지고 다음 단계인 부화소 보간을 수행하게 된다.
도 10은 도 8과 같이 분할된 서브 블록을 하나의 매크로 블록으로 결합한 모습을 나타낸다. 각각의 서브 블록마다 표시된 영역은 원래의 화소에서 얼마만큼의 화소를 읽어와서 조합하였는지를 나타낸다. 블록 ①의 경우 해당 블록을 기준으로 매크로 블록 외곽 측인 상단, 좌상단, 좌단의 화소를 가져온다. 블록 ②의 경우 해당 블록을 기준으로 매크로 블록 외곽 측인 상단의 화소를 가져온다. 블록 ③의 경우 해당 블록을 기준으로 매크로 블록 외곽 측인 좌단의 화소를 가져온다. 블록 ④의 경우 다른 블록들로 둘러싸여 있으므로 주변 화소를 가져오지 않는다. 블록 ⑤의 경우 해당 블록을 기준으로 매크로 블록 외곽 측인 상단, 우상단, 우단의 화소를 가져온다. 마찬가지 형태로, 블록 ⑥,⑦,⑧,⑨에 대하여도 매크로 블록 외곽 측의 3 화소를 가져온다. 이러한 방법으로 하나의 매크로 블록을 이루는 서브 블록들을 도 10에 도시된 바와 같이 결합하여 부화소 보간에 필요한 화소들을 준비한다.
이렇게 부화소 보간에 필요한 화소들이 준비되면, 부화소 움직임 추정부(123)는 1/2 화소 보간을 수행하고, 정화소와 1/2 화소를 이용하여 1/4 화소 보간을 수행하고, 부화소 움직임 추정을 수행하여 각 서브 블록의 예측 모드와 부화소 단위의 움직임 벡터를 구한다.
도 11은 본 발명의 일 실시예에 따른 움직임 추정 방법의 흐름도이다. 본 실시예에 따른 움직임 추정 방법은 이상에서 설명한 움직임 추정부(120)에서 수행되는 단계들로 구성된다. 따라서 이하 생략된 내용이라 하더라도 움직임 추정부(120)에 관하여 이상에서 기술된 내용은 본 실시예에 따른 움직임 추정 방법에도 적용된다.
1110단계에서, 정화소 움직임 추정을 통하여 매크로 블록을 복수 개의 서브 블록들로 분할하고, 각 서브 블록의 예측 모드와 움직임 벡터를 구한다.
1120단계에서, 예측 모드 값과 움직임 벡터 값을 이용하여 메모리로부터 각 서브 블록마다 부화소 보간에 필요한 화소 값을 가져온다.
1130단계에서, 복수 개의 서브 블록을 하나의 매크로 블록으로 결합하여 화소를 재구성한다.
1140단계에서, 상기 1130단계의 결과 재구성된 화소를 가지고 1/2 화소 보간을 수행한다.
1150단계에서, 1/2 화소 단위로 참조 프레임에서 현재 프레임과 가장 매칭되는 최적 블록을 탐색한다. 이와 동시에 1160단계에서, 정화소와 1/2 화소를 이용하여 1/4 화소 보간을 수행한다.
1170단계에서, 상기 1150단계의 최적 블록 탐색 결과를 기초로 1/4 화소 단위로 참조 프레임에서 현재 프레임과 가장 매칭되는 최적 블록을 탐색한다.
1180단계에서, 1150단계와 1170단계를 통한 최적 블록 탐색 결과를 바탕으로 각 서브 블록의 예측 모드와 화소값과 움직임 벡터를 산출한다.
도 12는 본 발명이 일 실시예에 따른 부화소 움직임 추정부(123)의 상세 구성을 나타낸다. 부화소 움직임 추정부(123)는 22X1 1/2 화소 보간부(1210), 4개의 버퍼(1220), 4개의 4X4 1/4 화소 보간부(1230), 41 블록 생성부(1240), 후보 선택부(1250), 메모리(1260)를 포함하여 이루어진다. 본 실시예는 성능을 유지하면서 하드웨어 구현에 보다 효율적인 구현이 가능하다.
22X1 1/2 화소 보간부(1210)는 화소 재구성부(122)에서 22X22 블록이 구성되면, 22x1의 1/2보간 필터를 이용하여 1/2 화소 보간을 수행한다. 여기서 22x1의 보간을 한번에 수행하는 이유는 보간에 필요한 화소를 한번에 가져와 같은 보간을 수행함으로써 같은 화소를 반복하여 가져와 중복 보간을 수행하는 것을 방지하기 위함이다. 22X1 1/2 화소 보간부(1210)의 출력은 4x4 화소 단위로 나뉘어 4개의 버퍼(1220)에 저장된다. 4개의 4X4 1/4 화소 보간부(1230)는 1/2 보간이 수행된 화소를 4x4 화소 단위로 1/4 보간을 수행한다. 22X1 1/2 화소 보간부(1210)에서 22x1 화소를 한번에 처리하였으므로 4x4 블록 4개에 대하여 동시에 1/4 보간을 수행할 수 있다.
1/2 보간과 1/4 보간이 완료된 4x4 블록들은 41 블록 생성부(1240)에 입력된다. 4X4 1/4 화소 보간부(1230)에서 4X4 블록 단위로 나뉘어진 블록들을 이용하여 상위 블록인 4x8, 8x4, 8x8, 16x8, 8x16, 16x16 블록을 생성한다. 생성되는 상위 블록은 모두 16x16 블록 1, 16x8 블록 2, 8x16 블록 2, 8x8 블록 4, 8x4 블록 8, 4x8 블록 8, 4X4 블록 16으로, 7가지 모드, 1+2+2+4+8+8+16=41 블록이다. 후보 선택부(1250)는 이렇게 생성된 41개 블록을 이용하여 현재의 프레임과 가장 적합한 블록을 찾아, 해당하는 서브 블록의 화소값과 움직임 벡터를 산출한다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (20)

  1. (a) 정화소 움직임 추정을 통하여 매크로 블록을 복수 개의 서브 블록들로 분할하는 단계; 및
    (b) 상기 복수 개의 서브 블록에 대하여 부화소 보간을 수행하되, 상기 분할된 복수 개의 서브 블록을 하나의 매크로 블록으로 결합한 다음 부화소 보간을 수행하는 단계를 포함하는 것을 특징으로 하는 움직임 추정 방법.
  2. 제1항에 있어서,
    상기 매크로 블록은 16×16 블록인 것을 특징으로 하는 움직임 추정 방법.
  3. 제2항에 있어서,
    상기 서브 블록은 16×8, 8×16, 8×8, 8×4, 4×8, 4×4 블록 중 적어도 하나인 것을 특징으로 하는 움직임 추정 방법.
  4. 제2항에 있어서,
    상기 복수 개의 서브 블록을 하나의 매크로 블록으로 결합함에 있어서, 각 서브 블록의 매크로 블록 외곽 측의 화소를 더욱 포함하여 결합하는 것을 특징으로 하는 움직임 추정 방법.
  5. 제4항에 있어서
    상기 부화소 보간에 있어서, 1/2 화소 보간은 6-tap 필터 보간을 이용하는 것을 특징으로 하는 움직임 추정 방법.
  6. 제5항에 있어서,
    상기 각 서브 블록의 매크로 블록 외곽 측의 3 화소를 더욱 결합함으로써 22×22 블록을 구성하는 것을 특징으로 하는 움직임 추정 방법.
  7. (a) 정화소 움직임 추정을 통하여 16×16 매크로 블록을 복수 개의 서브 블록들로 분할하는 단계;
    (b) 상기 분할된 복수 개의 서브 블록을 하나의 매크로 블록으로 결합하되, 각 서브 블록의 매크로 블록 외곽 측의 화소를 더욱 포함하여 22×22 블록으로 결합하는 단계; 및
    (c) 상기 22×22 블록의 화소들을 이용하여 각 서브 블록에 대하여 부화소 보간을 수행하는 단계를 포함하는 것을 특징으로 하는 움직임 추정 방법.
  8. 제7항에 있어서, 상기 (c) 단계는,
    상기 22×22 블록의 화소들을 이용하여 각 서브 블록에 대하여 1/2 화소 보간을 수행하는 단계; 및
    정화소와 상기 1/2 화소 보간의 결과 생성된 1/2 화소를 이용하여 1/4 화소 보간을 수행하는 단계를 포함하는 것을 특징으로 하는 움직임 추정 방법.
  9. 제7항에 있어서,
    상기 서브 블록은 16×8, 8×16, 8×8, 8×4, 4×8, 4×4 블록 중 적어도 하나인 것을 특징으로 하는 움직임 추정 방법.
  10. 제8항에 있어서,
    상기 1/2 화소 보간은 6-tap 필터 보간을 이용하는 것을 특징으로 하는 움직임 추정 방법.
  11. 정화소 움직임 추정을 통하여 매크로 블록을 복수 개의 서브 블록들로 분할하는 정화소 움직임 추정부;
    상기 분할된 복수 개의 서브 블록을 하나의 매크로 블록으로 결합하는 화소 재구성부; 및
    상기 복수 개의 서브 블록에 대하여 부화소 보간을 수행하는 부화소 움직임 추정부를 포함하는 것을 특징으로 하는 움직임 추정 장치.
  12. 제11항에 있어서,
    상기 매크로 블록은 16×16 블록인 것을 특징으로 하는 움직임 추정 장치.
  13. 제12항에 있어서,
    상기 서브 블록은 16×8, 8×16, 8×8, 8×4, 4×8, 4×4 블록 중 적어도 하나인 것을 특징으로 하는 움직임 추정 장치.
  14. 제12항에 있어서,
    상기 복수 개의 서브 블록을 하나의 매크로 블록으로 결합함에 있어서, 각 서브 블록의 매크로 블록 외곽 측의 화소를 더욱 포함하여 결합하는 것을 특징으로 하는 움직임 추정 장치.
  15. 제14항에 있어서
    상기 부화소 보간에 있어서, 1/2 화소 보간은 6-tap 필터 보간을 이용하는 것을 특징으로 하는 움직임 추정 장치.
  16. 제15항에 있어서,
    상기 화소 재구성부는 각 서브 블록의 매크로 블록 외곽 측의 3 화소를 더욱 결합함으로써 22×22 블록을 구성하는 것을 특징으로 하는 움직임 추정 장치.
  17. 정화소 움직임 추정을 통하여 16×16 매크로 블록을 복수 개의 서브 블록들로 분할하는 정화소 움직임 추정부;
    상기 분할된 복수 개의 서브 블록을 하나의 매크로 블록으로 결합하되, 각 서브 블록의 매크로 블록 외곽 측의 화소를 더욱 포함하여 22×22 블록으로 구성하는 화소 재구성부; 및
    상기 22×22 블록의 화소들을 이용하여 각 서브 블록에 대하여 부화소 보간을 수행하는 부화소 움직임 추정부를 포함하는 것을 특징으로 하는 움직임 추정 장치.
  18. 제17항에 있어서,
    상기 부화소 움직임 추정부는, 상기 22×22 블록의 화소들을 이용하여 각 서브 블록에 대하여 1/2 화소 보간을 수행하고, 정화소와 상기 1/2 화소 보간의 결과 생성된 1/2 화소를 이용하여 1/4 화소 보간을 수행하는 것을 특징으로 하는 움직임 추정 장치.
  19. 제17항에 있어서,
    상기 서브 블록은 16×8, 8×16, 8×8, 8×4, 4×8, 4×4 블록 중 적어도 하나인 것을 특징으로 하는 움직임 추정 장치.
  20. 제18항에 있어서,
    상기 1/2 화소 보간은 6-tap 필터 보간을 이용하는 것을 특징으로 하는 움직임 추정 장치.
KR1020100085386A 2010-09-01 2010-09-01 동영상 부호화를 위한 움직임 추정 방법 및 장치 KR101184571B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100085386A KR101184571B1 (ko) 2010-09-01 2010-09-01 동영상 부호화를 위한 움직임 추정 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100085386A KR101184571B1 (ko) 2010-09-01 2010-09-01 동영상 부호화를 위한 움직임 추정 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20120023234A true KR20120023234A (ko) 2012-03-13
KR101184571B1 KR101184571B1 (ko) 2012-09-21

Family

ID=46130760

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100085386A KR101184571B1 (ko) 2010-09-01 2010-09-01 동영상 부호화를 위한 움직임 추정 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101184571B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101394164B1 (ko) * 2013-01-17 2014-05-16 국방과학연구소 영상추적기를 위한 초해상도 기반의 고정밀 영상추적방법 및 이를 이용한 고정밀 영상추적장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101394164B1 (ko) * 2013-01-17 2014-05-16 국방과학연구소 영상추적기를 위한 초해상도 기반의 고정밀 영상추적방법 및 이를 이용한 고정밀 영상추적장치

Also Published As

Publication number Publication date
KR101184571B1 (ko) 2012-09-21

Similar Documents

Publication Publication Date Title
RU2689129C1 (ru) Способ для интерполяции изображений с использованием асимметричного интерполяционного фильтра и устройство для этого
KR102026856B1 (ko) 다중 참조를 허용하는 비디오 코덱에서 모션 벡터를 예측하는 방법, 및 그 방법을 이용한 모션 벡터 부호화/복호화 장치
US9736496B2 (en) Intra-prediction method using filtering, and apparatus using the method
JP5197630B2 (ja) 画像符号化装置、画像復号装置、画像符号化方法、および画像復号方法
US8498338B1 (en) Mode decision using approximate ½ pel interpolation
JP5795525B2 (ja) 画像符号化方法,画像復号方法,画像符号化装置,画像復号装置,画像符号化プログラムおよび画像復号プログラム
TW202315408A (zh) 以區塊為基礎之預測技術
RU2573747C2 (ru) Способ и устройство кодирования видео, способ и устройство декодирования видео и программы для них
KR20090095317A (ko) 영상 부호화 및 복호화 방법 및 장치
KR20110017720A (ko) 적응적인 루프 필터링을 이용한 비디오의 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
TWI727826B (zh) 使用內預測之寫碼技術
KR101700410B1 (ko) 인트라 모드를 이용한 쿼터 픽셀 해상도를 갖는 영상 보간 방법 및 장치
KR20090119434A (ko) 영상의 부호화, 복호화 방법 및 장치
KR101462959B1 (ko) 확장 블록 필터링을 이용한 비디오 부호화, 복호화 방법 및 장치
KR101184571B1 (ko) 동영상 부호화를 위한 움직임 추정 방법 및 장치
KR20080035904A (ko) 영상 인코더 및 디코더에서의 색차 신호 보간 방법
KR101443865B1 (ko) 인터 예측 방법 및 장치
JP2012175332A (ja) 画像符号化装置,画像復号装置,画像符号化方法,画像復号方法,画像符号化プログラムおよび画像復号プログラム
WO2014084674A2 (ko) 잔차 변환을 이용한 인트라 예측 방법 및 장치
KR20140031974A (ko) 화상 부호화 방법, 화상 복호 방법, 화상 부호화 장치, 화상 복호 장치, 화상 부호화 프로그램 및 화상 복호 프로그램
KR101475286B1 (ko) 인트라 예측 방법 및 장치, 그리고 영상 처리 장치
KR102111437B1 (ko) 인트라 모드를 이용한 쿼터 픽셀 해상도를 갖는 영상 보간 방법 및 장치
KR20130049707A (ko) 인트라 예측 방법 및 장치
RU2800683C2 (ru) Способ и устройство предсказывания компонента видеоизображения и компьютерный носитель данных
KR20110087871A (ko) 인트라 모드를 이용한 쿼터 픽셀 해상도를 갖는 영상 보간 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150619

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160728

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170703

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee