KR100742772B1 - 가변 블록 움직임 추정장치 및 그 방법 - Google Patents
가변 블록 움직임 추정장치 및 그 방법 Download PDFInfo
- Publication number
- KR100742772B1 KR100742772B1 KR1020050029672A KR20050029672A KR100742772B1 KR 100742772 B1 KR100742772 B1 KR 100742772B1 KR 1020050029672 A KR1020050029672 A KR 1020050029672A KR 20050029672 A KR20050029672 A KR 20050029672A KR 100742772 B1 KR100742772 B1 KR 100742772B1
- Authority
- KR
- South Korea
- Prior art keywords
- motion vector
- macroblock
- sad
- bit rate
- motion
- Prior art date
Links
Images
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/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/57—Motion estimation characterised by a search window with variable size or shape
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- 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
움직임 추정장치 및 그 방법이 개시된다. 본 움직임 추정장치는 입력 영상의 현재 프레임과 이전 프레임을 기준으로, 각각 다른 크기의 매크로블럭을 사용하도록 설정된 복수의 매크로블럭 분할 모드별로 SAD 값을 각각 산출하는 SAD 로직부, 복수의 매크로블럭 분할 모드별로, 움직임 벡터와 움직임 벡터의 전송시 비트율인 움직임 벡터 비트율을 각각 산출하는 움직임 벡터 비트율 생성부, 및 복수의 매크로블럭 분할 모드별로 각각 산출된 SAD값과 움직임 벡터의 비트율에 기초하여, 복수의 매크로블럭 분할 모드 중 어느 하나의 분할 모드를 선택하고, 선택된 분할 모드에 대응하는 움직임 벡터를 최종 움직임 벡터로 산출하는 RD 비용 함수부를 구비한다. 이에 의해, 움직임 추정시 처리 속도를 향상시키고 전력소모를 줄일 수 있다.
움직임 벡터, 움직임 추정, H.264/AVC, 매크로블럭, SAD
Description
도 1은 H.264/AVC의 응용 분야를 도시한 도면,
도 2는 H.264/AVC의 프로파일을 도시한 도면,
도 3은 종래의 압축 표준과 H.264/AVC의 PSNR-비트율 비교 도면,
도 4는 H.264/AVC 인코더 구조를 도시한 도면,
도 5는 종래의 압축 표준과 H.264/AVC의 비트율 비교 도면,
도 6은 H.264/AVC 인코더의 움직임 추정 및 움직임 보상 블록의 구조를 도시한 도면,
도 7은 H.264/AVC 인코더의 Intra 예측 블록의 구조를 도시한 도면,
도 8은 H.264/AVC 인코더의 4x4 정수형 변환(integer transform) 블록의 구조를 도시한 도면,
도 9는 디블로킹(deblocking) 필터 블록을 설명하기 위해 참조되는 도면,
도 10은 JM8.5 인코더의 프로파일링(profiling) 방법의 설명에 참조되는 도면,
도 11은 JM8.5 인코더의 플랫 프로파일링(flat profiling)의 설명에 참조되는 도면,
도 12는 움직임 추정 블록의 콜 그래프 프로파일링(call graph profiling) 결과를 나타낸 도면,
도 13은 JM8.5 인코더의 메모리 참조 시간을 나타낸 도면,
도 14는 JM8.5 인코더의 성능 측정 결과를 나타낸 도면,
도 15는 블록 매칭 알고리즘의 설명에 참조되는 도면,
도 16은 매크로블록 분할 모드의 설명에 참조되는 도면,
도 17은 트리 구조 매크로블록 분할 모드의 설명에 참조되는 도면,
도 18은 본 발명에 따른 움직임 추정장치의 블럭도,
도 19는 도 18의 SAD 로직부의 구조를 도시한 도면,
도 20은 종래의 SAD 저장 구조를 도시한 도면,
도 21는 본 발명에 따른 움직임 추정장치에서 사용하는 SAD 저장 구조,
도 22은 매크로블록 참조 순서를 도시한 도면,
도 23는 도 18의 움직임 벡터 비트율 생성부의 구조를 도시한 도면,
도 24는 매크로블록 분할 모드 설정의 설명에 참조되는 도면,
도 25는 도 18의 RD 비용 함수부의 구조를 도시한 도면,
도 26는 픽셀 처리를 위한 DPCM 로직부 시뮬레이션 파형,
도 27는 픽셀 처리를 위한 DPCM 로직부 합성,
도 28는 SAD 로직부 시뮬레이션 파형,
도 29은 16x16 블록 SAD 모듈 합성,
도 30은 움직임 벡터 비트율 생성부 시뮬레이션 파형,
도 31는 움직임 벡터 비트율 생성부 합성,
도 32은 RD 비용 함수부 시뮬레이션 파형,
도 33는 RD 비용 함수부 합성,
도 34은 본 발명에 따른 움직임 추정장치 시뮬레이션 파형,
도 35은 본 발명에 따른 움직임 추정장치 합성,
도 36은 본 발명에 따른 움직임 추정장치 레이아웃의 일 예,
도 37은 본 발명에 따른 움직임 추정장치 레이아웃 시뮬레이션 파형, 그리고
도 38는 본 발명에 따른 움직임 추정장치의 테스트 플랫폼의 일 예이다.
본 발명은 움직임 추정장치 및 그 방법에 관한 것으로, 더욱 상세하게는 가변 블럭을 이용하여 고속 및 저전력으로 움직임 추정이 가능한 움직임 추정장치 및 그 방법에 관한 것이다.
HDTV, PDA, 핸드폰 등의 다양한 멀티미디어 기기의 발전과 디지털 멀티미디어 방송(Digital Multimedia Broadcasting) 및 초고속 인터넷 인프라의 확산으로 인하여 고화질 동영상 서비스에 대한 수요가 증가하고 있으며, 고화질의 동영상 처리를 위해서는 방대한 양의 영상 정보를 효율적으로 압축할 수 있는 기술이 필요하다. 이와 같은 동영상 압축 기술에 관한 표준화 작업을 수행하고 있는 대표적인 단체로 MPEG(Moving Picture Experts Group)과 ITU-T(International Telecommunications Union - Telecommunication Standardization Sector) 등이 있으며, 지금까지 MPEG-1, MPEG-2, MPEG-4, H.261, H.263 등의 다양한 동영상 압축 표준을 제정하여 왔다.
최근 더욱 효율적인 동영상 압축 표준의 제정을 위하여 ITU-T 산하 VCEG(Video Coding Experts Group)와 MPEG은 2001년 12월 JVT(Joint Video Team)를 결성하였고, 2003년 H.264/AVC(Advanced Video Coding) 동영상 압축 표준을 확정하였다. ISO/IEC 14496-10 AVC로도 불리는 H.264/AVC는 VCEG에서 고화질 동영상 압축 표준 개발을 목표로 1997년부터 작업이 추진되었고, 기존의 최적화된 MPEG-4 기반 소프트웨어 보다 H.264/AVC 기반 소프트웨어의 동영상 품질이 월등하다고 판단됨에 따라 MPEG이 합류하여 JVT에 의해 개발된 것이다.
H.264/AVC는 차세대 멀티미디어 기기에서의 고화질 동영상 압축을 위한 기반 기술들을 정의하고 있으며, 기존의 압축 표준들에 비하여 MPEG-4 simple 프로파일(Profile) 대비 50%, H.263 대비 70%의 월등한 압축률을 가지고, 적은 양의 데이터 전송으로도 다양한 멀티미디어 서비스 제공이 가능하도록 한다. 따라서, H.264/AVC는 제한된 대역폭에 보다 많은 데이터를 고품질로 내보내고자 하는 업계의 요구에 부응할 수 있는 동영상 압축 표준이라고 할 수 있다.
그러나, H.264/AVC는 기존의 압축 표준들과 비교하여 최대 20배의 계산량을 요구하기 때문에 동영상의 실시간 처리가 어려우며, 따라서 실질적인 응용 범위가 크게 제한되어 있는 실정이다. 특히, 디지털 멀티미디어 방송과 모바일 및 멀티미디어 응용에서는 동영상의 실시간 처리 능력이 매우 중요하다고 할 수 있으며, 동영상의 실시간 처리가 가능해진다면 인터넷으로도 무리 없이 DVD 수준의 동영상(약 3.5Mbps)을 전송할 수 있고, 주문형 비디오(Video on Demand) 등의 콘텐츠 서비스에도 매우 유용할 것으로 예상된다. 또한, 계산량에 비례하여 증가하는 전력 소모 를 최소화할 수 있다면 PDA, 핸드폰 등의 제한된 전원을 사용하는 모바일 기기에도 매우 유용할 것으로 생각된다.
현재 동영상의 실시간 처리가 가능하도록 하기 위한 H.264/AVC 코덱(CODEC)의 SoC(System on a Chip) 형태의 구현 기술이 관련 학계 및 업계에서 매우 중요한 이슈가 되고 있다. 그러나, CIF(352x288)급 이상의 영상을 풀 프레임(full-frame)(30 frames/sec)으로 처리하기 위한 하드웨어 구조에 관한 연구는 아직 초기 단계라고 할 수 있으며, 저전력 구조에 대한 연구 또한 동일한 실정이다.
도 1은 H.264/AVC의 응용 분야를 나타낸 것이다. H.264/AVC 동영상 압축 표준은 기존의 동영상 압축 표준에서 사용되었던 기술들과는 다른 새로운 압축 기술들을 적용함으로써 MPEG-4 simple 프로파일 대비 50%, H.263 대비 70%의 월등한 압축률을 가지며, 적은 양의 데이터 전송으로도 다양한 멀티미디어 서비스 제공이 가능하도록 한다. 따라서, 대역폭의 비용이 상대적으로 높은 디지털 멀티미디어 방송(Digital Multimedia Broadcasting)과 모바일 및 멀티미디어 응용 분야에 매우 적합한 코덱(CODEC)이라고 할 수 있다.
도 2는 H.264/AVC의 프로파일을 나타낸 것이다. H.264/AVC는 동영상 압축의 품질을 다양하게 설정할 수 있도록 Baseline, Main, Extended의 3가지 프로파일을 정의하고 있다.
Baseline 프로파일은 I-슬라이스(Intra-slice)와 P-슬라이스(Predicted-slice)를 이용한 intra 및 inter 코딩을 지원하며, 데이터의 전송에는 CAVLC(Context-Adaptive Variable-Length Codes)를 이용한 엔트로피(Entropy) 코딩을 지원한다. Main 프로파일은 I-슬라이스와 P-슬라이스 이외에 B-슬라이스(Bi-predictive-slice)를 지원하며, 엔트로피 코딩에는 CABAC(Context-Based Arithmetic Coding)를 지원한다. 확장된(Extended) 프로파일은 스트리밍(Streaming) 프로파일로도 불리며 SI-슬라이스(Switching I-slice) 및 SP-슬라이스(Switching P-slice)를 사용하여 압축 데이터의 비트율을 줄이고, 압축 데이터를 분할하여 에러에 대한 복원력을 향상시켰다.
H.264/AVC가 MPEG-4, H.263 등의 압축 표준들에 비하여 우수한 압축 성능을 보이는 것은 향상된 예측 성능 및 코딩 효율과 에러 강인성을 가지기 때문이다. 향상된 예측 성능 및 코딩 효율은 저속 비트율부터 고속 비트율까지 압축률을 50% 개선시킬 수 있게 하였으며, 낮은 비트율 뿐만 아니라 높은 비트율에서도 고화질의 영상을 제공할 수 있다. 또한, 인터넷 망에서의 패킷 손실과 무선 네트워크 망에서의 비트 에러에 강인하게 대처할 수 있도록 전송되는 데이터에 다양한 분할 알고리즘을 적용하여 성능을 개선하였다.
도 3은 기존의 압축 표준과 H.264/AVC의 PSNR(Peak Signal-to-Noise Ratio)-비트율 비교를 나타낸 것이다. 동일한 PSNR에서 MPEG-2 대비 50%, MPEG-4 대비 30%의 비트율 감소를 확인할 수 있으며, 이것은 동일한 화질의 영상을 표현하기 위해 기존의 압축 표준들 보다 적은 양의 비트수를 사용한다는 것을 의미한다.
도 4는 H.264/AVC 인코더의 구조를 나타낸 것이다. H.264/AVC의 기본적인 인코더 구조는, MPEG-2, MPEG-4 등의 기존의 동영상 압축 표준에서 제안된 구조와 유사하다. 그러나, H.264/AVC 인코더의 각 기능 블록들의 알고리즘은 압축 효율이 우수한 방식을 채택하였기 때문에 매우 복잡하며, 기존의 압축 표준에서는 사용되지 않았던 새로운 알고리즘과 기능 블록들을 추가하였다.
동영상 데이터가 입력되면 H.264/AVC 인코더는 I-슬라이스를 이용한 인트라(intra) 예측을 수행하고, 예측된 값을 4x4 픽셀(Pixel) 단위로 정수형 변환(integer transform)한 후 스케일링(Scaling) 및 양자화(Quantization)의 과정을 거쳐 엔트로피 코딩을 수행하게 된다. 첫 번째 동영상 프레임의 인코딩 과정이 끝나면 인코더는 인코딩된 동영상 프레임을 프레임 버퍼에 저장하고, 다음 프레임의 인트라(intra) 및 인터(inter) 예측 시에 참조하게 된다.
도 4의 인코더 구조 중에 가변 블록 움직임 추정, 4x4 정수형 변환(integer transform), 디블로킹(deblocking) 필터, 엔트로피 코딩 등의 기능 블록들과 최대 5개의 참조 프레임을 가지는 것은 영상 데이터의 시간적 중복성과 공간적 중복성을 최소화하기 위한 H.264/AVC 인코더 만의 특징이며, 이러한 특징들은 전송되는 데이터 비트율을 감소시킬 수 있다.
도 5는 기존의 압축 표준과 H.264/AVC의 비트율 비교를 나타낸 것이다. 도 5를 참조하면, 2002년 이후 MPEG-2와 MPEG-4의 비트율은 2Mbits/sec에서 수렴되는 반면 H.264의 비트율은 1Mbits/sec 이하로 개선될 것으로 기대되고 있다.
한편, H.264/AVC 인코더에서 움직임 추정 및 움직임 보상 블록, 인트라(Intra) 예측 블록, 4x4 정수형 변환(Integer Transform) 블록, 및 디블로킹(Deblocking) 필터 블록들은, 디지털 멀티미디어 방송 및 모바일 응용의 실시간 처리 및 저전력 구동을 위하여 우선적으로 고려되어야 할 블록들이다.
도 6은 H.264/AVC 인코더의 움직임 추정 및 움직임 보상 블록을 설명한 것이다. H.264/AVC 인코더는 움직임 추정 및 움직임 보상의 성능을 개선시키기 위하여 7가지의 매크로블록 분할 모드(Macroblock Partitioning Mode)를 정의하였고, 정확도를 1/4 픽셀로 증가시켰기 때문에 MPEG-4, H.263 등에 비하여 계산량이 현저하게 증가하였고, 이에 따른 전력 소모 또한 증가하였다. 실제로 H.264/AVC 인코더에서 차지하는 계산량의 70% 이상을 이들 블록에서 차지하고 있으며, 따라서, 고속으로 동작하는 움직임 추정장치 및 움직임 보상장치의 저전력 설계가 중요한 이슈가 되고 있다.
도 7은 H.264/AVC 인코더의 intra 예측 블록을 설명한 것이다. Intra 예측의 성능을 개선시키기 위해서 H.264/AVC는 조도 성분에 대한 9개의 추정 방향과 채도 성분에 대한 한 개의 추정 방향을 정의하고 있으며, 이로 인해 움직임 추정 및 움직임 보상 블록 다음으로 많은 계산량을 요구하게 된다. 또한, 각 추정 방향에 대한 계산값을 저장하기 위한 내부 메모리의 사용이 매우 빈번한 블록이므로 전력 소모를 고려한 저전력 설계가 요구되는 블록이다.
도 8은 H.264/AVC 인코더의 4x4 정수형 변환(integer transform) 블록을 설명한 것이다H.264/AVC 인코더는 기존의 압축 표준들에서 채택하고 있는 DCT(Discrete Cosine Transform)의 연산량을 줄이기 위해서 정수형 변환(integer transform)을 채택하였다. 이것은 하드웨어 및 소프트웨어에서 연산 시간, 메모리 사용 등의 많은 자원을 차지하는 곱셈 및 나눗셈 연산을 시프트 연산으로 대체하여 보다 간단하면서도 고속으로 동작하는 변환을 구현한 것이다. 그러나, 변환에 이용되는 블록의 크기가 4x4 크기로 줄어들었고, 조도 및 채도의 DC 성분들에 대하여 각각 4x4, 2x2 하다마드 변환(hadamard transform)을 수행해야 하기 때문에 고속의 정수형 변환(integer transform)이 가능하도록 고려되어야 한다.
도 9는 H.264/AVC 인코더의 디블로킹(deblocking) 필터 블록을 설명한 것이다. H.264/AVC 인코더는 정수형 변환(integer transform) 시 기존의 압축 표준들과 같이 블록 기반 변환(transform)을 수행하기 때문에 블록과 블록의 경계 부분에 고주파 성분이 나타나는 특성이 있으며, 이것은 화질의 저하와 전송되는 비트율의 증가로 이어진다. 따라서, H.264/AVC는 주변 블록들을 조합하여 고주파 성분을 제거할 수 있는 디블로킹(deblocking) 필터 블록을 기본으로 채택하였다. 움직임 추정 및 움직임 보상에 사용되는 참조 영상은 디블로킹(deblocking) 필터를 거쳐 내부 메모리에 저장되기 때문에 움직임 추정 및 움직임 보상이 추가적인 지연 없이 원활히 수행되기 위해서는 고속으로 참조 영상을 생성해 낼 수 있는 디블로킹(deblocking) 필터의 설계가 필요하다.
다음으로, H.264/AVC 성능 분석에 대하여 기술하기로 한다. 먼저, 성능 분석 방법은, H.264/AVC 참조 소프트웨어 JM8.5 인코더의 성능을 프로파일링(profiling)을 통하여 분석할 수 있고, 이를 최적의 하드웨어/소프트웨어 분할(Hardware/Software Partitioning)에 이용할 수 있다. 여기서, 프로파일링(Profiling) 이란 프로그램의 성능을 향상시키기 위해 최적화(Optimization) 되어야 하는 코드 또는 함수(Function)를 찾는 방법이다.
JM8.5 인코더의 성능 분석에는 프로그램에서 실행된 각 함수들의 시간을 분석하는 플랫 프로파일링(flat profiling) 방법과, 각 함수에서 호출된 함수들의 실행 시간을 트리 구조로 분석하는 콜 그래프 프로파일링(call graph profiling) 방법을 사용하였다. 플랫 프로파일링(Flat profiling)을 통하여 프로그램에서 CPU를 가장 많이 사용하는 함수를 찾아낼 수 있고, 콜 그래프 프로파일링(call graph profiling)을 통하여 각 함수들의 연관성을 파악할 수 있다.
도 10은 JM8.5 인코더의 프로파일링(profiling) 방법을 나타낸 것이다.
도 10 에서, CPU는 현재 임베디드 프로세서로 가장 많이 쓰이고 있는ARM(Advanced RISC Machines) 코어를 사용하였고, ARM7TDMI, ARM9TDMI, ARM920T, ARM940T의 4가지 코어 환경에서 성능 분석을 하였다. 동영상이 입력되면 JM8.5 인코더는 설정되어 있는 ARM 코어의 동작에 따라서 인코딩을 수행한 후 출력값을 내보내고, 각 함수의 실행 시간을 보고한다.
도 11은 JM8.5 인코더의 플랫 프로파일링(flat profiling) 결과를 나타낸 것이다. 인코더의 기능 블록들 중에서 움직임 추정 블록, 인트라(intra) 예측 블록, 4x4 정수형 변환(integer transform) 블록, 디블로킹(deblocking) 필터 블록이 대부분의 실행 시간을 차지하였으며, 이 중에서 움직임 추정 블록이 인코더 실행 시간의 34.8%를 차지하여 가장 오랜 시간 동안 CPU를 사용하였고, 인트라(intra) 예측 블록은 25.69%의 인코더 실행 시간을 차지하였다. 이와 같은 결과들은 움직임 추정 블록 등과 같이 블록 매칭(Block Matching)을 수행하는 기능 블록들의 계산량이 많다는 것을 의미하며, 이들 블록들을 최적화할 경우 인코더의 성능 향상을 기대할 수 있다. 4x4 정수형 변환(integer transform) 및 디블로킹(deblocking) 필터 블록은 각각 인코더 실행 시간의 10.94%, 9.23%를 사용하였다.
도 12는 움직임 추정 블록의 콜 그래프 프로파일링(call graph profiling) 결과를 나타낸 것이다. 움직임 추정 블록에서 블록 매칭을 수행하는 블록모션서치(BlockMotionSearch) 함수는 인코더 실행 시간의 0.51% 만을 차지하고 있지만, 이 함수에서 호출한 패스트풀펠블록모션서치(FastFullPelBlockMotionSearh) 함수와 서브펠블록모션서치(SubPelBlockMotionSearch) 함수는 각각 인코더 실행 시간의 5.38%, 3.55%를 차지하고 있으며, 패스트풀펠블록모션서치(FastFullPelBlockMotionSearch) 함수에서 호출된 셋업패스트풀펠서치(SetupFastFullPelSearch) 함수는 13.29%의 인코더 실행 시간을 사용함으로써 움직임 추정 시 가장 많은 계산을 수행하고 있다는 것을 알 수 있다. 따라서, 콜 그래프 프로파일링(call graph profiling)을 통하여 각 기능 블록들의 특정 함수의 계산량을 분석해 낼 수 있었으며, 가장 많은 계산량을 차지하는 함수의 구조를 개선함으로써 움직임 추정 블록의 성능 향상과 인코더의 전체적인 성능 향상을 기대할 수 있다.
도 13은 JM8.5 인코더의 메모리 참조 시간을 나타낸 것이다. 메모리의 순차 읽기/쓰기 시간(Sequential Read/Write Time)은 85nsec, 비순차 읽기/쓰기 시간(Nonsequential Read/Write Time)은 135nsec로 설정하였다. 사용된 ARM 코어의 클럭 주파수가 50MHz 이상일 경우 메모리의 대기 상태(Wait States)가 증가하는 것을 확인할 수 있다. ARM 코어의 클럭 주파수가 높아질수록 인코더의 전체 실행 시간은 감소하지만 인코더 실행 시간 대비 메모리 대기 상태의 비율이 계속적으로 증가하므로 메모리 사용이 비효율적이라는 것을 알 수 있다. 메모리가 대기 상태에 있는 동안 메모리의 값들은 현재값을 유지하여야 한다. 따라서, 인코더 실행 시간 대비 메모리 대기 상태의 비율이 증가할수록 메모리 값들을 유지하기 위해 사용되는 내부 SRAM의 대기(standby) 전력 소모량이 증가하게 된다.
도 14는 JM8.5 인코더의 성능 측정 결과를 나타낸 것이다. 사용된 ARM 코어의 클럭 주파수가 100MHz 이상인 경우 인코더의 성능이 수렴하는 것을 확인할 수 있으며, 인코더의 실행 시간이 가장 적게 측정된 ARM920T 코어의 경우 150MHz 이상의 클럭 주파수에서는 성능 향상을 기대하기 어렵다. 캐시 메모리의 전력 소모를 0.25mW/MHz로 정의하였을 때, ARM920T의 전력 소모량은 37.5mW로 측정되었다.
한편, 움직임 추정(Motion Estimation)이란 동영상 내의 물체의 움직임이나 카메라의 이동과 확대 및 축소 등으로 인한 현재 영상과 이전 영상의 위치 변화를 움직임 벡터(Motion Vector)의 형태로 얻어내는 것이다. 움직임 벡터를 얻기 위해서는 먼저 움직임 추정을 화소 단위로 할 것인지 또는 블록 단위로 할 것인지를 결정해야 하며, 동영상 압축에서는 주로 블록 단위의 움직임 추정을 사용한다. 따라서, 블록 매칭 알고리즘(Block Matching Algorithm)이란 현재 영상과 이전 영상의 움직임 벡터를 블록 단위로 추정하는 기법이라고 할 수 있으며, 이 때 사용되는 블록을 매크로블록(Macroblock)이라고 한다.
도 15는 블록 매칭 알고리즘을 설명에 참조되는 도면이다. 블록 매칭 알고리즘은 현재 영상의 매크로블록과 이전 영상의 매크로블록을 이전 영상의 정해진 탐색 범위(Search Range) 내에서 비교한 후 가장 유사한 매크로블록의 위치를 찾아내는 것이다. 즉, 이전 영상의 매크로블록이 현재 영상의 어느 위치로 이동하였는지 찾아내는 것이며, 이 때 이동한 위치의 크기가 움직임 벡터가 된다. 가장 유사한 매크로블록을 찾아내기 위한 방법은 다음의 3가지 함수를 이용하는 것이다.
[수학식 1]의 MSD(Mean Squared Difference)는 현재 영상의 매크로블록과 이전 영상의 매크로블록 간의 대응되는 각 화소들의 차이값을 제곱하여 더한 것이고, [수학식 2]의 MAD(Mean Absolute Difference)와 [수학식 3]의 SAD(Sum of Absolute Difference)는 현재 영상의 기준 매크로블록과 이전 영상의 매크로블록 간의 대응되는 각 화소들의 차이값을 더한 것이다. 블록 매칭 알고리즘은 정해진 탐색 범위 내에서 가장 작은 차이값을 가지는 함수, 다시 말하면 최소의 에러(Difference)값을 가지는 매크로블록의 변위를 움직임 벡터로 결정하게 된다. 위 식에서 N은 매크로블록의 크기를 나타내고, Cij와 Pij는 현재 영상과 이전 영상의 매크로블록의 값을 나타낸다.
SAD 함수를 이용한 블록 매칭 방법은 에러값을 얻기 위한 계산의 절차가 매우 간단하기 때문에 움직임 추정에 가장 많이 사용된다. 특히 MSD 및 MAD 함수와 같이 곱셈이나 나눗셈 연산이 쓰이지 않고 두 영상 간의 차이의 절대값만을 이용하므로 함수의 구현이 용이하다. H.264/AVC 참조 소프트웨어 JM8.5는 블록 매칭의 수행에 SAD 함수를 이용한다.
또한, 가변 블록 매칭 알고리즘(Variable Block Size Matching Algorithm)이란, 블록 매칭에 사용되는 매크로블록의 크기를 다양하게 나눈 것이다. MPEG-2에서는 16x16 픽셀(Pixel) 크기의 매크로블록을 정의하였고, MPEG-4에서는 8x8 픽셀 크기의 매크로블록을 정의하였다. 매크로블록의 크기가 작아질수록 영상의 미세한 변화에도 민감하게 반응하여 정확한 움직임 벡터를 찾아낼 수 있게 하지만, 디코더 단에 전송해야 하는 움직임 벡터의 양이 그 만큼 늘어나게 되므로 영상 데이터의 압축 효율이 떨어지는 단점이 있다.
H.264/AVC에서는 16x16, 16x8, 8x16, 8x8, 8x4, 4x8, 4x4 픽셀 크기의 7가지 다양한 매크로블록 분할 모드를 지원한다. 매크로블록의 각 분할 모드들은 탐색 범위 내에서 최소의 에러값을 가지게 되고, 각 분할 모드 별로 최적의 움직임 벡터를 얻는다. 그림 3-2는 H.264/AVC의 매크로블록 분할 모드를 나타낸 것이다
최적의 매크로블록 분할 모드를 결정하기 위하여 H.264/AVC는 트리 구조를 이용한 단계별 가변 블록 매칭을 수행한다. 먼저, 16x16, 16x8, 8x16, 8x8 크기의 상위 매크로블록 분할 모드에 대해서 블록 매칭을 수행하고 에러값과 움직임 벡터를 결정한다. 만일 16x16, 16x8, 8x16 분할 모드가 선택이 되면 움직임 추정은 종료되고, 8x8 분할 모드가 선택된다면 4개의 8x8 블록들에 대해서 8x4, 4x8, 4x4 크기의 하위 매크로블록 분할 모드의 블록 매칭을 수행한다.
도 17은 H.264/AVC의 트리 구조 매크로블록 분할 모드를 나타낸 것이다.
하위 매크로블록 분할 모드가 선택되는 경우 4개의 8x8 블록들에 대해서 각각 블록 매칭을 수행해야 하므로 추가적인 시스템 클럭이 필요하게 된다. 16x16 매크로블록의 블록 매칭이 모두 하위 매크로블록 분할 모드로 수행된다면 상위 매크로블록 분할 모드가 선택되는 경우 보다 5배의 시스템 클럭이 소모되기 때문에 이를 최소화 할 수 있는 구조가 필요하다.
본 발명이 이루고자 하는 기술적 과제는, H.264/AVC 인코더 등에 사용하기 적합하도록 고속으로 동작하고 저전력을 소모하는 움직임 추정장치 및 그 방법을 제공하는 데 있다.
상기의 기술적 과제를 달성하기 위한 본 발명에 따른 움직임 추정장치는, 입력 영상의 현재 프레임과 이전 프레임을 기준으로, 각각 다른 크기의 매크로블럭을 사용하도록 설정된 복수의 매크로블럭 분할 모드별로 SAD 값을 각각 산출하는 SAD 로직부,상기 복수의 매크로블럭 분할 모드별로, 움직임 벡터와 상기 움직임 벡터의 전송시 비트율인 움직임 벡터 비트율을 각각 산출하는 움직임 벡터 비트율 생성부, 및 상기 복수의 매크로블럭 분할 모드별로 각각 산출된 SAD값과 움직임 벡터의 비트율에 기초하여, 상기 복수의 매크로블럭 분할 모드 중 어느 하나의 분할 모드를 선택하고, 선택된 분할 모드에 대응하는 움직임 벡터를 최종 움직임 벡터로 산출하는 RD 비용 함수부를 포함한다.
바람직하게는, 상기 입력 영상의 각 프레임을 입력순서에 따라 순차적으로 저장하는 입력버퍼부, 및 상기 입력버퍼부에 저장된 각 프레임의 픽셀을 DPCM(Differential Pulse Code Modulation)방식으로 처리하여, 상기 현재 프레임 및 상기 이전 프레임으로 제공하는 DPCM 로직부를 더 포함한다.
입력 영상의 현재 프레임과 이전 프레임을 기준으로, 각각 다른 크기의 매크로블럭을 사용하도록 설정된 복수의 매크로블럭 분할 모드별로 SAD 값을 각각 산출하는 단계, 상기 복수의 매크로블럭 분할 모드별로, 움직임 벡터와 상기 움직임 벡터의 전송시 비트율인 움직임 벡터 비트율을 각각 산출하는 단계, 및 상기 복수의 매크로블럭 분할 모드별로 각각 산출된 SAD값과 움직임 벡터의 비트율에 기초하여, 상기 복수의 매크로블럭 분할 모드 중 어느 하나의 분할 모드를 선택하고, 선택된 분할 모드에 대응하는 움직임 벡터를 최종 움직임 벡터로 산출하는 단계를 포함한다.
바람직하게는, 상기 입력 영상의 각 프레임을 입력순서에 따라 순차적으로 저장하는 단계, 및 저장된 각 프레임의 픽셀을 DPCM(Differential Pulse Code Modulation)방식으로 처리하여, 상기 현재 프레임 및 상기 이전 프레임으로 제공하는 단계를 더 포함한다.
이하에서 첨부된 도면들을 참조하여 본 발명에 따른 움직임 추정장치 및 그 방법에 대해 상세하게 설명한다.
본 발명에 따른 움직임 추정 장치는, H.264/AVC 프로파일 중에서 대부분의 응용 분야에 적합한 베이스라인(baseline) 프로파일을 따르는 정수형 코딩(integer coding)을 지원하도록 하며, PDA, 핸드폰 등의 H.264/AVC를 적용한 모바일 기기에서 동영상의 실시간 재생이 가능하도록 하기 위해 모듈 간에는 파이프라인(Pipeline) 구조를 가지고 각 모듈의 내부는 병렬 처리(Parallel Processing)가 가능하도록 고려하였다. 또한, PDA, 핸드폰 등의 배터리로 동작하는 모바일 기기에서 장시간 동영상 처리가 가능하게 저전력 구동이 가능하도록 내부 메모리의 사용을 최소화하고, 움직임 추정장치 내에서 움직임 벡터를 자체적으로 생성할 수 있도록 하여 매크로블록 분할 모드의 선택 속도를 향상시키도록 한다.
도 18은 본 발명에 따른 움직임 추정장치의 블럭도이다.
도 18을 참조하면, 본 움직임 추정장치는, 입력버퍼부(100), DCPM 로직부(200), SAD 로직부(300), 움직임 벡터 비트율 생성부(400), RD(Rate-Distortion) 비용 함수부(500), 및 제어부(600)를 포함한다.
입력버퍼부(100)는 입력 영상신호의 각 프레임을 순차적으로 저장한다. DPCM 로직부(200)는 입력버퍼부(100)에 저장된 입력 영상신호의 각 프레임의 픽셀을 DPCM( differential pulse code modulation) 방식으로 처리하여 SAD 로직부(300) 및 움직임 벡터 비트율 산출부(400)에 전달한다.
SAD 로직부(300)는 각각 다른 크기의 매크로블럭을 사용하는 매크로블럭 분할 모드별로 SAD값들을 산출한다. 움직임 벡터 비트율 생성부(400)도 각각 다른 크기의 매크로블럭을 사용하는 매크로블럭 모드별로 움직임 벡터와 움직임 벡터의 전송시 비트율인 움직임 벡터 비트율을 산출한다.
RD 비용 함수 로직부(500)는 SAD 로직부(300) 및 움직임 벡터 비트율 생성부(400)로부터 각각매크로블럭 분할모드별로 산출된 SAD값과 움직임 벡터 비트율을 전달받아, 최적의 매크로블럭 분할 모드를 선택하고, 선택된 매크로블럭 분할모드에서 움직임 벡터를 최종 움직임 벡터(MV)로 출력한다. 그리고, 제어부(600)는 입 력버퍼부(100), DPCM 로직부(200), SAD 로직부(300), 움직임 벡터 비트율 생성부(400), 및 RD 비용 함수부(500)의 동작을 제어한다.
다음의 [표 1]은 본 발명에 따른 움직임 추정장치의 설계 스펙의 예를 정리한 것이며, 이하 각 부별로 그 구성 및 기능을 보다 상세히 설명하기로 한다.
영역(AREA) | 게이트 수(Gate Count) |
조합(Combinational) | 48,400 |
비조합(Noncombinational) | 13,700 |
총상호연결(Net Interconnect) | 950 |
총 셀(Total Cell) | 62,050 |
총 계(Total) | 63,000 |
타이밍(Timing) | ns |
필요한 데이터(Data Required) | 19.69 |
도착한 데이터(Data Arrival) | 5.35 |
스택(Stack) | 14.34(MET) |
전력(Power) | mW |
내부 셀 (Cell Internal) | 90 |
실 스위칭 횟수(Net Switching) | 45 |
총 동작(Total Dynamic) | 135 |
셀 누설(Cell Leakage) | 0 |
도 19는 도 18에서 SAD값을 산출하는 SAD 로직부(300)의 구조를 나타낸 것이다. H.264/AVC는 7가지의 매크로블록 분할 모드를 가지기 때문에 하나의 매크로블록을 가지는 MPEG-2, MPEG-4와는 다른 블록 매칭 알고리즘을 가진다. 이 알고리즘의 가장 큰 차이점은 각 7가지 분할 모드의 에러값과 움직임 벡터를 구하기 위해서 SAD 계산시에 4x4 크기의 블록을 기본 단위로 한다는 것이다. 가장 작은 크기의 매크로블록 분할모드인 4x4 블록을 SAD값을 구하기 위한 기본 단위로 사용함으로써, 한번의 DPCM(Difference Pulse Code Modulation) 수행만으로 상위 6가지 매크로블록 분할 모드의 모든 SAD값을 계산할 수 있기 때문이다. 즉, 4x4 블록의 SAD값을 이용하여 4x8, 8x4 블록의 SAD값을 계산하고, 4x8 또는 8x4 블록을 이용하여 8x8 블록의 SAD값을 계산한다. 마찬가지로 8x16, 16x8 블록은 8x8 블록을 이용하여 계산되고, 16x16 블록은 8x16 또는 16x8 블록을 이용하여 계산된다.
JM8.5에 의하면 블록 매칭을 위하여 하위 매크로블록 모드가 선택되면 상위 매크로블록 모드가 선택되는 경우 보다 5배의 시스템 클럭이 소모된다. 본 발명에 따른 움직임 추정장치에서 SAD 로직부(300)의 구조는 블록 매칭에 JM8.5의 상위 매크로블록 모드가 선택되는 경우 보다 2배의 시스템 클럭을 소모함으로써 7가지 매크로블록 분할 모드의 SAD값을 모두 계산해낼 수 있다.
DPCM 로직부(200), 4x4, 4x8, 8x4, 8x8, 8x16, 16x8, 16x16 SAD 로직(310, 320, 330, 340, 350)들은 시스템 클럭에 따라 파이프라인으로 동작되며, 제어부(600)는 인코더의 동작이 시작되면 16x16 SAD값의 계산이 완료될 때 까지, RD(Rate-Distortion) 비용 함수부(500)를 동작시키지 않는다.
SAD 로직부(300)에서 출력되는 7가지 매크로블록 분할 모드의 SAD값들은 최적의 분할 모드 선택을 위한 RD 비용 함수부(500)의 입력으로 들어간다. 이 때 RD 비용 함수부(500)는 입력으로 SAD값과 함께 디코더 단에 움직임 벡터를 전송할 때의 비트율을 받아야 한다. 이것은 SAD 로직부(300)에서 계산된 SAD값만을 이용하여 매크로블록 분할 모드를 선택하게 되면, 매크로블록이 4x4 블록으로 분할될 확률이 매우 높기 때문이다. 만약 16x16 매크로블록이 16개의 4x4 블록으로 분할된다면, 인코더 단에서 디코더 단으로 전송해야 하는 움직임 벡터의 수는 16개가 되고, 슬라이스(Slice) 안의 대부분의 매크로블록이 이와 같이 분할된다면 압축 효율은 떨어질 수 밖에 없다.
RD 비용 함수부(500)의 또 다른 입력인 비트율은 JM8.5에서 CAVLC(Context-Adaptive Variable-Length Codes)의 현재 출력으로 나오는 비트율과 이전 출력으로 나온 비트율을 DPCM한 값으로 계산되었다. 따라서, SAD 로직부(300)는 각 매크로블록 분할 모드에 대한 비트율이 계산될 때까지, 출력되는 각 매크로블록 분할 모드에 대한 SAD값들을 모두 메모리에 저장하여야 한다.
도 20은 종래의 SAD값을 저장하기 위한 구조를 나타낸 것이다.
종래의 SAD 저장 구조는 RD 비용 함수 로직에서 SAD값을 사용할 때 까지, SAD값을 임시적으로 저장할 수 있도록 24,576bits의 내부 SRAM을 사용하였다. 이것은 약 1500cycle의 시스템 클럭 동안 계산되는 SAD값을 저장할 수 있는 메모리 공간이며, RD 비용 함수 로직의 입력으로 들어오는 비트율의 계산이 1500cycle 이상 소요될 경우 제어 로직에서 SAD 로직의 동작을 비트율의 계산이 끝날 때 까지 지연시켜야 하는 단점이 있다. 또한, 내부 SRAM은 움직임 추정장치의 면적을 크게 하고 움직임 추정장치의 전력 소모를 증가시킨다. 따라서, 종래의 SAD 저장 구조는 PDA, 핸드폰 등의 제한된 전원을 사용하는 모바일 기기에서의 장시간 동영상 재생에 부적합하며, 소모되는 전력에 비례하여 발생되는 열 등으로 인한 추가적인 문제점들이 나타날 수 있다.
도 21은 본 발명에 따른 움직임 추정장치에서 사용하는 SAD 저장 구조를 나타낸 것이다. 본 발명에 따른 움직임 추정장치에서는 SAD값을 저장하는데 사용되는 내부 SRAM의 용량을 최소화 할 수 있는 구조를 사용한다. 즉, 종래의 저장 구조가 24,576bits의 내부 SRAM을 사용한 반면, 제안된 SAD 저장 구조는 단지 196bits의 내부 레지스터만을 사용한다.
7가지 매크로블록 분할 모드에 대한 SAD값들은 각 분할 모드 마다 할당된 Temp 레지스터에 저장된 후 RD 레지스터의 값과 비교된다. 만약 Temp 레지스터의 값이 RD 레지스터의 값 보다 작다면 RD 레지스터의 값은 Temp 레지스터의 값으로 대체되고, Temp 레지스터의 값이 RD 레지스터의 값 보다 크다면 RD 레지스터의 값은 현재값을 유지한다. 각 분할 모드 마다 할당된 레지스터들은 12bits ~ 16bits의 크기를 갖는다.
본 발명에 따른 움직임 추정장치에서 사용되는 SAD 저장 구조에서 내부 레지스터의 용량을 줄일 수 있었던 이유는 RD 비용 함수 로직에 입력되는 움직임 벡터의 비트율을 생성하는 로직을 구현하였기 때문이다. 따라서, 내부 레지스터의 값들을 비교하기 위해 필요한 1cycle의 지연 후에 RD 비용 함수 로직부(700)를 동작시킬 수 있다.
본 발명에 따른 움직임 추정장치에서 최적의 움직임 벡터를 구하기 위해 사용되는 두 가지 요소는 SAD값과 움직임 벡터 비트율이다. 이 중에서 움직임 벡터 비트율은, 전술한 바와 같이 H.264/AVC 인코더의 전체 압축 과정을 거친 후에 CAVLC의 출력들을 DPCM하여 계산되므로, 움직임 추정 시에 움직임 벡터 비트율을 이용하기 위해서는 1cycle의 인코딩 시간 만큼의 지연이 발생한다. 따라서, 추가적인 지연 없는 고속의 동작을 위하여 움직임 추정장치의 대부분은 SAD값 만을 움직임 추정에 사용한다. 그러나, 이와 같은 구조에서는 슬라이스 내의 각 매크로블록의 움직임 벡터 수가 늘어날 수 있는 확률을 증가시키고 그 결과 전송되는 데이터의 압축율을 떨어뜨린다.
본 발명에 따른 움직임 추정장치에서는 블록 매칭 알고리즘을 수행하기 위해서 풀 서치(full search) 알고리즘을 사용하며, 탐색 범위 내의 모든 매크로블록들을 움직임 추정시에 참조한다. 풀 서치(full search) 알고리즘의 매크로블럭 참조 순서는 도 22에 나타낸 바와 같다. 따라서, 탐색 범위 내의 매크로블록들의 참조 순서를 미리 정의할 수 있다면 움직임 벡터를 시스템 클럭에 동기화하여 생성해 낼 수 있으며, 패스트 서치(fast search) 알고리즘들과 비교하여 느린 블록 매칭 속도를 보상할 수 있는 장점이 있다.
도 23은 본 발명에 따른 움직임 추정장치에서 사용되는 움직임 벡터 비트율 생성부의 구조를 나타낸 것이다. 움직임 벡터 비트율 생성기는 시스템 클럭에 동기화 되어 RD 비용 함수부(500)를 위한 수평 및 수직 방향 움직임 벡터와, 수평 및 수직 방향 움직임 벡터 비트율을 생성한다.
시스템 클럭이 인가되면, 시스템 클럭에 동기화 되어 수평 및 수직 방향의 움직임 벡터를 생성하고 수평(Horizontal:Hor) 및 수직(Vertical:Ver) 레지스터에 그 값을 저장하며, SAD 로직부(300)의 각 RD 레지스터 값이 갱신 될때 마다, 제어부(600)의 지시에 따라 각 매크로블록 분할 모드에서 산출된 수평 및 수직 방향 움직임 벡터를 H_MV 및 V_MV 레지스터의 값으로 대체시킨다. 이렇게 생성된 움직임 벡터들은 움직임 벡터 비트율 계산을 위해 움직임 벡터 DPCM 로직(MV DPCM Logic)으로 입력되고, 최종적으로 각 매크로블록 분할모드에 대한 수평 및 수직 방향 움직임 벡터와 움직임 벡터 비트율이 출력된다.
각 매크로블록 분할모드의 SAD값과 움직임 벡터 비트율이 계산된 후에는 RD 비용 함수부(500)에 의하여 최적의 매크로블록 분할 모드를 선택하게 된다. 분할 모드를 선택하기 위한 구조는 매우 다양하게 할 수 있지만, 빠른 분할 모드 선택을 위해서 대부분의 움직임 추정장치에서는 SAD값만을 사용하였다. SAD를 이용한 8x8 및 16x16 분할 모드의 RD 비용 함수의 수식은 다음과 같다.
[수학식 4]는 8x8 분할 모드의 RD 비용 함수를 나타낸 것으로 4개의 4x4 블록, 2개의 4x8 및 8x4 블록과 하나의 8x8 블록에 대한 SAD값들을 모두 더한 것이 고, [수학식 5]는 16x16 분할 모드의 RD 비용 함수를 나타낸 것으로 4개의 8x8 블록, 2개의 8x16 및 16x8 블록과 하나의 16x16 블록에 대한 SAD값들을 모두 더한 것이다. RD 비용 함수부(500)는 먼저 16x16 분할 모드, 즉, 상위 매크로블록 분할 모드에 대한 최소의 SAD값을 찾아 분할 모드를 선택하고, 만약 8x8 분할 모드가 선택된다면 각 8x8 분할 모드, 즉, 각 하위 매크로블록 분할 모드에 대한 최소의 SAD값을 찾아 분할 모드를 선택하게 된다. i, j, k는, 도 24에 도시한 7가지 매크로블록 분할 모드의 각 블록들의 위치를 나타낸다.
이와 같은 SAD값 만을 이용한 분할 모드 선택법은, 전술한 바와 같이, 전송되는 데이터의 압축 효율을 떨어뜨리게 되므로, 본 발명에서는 JM8.5에서 사용된 분할 모드 선택법을 하드웨어 설계에 적합하도록 고려하여 전송되는 데이터의 비트율을 감소시킬 수 있는 새로운 분할 모드 선택법을 사용한다.
다음은 JM8.5에서 사용된 RD 비용 함수의 수식을 나타낸 것이다.
[수학식 6]에서 비트레이트(Bitrate)는 CAVLC의 현재 출력으로 나오는 비트율과 이전 출력으로 나오는 비트율을 DPCM한 값이다. 는 양자화 파라미터를 고려한 상수값으로 [수학식 7]과 같이 구할 수 있으며, 양자화 파라미터 QH.264는 초기값 28로 고정시킨 값이다. 본 발명에서는 [수학식 6]의 비트레이트(Bitrate)를 최대한 고려해 주기 위해 움직임 벡터 비트율 생성기에서 출력되는 수평 및 수직 방향 움직임 벡터 비트율을 사용한다. 다음은 본 발명에서 사용하는 RD 비용 함수의 수식을 나타낸 것이다.
[수학식 8], [수학식 9]에서 값을 결정하기 위해 양자화 파라미터 QH .264는 JM8.5와 같이 28로 고정시켰으며, 이 경우 는 34.269의 값을 갖는다. 본 발명에 따른 움직임 추정장치에서 사용되는 RD 비용 함수 로직부(600)는 값을 계산된 값 의 근사치인 32로 설정함으로써 곱셈 연산을 5비트 시프트 연산으로 대체하여 하드웨어 면적과 연산 시간을 크게 줄일 수 있고, 매 시스템 클럭 마다 매크로블록 분할 모드 및 움직임 벡터를 출력할 수 있다.
도 24는 RD 비용 함수 로직의 매크로블록 분할 모드 설정을 나타낸 것이며, 도 25는 RD 비용 함수부의 구조를 나타낸 것이다. 도 25에서, MB_Mode는 상위 매크로블록 분할 모드를 의미하고, SMB_Mode는 하위 매크로블록 분할 모드를 의미하며, H_MV 및 V_MV는 수평 및 수직 방향 움직임 벡터값을 나타낸다. 저전력을 고려하여 움직임 추정기가 [-16, +16]의 탐색 범위에서 동작한다면 움직임 벡터 출력은 961 시스템 클럭 마다 나오도록 한다. 움직임 보상기(Motion Compensator)는 위의 4가지 출력 데이터를 이용하여 이전 슬라이스로 부터 현재 슬라이스를 생성해 낼 수 있다.
도 26 내지 도 35는 본 발명에 따른 움직임 추정장치의 시뮬레이션 결과를 도시한 것이다. 본 발명에 따른 가변 블록 움직임 추정장치의 시뮬레이션에는, Cadence 사의 Verilog-XL과 시그널스캔(Signalscan)을 이용하였고, 합성에는 Synopsys 사의 디자인 컴파일러(Design Compiler)를 이용하였다. Cadence 사의 Verilog HDL(Hardware Description Language) 컴파일러인 Verilog-XL은 상용 컴파일러 중에서 가장 신뢰성 있는 시뮬레이션 결과를 제공하고 있으며, Synopsys 사의 합성 툴인 디자인 컴파일러(Design Compiler)는 상용 합성 툴 중에서 가장 최적화된 합성 결과를 제공하고 있다. 본 발명에 따른 가변 블록 움직임 추정장치의 시뮬레이션 입력에는 동영상 테스트에 많이 쓰이는 풋볼 시퀀스(football sequence)를 사용하였고, 합성에는 0.18um 공정에서 제작된 STD130 셀 라이브러리를 사용하였다.
도 26은 픽셀 처리를 위한 DPCM 로직부(200)의 시뮬레이션 결과 파형을 나타낸 것이다. 도 26을 참조하면, 현재 영상값과 이전 영상값의 차이가 출력으로 나오는 것을 확인할 수 있다.
도 27은 픽셀 처리를 위한 DPCM 로직부(200)의 합성된 모습을 나타낸 것이다. 매크로블록 처리를 위한 DPCM 모듈은 256개의 픽셀 처리를 위한 DPCM 모듈로 구성된다.
도 28은 SAD 로직부(300)의 시뮬레이션 결과 파형을 나타낸 것이다. 도 28을 참조하면, SAD값을 구하기 위해서 4x4 크기 블록의 SAD값을 구한 후 파이프라인을 통해 상위 6가지 매크로블록 분할 모드의 모든 SAD값이 계산되는 것을 확인할 수 있다.
도 29는 16x16 블록 SAD 모듈의 합성된 모습을 나타낸 것이다. 전체 SAD 모듈은 하나의 16x16 블록, 2개의 16x8 및 8x16 블록, 4개의 8x8 블록, 8개의 8x4 및 4x8 블록, 그리고, 16개의 4x4 블록으로 구성된다. 다음의 [표 2]는 16x16 블록 SAD 모듈의 합성 결과를 나타낸 것이다.
영역(AREA) | 게이트 수(Gate Count) |
조합(Combinational) | 340 |
비조합(Noncombinational) | 580 |
총상호연결(Net Interconnect) | 10 |
총 셀(Total Cell) | 920 |
총 계(Total) | 930 |
타이밍(Timing) | ns |
필요한 데이터(Data Required) | 19.70 |
도착한 데이터(Data Arrival) | 5.00 |
스택(Stack) | 14.70(MET) |
전력(Power) | mW |
내부 셀 (Cell Internal) | 1 |
실 스위칭 횟수(Net Switching) | 0.25 |
총 동작(Total Dynamic) | 1.25 |
셀 누설(Cell Leakage) | 0 |
도 30은 움직임 벡터 비트율 생성부(400)의 시뮬레이션 결과 파형을 나타낸 것이다. 도 30을 참조하면, 시스템 클럭에 동기화되어 동작하는 내부 카운터의 값에 따라 움직임 벡터가 생성되는 것을 확인할 수 있다. 도 31은 움직임 벡터 비트율 생성부(400)의 합성된 모습을 나타낸 것이고, 다음의 [표 3]은 움직임 벡터 비트율 생성부의 합성 결과를 나타낸 것이다.
영역(AREA) | 게이트 수(Gate Count) |
조합(Combinational) | 185 |
비조합(Noncombinational) | 470 |
총상호연결(Net Interconnect) | 10 |
총 셀(Total Cell) | 655 |
총 계(Total) | 665 |
타이밍(Timing) | ns |
필요한 데이터(Data Required) | 19.64 |
도착한 데이터(Data Arrival) | 3.35 |
스택(Stack) | 16.29(MET) |
전력(Power) | mW |
내부 셀 (Cell Internal) | 0.75 |
실 스위칭 횟수(Net Switching) | 0.15 |
총 동작(Total Dynamic) | 0.90 |
셀 누설(Cell Leakage) | 0 |
도 32는 RD 비용 함수 모듈의 시뮬레이션 결과 파형을 나타낸 것이다. RD 비용 함수의 값들은 매크로블록 분할 모드 마다 설정되어 있는 레지스터에 저장되고, 탐색 범위 내의 모든 매크로블록들에 대한 비교가 끝나게 되면 매크로블록 분할 모드와 수평 및 수직 방향 움직임 벡터값이 출력되는 것을 확인할 수 있다. 도 33은 RD 비용 함수 모듈의 합성된 모습을 나타낸 것이다. 다음의 [표 4]는 RD 비용 함수 모듈의 합성 결과를 나타낸 것이다.
영역(AREA) | 게이트 수(Gate Count) |
조합(Combinational) | 9,410 |
비조합(Noncombinational) | 3,790 |
총상호연결(Net Interconnect) | 270 |
총 셀(Total Cell) | 13,190 |
총 계(Total) | 13,460 |
타이밍(Timing) | ns |
필요한 데이터(Data Required) | 19.63 |
도착한 데이터(Data Arrival) | 17.40 |
스택(Stack) | 2.23(MET) |
전력(Power) | mW |
내부 셀 (Cell Internal) | 13 |
실 스위칭 횟수(Net Switching) | 9 |
총 동작(Total Dynamic) | 22 |
셀 누설(Cell Leakage) | 0 |
도 34는 본 발명에 따른 움직임 추정장치의 시뮬레이션 결과 파형을 나타낸 것이다. 도 34를 참조하면, 탐색 범위 내의 모든 매크로블록들에 대한 비교가 끝나게 되면 매크로블록 분할 모드와 수평 및 수직 방향 움직임 벡터값이 출력되는 것을 확인할 수 있다. CIF(352x288) 영상 한 프레임의 처리에는 380,556 시스템 클럭이 사용되었으며, 50MHz로 동작할 때 131 frames/sec의 움직임 추정 성능을 보였다.
도 35는 본 발명에 따른 움직임 추정장치의 합성된 모습을 나타낸 것이고, [표 5]는 본 발명에 따른 움직임 추정장치의 합성 결과를 나타낸 것이다.
영역(AREA) | 게이트 수(Gate Count) |
조합(Combinational) | 104,200 |
비조합(Noncombinational) | 72,500 |
총상호연결(Net Interconnect) | 2,300 |
총 셀(Total Cell) | 176,800 |
총 계(Total) | 179,100 |
타이밍(Timing) | ns |
필요한 데이터(Data Required) | 19.65 |
도착한 데이터(Data Arrival) | 15.78 |
스택(Stack) | 3.87(MET) |
전력(Power) | mW |
내부 셀 (Cell Internal) | 155 |
실 스위칭 횟수(Net Switching) | 30 |
총 동작(Total Dynamic) | 185 |
셀 누설(Cell Leakage) | 0 |
도 36은 본 발명에 따른 블록 움직임 추정기의 레이아웃의 일 예를 나타낸 것이다. 칩(Chip)의 정상 동작을 확인하기 위해 LVS(Layout versus Schematic) 및 DRC(Design Rule Check)를 수행하였고, 칩 안에서의 스큐(skew)를 최소화하기 위해서 시스템 클럭과 리셋 라인에 대해서 클럭 트리 합성(Clock Tree Synthesis)을 수행하였다. 또한, 칩 외부에는 사각형 링(rectangular ring)을 삽입하여 리키지(Leakage) 성분과 잡음(Noise)의 영향을 줄이도록 하였다. 레이아웃에는 0.18um 1-poly 4-metal 1.8V 공정을 사용하였다.
도 37은 본 발명에 따른 움직임 추정장치의 레이아웃의 일 예에 대한 시뮬레이션(Post Simulation) 결과 파형을 나타낸 것이다. 시스템 클럭과 리셋 라인의 스큐(skew), 트랜지스터의 지연, 메탈(metal) 라인의 커패시터 성분 등으로 인한 약간의 지연 후에 정상적인 출력 값이 나오는 것을 확인할 수 있다. [표 6]은 본 발명에 따른 움직임 추정장치의 레이아웃 비교 결과를 나타낸 것이고, [표 7]은 0.18um 및 0.35um 공정에서의 SAD 모듈의 합성 결과를 나타낸 것이다. [표 6]의 벤치마크와 비교하였을 때 게이트 수와 전력 소모가 개선된 것을 확인할 수 있다.
본 발명 | 종래기술(Yu-Wen Huang) | |
프로세스(Process) | 삼성 0.18㎛ 1P4M 1.8 V | TSMC 0.35㎛ 1P4M |
활동 영역(Active Area) | 2,300㎛×2,300㎛ | 5,056㎛×5,056㎛ |
게이트 수(Gate Count) | 179,100 | 105,575 |
주파수(Frequency) | 50㎒ | 66.67㎒ |
전력 소모(Power Consumption) | 185㎽ at 50㎒ | 740㎽ at 66.67㎒ |
처리능력(Processing Capability) | 352×288 at 131㎐ | 720×480 at 30㎐ |
라이브러리(Library) | STD130(0.18㎛) | 라이브러리(Library) | STD90(0.35㎛) |
게이트 수(Gate Count) | 63,700 | 게이트 수(Gate Count) | 51,300 |
전력 소모(Power Consumption) | 115㎽ | 전력소모(Power Consumption) | 107㎽ |
도 38은 본 발명에 따른 움직임 추정장치에 대한 구조의 테스트 플랫폼(Test Platform)의 일 예를 나타낸 것이다. 테스트 플랫폼에서 H.264/AVC는 3가지 방법으로 구현될 수 있다. 첫 번째 방법은 ARM920T 코어가 내장된 스콜피오(Scorpio) 보드 상에 H.264/AVC 참조 소프트웨어 JM8.5를 포팅(Porting)하여 인코딩 및 디코딩 동작을 수행하는 것이다. 두 번째 방법은 FPGA 보드 상의 DSP에 JM8.5를 포팅하여 인코딩 및 디코딩 동작을 수행하는 것이다. 전자의 경우 JM8.5는 ARM920T에 의하여 동작하며, 후자의 경우 DSP(6416)에 의해 동작된다.
위의 2가지 방법은 H.264/AVC의 소프트웨어 구현을 위한 테스트 방법이다. 마지막 세 번째 방법은 JM8.5의 특정 블록을 하드웨어로 설계한 후 FPGA 상에서 구현하는 것이다. 이 때 JM8.5는 ARM920T에 의하여 동작하며 움직임 추정 시에는 FPGA(XC2V6000) 상에 다운로드(Download)된 로직이 동작된다.
전술한 바와 같이, 본 발명에서는 H.264/AVC 인코더 실행 시간의 70% 이상을 차지하는 가변 블록 움직임 추정장치를 구현하였으며, 구현된 하드웨어의 동작이 정확하게 검증되기 위해서는 하드웨어의 출력값이 H.264/AVC의 알고리즘에 따라 동작하여 입력된 영상을 그대로 복원해낼 수 있어야 한다. 영상이 CIS 또는 CCD 카메라를 통하여 입력되면 스콜피오(Scorpio) 보드 상의 JM8.5 인코더가 동작하게 된다. 첫 번째 영상 프레임에 대한 압축이 수행되고 나면 두 번째 영상 프레임의 압축부터 움직임 추정이 사용된다. 이 때 ARM920T는 AHB(Advanced High-performance Bus)를 통하여 움직임 추정에 사용되는 입력값들을 FPGA로 전송하게 되고, FPGA의 출력값들 또한 AHB를 통하여 스콜피오(Scorpio) 보드로 전송되며, ARM920T는 나머지 인코딩 동작 및 디코딩 동작을 수행하여 TFT-LCD 모듈에 영상을 출력하게 된다.
ARM 코어 기반의 시스템에서 H.264/AVC 참조 소프트웨어 JM8.5 인코더의 성능 분석을 수행하였고, 각 블록 및 함수들의 수행 시간을 측정하였으며, 움직임 추정시 개선해야 할 구조들에 대하여 분석하여 하드웨어 스펙 결정에 참조하였다.
영상 프레임의 블록 매칭에 사용되는 SAD 블록을 설계하였고, 인코더 전력 소모의 대부분을 차지하는 내부 SRAM의 경량화를 위한 SAD 저장 구조를 제안하였다. 종래의 SAD 저장 구조에서는 24,576bit의 내부 SRAM을 사용한 반면, 본 발명에서 사용하는 구조에서는 1/125 수준인 196bit의 내부 SRAM만을 사용하므로 움직임 추정기의 전력 소모를 1/7로 줄일 수 있었다. 뿐만 아니라 메모리의 크기가 줄어듦에 따라 전체 SAD 블록의 게이트 수는 1/2로 줄어들었다.
내부 SRAM을 줄일 수 있었던 이유는 기존의 움직임 추정장치의 구조와는 다르게 움직임 벡터를 시스템 클럭에 따라 생성할 수 있기 때문이며, RD(Rate Distortion) 비용 함수부에서 생성된 움직임 벡터의 DPCM(Difference Pulse Code Modulation)값을 비트율로 사용하였다. 또한, RD 비용 함수의 설계 시 곱셈 연산을 시프트 연산으로 대체하였기 때문에 조합 회로를 간단하게 구현할 수 있었으며, 이것은 하드웨어 크기를 감소시키고 시간 여유(Timing Margin)를 증가시켰다.
그리고, 본 발명에 따른 움직임 추정장치는 매크로블록 분할 모드 선택이 가능하며, 최종 출력으로 매크로 블록 분할 모드 및 움직임 벡터값을 내보내고, 최종 출력은 저전력 소비를 위해서 961 클럭 마다 한 번씩 나오도록 고려되었다. 본 발명에 따른 가변 블록 움직임 추정장치의 레이아웃은 0.18um 1-poly 4-metal 1.8V 공정을 사용하였으며 클럭과 리셋 라인에 대하여 스큐(skew)를 최소화하기 위해서 클럭 트리 합성(Clock Tree Synthesis)을 수행하였고, 칩 외부에는 사각 링(Rectangular ring)을 삽입하여 리키지(Leakage) 성분과 잡음(Noise)의 영향을 줄이도록 하였다.
마지막으로 본 발명에 따른 움직임 추정장치에서 사용되는 SAD 저장 구조의 벤치마크 비교 결과는 [표 8]에 정리하였다.
STD130(0.18㎛) | STD90(0.35㎛) | 종래기술 (Yu-Wen Huang) | |
프로세스(Process) | 삼성 0.18㎛ 1P4M 1.8 V | 삼성 0.35㎛ 1P4M 3.3 V | TSMC 0.35㎛ 1P4M |
게이트 수(Gate Count) | 63,700 | 51,300 | 105,500 |
주파수(Frequency) | 50㎒ | 50㎒ | 66.67㎒ |
전력 소모(Power Consumption) | 115㎽ | 107㎽ | 737㎽ |
처리능력(Processing Capability) | 352×288 at 131㎐ | 352×288 at 131㎐ | 720×480 at 30㎐ |
이상에서 본 발명의 바람직한 실시예에 대해 도시하고 설명하였으나, 본 발명은 상술한 특정의 바람직한 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능한 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.
본 발명에 따른 움직임 추정장치 및 그 방법에 의하면, H.264/AVC(Advanced Video Coding) 인코더 실행 시간의 70% 이상을 차지하는 움직임 추정장치의 처리 속도를 향상시킬 수 있고, 전력소모를 줄일 수 있다. 나아가, 이를 H.264/AVC 인코더에 적용하여 실시간 처리 능력을 개선할 수 있다. 또한, 본 발명에 따른 움직임 추정장치에는 저전력 소모를 고려한 SAD(Sum of Absolute Difference) 저장 구조가 사용되어, 모바일 및 멀티미디어 응용에 적합하게 사용할 수 있다. 따라서, 본 발명에 따른 움직임 추정장치를 사용하여 모바일 기기 등에서 실시간 장시간에 걸쳐 동영상 처리가 가능하게 된다.
Claims (9)
- 입력 영상의 현재 프레임과 이전 프레임을 기준으로, 각각 다른 크기의 매크로블럭을 사용하도록 설정된 복수의 매크로블럭 분할 모드별로 SAD 값을 각각 산출하는 SAD 로직부;상기 복수의 매크로블럭 분할 모드별로, 움직임 벡터와 상기 움직임 벡터의 전송시 비트율인 움직임 벡터 비트율을 각각 산출하는 움직임 벡터 비트율 생성부;상기 복수의 매크로블럭 분할 모드별로 상기 SAD 값들을 저장하는 Temp 레지스터;상기 SAD 값들을 상기 복수의 매크로블럭 분할 모드별로 저장하기 위한 저장 공간을 구비하고, 현재 저장된 SAD 값이 상기 Temp 레지스터에 저장된 SAD 값보다 크면 상기 Temp 레지스터에 저장된 SAD 값으로 현재 저장된 SAD 값을 대체하는 RD 레지스터; 및상기 RD 레지스터에 저장된 SAD값과 상기 움직임 벡터의 비트율에 기초하여, 상기 복수의 매크로블럭 분할 모드 중 어느 하나의 분할 모드를 선택하고, 선택된 분할 모드에 대응하는 움직임 벡터를 최종 움직임 벡터로 산출하는 RD 비용 함수부;를 포함하는 것을 특징으로 하는 움직임 추정장치.
- 제1항에 있어서,상기 입력 영상의 각 프레임을 입력순서에 따라 순차적으로 저장하는 입력버퍼부; 및상기 입력버퍼부에 저장된 각 프레임의 픽셀을 DPCM(Differential Pulse Code Modulation)방식으로 처리하여, 상기 현재 프레임 및 상기 이전 프레임으로 제공하는 DPCM 로직부;를 더 포함하는 것을 특징으로 하는 움직임 추정장치.
- 제1항에 있어서,상기 복수의 매크로블럭 분할 모드는, 4x4, 4x8, 8x4, 8x8, 8x16, 16x8, 및 16x16 픽셀의 크기의 매크로블럭을 사용하는 분할 모드를 포함하는 것을 특징으로 하는 움직임 추정장치.
- 제1항에 있어서,상기 움직임 벡터 비트율은, CAVLC(Context-Adaptive Variable-Length Codes) 출력을 DPCM 방식으로 처리하여 산출하는 것을 특징으로 하는 움직임 추정장치.
- 제1항 내지 제4항 중 어느 하나의 항의 움직임 추정장치를 사용하여 움직임을 추정하는 H.264/AVC 인코더.
- 입력 영상의 현재 프레임과 이전 프레임을 기준으로, 각각 다른 크기의 매크로블럭을 사용하도록 설정된 복수의 매크로블럭 분할 모드별로 SAD 값을 각각 산출하는 단계;상기 SAD 값들을 상기 복수의 매크로블럭 분할 모드별로 Temp 레지스터에 저장하고, RD 레지스터에 상기 복수의 매크로블럭 분할 모드별로 저장된 SAD 값이 상기 Temp 레지스터에 저장된 SAD 값보다 크면 상기 Temp 레지스터에 저장된 SAD 값으로 상기 RD 레지스터에 저장된 SAD 값을 대체하는 단계;상기 복수의 매크로블럭 분할 모드별로, 움직임 벡터와 상기 움직임 벡터의 전송시 비트율인 움직임 벡터 비트율을 각각 산출하는 단계; 및상기 RD 레지스터에 저장된 SAD값과 상기 움직임 벡터의 비트율에 기초하여, 상기 복수의 매크로블럭 분할 모드 중 어느 하나의 분할 모드를 선택하고, 선택된 분할 모드에 대응하는 움직임 벡터를 최종 움직임 벡터로 산출하는 단계;를 포함하는 것을 특징으로 하는 움직임 추정방법.
- 제6항에 있어서,상기 입력 영상의 각 프레임을 입력순서에 따라 순차적으로 저장하는 단계; 및저장된 각 프레임의 픽셀을 DPCM(Differential Pulse Code Modulation)방식으로 처리하여, 상기 현재 프레임 및 상기 이전 프레임으로 제공하는 단계;를 더 포함하는 것을 특징으로 하는 움직임 추정방법.
- 제6항에 있어서,상기 복수의 매크로블럭 분할 모드는, 4x4, 4x8, 8x4, 8x8, 8x16, 16x8, 및 16x16 픽셀의 크기의 매크로블럭을 사용하는 분할 모드를 포함하는 것을 특징으로 하는 움직임 추정방법.
- 제6항에 있어서,상기 움직임 벡터 비트율은, CAVLC(Context-Adaptive Variable-Length Codes) 출력을 DPCM 방식으로 처리하여 산출하는 것을 특징으로 하는 움직임 추정방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050029672A KR100742772B1 (ko) | 2005-04-08 | 2005-04-08 | 가변 블록 움직임 추정장치 및 그 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050029672A KR100742772B1 (ko) | 2005-04-08 | 2005-04-08 | 가변 블록 움직임 추정장치 및 그 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060106490A KR20060106490A (ko) | 2006-10-12 |
KR100742772B1 true KR100742772B1 (ko) | 2007-07-26 |
Family
ID=37627207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050029672A KR100742772B1 (ko) | 2005-04-08 | 2005-04-08 | 가변 블록 움직임 추정장치 및 그 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100742772B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140135855A (ko) * | 2013-05-15 | 2014-11-27 | 세종대학교산학협력단 | 동영상 처리 방법 및 장치 |
KR101914667B1 (ko) | 2016-09-19 | 2018-11-02 | 세종대학교산학협력단 | 동영상 처리 방법 및 장치 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100951847B1 (ko) * | 2007-05-22 | 2010-04-12 | 한국전자통신연구원 | 가변 블록 움직임 추정을 위한 sad 계산 방법 및 장치 |
US8731059B2 (en) | 2007-05-22 | 2014-05-20 | Electronics And Telecommunications Research Institute | Apparatus and method for calculating sum of absolute differences for motion estimation of variable block |
KR101321898B1 (ko) * | 2011-08-23 | 2013-10-28 | 광운대학교 산학협력단 | 동영상 압축 코딩의 고속 움직임 추정 장치 |
KR101296318B1 (ko) * | 2012-06-22 | 2013-08-14 | (주) 넥스트칩 | 적응적 블록 분할에 의한 객체 추적 장치 및 방법 |
KR101436369B1 (ko) | 2013-06-25 | 2014-09-11 | 중앙대학교 산학협력단 | 적응적 블록 분할을 이용한 다중 객체 검출 장치 및 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040093605A (ko) * | 2003-04-30 | 2004-11-06 | 삼성전자주식회사 | 고속 움직임 추정을 위한 블록 모드 결정 방법 및 그 장치 |
KR20050061762A (ko) * | 2003-12-18 | 2005-06-23 | 학교법인 대양학원 | 부호화 모드 결정방법, 움직임 추정방법 및 부호화 장치 |
KR20060004060A (ko) * | 2004-07-08 | 2006-01-12 | 삼성전자주식회사 | 다 해상도 기반의 움직임 벡터 추정 방법과 이를 구현하기위한 프로그램이 기록된 기록 매체 |
-
2005
- 2005-04-08 KR KR1020050029672A patent/KR100742772B1/ko not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040093605A (ko) * | 2003-04-30 | 2004-11-06 | 삼성전자주식회사 | 고속 움직임 추정을 위한 블록 모드 결정 방법 및 그 장치 |
KR20050061762A (ko) * | 2003-12-18 | 2005-06-23 | 학교법인 대양학원 | 부호화 모드 결정방법, 움직임 추정방법 및 부호화 장치 |
KR20060004060A (ko) * | 2004-07-08 | 2006-01-12 | 삼성전자주식회사 | 다 해상도 기반의 움직임 벡터 추정 방법과 이를 구현하기위한 프로그램이 기록된 기록 매체 |
Non-Patent Citations (2)
Title |
---|
1020050061762 |
논문 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140135855A (ko) * | 2013-05-15 | 2014-11-27 | 세종대학교산학협력단 | 동영상 처리 방법 및 장치 |
KR101659343B1 (ko) | 2013-05-15 | 2016-09-27 | 세종대학교산학협력단 | 동영상 처리 방법 및 장치 |
KR101914667B1 (ko) | 2016-09-19 | 2018-11-02 | 세종대학교산학협력단 | 동영상 처리 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
KR20060106490A (ko) | 2006-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8000388B2 (en) | Parallel processing apparatus for video compression | |
CN101889405B (zh) | 用于执行运动估计的方法和装置 | |
KR100739281B1 (ko) | 움직임 추정 방법 및 장치 | |
KR100742772B1 (ko) | 가변 블록 움직임 추정장치 및 그 방법 | |
CN106604036B (zh) | 数据编码设备和数据编码方法 | |
US20120076207A1 (en) | Multiple-candidate motion estimation with advanced spatial filtering of differential motion vectors | |
CN106688234B (zh) | 用于图像变换的处理器系统、视频编解码器和方法 | |
US20070133689A1 (en) | Low-cost motion estimation apparatus and method thereof | |
CN104519367A (zh) | 视频解码处理装置及其操作方法 | |
CN104754337A (zh) | 视频编码方法 | |
Pastuszak | Architecture design of the H. 264/AVC encoder based on rate-distortion optimization | |
US9781439B2 (en) | Combined parallel and pipelined video encoder | |
Ruiz et al. | An efficient VLSI processor chip for variable block size integer motion estimation in H. 264/AVC | |
Gao et al. | Complexity scalable control for H. 264 motion estimation and mode decision under energy constraints | |
Vani et al. | Survey on H. 264 standard | |
Zrida et al. | Complexity/performance analysis of a h. 264/avc video encoder | |
Mochizuki et al. | A 64 mW high picture quality H. 264/MPEG-4 video codec IP for HD mobile applications in 90 nm CMOS | |
Chen et al. | VLSI architecture design of fractional motion estimation for H. 264/AVC | |
KR100708183B1 (ko) | 움직임 추정을 위한 영상 데이터 저장 장치 및 그 데이터저장 방법 | |
US20130170565A1 (en) | Motion Estimation Complexity Reduction | |
Wei et al. | A flexible and high-performance hardware video encoder architecture | |
KR101321898B1 (ko) | 동영상 압축 코딩의 고속 움직임 추정 장치 | |
Sze | Parallel algorithms and architectures for low power video decoding | |
Fan et al. | M2VT: A Multi-Output Encoder Accelerator for Multiple-Way Video Transcoding | |
Hsu et al. | An IC design for real-time motion estimation for H. 264 digital video |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
G170 | Publication of correction | ||
FPAY | Annual fee payment |
Payment date: 20130621 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20140630 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20151116 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20160615 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |