KR101104828B1 - 움직임 벡터 연산 장치 및 그 방법 - Google Patents

움직임 벡터 연산 장치 및 그 방법 Download PDF

Info

Publication number
KR101104828B1
KR101104828B1 KR20040103717A KR20040103717A KR101104828B1 KR 101104828 B1 KR101104828 B1 KR 101104828B1 KR 20040103717 A KR20040103717 A KR 20040103717A KR 20040103717 A KR20040103717 A KR 20040103717A KR 101104828 B1 KR101104828 B1 KR 101104828B1
Authority
KR
South Korea
Prior art keywords
macroblock
motion vector
delete delete
memory
block
Prior art date
Application number
KR20040103717A
Other languages
English (en)
Other versions
KR20060065013A (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 KR20040103717A priority Critical patent/KR101104828B1/ko
Priority to US11/220,752 priority patent/US7853091B2/en
Priority to JP2005352532A priority patent/JP4921784B2/ja
Publication of KR20060065013A publication Critical patent/KR20060065013A/ko
Application granted granted Critical
Publication of KR101104828B1 publication Critical patent/KR101104828B1/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/42Methods 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/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • 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
    • 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/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region
    • H04N5/144Movement detection
    • H04N5/145Movement estimation

Abstract

본 발명의 움직임 벡터 연산 장치는, 매크로블록 내 하측 블록 그룹의 움직임 벡터들을 저장하기 위한 제 1 뱅크 및 제 2 뱅크로 구성되는 상측 메모리와, 매크로블록 내 우측 블록 그룹의 움직임 벡터들을 저장하기 위한 좌측 메모리, 그리고 동작 모드 그리고 현재 블록의 수퍼 매크로블록 내 위치에 따라서 상기 상측 메모리의 제 1/2 뱅크 및 상기 좌측 메모리에 저장된 움직임 벡터들을 참조하여 상기 현재 블록의 움직임 벡터를 예측하는 예측기를 포함한다. 이와 같은 구성의 연산 장치는, 노말 모드뿐만 아니라 MBAFF 모드에서도 움직임 보상 과정에서 수행되는 움직임 벡터 예측을 효율적으로 수행할 수 있다. 특히, 주변 매크로블록들의 움직임 벡터를 저장하는 상측 메모리를 효과적으로 구조화하여 메모리의 크기를 최소화할 수 있다.

Description

움직임 벡터 연산 장치 및 그 방법{MOTION VECTOR OPERATION APPARATUS AND METHOD THEREOF}
도 1은 현재 블록 E에 대한 움직임 벡터와 이 움직임 벡터의 예측에 사용되는 주변 블록들 A, B, C 및 D의 위치와 각각의 움직임 벡터를 보여주는 도면;
도 2a 내지 도 2c는 현재 블록의 모드 타입과 위치에 따라 주변 블록의 위치를 보여주는 도면;
도 3a는 세로 방향의 두 매크로블록 쌍을 하나의 매크로블록 쌍으로 놓고 코딩한 MBAFF 모드의 일 예를 보여주는 도면;
도 3b는 노말 모드에서의 수퍼 매크로블록을 보여주는 도면;
도 4는 수퍼 매크로블록이 필드 모드로 코딩된 경우와 프레임 모드로 코딩된 경우를 보여주는 도면;
도 5a 내지 도 5c는 현재 매크로블록과 주변 매크로블록의 코딩 모드에 따른 좌측 블록의 움직임 벡터(MV_A)를 보여주는 도면;
도 6a 내지 도 6c는 현재 매크로블록과 주변 매크로블록의 코딩 방식에 따른 상측 블록의 움직임 벡터 위치를 보여주는 도면;
도 7은 현재 매크로블록 E와 주변 매크로블록 A, B, C 및 D를 4x4 블록 16개로 나눈 것을 보여주는 도면;
도 8a는 MBAFF 모드에서 상측 메모리에 저장될 주변 블록들을 보여주는 도면;
도 8b는 노말 모드에서 상측 메모리에 저장될 주변 블록들을 보여주는 도면;
도 9는 상부 메모리 구조를 보여주는 도면;
도 10a 내지 도 10c는 상측 메모리의 두 개의 뱅크들 중 하부 매크로블록 내 블록들의 움직임 벡터들을 저장하는 제 2 뱅크(BANK2)의 움직임 벡터 저장 방법을 개념적으로 보여주는 도면;
도 11은 노말 모드에서 상측 메모리의 두 개의 뱅크들 중 제 2 뱅크(BANK2)에 매크로블록의 움직임 벡터들을 저장하는 방법을 개념적으로 보여주는 도면;
도 12은 좌측 메모리를 보여주는 도면;
도 13는 본 발명의 바람직한 실시예에 따른 움직임 벡터 예측 장치를 보여주는 도면;
도 14은 수퍼 매크로블록 단위로 변화하는 시작 어드레스 발생 방법을 보여주는 플로우차트;
도 15a 내지 도 15c는 오프셋 어드레스를 결정하는 방법을 개념적으로 보여주는 도면들; 그리고
도 16a 내지 도 16b는 본 발명의 바람직한 실시예에 따른 움직임 벡터 예측 방법을 보여주는 플로우차트들이다.
*도면의 주요 부분에 대한 설명
100 : 움직임 벡터 연산 장치 110 : 상측 메모리
120 : 좌측 메모리 130 : 움직임 벡터 예측기
140 : 레지스터 150 : 가산기
본 발명은 영상 처리 장치에 관한 것으로, 좀 더 구체적으로는 MBAFF(MacroBlock Adaptive Field/Frame) 모드를 지원하는 영상 처리 장치의 움직임 벡터 연산 장치 및 그 방법에 관한 것이다.
동영상 신호의 압축 부호화 및 복호화는 저속 채널(low rate channel)을 통한 동영상 정보의 전송을 가능하게 할뿐만 아니라 영상을 저장하는데 요구되는 메모리의 용량을 감소시킬 수 있기 때문에, 이러한 압축 부호화 및 복호화 기술은 동영상의 저장(storage), 전송(transmission) 등의 응용(application)을 요구하는 멀티미디어(multimedia) 산업에 있어서 매우 중요한 기술이다. 한편, 멀티미디어 산업의 확대와 정보의 호환성을 위하여 이러한 정보 압축 방법의 표준화 작업의 필요성이 대두되면서 현재까지 다양한 응용을 중심으로 동영상 표준화 방안이 마련되었다.
국제전기통신연합(International Telecommunication Union - Telecommunication Standard Sector; ITU-T)은 유무선 통신망 환경에서 동영상 서비스를 위한 표준 규격인 H.261과 H.263을 제정했고, 세계표준화기구(International Standardization Organization; ISO)도 동영상 표준 규격인 MPEG(Moving Picture Expert -1, MPEG-2, MPEG-4를 마련하는 등 세계적인 표준화 논의가 활발했다. H.263+와 MPEG-4 표준이 개발된 뒤 무선통신이 급격히 확산되면서 종전 압축 방법에 비해 더욱 향상된 압축 효율을 제공하고, 다양한 통신환경을 수용할 수 있는 동영상 압축 기술 규격의 필요성이 대두됐다. 이에 ITU는 H.26L로 명명한 차세대 부호화 방식의 ‘기술제안요청서'를 발표했으며, 각급 기업체, 연구소 및 학계의 활발한 연구가 진행됐다. 이후 2001년 ISO/IEC의 MPEG 그룹이 H.26L 프로젝트에 참가함으로써, 2003년 5월 마침내 ITU-T는 H.264라는 표준을 승인했고 이어 2003년 8월 ISO/IEC에서 MPEG-4 Part 10으로 최종 승인했다.
ITU-T와 ISO가 공동 제정한 차세대 동영상 압축 표준 H.264는 다양한 네트워크 환경에 쉽게 부응할 수 있는 유연성과 동영상의 부호화 효율성 측면에서 MPEG-2, MPEG-4(Part 2) 등 기존 기술표준들에 비해 많은 진보가 있었다. 표준화 및 구현과정에 참여한 엔지니어들의 평가에 의하면 H.264의 데이터 압축률은 현재 DVD 시스템에 사용된 MPEG-2의 2~3배이고 MPEG-4 보다는 1.5~2배 이상 높다고 한다. 새로운 기술을 이용하면 DVD와 동일한 화질을 약 2Mbps의 코딩률에서 얻을 수 있으며, 1Mbps에서는 가정용 VCR과 같은 화질을 얻을 수 있다.
실제 제품과 서비스에 이 기술을 적용하면 영상 데이터 용량을 대폭 줄이면서 데이터 전송율을 낮출 수 있다. MPEG-2는 디지털 방송에 많이 사용되고 MPEG-4는 휴대폰용 영상 전송에 사용되지만 H.264는 더 높은 압축률을 필요로 하는 애플리케이션에 먼저 사용될 것으로 보인다.
일반적으로 동영상 코딩 방법에서는 전체 영상단위로 움직임 예측 및 보상을 행하는 대신에, 일정한 크기의 화소들 즉, 가로 방향으로 M 화소, 세로 방향으로 N 화소의 집합 단위(MxN 표기)로 움직임 예측 및 보상을 수행하는데, 이러한 화소의 집합을 매크로블록(Macroblock)이라 일컫는다. 일반적으로 동영상 코딩 방법에서는 매크로블록의 크기를 가로로 16화소, 세로로 16화소(16x16 표기)로 규정한다.
한편, H.264/AVC 또는 MPEG-4 Part 10과 같은 차세대 동영상 압축 기술에서의 움직임 예측 및 보상은 보다 작은 화소 집합 단위로 수행하게 된다. 16x16 매크로블록 크기부터 16x8, 8x16, 8x8 블록 크기까지 매크로블록 모드타입이 결정되고 8x8 모드는 다시 8x4, 4x8, 4x4 단위까지 서브 모드타입이 결정된다. 따라서 한 개의 매크로블록 내 블록크기가 모두 4x4 단위일 경우 최대 16개의 움직임 벡터를 가지게 되며, 각 블록별로 움직임 추정 및 예측을 수행해야 한다.
도 1은 현재 블록 E에 대한 움직임 벡터와 이 움직임 벡터의 예측에 사용되는 주변 블록들 A, B, C 및 D의 위치와 각각의 움직임 벡터를 보여준다. 현재 블록 E의 움직임 벡터는 주변 블록 A, B, C(혹은 D)의 각 움직임 벡터를 이용하여 구하게 된다.
이하 본 명세서에서 주변 블록 A, B, C 및 D의 위치는 현재 블록 E를 중심으로 도 1에 도시된 바와 같으며, 현재 블록의 움직임 벡터는 MV_E, 주변 블록 A의 움직임 벡터는 MV_A, 주변 블록 B의 움직임 벡터는 MV_B, 주변 블록 C의 움직임 벡터는 MV_C 그리고 주변 블록 D의 움직임 벡터는 MV_D로 표기한다.
현재 블록의 움직임 벡터를 예측하기 위해 사용되는 주변 블록의 움직임 벡 터는 주변 매크로블록 내 블록의 움직임 벡터이거나 현재 블록의 위치에 따라서는 현재 매크로블록 내 블록의 움직임 벡터이기도 하다.
도 2a 내지 도 2c는 현재 블록의 모드 타입과 위치에 따라 주변 블록의 위치를 보여주고 있다. 도 2a는 현재 매크로블록 E가 16x16 모드인 경우 움직임 벡터를 예측하기 위해 필요한 주변 블록들을 보여준다. 주변 블록들 A, B, C 및 D의 움직임 벡터는 주변 매크로블록 내 블록의 움직임 벡터가 사용된다. 도 2b 및 도 2c는 현재 매크로블록이 각각 16x8 모드인 경우로, 매크로블록은 매크로블록보다 작은 화소 집합 E0, E1으로 나누어진다. 블록 E0의 주변 블록들 A, B, C 및 D의 움직임 벡터는 16x16 모드와 마찬가지로 주변 매크로블록 내 블록의 움직임 벡터가 사용되고 블록 E1의 주변 블록 A, D의 움직임 벡터도 주변 매크로블록 내 블록의 움직임 벡터를 사용하고 있으나, 블록 E1의 주변 블록 B의 움직임 벡터는 위의 경우와 다르게 현재 매크로블록 내 블록 E0에서 계산되어진 움직임 벡터가 사용된다.
또한, 블록 C가 코딩하고 있는 슬라이스(Slice) 외부에 존재하거나, 도 2c에서 보여 주듯이 블록 E1의 주변 블록 C가 현재 코딩 할 매크로블록 이후에 코딩되는 매크로블록 내 블록이면 MV_C 대신에 MV_D를 사용하여 MV_A와 MV_B와 함께 블록 E1의 움직임 벡터 MV_E을 예측하게 된다.
이와 같이 현재 블록 E의 움직임 벡터를 예측하기 위해서는 주변 블록들 A, B, C 및 D의 움직임 벡터가 필요하므로 현재 매크로블록 이전에 코딩된 매크로블록 내 블록의 움직임 벡터를 저장하고 있어야 한다.
한편, H.264/AVC 코덱(Codec)은 코딩 효율을 높이기 위해 MBAFF(Macro Block Adaptive Frame/Field) 모드를 표준으로 채택하였다. 도 3a는 세로 방향의 두 매크로블록 쌍을 하나의 매크로블록 쌍으로 놓고 코딩한 MBAFF 모드의 일 예를 보여주고 있다. 본 명세서에서는 이와 같이 세로 방향의 매크로블록 쌍을 수퍼(Super) 매크로블록으로 칭한다. MBAFF 모드가 아닐 경우 매크로블록은 프레임(Frame) 모드 또는 필드(Field) 모드로만 코딩되는 반면에, MBAFF 모드일 경우에는 수퍼 매크로블록 단위로 프레임 모드와 필드 모드가 섞인 코딩이 가능하다. 일반적으로, 노말 모드는 프레임 모드 또는 노말 모드 중 어느 하나로 코딩하는 것을 일컫는다.
도 3b는 노말 모드에서의 수퍼 매크로블록을 보여주고 있다. 도 3a에 도시된 MBAFF 모드에서, 세로 방향의 두 매크로블록 쌍을 수퍼 매크로블록이라 칭하였는데, 노말모드에서는 하나의 매크로블록이 수퍼 매크로블록에 해당한다.
도 4는 수퍼 매크로블록이 필드 모드로 코딩된 경우와 프레임 모드로 코딩된 경우를 보여주고 있다. 수퍼 매크로블록 내 매크로블록들이 필드 모드로 코딩된 경우, 수퍼 매크로블록의 상부(Top) 매크로블록은 홀수 화소라인으로만 구성되며 수퍼 매크로블록의 하부(Bottom) 매크로블록은 짝수 화소라인으로만 구성된다. 반면 수퍼 매크로블록이 프레임 모드로 코딩되면 수퍼 매크로블록의 상부 및 하부 매크로블록들은 홀수 화소라인과 짝수 화소라인의 분리없이 구성된다.
한 화면에 필드 모드로 코딩된 수퍼 매크로블록과 프레임 모드로 코딩된 수퍼 매크로블록이 뒤섞여 있을 경우에는 현재 매크로블록과 주변 매크로블록의 필드/프레임 코딩 여부에 따라서 주변 블록의 위치가 틀려지게 되며, 이를 구하기 위해 복잡한 인덱싱(Indexing) 과정이 필요하게 된다. 다시 말해 현재 매크로블록과 주 변 매크로블록이 프레임 모드로 코딩되었느냐 아니면 필드 모드로 코딩되었느냐 그리고 현재 매크로블록이 상부이냐 아니면 하부이냐에 따라서 현재 블록 E의 움직임 벡터를 예측하기 위해 필요한 주변 블록들 A, B, C 및 D의 위치가 달라지기 때문이다.
도 5a 내지 도 5c는 현재 매크로블록과 주변 매크로블록의 코딩 모드에 따른 좌측 블록의 움직임 벡터(MV_A)를 보여주고 있다. 현재 매크로블록과 좌측 매크로블록이 모두 프레임 모드로 코딩되었거나 모두 필드 모드로 코딩된 경우 현재 블록 E에 대한 좌측 블록의 움직임 벡터(MV_A)는 도 5a와 같은 방법으로 결정된다. 즉, 화살표가 가리키는 곳에 위치한 블록의 움직임 벡터가 현재 블록 E에 대한 좌측 블록의 움직임 벡터(MV_A)이다.
만일 현재 매크로블록과 좌측 매크로블록의 코딩 모드가 서로 다른 방식인 경우, 즉 현재 매크로블록이 프레임 모드로 코딩되고 좌측 매크로블록이 필드 모드 코딩된 경우 그리고 현재 매크로블록이 필드 모드로 코딩되고 좌측 매크로블록이 프레임 모드로 코딩되었다면 도 5b 및 도 5c와 같이 현재 블록 E의 위치에 따라서 복잡한 인덱싱 과정을 거친 후 좌측 블록의 움직임 벡터(MV_A)가 결정된다.
도 6a 내지 도 6c는 현재 매크로블록과 주변 매크로블록의 코딩 방식에 따른 상측 블록의 움직임 벡터 위치를 보여 준다. 도 6a 내지 도 6c에서, 현재 수퍼 매크로블록 내 상부 매크로블록과 하부 매크로블록을 각각 E_top, E_bottom으로 표기하고, 상측 수퍼 매크로블록 내 상부 매크로블록과 하부 매크로블록을 각각 B_top, B_bottom으로 표기한다.
도 6a와 같이 현재 수퍼 매크로블록이 프레임 모드로 코딩되었다면 상측 수퍼 매크로블록의 코딩 방식에 상관없이 현재 수퍼 매크로블록의 상부 매크로블록(E_top)의 상측 움직임 벡터(MV_B)는 상측 수퍼 매크로블록의 하부 매크로블록(B_bottom) 내 블록의 움직임 벡터로 결정되며, 현재 수퍼 매크로블록의 하부 매크로블록(E_bottom)의 상측 움직임 벡터(MV_B)는 현재 수퍼 매크로블록의 상부 매크로블록(T_top) 내 블록의 움직임 벡터로 결정된다.
도 6b와 같이 현재 수퍼 매크로블록과 상측 수퍼 매크로블록이 각각 필드모드로 코딩되었다면 현재 수퍼 매크로블록의 상부 매크로블록(E_top)의 상측 움직임 벡터(MV_B)는 상측 수퍼 매크로블록의 상부 매크로블록(B_top) 내 블록의 움직임 벡터로 결정되며, 현재 수퍼 매크로블록의 하부 매크로블록(E_bottom)의 상측 움직임 벡터(MV_B)는 상측 수퍼 매크로블록의 하부 매크로블록(B_bottom) 내 블록의 움직임 벡터로 결정된다.
도 6c와 같이 현재 수퍼 매크로블록이 필드 모드로 코딩되고 상측 수퍼 매크로블록이 프레임 모드로 코딩되었다면 현재 수퍼 매크로블록의 상부 매크로블록(E_top)과 현재 수퍼 매크로블록의 하부 매크로블록(E_bottom)의 상측 움직임 벡터(MV_B)는 상측 수퍼 매크로블록의 하부 매크로블록(B_bottom) 내 블록의 움직임 벡터로 결정된다.
상측 움직임 벡터(MV_B)뿐만 아니라 우상측 움직임 벡터(MV_C) 및 좌상측 움직임 벡터(MV_D)도 도 6a 내지 도 6c에 도시된 것과 유사한 방법으로 선택할 수 있으며 움직임 벡터들(MV_A, MV_B, MV_C (혹은 MV_D))를 이용하여 현재 매크로블록 내 블록의 움직임 벡터를 구할 수 있다.
움직임 벡터 예측은 인접한 블록들의 움직임 벡터 사이에 움직임 벡터가 유사한 특성을 이용하여 움직임 벡터를 효율적으로 코딩하는데 목적이 있다. 그러나 움직임 벡터 예측을 위해서는 주변 매크로블록 내 블록의 움직임 벡터를 참조하기 때문에 추가적인 메모리가 요구되며, 특히 MBAFF 모드를 지원할 경우에는 참고해야 할 주변 블록의 움직임 벡터의 범위가 다양하므로 그렇지 않은 경우보다 메모리의 크기가 증가한다. 또한 매크로블록의 코딩 방법이 필드/프레임 모드인 경우와 매크로블록의 위치가 상부/하부에 따라 현재 매크로블록의 움직임 벡터를 예측할 주변 블록의 움직임 벡터를 찾기 위해 복잡한 인덱싱(Indexing) 과정이 필요하게 된다. 그러므로 하나의 영상의 모든 매크로블록의 움직임 벡터를 모두 개별적으로 저장하거나, 하나의 슬라이스에 해당하는 모든 벡터를 저장할 경우 메모리의 크기가 커지며 인덱싱 과정도 복잡해지는 문제점이 있다.
따라서 본 발명은 이러한 문제점을 해결하기 위해 주변 매크로블록의 움직임 벡터를 저장하는 메모리를 효과적으로 구조화하여 메모리의 크기를 최소화할 수 있는 움직임 벡터 연산 시스템 및 그 방법을 제공하는데 있다.
본 발명의 다른 목적은 주변 블록의 움직임 벡터를 찾기 위해 필요한 인덱싱 과정이 단순화된 움직임 벡터 연산 시스템 및 그 방법을 제공하는데 있다.
본 발명의 또다른 목적은 MBAFF 모드에서 뿐만 아니라 노말 모드에서도 움직임 보상 과정에서 수행되는 움직임 벡터 연산을 효율적으로 수행하는 방법 및 장치 를 제공하는데 있다.
상술한 바와 같은 목적을 달성하기 위한 본 발명의 일 특징에 의하면, 움직임 벡터 연산 장치는: 매크로블록 내 하측 블록 그룹의 움직임 벡터들을 저장하기 위한 제 1 뱅크 및 제 2 뱅크로 구성되는 상측 메모리와, 매크로블록 내 우측 블록 그룹의 움직임 벡터들을 저장하기 위한 좌측 메모리, 그리고 동작 모드 그리고 현재 블록의 수퍼 매크로블록 내 위치에 따라서 상기 상측 메모리의 제 1/2 뱅크 및 상기 좌측 메모리에 저장된 움직임 벡터들을 참조하여 상기 현재 블록의 움직임 벡터를 예측하는 예측기를 포함한다.
바람직한 실시예에 있어서, 상기 연산 장치는, 상기 현재 블록의 상기 예측된 움직임 벡터와 움직임 벡터 차를 더하여 움직임 벡터를 출력하는 가산기를 더 포함한다.
이 실시예에 있어서, 상기 예측기는, 상기 현재 수퍼 매크로블록 내 블록에 대한 상기 가산기로부터 출력되는 움직임 벡터를 저장하기 위한 레지스터를 포함한다.
이 실시예에 있어서, 상기 움직임 벡터 연산 장치는 MBAFF(MacroBlock Adaptive Frame/Field) 모드에서 동작한다.
MBAFF 모드에서 상기 움직임 벡터 연산 장치의 특징은 다음과 같다.
상기 수퍼 매크로블록은 제 1 및 제 2 매크로블록들을 포함한다. 상기 제 1 및 제 2 매크로블록들은 세로 방향으로 인접한 매크로블록 쌍이다.
상기 예측기는, 상기 현재 블록이 상기 제 1 매크로블록에 속할 때, 상기 가산기로부터 출력되는 움직임 벡터가 상기 상측 메모리의 상기 제 1 뱅크에 저장되도록 제어한다.
상기 현재 블록이 상기 제 2 매크로블록에 속할 때, 상기 가산기로부터 출력되는 움직임 벡터가 상기 상측 메모리의 상기 제 2 뱅크에 저장되도록 제어한다.
상기 상측 메모리의 상기 제 1 및 제 2 뱅크들 각각의 크기는, ((w x a + 1) x s)이되, w는 한 프레임의 가로 방향의 매크로블록의 수, a는 하나의 매크로블록 내 가로 방향의 블록의 수, 그리고 s는 움직임 벡터 크기이다.
상기 상측 메모리의 상기 제 1 뱅크는, 상기 수퍼 매크로블록의 좌상측 수퍼 매크로블록의 제 1 매크로블록의 하측 블록 그룹의 마지막 블록부터 좌측 수퍼 매크로블록의 제 1 매크로블록의 하측 블록 그룹까지의 움직임 벡터들을 저장한다.
상기 상측 메모리의 상기 제 2 뱅크는, 상기 수퍼 매크로블록의 좌상측 수퍼 매크로블록의 제 2 매크로블록의 하측 블록 그룹의 마지막 블록부터 좌측 수퍼 매크로블록의 제 2 매크로블록의 하측 블록 그룹까지의 움직임 벡터들을 저장한다.
상기 좌상측 수퍼 매크로블록은 상기 수퍼 매크로블록과 좌측 대각선 방향으로 인접한 수퍼 매크로블록이고, 상기 좌측 수퍼 매크로블록은 상기 수퍼 매크로블록과 좌측 방향으로 인접한 수퍼 매크로블록이다.
상기 예측기는, 시작 어드레스, 뱅크 어드레스 및 오프셋 어드레스를 포함하는 어드레스를 발생하여 상기 상측 메모리를 액세스한다.
상기 시작 어드레스는 수퍼 매크로블록마다 증가되며, 상기 매크로블록의 상 기 하측 블록 그룹에 포함된 블록의 수 만큼씩 증가된다. 상기 시작 어드레스가 상기 뱅크 크기보다 클 때 상기 시작 어드레스는 (시작 어드레스-뱅크 크기)로 재설정된다.
상기 뱅크 어드레스는 상기 상측 메모리의 상기 제 1 및 제 2 뱅크들을 선택하기 위한 어드레스이다.
상기 오프셋 어드레스는 상기 매크로블록 내 블록의 크기 그리고 주변 블록의 위치에 따라 설정된다.
상기 어드레스는, 상기 시작 어드레스, 상기 뱅크 어드레스 및 상기 오프셋 어드레스의 합이다.
상기 예측기는, 상기 가산기로부터 출력되는 움직임 벡터가 상기 상측 메모리의 상기 어드레스가 지정하는 위치에 저장되도록 제어한다.
상기 좌측 메모리는, 상기 수퍼 매크로블록의 상기 좌측 수퍼 매크로블록의 우측 블록 그룹의 움직임 벡터들을 저장한다.
바람직한 실시예에 있어서, 상기 움직임 벡터 연산 장치는 노말 모드에서 동작한다. 노말 모드동안, 상기 연산장치의 특징은 다음과 같다.
상기 수퍼 매크로블록은 제 1 매크로블록을 포함한다.
상기 예측기는, 상기 상측 메모리의 상기 제 1 뱅크 및 상기 좌측 메모리에 저장된 움직임 벡터들 그리고 상기 수퍼 매크로블록의 이미 구해진 움직임 벡터들을 참조하여 상기 수퍼 매크로블록 내 현재 블록의 움직임 벡터를 예측한다.
상기 예측기는, 상기 가산기로부터 출력되는 움직임 벡터가 상기 상측 메모 리의 상기 제 1 뱅크에 저장되도록 제어한다.
본 발명의 다른 특징에 의하면, 제 1 및 제 2 뱅크들을 포함하는 상측 메모리, 좌측 메모리 그리고 현재 수퍼 매크로블록의 움직임 벡터를 저장하기 위한 레지스터를 포함하는 움직임 벡터 연산 장치의 움직임 벡터 연산 방법은: 동작 모드 그리고 현재 블록의 현재 수퍼 매크로블록 내 위치에 따라서 상기 상측 메모리의 제 1/2 뱅크, 상기 좌측 메모리 그리고 상기 레지스터에 저장된 움직임 벡터들을 참조하여 상기 현재 블록의 움직임 벡터를 계산하는 단계, 및 상기 동작 모드 그리고 상기 현재 블록의 상기 현재 수퍼 매크로블록 내 위치에 따라서 상기 움직임 벡터를 상측 메모리의 상기 제 1/2 뱅크 또는 상기 좌측 메모리에 저장하는 단계를 포함한다.
바람직한 실시예에 있어서, 상기 움직임 벡터를 계산하는 단계는, 상기 상측 메모리 및 상기 좌측 메모리에 저장된 움직임 벡터들 및 상기 현재 수퍼 매크로블록 내 이미 구해진 움직임 벡터들을 참조하여 상기 현재 블록의 움직임 벡터를 예측하는 단계, 및 상기 예측된 움직임 벡터와 움직임 벡터 차를 더하여 상기 현재 블록의 움직임 벡터를 출력하는 단계를 포함한다.
이 실시예에 있어서, 상기 움직임 벡터 연산 방법은 MBAFF(MacroBlock Adaptive Frame/Field) 모드에서 동작한다.
MBAFF 모드에서 상기 움직임 벡터 연산 방법의 특징은 다음과 같다.
상기 수퍼 매크로블록은 제 1 매크로블록 및 제 2 매크로블록을 포함하며, 상기 제 1 및 제 2 매크로블록들은 세로 방향으로 인접한 매크로블록 쌍이다.
상기 저장 단계는, 상기 현재 블록이 상기 수퍼 매크로블록의 상기 제 1 매크로블록의 하측 블록 그룹에 속할 때 상기 현재 블록의 상기 계산된 움직임 벡터를 상기 상측 메모리의 상기 제 1 뱅크에 저장하는 단계, 및 상기 현재 블록이 상기 수퍼 매크로블록의 상기 제 2 매크로블록의 하측 블록 그룹에 속할 때 상기 현재 블록의 상기 계산된 움직임 벡터를 상기 상측 메모리의 상기 제 2 뱅크에 저장하는 단계를 포함한다.
상기 저장 단계는, 상기 현재 블록이 상기 매크로블록의 우측 블록 그룹에 속할 때 상기 현재 블록의 움직임 벡터를 상기 좌측 메모리에 저장하는 단계를 포함한다.
상기 상측 메모리의 상기 제 1 및 제 2 뱅크들 각각의 크기는, ((w x a + 1) x s)이되, w는 한 프레임의 가로 방향의 매크로블록의 수, a는 하나의 매크로블록 내 가로 방향의 블록의 수, 그리고 s는 움직임 벡터 크기이다.
상기 움직임 벡터 연산 방법은, 상측 메모리를 액세스하기 위한 어드레스를 발생하는 단계를 더 포함한다.
상기 어드레스는, 시작 어드레스, 뱅크 어드레스 및 오프셋 어드레스를 포함한다. 상기 뱅크 어드레스는 상기 상측 메모리의 상기 제 1 및 제 2 뱅크들을 선택하기 위한 어드레스이고, 상기 시작 어드레스는 수퍼 매크로블록마다 증가되는 어드레스이다. 상기 시작 어드레스는 상기 매크로블록의 상기 하측 블록 그룹에 포함된 블록의 수 만큼씩 증가된다. 상기 시작 어드레스가 상기 뱅크 크기보다 클 때 상기 시작 어드레스는 (시작 어드레스-뱅크 크기)로 재설정된다. 상기 오프셋 어드레스는 상기 매크로블록 내 블록의 크기에 따라 설정된다. 상기 어드레스는, 상기 시작 어드레스, 상기 뱅크 어드레스 및 상기 오프셋 어드레스의 합이다.
상기 움직임 벡터를 예측하는 단계는, 상기 현재 블록의 우상측 블록이 유효하고, 상기 현재 블록이 상기 제 1 매크로블록의 상측 블록 그룹에 속할 때, 상기 상측 메모리에 저장된 상측 블록 및 상기 우상측 블록의 움직임 벡터들을 독출해서 상측 움직임 벡터와 우상측 움직임 벡터로 각각 취하는 단계를 포함한다.
상기 움직임 벡터를 예측하는 단계는, 상기 현재 블록의 우상측 블록이 유효하고, 상기 현재 블록이 상기 제 1 매크로블록의 상기 상측 블록 그룹에 속할 때, 상기 레지스터에 저장된 상기 상측 블록의 움직임 벡터 및 상기 우상측 블록의 움직임 벡터를 상기 상측 움직임 벡터와 상기 우상측 움직임 벡터로 각각 취하는 단계를 더 포함한다.
상기 움직임 벡터를 예측하는 단계는, 상기 현재 블록의 우상측 블록이 유효하지 않고, 상기 현재 블록이 상기 제1 매크로블록의 상기 상측 블록 그룹에 속할 때, 상기 상측 메모리에 저장된 상측 블록 및 좌상측 블록의 움직임 벡터들을 독출해서 상측 움직임 벡터와 좌상측 움직임 벡터로 각각 취하는 단계를 더 포함한다.
상기 움직임 벡터를 예측하는 단계는, 상기 현재 블록의 우상측 블록이 유효하지 않고, 상기 현재 블록이 상기 제1 매크로블록의 상측 블록 그룹에 속할 때, 상기 레지스터에 저장된 상기 상측 블록의 상측 움직임 벡터와 상기 좌상측 블록의 움직임 벡터를 상기 상측 움직임 벡터와 상기 좌상측 움직임 벡터로 각각 취하는 단계를 더 포함한다.
상기 움직임 벡터를 예측하는 단계는, 상기 현재 블록이 매크로블록의 좌측 경계면에 위치할 때, 상기 좌측 메모리에 저장된 좌측 블록의 움직임 벡터를 좌측 움직임 벡터로 취하는 단계를 더 포함한다.
상기 움직임 벡터를 예측하는 단계는, 상기 현재 블록이 매크로블록의 좌측 경계면에 위치하지 않을 때, 상기 현재 수퍼매크로블록 내 좌측 블록의 움직임 벡터를 좌측 움직임 벡터로 취하는 단계를 더 포함한다.
상기 움직임 벡터를 예측하는 단계는, 상기 상측 움직임 벡터, 좌/우상측 움직임 벡터 그리고 좌측 움직임 벡터에 근거해서 현재 블록의 움직임 벡터를 예측하는 단계를 더 포함한다.
(실시예)
이하 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다.
본 발명의 움직임 벡터 예측 시스템은 움직임 벡터 예측시 필요한 주변 매크로블록의 움직임 벡터를 효율적으로 저장함으로써 MBAFF 모드 뿐만 아니라 노말 모드에서도 사용 가능하면서 크기가 최소화된 메모리를 구비한다. 또한, 본 발명은 현재 및 주변 매크로블록들의 코딩 방식에 따라서 메모리에 저장된 주변 블록의 움직임 벡터 MV_A, MV_B, MV_C 및 MV_D를 결정하는 방법과 주변 매크로블록의 움직임 벡터를 메모리에 갱신하는 방법을 제공한다.
현재 블록의 움직임 벡터를 추정하기 위해서는 주변 매크로블록 내 블록들의 움직임 벡터를 참조하여야 하며, 이러한 주변 블록들은 현재 매크로블록 전에 처리된 매크로블록들이므로 매크로블록의 움직임 벡터를 메모리에 저장하고 있어야 한다.
도 7은 현재 매크로블록 E와 주변 매크로블록 A, B, C 및 D를 4x4 블록 16개로 나눈 것을 보여주고 있다. 만약 현재 매크로블록 내 블록들이 최소 크기인 4x4 모드일 경우에는 총 16개 움직임 벡터를 예측하여야 하므로 주변 매크로블록도 가로 방향으로 4등분, 세로 방향으로 4등분 나뉘어져서 각각의 블록에 대한 움직임 벡터가 메모리에 저장되어야 한다.
주변 매크로블록의 움직임 벡터를 저장하는 메모리는 좌측 매크로블록 내 블록의 움직임 벡터(MV_A)를 저장하는 좌측(left) 메모리와 상측, 좌상측 그리고 우상측 매크로블록 내 블록의 움직임 벡터들(MV_B, MV_D, MV_C)를 저장하는 상측(upper) 메모리로 나누어진다.
현재 매크로블록(E)의 좌측 움직임 벡터(MV_A)를 예측하기 위해서는 좌측 매크로블록(A)의 우측 블록 그룹(A5, A7, A13, A15)의 움직임 벡터가 필요하며, 이는 좌측 메모리에 저장된다. 현재 매크로블록(E)의 상측 움직임 벡터(MV_B)를 예측하기 위해서 필요한 상측 매크로블록(B)의 하측 블록 그룹(B10, B11, B14, B15)의 움직임 벡터와, 현재 매크로블록(E)의 좌상측 움직임 벡터(MV_D)를 예측하기 위해서 필요한 좌상측 매크로블록(D)의 하측 블록 그룹에 속하는 블록(D15) 그리고 현재 매크로블록(E)의 우상측 움직임 벡터(MV_C)를 예측하기 위해서 필요한 우상측 매크 로블록(C)의 하측 블록 그룹에 속하는 블록(C10)은 상측 메모리에 저장된다.
예를 들어 도 7에서 현재 블록(E0)의 움직임 벡터를 예측하기 위해서는 좌측 메모리에 저장된 주변 블록(A5)의 움직임 벡터와 상측 메모리에 저장된 주변 블록들(B10, B11(또는 D15))의 움직임 벡터가 사용된다. 블록(E5)의 움직임 벡터를 예측하기 위해서는 상측 메모리에 저장된 주변 블록들(B15, C10(또는 B14))의 움직임 벡터와 현재 매크로블록 내 블록(E4)의 움직임 벡터가 사용된다. 반면에 블록(E3)의 움직임 벡터를 구하기 위해서는 현재 매크로블록 내 블록들(E2, E1, E4(또는 E0))의 움직임 벡터만 사용되며 좌측 메모리와 상측 메모리는 참고하지 않는다. 우상측 블록이 존재하지 않는 블록(E7) 같은 경우에는 우상측 블록 대신 좌상측 블록(E4)의 움직임 벡터를 사용하게 되므로 이같은 조건도 고려해 주어야 한다.
우선, 상측 메모리에 저장되는 움직임 벡터에 대해 이하 설명한다. 상측 메모리에 저장될 블록들의 움직임 벡터들은 현재 매크로블록의 상측, 좌상측, 우상측 매크로블록들의 움직임 벡터들이며, 메모리의 크기는 화면의 가로 측 매크로블록 수에 비례한다.
MBAFF 모드일 경우 앞에서 언급한 바와 같이 주변 블록의 움직임 벡터를 찾기 위해 복잡한 인덱싱 과정이 필요하다. 이러한 인덱싱 과정을 단순화시키기 위해서 본 발명에서는 수퍼 매크로블록의 상부 매크로블록과 하부 매크로블록의 움직임 벡터를 각각 다른 뱅크에 저장시키기 위해 상부 메모리를 두 개의 뱅크로 나눈다.
도 8a는 MBAFF 모드에서 상측 메모리에 저장될 주변 블록들을 보여주고 있으며, 도 8b는 노말 모드에서 상측 메모리에 저장될 주변 블록들을 보여주고 있다. 또한, 도 9는 상부 메모리 구조를 보여주고 있다. MBAFF 모드에서, 수퍼 매크로블록의 상부 매크로블록 내 블록들의 움직임 벡터들은 제 2 뱅크(BANK2)에 저장되고, 하부 매크로블록 블록들의 움직임 벡터는 제 1 뱅크(BANK1)에 저장된다. 한편, 노말 모드에서 수퍼 매크로블록은 하나의 매크로블록만을 포함하므로, 수퍼 매크로블록 내 움직임 벡터들은 제 2 뱅크(BANK2)에 저장된다.
상측 메모리(110)에는 하나의 매크로블록의 하측 블록 그룹에 속하는 4개의 블록들의 움직임 벡터들이 저장되므로, 메모리의 크기는 한 화면의 가로 방향의 매크로블록의 수에 비례한다. 수학식 1은 각 뱅크의 최소 크기를 보여주고 있으며, 수학식 2는 전체 메모리의 최소 크기를 보여주고 있다.
뱅크 크기 = (w x a + 1) x (움직임 벡터 크기)
메모리 크기 = 뱅크 크기 x 2
수학식 1에서, 움직임 벡터의 크기는 움직임 벡터를 표현하는 비트 수를 말하며, w는 한 프레임의 가로 방향의 매크로블록의 수 그리고 a는 하나의 매크로블록 내 가로 방향의 블록의 수이다. 이 실시예에서, 하나의 매크로블록은 가로방향으로 4 개의 블록들을 포함하므로, a는 4이다. 좌상측 블록에 대한 움직임 벡터를 저장하기 위하여 메모리의 크기는 (w x 4)보다 1만큼 큰 수의 배수이어야 한다.
예컨대, 도 8a에서, 현재 (2w+4) 및 (2w+5) 번째 매크로블록들에 대한 움직임 벡터를 예측하기 위해서 상측 메모리(110)에 저장된 움직임 벡터들은 빗금친 블 록들의 움직임 벡터들이다. 또한, 도 8b에서, 현재 (2w+2) 번째 매크로블록에 대한 움직임 벡터를 예측하기 위해서 상측 메모리(110)에 저장된 움직임 벡터들은 빗금친 블록들의 움직임 벡터들이다.
본 발명에서는 메모리의 크기를 최소화하기 위해, 상측 메모리에 움직임 벡터를 저장할 때, 이미 사용된 메모리 영역에 데이터를 재기입(overwrite)한다. 자세히 설명하면, 현재 매크로블록의 움직임 벡터가 예측된 후에는 현재 매크로블록의 하측 블록 그룹에 속하는 4개의 블록들의 움직임 벡터들이 메모리에 저장되어야 한다. 이 때, 메모리의 크기를 최소화하기 위해, 현재 매크로블록의 하측 블록 그룹에 속하는 4개의 블록들은 더 이상 참조할 가능성이 없는 움직임 벡터가 저장된 메모리 영역에 기입(overwrite)된다.
도 10은 MBAFF 모드에서 상측 메모리의 두 개의 뱅크들 중 상부 매크로블록 내 블록들의 움직임 벡터들을 저장하는 제 2 뱅크(BANK2)의 움직임 벡터 저장 방법을 개념적으로 보여주고 있다.
우선 도 10의 <S1>는 도 8에 도시된 0번째 매크로블록부터 (2w-2)번째 매크로블록의 움직임 벡터들이 제 2 뱅크(BANK2)에 저장된 상태를 보여주고 있다. 0번째 매크로블록부터 (2w-2)번째 매크로블록의 움직임 벡터들은 어드레스(ADDR) 0부터 (W-1)*4+3까지 순차적으로 저장된다. 이 상태에서는 (2w) 및 (2w+1)번째 매크로블록들에 대한 움직임 벡터 예측이 수행된다. 앞서 설명한 바와 같이, 상측 메모리에 저장되는 각 매크로블록의 블록들은 하측 블록 그룹에 속하는 4 개의 블록들이다.
도 10의 <S2>는 (2w) 및 (2w+1)번째 매크로블록들에 대한 움직임 벡터가 수행된 후 (2w) 번째 매크로블록들의 하측 블록 그룹에 속하는 4 개의 블록들의 움직임 벡터들이 제 2 뱅크(BANK2)에 저장되는 경우를 보여주고 있다. (2w) 번째 매크로블록들의 하측 블록 그룹에 속하는 4 개의 블록들의 움직임 벡터들의 일부는 제 2 뱅크(BANK2)의 더 이상 사용되지 않는 0 번째 매크로블록들의 하측 블록 그룹에 속하는 4 개의 블록들의 움직임 벡터들의 일부가 저장된 위치에 겹쳐쓰기(overwrite)된다. 즉, (2w) 번째 매크로블록의 하측 블록 그룹에 속하는 4 개의 블록들 중 첫 번째 블록은 제 2 뱅크(BANK2)의 어드레스 (w+4)에 기입된다. 그리고, (2w) 번째 매크로블록의 하측 블록 그룹에 속하는 4 개의 블록들 중 나머지 3 개의 블록들은 제 2 뱅크(BANK2)의 어드레스 0부터 2까지 순차적으로 기입된다.
도 10의 <S3>는 (2w+2)번째 매크로블록의 움직임 벡터들이 제 2 뱅크(BANK2)에 저장된 상태를 보여주고 있다. 도 10b와 유사하게, (2w+2)번째 매크로블록의 4개의 움직임 벡터들은 (2w+2)번째 매크로블록의 움직임 벡터가 예측된 후 불필요하게 된 메모리 영역(0번째 및 2번째 매크로블록들이 저장된 영역)인 어드레스 3 부터 6까지 겹쳐쓰기된다. 이와 같이, 한 화면의 마지막 매크로블록의 움직임 벡터가 예측될 때까지 현재 매크로블록의 움직임 벡터가 메모리에 겹쳐쓰기되므로 움직임 벡터 예측을 위해서 상측 메모리의 크기는 (4w+1)이면 충분하다.
도 11은 노말 모드에서 상측 메모리의 두 개의 뱅크들 중 제 2 뱅크(BANK2)에 매크로블록의 움직임 벡터들을 저장하는 방법을 개념적으로 보여주고 있다. 도 11에 도시된 노말 모드에서의 움직임 벡터 저장 방법은 도 10에 도시된 MBAFF 모드에서의 움직임 벡터 저장 방법과 유사하다. 다만, 노말 모드에서는 수퍼 매크로블록이 하나의 매크로블록만을 포함하므로, 0번째 매크로블록부터 순차적으로 제 2 뱅크(BANK2)에 저장된다.
좌측 메모리의 구조는 상측 메모리에 비해 간단하다. 도 12은 좌측 메모리를 보여주고 있다. 좌측 메모리에 저장될 움직임 벡터들은 현재 매크로블록의 좌측에 위치한 매크로블록들의 우측 블록 그룹들의 움직임 벡터들이다. 노말 모드일 경우에는 4개의 움직임 벡터들만 저장하면 되지만 MBAFF 모드일 경우에는 상부 매크로블록에서 4개의 움직임 벡터들, 하부 매크로블록에서 4개의 움직임 벡터들이 저장되어야 하므로 총 8개의 움직임 벡터가 좌측 메모리에 저장된다.
상술한 바와 같이, 현재 매크로블록의 움직임 벡터를 구하기 위해서는 주변 매크로블록 내 블록들의 움직임 벡터를 참조하므로 움직임 벡터를 저장할 메모리가 필요하다. 특히, MBAFF 모드일 경우에는 참조될 주변 블록들의 경우의 수가 증가하므로 저장되어야 할 움직임 벡터의 수도 증가하고 움직임 벡터 선택 조건도 복잡하게 된다. 따라서 본 발명에서는 이러한 문제를 해결하기 위해 메모리의 크기를 최대한 줄이면서 주변 블록의 움직임 벡터를 간단한 방법으로 선택할 수 있는 움직임 벡터 예측 장치를 제공한다.
도 13는 본 발명의 바람직한 실시예에 따른 움직임 벡터 예측 장치를 보여주 고 있다. 움직임 벡터 연산 장치(100)는 상측 메모리(110), 좌측 메모리(120), 움직임 벡터 예측기(130) 그리고 가산기(150)를 포함한다. 바람직한 실시예에 따른 본 발명의 상측 메모리(110)와 좌측 메모리(120)는 SRAM(Static Random Access Memory)로 구성된다.
움직임 벡터 예측기(130)는 가산기(150)로부터 출력되는 현재 수퍼 매크로블록의 움직임 벡터를 저장하기 위한 레지스터(140)를 포함한다. 움직임 벡터 예측기(130)는 외부로부터 입력되는 매크로블록의 정보에 기초하여 상측 메모리(110) 및 좌측 메모리(120)를 액세스하기 위한 어드레스 신호들을 생성한다. 매크로블록 정보는 노말/MBAFF 모드 정보, 현재 매크로블록과 주변 매크로블록의 코딩 모드가 프레임/필드 모드인지의 정보, 현재 매크로블록의 화소 집합의 크기 정보 등을 포함한다. 상측 메모리(110) 및 좌측 메모리(120)에 저장되는 움직임 벡터들은 앞서 설명한 바와 같다. 움직임 벡터 예측기(130)는 상측 메모리(110)와 좌측 메모리(120) 그리고 레지스터(140)에 저장된 현재 수퍼 매크로블록 내 블록들의 움직임 벡터들을 참조하여 현재 블록의 움직임 벡터를 예측한다. 가산기(180)는 움직임 벡터 예측기(140)로부터 출력되는 예측 움직임 벡터와 외부로부터 제공되는 움직임 벡터차를 더해서 현재 블록의 움직임 벡터를 출력한다.
움직임 벡터 예측기(140)에서 발생되는 상측 메모리(110)의 어드레스는 뱅크 어드레스, 시작 어드레스 그리고 오프셋 어드레스를 포함한다. 뱅크 어드레스는 도 6과 같이, 현재 매크로블록과 주변 매크로블록의 프레임/필드 모드에 따라서 결정되는 어드레스로서, 주변 수퍼 매크로블록 중에서 참조되는 블록의 위치가 상부 매크로블록에 속하면 제 2 뱅크(BANK2)가 선택되고, 참조되는 블록의 위치가 하부 매크로블록에 속하면 제 1 뱅크(BANK1)가 선택되도록 발생된다.
시작 어드레스는 매크로블록 단위로 변화하는 어드레스로서, 도 14과 같이, 매크로블록당 저장되는 움직임 벡터의 개수인 4씩 증가하며, 뱅크 사이즈보다 크면 (시작어드레스 - 뱅크 크기)로 갱신된다.
오프셋 어드레스는 블록 모드에 따라 주변 블록의 위치가 틀려지는 것을 보상하는 어드레스로서 블록의 크기에 따라 결정된다. 도 15a 내지 도 15c는 오프셋 어드레스를 결정하는 방법을 개념적으로 보여주고 있다. 예컨대, 도 15a에 도시된 바와 같이, 매크로블록 내 블록이 16x16 모드일 때 주변 블록(D)의 오프셋 어드레스는 시작 어드레스와 동일하게 0이고, 주변 블록 B의 오프셋 어드레스는 1, 주변 블록 C의 어드레스는 5이다.
도 15b와 같이, 매크로블록 내 블록이 8x8 모드일 경우에는 가로 방향으로 블록이 2개 존재하므로 오프셋 어드레스를 2번 계산해야 한다. 블록(B1)의 주변 블록(D)의 오프셋 어드레스는 시작 어드레스와 동일하게 0이고, 주변 블록(B)의 오프셋 어드레스는 1, 주변 블록(C)의 어드레스는 3이다. 블록(B2)의 주변 블록(D)의 오프셋 어드레스는 시작 어드레스와 동일한 값이 아닌 2이며, 주변 블록(B)의 오프셋 어드레스는 3, 주변 블록(C)의 어드레스는 5이다.
도 15c에서는 매크로블록 내 블록이 4x4 모드인 경우 오프셋 어드레스를 계산하는 방법을 보여주고 있다. 매크로블록 내 블록이 4x4 모드일 때 가로 방향으로 블록이 4개 존재하면 블록들(B3, B4, B5, B6) 각각의 주변 블록들(B, C, D)의 오프셋 어드레스는 앞서 설명한 방법들과 동일한 방법으로 구해진다.
매크로블록마다 변하는 뱅크 어드레스와 시작 어드레스 그리고 블록마다 변하는 오프셋 어드레스를 모두 더한 값이 상측 메모리(120)의 최종 어드레스가 된다.
좌측 메모리(120)는 현재 매크로블록의 좌측 매크로블록의 움직임 벡터만을 저장하므로, 도 5에 도시된 바와 같이 현재 매크로블록과 주변 매크로블록의 프레임/필드 모드만 알고 있으면 복잡한 인덱싱 과정없이 좌측 메모리(120)를 참조할 수 있다.
도 16a 내지 도 16b는 본 발명의 바람직한 실시예에 따른 움직임 벡터 예측 방법을 보여주는 플로우차트들이다.
단계 S300에서, 상측 메모리(110)의 시작 어드레스가 계산된다. 단계 S301에서, 블록(C)의 유효성이 판별된다. 도 2a 및 도 2b에 도시된 예들에서 주변 블록(C)는 현재 매크로블록의 움직임 벡터 예측을 위해 필요하나, 도 2c에 도시된 바와 같이, 블록(E1)의 주변 블록(C)가 현재 매크로블록 이후에 코딩되는 매크로블록 내 블록인 경우 블록(C) 대신 블록(D)가 주변 블록으로서 사용된다. 판별 결과, 블록(C)가 유효하면 단계 S310으로 진행한다.
단계 S310에서, 현재 블록(E)가 상측 매크로블록의 상측 블록 그룹에 속하는 지의 여부가 판별된다. 도 7을 참조하면, 현재 블록(E)가 상측 매크로블록의 상측 블록 그룹에 위치하는 블록들(E0, E1, E4) 중 어느 하나이면, 상측 메모리(110)로부터 주변 블록들(B, C)의 움직임 벡터들을 독출해서 각각 상측 움직임 벡터 및 우 상측 움직임 벡터로 취한다(단계 S311). 현재 블록 (E)가 상측 매크로블록의 상측 블록 그룹이 아닌 위치에 존재하는 블록들(E2, E3, E6, E8, E9, E12, E10, E11, E14) 중 어느 하나이면, 레지스터(140)에 저장된 현재 매크로블록에서 주변 블록들(B, C)의 움직임 벡터들을 각각 상측 움직임 벡터 및 우상측 움직임 벡터로 취한다(단계 S312).
앞서, 단계 S301의 판별 결과, 블록(C)가 유효하지 않으면 단계 S320으로 진행한다. 단계 S320에서, 현재 블록(E)가 상측 매크로블록의 경계면에 위치하는 지의 여부가 판별된다. 도 7을 참조하면, 현재 블록(E)가 상측 매크로블록의 상측 블록 그룹에 속하는 블록(E5)이면, 상측 메모리(110)로부터 주변 블록들(B, D)의 움직임 벡터들을 독출해서 각각 상측 움직임 벡터와 좌상측 움직임 벡터로 취한다(단계 S321). 만일 현재 블록(E)가 상측 매크로블록의 상측 블록 그룹이 아닌 위치에 존재하는 블록들(E7, E13, E15)이면 레지스터(140)에 저장된 현재 매크로블록(E) 내 주변 블록들(B, D)의 움직임 벡터를 각각 상측 움직임 벡터와 좌상측 움직임 벡터로 취한다(단계 S322).
단계들 S311, S312, S321 및 S322 중 어느 하나가 수행되고 나면, 현재 블록(E)에 대한 상측 움직임 벡터 그리고 우상측 움직임 벡터 또는 좌상측 움직임 벡터가 얻어진다.
단계 S330에서, 현재 블록(E)이 좌측 블록 그룹에 속하는 지의 여부가 판별된다. 현재 블록(E)이 좌측 매크로블록의 경계면에 위치하는 블록들(E0, E2, E8, E10) 중 어느 하나이면 좌측 메모리(120)로부터 주변 블록(A)의 움직임 벡터가 독 출된다(단계 S331). 현재 블록(E)이 좌측 매크로블록의 경계면에 위치하지 않는 블록들(E1, E3-E15) 중 어느 하나이면 현재 매크로블록에서 주변 블록(A)의 움직임 벡터가 구해진다(단계 S332).
단계 S331 또는 단계 S332가 수행되고 나면, 주변 블록(A)의 움직임 벡터가 얻어진다.
그러므로, 단계 S340에서는 구해진 주변 블록들(A, B 그리고 C 또는 D)의 움직임 벡터들을 이용하여 블록(E)의 예측 움직임 벡터가 계산된다.
앞선 단계 S301 내지 단계 S340은 도 13에 도시된 예측 움직임 벡터 검출부(140)에 의해서 수행된다. 예측 움직임 벡터 검출부(140)로부터 출력되는 예측 움직임 벡터는 가산기(150)에 의해서 더해진 후 상측 메모리(110) 및 좌측 메모리(120)로 제공된다.
단계 S341에서, 현재 블록(E)가 우측 블록 그룹에 속하는 지의 여부가 판별된다. 도 7을 참조하면, 현재 블록(E)가 우측 블록 그룹에 속하는 블록들(E5, E7, E13, E15) 중 하나이면 다음 매크로블록의 움직임 벡터 예측시 주변 블록(B)로서 사용되므로 좌측 메모리(120)에 저장되어야만 한다(단계 S342).
단계 S343에서, 현재 블록(E)가 하측 블록 그룹에 속하는 지의 여부가 판별된다. 다시 도 7을 참조하면, 현재 블록(E)가 하측 블록 그룹에 속하는 블록들(E10, E11, E14, E15) 중 하나이면 다음 매크로블록의 움직임 벡터 예측시 주변 블록들(B, C 또는 D)로서 사용되므로 상측 메모리(110)에 저장되어야만 한다(단계 S344).
단계 S345에서, 현재 매크로블록의 블록들 모두에 대한 움직임 벡터 예측이 수행되었는 지의 여부가 판별된다. 상술한 바와 같은 단계들에 의해서 하나의 매크로블록에 속하는 블록들 각각에 대한 움직임 벡터가 계산된다.
이와 같은 본 발명에 의하면, 노말 모드뿐만 아니라 MBAFF 모드에서도 움직임 보상 과정에서 수행되는 움직임 벡터 예측을 효율적으로 수행할 수 있다. 특히, 주변 매크로블록의 움직임 벡터를 저장하는 메모리를 효과적으로 구조화하여 메모리의 크기를 최소화하며, 더 나아가 MBAFF 모드시 필요한 매크로블록 인덱싱을 위한 메모리 어드레스 발생 과정을 단순화함으로써 전력소모를 줄일 수 있다.

Claims (52)

  1. 수퍼 매크로블록 내의 제 1 매크로블록 중 일부의 움직임 벡터들을 저장하기 위한 제 1 뱅크 및 상기 수퍼 매크로블록 내의 제 2 매크로블록 중 일부의 움직임 벡터들을 저장하기 위한제 2 뱅크로 구성되는 상측 메모리와;
    상기 수퍼 매크로블록 내의 좌측 블록 그룹의 움직임 벡터들을 저장하기 위한 좌측 메모리; 그리고
    동작 모드 및 현재 블록의 위치에 따라서 상기 상측 메모리의 상기 제 1및 제2 뱅크들 및 상기 좌측 메모리에 저장된 상기 움직임 벡터들을 참조하여 상기 현재 블록의 움직임 벡터를 예측하는 예측기를 포함하되;
    상기 예측기는,
    상기 현재 블록이 상기 수퍼 매크로블록 내의 상기 제 1 매크로블록에 해당할 때 상기 상측 메모리의 상기 제 1 뱅크 및 상기 좌측 메모리에 저장된 상기 움직임 벡터들을 참조하여 상기 현재 블록의 움직임 벡터를 예측하고, 상기 현재 블록이 상기 수퍼 매크로블록 내의 상기 제 2 매크로블록에 해당할 때 상기 상측 메모리의 상기 제 2 뱅크 및 상기 좌측 메모리에 저장된 상기 움직임 벡터들을 참조하여 상기 현재 블록의 움직임 벡터를 예측하는 움직임 벡터 연산 장치.
  2. 제 1 항에 있어서,
    상기 현재 블록의 상기 예측된 움직임 벡터와 움직임 벡터 차를 더하여 움직임 벡터를 출력하는 가산기를 더 포함하는 움직임 벡터 연산 장치.
  3. 제 2 항에 있어서,
    상기 예측기는,
    상기 현재 수퍼 매크로블록 내 블록에 대한 상기 가산기로부터 출력되는 움직임 벡터를 저장하기 위한 레지스터를 포함하는 움직임 벡터 연산 장치.
  4. 제 3 항에 있어서,
    상기 동작 모드가 MBAFF(MacroBlock Adaptive Frame/Field) 모드일 때,
    상기 수퍼 매크로블록은 세로 방향으로 인접한 상기 제 1 매크로블록 및 상기 제 2 매크로블록을 포함하는 움직임 벡터 연산 장치.
  5. 제 4 항에 있어서,
    상기 예측기는,
    상기 현재 블록이 상기 제 1 매크로블록에 속할 때, 상기 가산기로부터 출력되는 움직임 벡터가 상기 상측 메모리의 상기 제 1 뱅크에 저장되도록 제어하고,
    상기 현재 블록이 상기 제 2 매크로블록에 속할 때, 상기 가산기로부터 출력되는 움직임 벡터가 상기 상측 메모리의 상기 제 2 뱅크에 저장되도록 제어하는 움직임 벡터 연산 장치.
  6. 제 5 항에 있어서,
    상기 상측 메모리의 상기 제 1 및 제 2 뱅크들 각각의 크기는,
    ((w x a + 1) x s)이되,
    w는 한 프레임의 가로 방향의 매크로블록의 수,
    a는 하나의 매크로블록 내 가로 방향의 블록의 수, 그리고
    s는 움직임 벡터 크기 인 움직임 벡터 연산 장치.
  7. 제 6 항에 있어서,
    상기 상측 메모리의 상기 제 1 뱅크는,
    상기 수퍼 매크로블록의 좌상측 수퍼 매크로블록의 제 1 매크로블록의 하측 블록 그룹의 마지막 블록부터 좌측 수퍼 매크로블록의 제 1 매크로블록의 하측 블록 그룹까지의 움직임 벡터들을 저장하고,
    상기 상측 메모리의 상기 제 2 뱅크는,
    상기 수퍼 매크로블록의 좌상측 수퍼 매크로블록의 제 2 매크로블록의 하측 블록 그룹의 마지막 블록부터 좌측 수퍼 매크로블록의 제 2 매크로블록의 하측 블록 그룹까지의 움직임 벡터들을 저장하는 움직임 벡터 연산 장치.
  8. 제 7 항에 있어서,
    상기 좌상측 수퍼 매크로블록은 상기 수퍼 매크로블록과 좌측 대각선 방향으로 인접한 수퍼 매크로블록이고,
    상기 좌측 수퍼 매크로블록은 상기 수퍼 매크로블록과 좌측 방향으로 인접한 수퍼 매크로블록인 움직임 벡터 연산 장치.
  9. 제 8 항에 있어서,
    상기 예측기는,
    시작 어드레스, 뱅크 어드레스 및 오프셋 어드레스를 포함하는 어드레스를 발생하여 상기 상측 메모리를 액세스하되,
    상기 시작 어드레스는 상기 매크로블록의 상기 하측 블록 그룹에 포함된 블록의 수 만큼씩 증가되고,
    상기 시작 어드레스가 상기 뱅크 크기보다 클 때 상기 시작 어드레스는 (시작 어드레스-뱅크 크기)로 재설정되며;
    상기 뱅크 어드레스는 상기 상측 메모리의 상기 제 1 및 제 2 뱅크들을 선택하기 위한 어드레스이고,
    상기 오프셋 어드레스는 상기 매크로블록 내 블록의 크기에 따라 설정되는 움직임 벡터 연산 장치.
  10. 제 1 및 제 2 뱅크들을 포함하는 상측 메모리, 좌측 메모리 그리고 현재 수퍼 매크로블록의 움직임 벡터를 저장하기 위한 레지스터를 포함하는 움직임 벡터 연산 장치의 움직임 벡터 연산 방법에 있어서:
    동작 모드 그리고 현재 블록의 현재 수퍼 매크로블록 내 위치에 따라서 상기 상측 메모리의 상기 제1 및 제2 뱅크들, 상기 좌측 메모리 그리고 상기 레지스터에 저장된 움직임 벡터들을 참조하여 상기 현재 블록의 움직임 벡터를 계산하는 단계; 및
    상기 동작 모드 그리고 상기 현재 블록의 상기 현재 수퍼 매크로블록 내 위치에 따라서 상기 움직임 벡터를 상측 메모리의 상기 제1 및 제2 뱅크들 및 상기 좌측 메모리에 선택적으로 저장하는 단계를 포함하되;
    상기 수퍼 매크로블록은 제1 매크로블록 및 제2 매크로블록을 포함하며,
    상기 움직임 벡터를 상측 메모리의 상기 제1 및 제2 뱅크들 및 상기 좌측 메모리에 선택적으로 저장하는 단계는,
    상기 현재 블록이 상기 수퍼 매크로블록 내의 상기 제 1 매크로블록에 해당할 때 상기 움직임 벡터를 상기 상측 메모리의 상기 제1 뱅크 및 상기 좌측 메모리에 저장하고, 상기 현재 블록이 상기 수퍼 매크로블록 내의 상기 제 2 매크로블록에 해당할 때 상기 움직임 벡터를 상기 상측 메모리의 상기 제 2 뱅크 및 상기 좌측 메모리에 저장하는 움직임 벡터 연산 방법.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
KR20040103717A 2004-12-09 2004-12-09 움직임 벡터 연산 장치 및 그 방법 KR101104828B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR20040103717A KR101104828B1 (ko) 2004-12-09 2004-12-09 움직임 벡터 연산 장치 및 그 방법
US11/220,752 US7853091B2 (en) 2004-12-09 2005-09-07 Motion vector operation devices and methods including prediction
JP2005352532A JP4921784B2 (ja) 2004-12-09 2005-12-06 動きベクタ演算装置及びその方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20040103717A KR101104828B1 (ko) 2004-12-09 2004-12-09 움직임 벡터 연산 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20060065013A KR20060065013A (ko) 2006-06-14
KR101104828B1 true KR101104828B1 (ko) 2012-01-16

Family

ID=36611464

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20040103717A KR101104828B1 (ko) 2004-12-09 2004-12-09 움직임 벡터 연산 장치 및 그 방법

Country Status (3)

Country Link
US (1) US7853091B2 (ko)
JP (1) JP4921784B2 (ko)
KR (1) KR101104828B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101104828B1 (ko) * 2004-12-09 2012-01-16 삼성전자주식회사 움직임 벡터 연산 장치 및 그 방법
JP4534935B2 (ja) * 2005-10-04 2010-09-01 株式会社日立製作所 トランスコーダ、記録装置及びトランスコード方法
JP4712643B2 (ja) * 2006-08-17 2011-06-29 富士通セミコンダクター株式会社 フレーム間予測処理装置、フレーム間予測方法、画像符号化装置及び画像復号装置
JP4592656B2 (ja) * 2006-08-17 2010-12-01 富士通セミコンダクター株式会社 動き予測処理装置、画像符号化装置および画像復号化装置
JP4763549B2 (ja) * 2006-08-18 2011-08-31 富士通セミコンダクター株式会社 フレーム間予測処理装置、画像符号化装置、及び画像復号化装置
KR101325795B1 (ko) * 2006-08-22 2013-11-05 엘지전자 주식회사 H.264/avc에서 매크로블록 데이터의 디코딩 방법 및디코딩 장치
US20100232511A1 (en) * 2009-03-12 2010-09-16 Himax Media Soltuions, Inc. Motion compensator, motion compensating method, and motion-compensated video decoder implementing the same
KR20110068793A (ko) * 2009-12-16 2011-06-22 한국전자통신연구원 영상 부호화 및 복호화를 위한 장치 및 방법
JP2011259205A (ja) 2010-06-09 2011-12-22 Sony Corp 画像復号化装置と画像符号化装置およびその方法とプログラム
US9313494B2 (en) 2011-06-20 2016-04-12 Qualcomm Incorporated Parallelization friendly merge candidates for video coding
US9699456B2 (en) 2011-07-20 2017-07-04 Qualcomm Incorporated Buffering prediction data in video coding

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990005602A (ko) * 1997-06-30 1999-01-25 배순훈 프레임 메모리에 있어서 듀얼 프라임 필드 예측방법
KR20010082933A (ko) * 2000-02-22 2001-08-31 송문섭 움직임 벡터 메모리의 갱신방법 및 장치
US6519287B1 (en) 1998-07-13 2003-02-11 Motorola, Inc. Method and apparatus for encoding and decoding video signals by using storage and retrieval of motion vectors

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448310A (en) * 1993-04-27 1995-09-05 Array Microsystems, Inc. Motion estimation coprocessor
KR950014343B1 (ko) * 1993-05-20 1995-11-24 한국방송공사 고화질 티브(hdtv)의 화상데이타 움직임 추정방법 및 그 장치
JPH07250328A (ja) * 1994-01-21 1995-09-26 Mitsubishi Electric Corp 動きベクトル検出装置
US6301299B1 (en) * 1994-10-28 2001-10-09 Matsushita Electric Industrial Co., Ltd. Memory controller for an ATSC video decoder
US5742814A (en) * 1995-11-01 1998-04-21 Imec Vzw Background memory allocation for multi-dimensional signal processing
JP4014263B2 (ja) * 1997-10-01 2007-11-28 松下電器産業株式会社 映像信号変換装置及び映像信号変換方法
US6552749B1 (en) * 1999-01-29 2003-04-22 Intel Corporation Method and apparatus for video motion compensation, reduction and color formatting
US7035470B2 (en) * 2001-02-05 2006-04-25 Ati Technologies, Inc. System for handling errors related to IDCT data and method thereof
JP4114859B2 (ja) * 2002-01-09 2008-07-09 松下電器産業株式会社 動きベクトル符号化方法および動きベクトル復号化方法
JP2003319391A (ja) * 2002-04-26 2003-11-07 Sony Corp 符号化装置および方法、復号装置および方法、記録媒体、並びにプログラム
KR100774296B1 (ko) * 2002-07-16 2007-11-08 삼성전자주식회사 움직임 벡터 부호화 방법, 복호화 방법 및 그 장치
NO318167B1 (no) * 2002-11-27 2005-02-14 Tandberg Telecom As Vektorprediksjon
JP2004187107A (ja) 2002-12-04 2004-07-02 Fujitsu Ltd 動画像符号化方法及び動画像復号化方法
JP3715283B2 (ja) * 2003-02-04 2005-11-09 株式会社半導体理工学研究センター 動画像の画像圧縮符号化方法及び装置
US7567617B2 (en) * 2003-09-07 2009-07-28 Microsoft Corporation Predicting motion vectors for fields of forward-predicted interlaced video frames
JP4577048B2 (ja) * 2004-03-11 2010-11-10 パナソニック株式会社 画像符号化方法、画像符号化装置および画像符号化プログラム
KR101104828B1 (ko) * 2004-12-09 2012-01-16 삼성전자주식회사 움직임 벡터 연산 장치 및 그 방법
JP4712642B2 (ja) * 2006-08-17 2011-06-29 富士通セミコンダクター株式会社 デブロッキングフィルタ、画像符号化装置および画像復号化装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990005602A (ko) * 1997-06-30 1999-01-25 배순훈 프레임 메모리에 있어서 듀얼 프라임 필드 예측방법
US6519287B1 (en) 1998-07-13 2003-02-11 Motorola, Inc. Method and apparatus for encoding and decoding video signals by using storage and retrieval of motion vectors
KR20010082933A (ko) * 2000-02-22 2001-08-31 송문섭 움직임 벡터 메모리의 갱신방법 및 장치

Also Published As

Publication number Publication date
US7853091B2 (en) 2010-12-14
KR20060065013A (ko) 2006-06-14
US20060140275A1 (en) 2006-06-29
JP4921784B2 (ja) 2012-04-25
JP2006166459A (ja) 2006-06-22

Similar Documents

Publication Publication Date Title
JP4921784B2 (ja) 動きベクタ演算装置及びその方法
JP5422124B2 (ja) 参照ピクチャ選択方法、画像符号化方法、プログラム、画像符号化装置および半導体装置
KR100931750B1 (ko) 움직임 벡터 계산방법
KR101068707B1 (ko) 움직임 벡터 계산방법
US7881376B2 (en) Motion compensation apparatus
KR100267805B1 (ko) 오염영역을 판정하는 동화상복호방법 및 장치
US9332264B2 (en) Configurable performance motion estimation for video encoding
US9699451B2 (en) Motion estimation compatible with multiple standards
US20050238102A1 (en) Hierarchical motion estimation apparatus and method
JPH1023423A (ja) 画像符号化装置および画像復号化装置
MX2011000261A (es) Dispositivo codificador de imagenes, dispositivo descodificador de imagenes, metodo de codificacion de imagenes, y metodo de descodificacion de imagenes.
KR20100038335A (ko) 비디오 데이터의 인코딩을 위한 인코딩 유형 및 예측 모드 선택
EP1761062A1 (en) Generating and storing image data
JPWO2006006489A1 (ja) 動き検出装置
US6353683B1 (en) Method and apparatus of image processing, and data storage media
US8644380B2 (en) Integer pixel motion estimation system, motion estimation system for quarter-pixel luminance, motion estimation system for quarter-pixel chrominance, motion estimation system for combined luminance, motion estimation system for combined luminance and chrominance, and motion estimation system for quarter-pixel luminance and chrominance
US11082688B2 (en) Restricted overlapped block motion compensation
JP5180887B2 (ja) 符号化装置およびその方法
JP2008136187A (ja) トランスコード装置及びトランスコード方法
KR100834443B1 (ko) 비디오 코덱을 위한 메모리 구조 및 메모리 액세스 방법
KR100708183B1 (ko) 움직임 추정을 위한 영상 데이터 저장 장치 및 그 데이터저장 방법
KR101368732B1 (ko) 고성능 h.264/avc 인코더용 움직임 예측장치 및 움직임 예측방법
Semsarzadeh et al. A fine-grain distortion and complexity aware parameter tuning model for the H. 264/AVC encoder
CN1323376C (zh) 以编码信息为基础的运动自适应循序扫描装置及方法
US20220248001A1 (en) Image component prediction method and device, and computer storage medium

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
LAPS Lapse due to unpaid annual fee