KR20080102947A - 가변 블록 움직임 추정을 위한 sad 계산 방법 및 장치 - Google Patents

가변 블록 움직임 추정을 위한 sad 계산 방법 및 장치 Download PDF

Info

Publication number
KR20080102947A
KR20080102947A KR1020080015685A KR20080015685A KR20080102947A KR 20080102947 A KR20080102947 A KR 20080102947A KR 1020080015685 A KR1020080015685 A KR 1020080015685A KR 20080015685 A KR20080015685 A KR 20080015685A KR 20080102947 A KR20080102947 A KR 20080102947A
Authority
KR
South Korea
Prior art keywords
sad
data
macro block
block
current frame
Prior art date
Application number
KR1020080015685A
Other languages
English (en)
Other versions
KR100951847B1 (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 US12/105,745 priority Critical patent/US8731059B2/en
Publication of KR20080102947A publication Critical patent/KR20080102947A/ko
Application granted granted Critical
Publication of KR100951847B1 publication Critical patent/KR100951847B1/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/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/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/57Motion estimation characterised by a search window with variable size or shape

Landscapes

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

Abstract

본 발명은 가변 블록 움직임 추정을 위한 SAD 계산 방법 및 장치에 관한 것으로 한번에 복수개의 현재 프레임 매크로 블록에 대한 SAD를 구할 수 있는 방법 및 장치에 관한 것이다.
본 발명은 적어도 하나의 PE가 행렬 형태로 배열되고 상기 행렬은 연속된 복수의 현재 프레임 매크로 블록에 포함되는 적어도 하나의 픽셀의 SAD 값을 동시에 계산하는 PE 배열부, 현재 프레임 매크로 블록 데이터, 참조 프레임 매크로 블록 데이터 및 참조 프레임 검색 영역 데이터를 포함하고 상기 PE 배열부에 포함되는 각 PE로 상기 데이터들을 전송하는 로컬 메모리 및 상기 로컬 메모리에 포함된 상기 데이터들을 상기 PE 배열부에 포함되는 각 PE가 연산하는 적어도 하나의 픽셀에 상응하여 전송하도록 명령하는 제어부를 포함한다.
H.264, PE, SAD

Description

가변 블록 움직임 추정을 위한 SAD 계산 방법 및 장치{Apparatus and Method for calculating Sum of Absolute Differences for motion estimation of variable block}
본 발명은 가변 블록 움직임 추정을 위한 SAD(Sum of Absolute Differences) 계산방법 및 장치에 관한 것이다.
본 발명은 영상 데이터 압축에 사용되는 움직임 보상에 관한 것으로, 보다 상세하게는 가변적인 블록 크기에 대한 움직임 벡터를 병렬적으로 검출하는 방법에 관한 것이다.
본 발명은 정보통신부 및 정보통신연구진흥원의 IT원천기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2006-S-006-02, 과제명: 유비쿼터스 단말용 부품 모듈]
H.264/AVC 영상 압축 표준은 이전의 압축 표준보다 더욱 높은 압축률을 보이며, 최대 MPEG-4 대비 50% 이상의 데이터 전송률을 줄일 수 있다. 하지만 더욱 높 은 압축률을 위해 새로운 기술을 사용함으로써 연산량이 MPEG-4 대비 최대 16배까지 증가하였다.
H.264/AVC 영상 압축 표준의 기본 처리 단위는 매크로(macro) 블록으로 16x16 픽셀의 블록크기를 가지며, 화면 내 예측(intra prediction)과 화면 간 예측(inter prediction)을 통해 매크로 블록의 데이터를 차분값과 움직임 벡터(motion vector)로 부호화하고 그 데이터들을 전송한다. 여기서 움직임 추정(motion estimation)에 쓰이는 단위 블록의 크기를 작게 하면 보다 정확한 예측이 가능하다. 하지만 블록마다 움직임 벡터 정보를 부호화해야 하기 때문에 움직임 벡터 정보에 대한 부호량은 증가하게 된다.
이와 같이 예측의 정확도와 처리해야 하는 부호량과의 관계 때문에 H.264/AVC에서는 여러 가지 매크로 블록 크기 중에서 최적의 것을 사용하는 방법이 도입되었다. MPEG-2에서는 16x16 고정 크기 매크로 블록을 사용하였고, MPEG-4에서는 16x16과 8x8 두 종류의 매크로 블록을 사용하였다. 이에 비해 H.264에서는 16x16으로부터 4x4까지 7종류의 매크로 블록 크기 중 하나를 선택하여 사용하고 있다.
이렇게 움직임 추정 방법에서 여러 크기의 매크로 블록을 사용할 경우 화면의 압축도는 높아지나 계산해야할 양이 늘어나는 단점이 있었다. 특히 움직임 추정은 전체 H.264 부호화 계산에서 차지하는 연산량이 가장 크므로 이를 효율적으로 처리할 수 있는 방법이 요구되었다.
본 발명은 가변 블록 움직임 추정을 위한 SAD(Sum of Absolute Differences) 계산 방법 및 장치를 제공하는 것을 목적으로 한다.
또한 본 발명은 SAD의 계산을 동시에 병렬적으로 처리하여 효과적이고 빠른 SAD 계산 방법 및 장치를 제공하는 것을 목적으로 한다.
상술한 목적들을 달성하기 위하여, 본 발명의 일 측면에 따르면, 적어도 하나의 PE가 행렬 형태로 배열되고 상기 행렬은 연속된 복수의 현재 프레임 매크로 블록에 포함되는 적어도 하나의 픽셀의 SAD 값을 동시에 계산하는 PE 배열부, 현재 프레임 매크로 블록 데이터, 참조 프레임 매크로 블록 데이터 및 참조 프레임 검색 영역 데이터를 포함하고 상기 PE 배열부에 포함되는 각 PE로 상기 데이터들을 전송하는 로컬 메모리 및 상기 로컬 메모리에 포함된 상기 데이터들을 상기 PE 배열부에 포함되는 각 PE가 연산하는 적어도 하나의 픽셀에 상응하여 전송하도록 명령하는 제어부를 포함하는 가변 블록 움직임 추정을 위한 SAD 계산기를 제공할 수 있다.
바람직한 실시예에 있어서, 상기 PE는 현재 프레임 매크로 블록에 포함되는 적어도 하나의 픽셀의 SAD 값을 계산하는 최소 단위인 것을 특징으로 할 수 있다. 또한, 상기 PE 배열부는 상기 PE가 4행 및 24열로 구성되고, 상기 24열 중 8열 마다 각각 다른 현재 프레임 매크로 블록에 포함된 픽셀에 대하여 SAD를 계산하는 것 을 특징으로 할 수 있다.
또한, 상기 PE는 상기 로컬 메모리로부터 매크로 블록 데이터, 참조 프레임 매크로 블록 데이터 및 참조 프레임 검색 영역 데이터를 수신하는 수신부, 상기 수신부에서 수신된 데이터들을 저장하는 레지스터 및 상기 저장된 데이터들을 이용하여 SAD를 계산하는 ALU를 포함 하는 것을 특징으로 할 수 있다. 또한, 상기 PE 배열부는 상기 PE 배열부에 포함되는 PE를 적어도 4개의 구역으로 나누고, 상기 각 구역에 대하여 구획된(partitioned) SIMD 연산하는 것을 특징으로 할 수 있다. 또한, 상기 PE 배열부의 각 PE는 상기 로컬 메모리에 포함된 현제 프레임 매크로 블록 데이터 및 참조 프레임 매크로 블록 데이터의 4x2 픽셀 데이터를 이용하여 SAD를 계산하는 것을 특징으로 할 수 있다. 또한, 상기 PE 배열부는 상기 각 PE에 저장된 SAD 값을 가변 블록의 크기에 상응하도록 더하여 가변 블록의 SAD 값을 계산하는 것을 특징으로 할 수 있다.
본 발명의 다른 일 측면을 참조하면, 현재 프레임 매크로 블록 데이터, 참조 프레임 매크로 블록 데이터 및 참조 프레임 검색 영역 데이터를 PE 배열의 로컬 메모리에 저장하는 단계, 상기 PE 배열의 각 PE에 상응하는 참조 프레임 매크로 블록의 픽셀 데이터 및 현재 프레임 매크로 블록의 픽셀 데이터를 상기 PE에 포함되는 레지스터에 저장하는 단계, 상기 각 PE에 저장된 상기 참조 프레임 매크로 블록의 픽셀 데이터 및 현재 프레임 매크로 블록의 픽셀 데이터를 이용하여 상기 각 PE에 상응하는 픽셀의 SAD를 계산하는 단계 및 상기 계산된 각 PE의 SAD를 이용하여 가 변 블록의 SAD를 계산하는 단계를 포함하되, 상기 PE 배열은 복수의 현재 프레임 매크로 블록에 대한 SAD 값을 동시에 계산할 수 있는 것을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산 방법을 제공할 수 있다.
바람직한 실시예에 있어서, 상기 PE는 현재 프레임 매크로 블록에 포함되는 적어도 하나의 픽셀의 SAD 값을 계산하는 최소 단위인 것을 특징으로 할 수 있다.
또한, 상기 PE 배열은 상기 PE가 4행 및 24열로 구성되고, 상기 24열 중 8열 마다 각각 다른 현재 프레임 매크로 블록에 포함된 픽셀에 대하여 SAD를 계산하는 것을 특징으로 할 수 있다. 또한, 상기 현재 프레임 매크로 블록의 SAD값의 계산은 상기 참조 프레임 검색 영역의 좌상단에서 우하단으로 우측으로 1 픽셀만큼씩 이동하며 계산되는 것을 특징으로 할 수 있다. 또한, 상기 PE 배열은 상기 PE 배열에 포함되는 PE를 적어도 4개의 구역으로 나누고, 상기 각 구역에 대하여 구획된(partitioned) SIMD 연산하는 것을 특징으로 할 수 있다. 또한, 상기 PE 배열의 각 PE는 상기 로컬 메모리에 포함된 현재 프레임 매크로 블록 데이터 및 참조 프레임 매크로 블록 데이터의 4x2 픽셀 데이터를 이용하여 SAD를 계산하는 것을 특징으로 할 수 있다. 또한 상기 가변 블록은 4x4, 4x8, 8x4, 8x8, 16x8, 8x16 및 16x16 픽셀의 크기를 가지는 블록인 것을 특징으로 할 수 있다.
본 발명은 가변 블록 움직임 추정을 위한 SAD(Sum of Absolute Differences) 계산 방법 및 장치를 제공할 수 있다.
또한 본 발명에 의하면 SAD의 계산을 동시에 병렬적으로 처리하여 효과적이고 빠른 SAD를 계산할 수 있어 H.264 부호화 효율이 현저히 높아질 수 있다.
이하 첨부된 도면을 참조하여 본 발명에 따른 가변 블록 움직임 추정을 위한 SAD 계산 방법 및 장치에 대하여 상세히 설명한다.
도 1은 본 발명이 적용되는 H.264 부호화 방식을 개략적으로 나타내는 블록도이다.
도 1을 참조하면 본 발명이 적용되는 H.264 부호화 장치는 양자화부(101), 역양자화부(103), 엔트로피 부호화부(105), 블록 해제부(107), 참조 프레임 재현부(109), 움직임 보상부(111), 움직임 추정부(113) 및 인트라 예측부(115)를 포함한다.
양자화부(101)는 외부에서 입력되는 매크로 블록을 소정 방식에 따라 변환한 후 양자화하는 역할을 담당한다. 이러한 양자화부(101)에서 양자화하는 대표적인 영상 변환 기법으로는 DCT(Discrete Cosine Transform)이 있다.
역양자화부(103)는 양자화부(101)로부터 변환 후 양자화된 영상 데이터를 입력받아 역양자화 및 역변환하는 역할을 담당한다.
엔트로피 부호화부(105)는 최종 h.264 부호화 작업이 종료된 최종 매크로 블록을 엔트로피 부호화하여 출력 비트 스트림을 생성하는 역할을 담당한다.
블록 해제부(107) 역양자화된 매크로 블록의 블록을 해제하여 자연스러운 화 상을 제공하는 역할을 담당한다.
참조 프레임 재현부(109)는 상기 블록 해제부(107)로부터 입력받은 화상을 이용하여 다수의 참조 프레임 화상을 생성하고 저장하는 역할을 담당한다. 이러한 참조 프레임은 움직임 추정이나 움직임 보상을 할 때 참조 화면으로 사용되는 복수의 프레임 화상이다.
움직임 보상부(111, MC : Motion Compensation)는 상기 참조 프레임 재현부(109)에서 저장된 참조 프레임 및 움직임 추정부(113)에서 추정된 모션 벡터 및 SAD를 기준으로 매크로 블록을 보상하는 역할을 담당한다.
움직임 추정부(113)는 상기 참조 프레임 재현부(109)에서 저장된 참조 프레임을 이용하여 현재 매크로 블록의 움직임을 추정하여 그 모션 벡터 및 비용을 계산하는 역할을 담당한다. 이러한 움직임 추정부(113)에서는 참조 프레임의 매크로 블록과 현재 프레임의 매크로 블록을 픽셀단위로 비교하여 다양한 블록에 대한 움직임 추정을 수행해야 하므로 계산해야할 양이 매우 방대해질 수 있다.
인트라 예측부(115)는 상기 참조 프레임 재현부(109)에서 저장된 참조 프레임을 이용하여 매크로 블록 내의 예측 부호화 즉 인트라 예측을 수행하는 역할을 담당한다.
도 2는 본 발명이 적용되는 H.264 부호화 장치의 움직임 추정에서 연산되는 가변 블록의 종류를 나타내는 도면이다.
도 2를 참조하면, H.264 방식의 움직임 추정에서 사용되는 가변 블록은 16x16,8x16,16x8,8x8,4x8,8x4,4x4 크기의 7개의 블록이 사용될 수 있다. 이러한 가변 블록은 현재 프레임 매크로 블록과 참조 프레임 매크로 블록과의 SAD 연산에 따라 결정되는데, 다양한 크기의 매크로 블록이 사용되므로 해서 좀더 효율적인 영상 압축이 가능하다는 장점이 있다, 그러나 SAD 연산 시에 7개의 블록 모두에 대해서 연산을 해야 하므로 움직임 추정에 걸리는 시간 및 연산량이 매우 크다는 단점이 존재한다.
도 3은 발명이 적용되는 H.264 부호화 방법에서 움직임 추정 방법을 간단히 설명하는 도면이다.
도 3을 참조하면, 부호화를 할 현재 프레임(300)의 매크로 블록(301)과, 현재 프레임과 비교되는 참조 프레임(310)에서 상기 현재 프레임의 매크로 블록(301)과 동일한 위치에 존재하는 참조 프레임 매크로 블록(311)을 비교하여 모션 벡터(315)를 구할 수 있다.
이때, 참조 프레임 매크로 블록(311)은 참조 프레임(310)의 미리 설정된 검색 범위(313)내에서 각각 1 픽셀 단위로 움직이면서 현재 프레임 매크로 블록(301)과 비교하여, 그 비교 값이 가장 적은 위치를 찾아낸다. 이때 비교하는 값은 SAD 이며 이러한 비교 방법을 수식으로 나타내면,
Figure 112008012897009-PAT00001
Figure 112008012897009-PAT00002
와 같다. 여기서 p,q 값은 검색 영역(Search area)의 행 및 열의 길이이고, C(i,j)는 현재 프레임 매크로 블록(301)의 내부 픽셀 좌표를 나타내며, R(i+m,j+n)은 참조 프레임 매크로 블록(311)에서 현재 프레임 매크로 블록(301)의 좌표와 비교되는 내부 픽셀의 좌표이다.
이렇게 현재 프레임 매크로 블록(301)에 대하여 각 픽셀마다 SAD 값이 산출되면 현재 프레임 매크로 블록(301)과 참조 프레임 매크로 블록(311) 사이의 SAD 값이 가장 작은 참조 프레임의 매크로 블록의 좌표가 산출되며, 그때의 참조 프레임 매크로 블록의 좌표가 모션 벡터(315)가 된다.
도 4는 본 발명의 SAD 계산을 위한 SAD 계산부의 대략적인 구성을 나타내는 도면이다.
도 4를 참조하면, 상기 도면은 SAD 계산을 위한 부분 중 핵심적인 부분만을 개략적으로 나타내었다. 본 발명에서 SAD를 계산하는 부분은 PE(Processing Element)라고 불리는 부분으로 이 PE에서 가장 적은 단위의 SAD 연산이 수행된다. 이러한 PE의 세부적인 구성은 도 6에서 다시 설명하도록 한다.
PE 배열부(Processing Element array)(401)는 상기에서 설명된 PE가 행렬(Matrix)형태로 배열된 부분이다. 이러한 PE 배열부(401)는 적어도 한번에 하나의 매크로 블록 전체에 대한 SAD 계산이 가능한 PE를 포함하고 있다. 즉, 예를 들어 하나의 PE가 4x2 픽셀에 대한 SAD 값을 연산할 능력을 가지고 있다면, PE 배열부는 16x16개의 픽셀을 가지는 하나의 매크로 블록을 한번에 연산하기 위하여 4x8개의 PE를 포함하고 있어야 한다.
본 발명의 특징은 동시에 적어도 3개의 매크로 블록에 대한 SAD 연산을 수행하므로 4x24개의 PE를 포함할 수 있을 것이다.
로컬 메모리(Local Memory)(403)는 상기 PE 배열부(401)에서 SAD 연산을 위해서 필요한 현재 프레임 매크로 블록 데이터, 참조 프레임 매크로 블록 데이터 및 참조 프레임 검색 영역 데이터를 저장하고, PE 배열부(401)의 요청에 따라 PE 배열부로 각 데이터를 공급하고, 그 결과를 저장하는 부분이다.
이러한 로컬 메모리(403)는, PE 배열부(401)의 각 PE와 메모리 맵핑되어 있으며, 검색 영역을 따라서 비교되는 참조 프레임 매크로 블록의 위치가 달라지는 경우에 그에 상응하는 픽셀에 대하여 다시 필요한 블록 데이터를 PE 배열부(401)로 제공하는 역할을 담당한다.
제어부(405)는 현재 프레임 매크로 블록의 SAD 연산을 PE의 SAD 연산을 제어하는 역할을 담당한다. 즉 상기 도 3에서 설명한 바와 같이 현재 프레임 매크로 블록에 대한 SAD 연산은 현재 프레임 매크로 블록의 크기가 16x16 이라면, 참조 프레임 매크로 블록 데이터와 각 픽셀단위로 모두 SAD 연산을 수행해야 한다. 즉 하나의 현재 프레임 매크로 블록에 대하여 비교 대상이 되는 참조 프레임 매크로 블록은 256개가 된다. 따라서 PE 배열부(401)에 변경되는 참조 프레임 매크로 블록 데이터를 제공해 주어야 하는데 이러한 제어를 제어부(405)에서 담당한다.
도 5는 본 발명에 따른 PE 배열부의 PE 배열 및 동시 연산 방법을 나타내는 도면이다.
도 5를 참조 하면, 본 발명에 따른 PE 배열부는 4x24개의 PE를 포함한다.
이러한 경우 PE 배열부는 기본적으로 단일 명령 복수 데이터 방식(single input stream multiple data stream : SIMD)으로 동작된다. 즉 하나의 데이터 스트림에 대하여 복수의 PE가 동작하게 된다. 따라서 하나의 명령으로 병렬적으로 모든 PE을 제어할 수 있게 된다. 다만 일부 동작에 대해서는 본 도면에서 확인 할 수 있는 바와 같이 G0, G1,G2 및 G3 프로세스가 각각 분리되어 동작할 수 있다. 이러한 동작을 구획된(partitioned) SIMD라고 한다. 이러한 구획된 SIMD 동작은 상기 참조 번호 501에서와 같이 행단위로 구획될 수 있으며, 또한 참조 번호 503에서와 같이 4x4 블록 단위로 분리되어 동작할 수 있다.
이렇게 동작하는 PE 배열부는 각 PE가 4x2의 픽셀에 대하여 SAD를 계산할 수 있다고 하면 4x8의 PE 배열로서 1개의 매크로 블록(16x16)에 대한 SAD 연산을 모두 수행할 수 있다. 따라서 상기 4x24개의 PE를 가지고 있는 PE 배열부는 결국 3개의 매크로 블록에 대한 SAD 연산을 모두 수행할 수 있게 되는 것이다.
도 6은 본 발명에 따른 PE의 세부 구성을 나타내는 블록도이다.
도 6을 참조하면, 본 발명에 따른 PE는 연산기(601), 입출력부(603), 내부 메모리(605) 및 레지스터(607)를 포함한다.
상기 연산기는(601) 본 발명에서 가장 핵심적인 부분으로 레지스터(607)에 입력된 현재 프레임 매크로 블록 데이터 및 참조 프레임 매크로 블록 데이터를 이용하여 SAD 연산을 직접 수행하는 부분이다. 이러한 연산기(601)는 시프터, 곱셈기 및 산술 논리 연산기를 포함한다.
상기 입출력부(603)는 상기 PE 단위와 이웃하는 PE로부터 계산 결과 및 데이터를 입력받고, 외부로 계산 결과 및 데이터를 출력하는 역할을 담당한다. PE는 하나의 계산 단위 부분이나, 연속적인 SAD 연산을 수행할 경우 이웃하는 PE의 연산 결과나 데이터를 수신하여 처리할 경우가 있기 때문이다.
상기 내부 메모리(605)는 외부의 로컬 메모리로부터 전송되는 현재 프레임 매크로 블록 데이터, 참조 프레임 매크로 블록데이터를 저장하는 부분이다. 로컬 메모리와 상기 PE는 각각 메모리 매핑 되어있어, 매크로 블록 데이터 중 지금 PE에서 계산해야할 픽셀의 데이터 정보를 제공하는데, 이러한 로컬 메모리로부터 전송되는 데이터를 저장하는 부분이다.
도 7은 본 발명에 따른 SAD 연산 방법을 개략적으로 나타내는 도면이다.
도 7을 참조하면, 현재 프레임(700)에서 매크로 블록(701,703,705)을 선택하고 그 매크로 블록의 SAD를 구하기 위해서 각 매크로 블록에 따른 검색 영역(711, 713, 715)을 설정하여 3개의 매크로 블록에서 동시에 SAD 연산을 수행한다.
이러한 SAD 연산은 PE 배열부(720)에 존재하는 PE 배열을 3등분 하여 나눠진 각 구역이 각각 하나의 매크로 블록에 대한 연산을 담당하게 된다. 예를 들어 상기 PE 배열부가 4x24개의 PE로 구성된다면, 상기 PE 배열부를 1 구역당 4x8개의 배열을 가지는 3개의 구역으로 분리하고 각 4x8 구역이 하나의 매크로 블록에 대하여 SAD 연산을 수행하게 된다.
이러한 경우, 상기 참조 번호 710 도면에서 확인 할 수 있는 바와 같이 검색 영역(711,713,715)이 겹치게 된다. 검색영역은 매크로 블록이 SAD 연산을 위해서 참조 프레임 매크로 블록을 이동해 가면서 연산하는 구역인데, 예를 들어 16x16 픽셀의 크기를 가지는 매크로 블록에 대한 참조 영역은 31x31의 크기를 가지게 된다. 따라서 일반적인 경우에는 3개의 매크로 블록에 대한 참조 영역의 크기는 31x93이 될 것이나, 본원 발명에서 참조 영역의 크기는 31x63이 되어 참조 프레임의 크기가 약 2/3만큼 줄어들게 된다. 이에 따라, PE에서 SAD 연산을 하는 경우에 불러오는 로컬 메모리의 데이터량이 기존의 방식에 비하여 2/3만큼 줄어들게 되고 그만큼 처리시간이 줄어듦을 알 수 있다.
도 8은 본 발명이 적용되는 PE 배열부와 검색 영역과의 메모리 매핑을 나타내는 도면이다.
도 8을 참조하면, 참조 번호 800은 PE 배열부를 개략적으로 나타내고 있으며, 참조 번호 810은 상기 PE 배열부에 대응하는 참조 프레임 검색 영역을 나타낸다.
상기의 PE 배열부(800)는 상기 도 7에서 설명한바와 같이 4x24개의 PE로 구성되어 있다. 이러한 PE 배열부(800)는 3개의 현재 프레임 매크로 블록에 대하여 SAD 연산을 동시에 수행하게 된다. 즉 4x24개의 PE는 16x(16+16+16) 픽셀 크기의 현재 프레임 블록에 대한 연산을 동시에 수행하게 된다.
따라서 상기 PE 배열부(800)에 포함되는 각 PE는 하나의 PE 당 현재 프레임 매크로 블록의 4x2 픽셀에 대한 SAD 연산을 수행하게 된다. 따라서 현재 프레임 매크로 블록은 순서대로 4x2 픽셀 블록과 PE 배열부(800)의 각 PE와 매핑되어 로컬 메모리에 저장된다.
한 편, 참조 영역의 경우는 31x63 픽셀의 크기를 가지고 있다. 따라서 현재 프레임 매크로 블록과 메모리를 매핑하는 방법이 틀린데 이를 살펴보면, 우선 PE 배열부에서 참조번호 801의 구역에 속하는 PE들의 경우에는 현재 프레임 매크로 블록과 같이 4x2 픽셀 블록으로 매핑된다. 이는 현재 프레임 매크로 블록과 비교되는 참조 프레임 매크로 블록이 동일한 크기로 입력되어야 SAD 연산에 유리하기 때문이다. 참조 번호 811에 표시된다.
또한, 참조 번호 803 구역에 속하는 PE 들의 경우에는 참조 프레임 매크로 블록이 이동하여도 계속하여 참조 프레임 블록 데이터를 제공하기 위하여 19x2 픽셀의 데이터가 맵핑된다. 또한 참조 번호 805 구역에 속하는 PE 들의 경우에도 참조 프레임 매크로 블록의 이동에 따른 데이터 제공을 위하여 4x17 픽셀의 데이터가 매핑된다. 마지막으로 참조 번호 807 구역에 속하는 PE의 경우에는 검색 영역의 나머지 구역을 모두 저장하기 위하여 19x17 픽셀의 데이터가 모두 매핑되어 저장된다.
이렇게 검색 영역 전부를 로컬 메모리에 저장하고, 각 PE와 검색 영역을 매핑시키면 외부 메모리와 데이터를 추가로 주고받을 필요 없이 매핑된 거색 영역 데이터를 이용하여 바로 SAD 연산이 가능하게 된다. 물론 이러한 경우 로컬 메모리와 PE 사이에 데이터를 저장하거나 갱신하는 시간이 필요하지만 이러한 데이터 저장 갱신 시간은 PE에서 SAD 연산을 수행하는 중에 일어나므로 실질적인 시간의 지연은 없어진다.
도 9는 본 발명에 따른 SAD 연산을 위하여 사전 처리를 하는 과정을 나타내는 도면이다.
도 9를 참조하면, 현재 프레임의 매크로 블록(903)이 참조 프레임의 검색 영역(901)에서 어떻게 이동하면서 SAD를 계산하는지를 나타낸다.
SAD 계산은 이전의 도면에서 설명한 바와 같이 현재 프레임의 매크로 블록(903)과 미리 구해진 참조 프레임에서 현재 프레임 매크로 블록과 동일한 위치에 있는 참조 프레임 매크로 블록과 유사도를 비교하여 구해진다. 이러한 경우 하나의 매크로 블록에 대하여 검색 영역(901)전부에 대하여 각각 매크로 블록의 유사도를 비교하여야 하므로, 상기 도 9와 같이 하나의 현재 프레임 매크로 블록이 검색 영역(901)을 1 픽셀만큼 이동하면서 전 영역에 대하여 SAD 연산을 수행한다. 이때 SAD 연산의 수행 단계는 상기 도면 9에서 확인할 수 있는 바와 같이 검색 영역(901)의 좌상에서 우하로 1픽셀씩 이동하면서 수행된다.
이러한 SAD 연산을 위하여 우선 SAD 연산을 실질적으로 수행하는 PE 배열부의 로컬 메모리에서 상기 연산을 위해 필요한 데이터들을 일단 모두 PE의 레지스터로 가져오는 단계가 필요하다. 이러한 단계는 현재 프레임 매크로 블록이 1행 변화할 때에만 수행되는데 이는 상기 도면에서 (1), (17)...(241)단계에서 수행된다. 따라서 검색 영역 전 범위에 걸쳐서 16번 진행된다.
특히 (1) 단계를 수행하는 경우에는 PE 배열에서 하나의 매크로 블록에 상응하는 각 PE는 현재 프레임 매크로 블록의 4x2 픽셀의 데이터 정보와 이에 상응하는 참조 프레임 매크로 블록의 4x2 픽셀 데이터 정보를 각 PE의 레지스터로 가져온다.
그 후, (7)~(241)단계에서는 현재 프레임 매크로 블록의 데이터는 (1) 단계에서 이미 가져왔으므로, 단지 행 변화에 의하여 달라지는 참조 프레임 매크로 블록의 픽셀 데이터만 다시 가져오면 된다.
도 10 은 본 발명에서 각 PE에서 4x2 픽셀의 SAD가 연산되는 방법을 나타내는 도면이다.
도 10을 참조하면, 상기 도 9에서 설명한 방법으로 각 PE는 현재 프레임 매크로 블록의 각 픽셀에 대한 데이터 및 참조 프레임 검색 영역의 각 픽셀에 대한 데이터를 모두 저장할 수 있다.
참조 번호 1001의 경우 각 PE에서 4x2 픽셀 즉 8 개의 픽셀에 대한 각 픽셀의 SAD를 구하는 것을 나타내는 도면이다. 참조 번호 1001에서 확인할 수 있는 바와 같이 현재 프레임 매크로 블록의 각 픽셀 값(1003) 및 참조 프레임 매크로 블록의 각 픽셀 값(1005)이 저장되면 각 매크로 블록에서 동일한 위치에 있는 픽셀 값들의 차이의 절대값을 계산하여 저장한다(1007). 여기서 각 픽셀 값들의 차이의 절대값이 SAD 값이다.
참조 번호 1010의 경우 4x2 블록의 SAD 값을 계산하는 방법을 나타낸다. 상기 참조 번호 1001의 도면에서 구해진 각 픽셀의 SAD 값(1007)은 아래에서부터 각 픽셀의 값을 더하여 상위 메모리에 저장하고 그 저장된 값을 더하여 상위 메모리에 저장하는 식으로 계산하여 최종적으로 메모리의 최상층에 남아 있는 값이 4x2 블록의 SAD 값이 된다.
결국 각 PE는 자신이 처리하는 4x2 블록에 대한 SAD 값을 구하게 되고, 상기 도 9에서 설명한 바와 같은 방법으로 참조 프레임 검색 영역 전체에서 이러한 SAD 값을 구하면 모든 영역에서 4x2 블록에 대한 SAD 값이 구해지게 된다.
도 11은 본 발명에서 검색 영역을 이동하면서 SAD를 계산하는 방법에 관한 도면이다.
도 11을 참조하면 상기 도 10에 의한 방법으로 하나의 현재 프레임 매크로 블록과 하나의 참조 프레임 매크로 블록의 SAD를 계산한 다음, 현재 프레임 매크로 블록을 이동하는 방법을 나타내었다. 상기 도 9에서 알 수 있는 바와 같이 SAD 연산을 위해서 현재 프레임 매크로 블록이 참조 프레임 검색 영역 전체를 픽셀 단위로 이동하면서 각각 SAD를 계산해야 하나, 실제적으로는 현재 프레임 매크로 블록의 반대방향으로 참조 프레임 매크로 블록을 이동하면서 계산할 수 있다.
이러한 경우 참조 번호 1100의 경우에는 열 방향으로 이동될 때의 PE 데이터 갱신 방법을 나타내며 참조 번호 1110의 경우는 행 방향으로 이동될 때의 PE 데이터 갱신 방법을 나타낸다.
참조 번호 1100의 경우, 실선 사각형 배열(1101)은 PE 배열에서 1 매크로 블록을 담당하는 구역을 나타내며 각 사각형은 하나의 PE를 의미한다. 또한 점선 사 각형(1103)은 참조 프레임 매크로 블록을 의미한다. 우선 1 매크로 블록에 대하여 SAD를 모두 계산하면, 현재 프레임 매크로 블록을 1 픽셀 아래로 이동 시키는 대신에 참조 프레임 매크로 블록을 1 픽셀 위로 이동시킨다. 즉, 이 구역의 모든 PE는 PE 배열의 바로 아래 PE로부터 새로운 참조 블록 데이터를 가져와서 기존의 참조 프레임 매크로 블록 데이터 덮어쓴다. 그렇게 되면 마지막 행의 PE는 아래의 PE가 존재하지 않으므로 로컬 메모리에서 그에 해당하는 참조 프레임 검색 영역의 데이터를 불러와서 덮어쓰게 된다.
또한 참조 번호 1110의 경우에는 실선 사각형 배열(1111)은 PE 배열에서 1 매크로 블록을 담당하는 구역을 나타내며 각 사각형은 하나의 PE를 의미한다. 또한 점선 사각형(1113)은 참조 프레임 매크로 블록을 의미한다. 우선 1 매크로 블록에 대하여 SAD를 모두 계산하면, 현재 프레임 매크로 블록을 1 픽셀 우측으로 이동 시키는 대신에 참조 프레임 매크로 블록을 1 픽셀 좌측으로 이동시킨다. 즉, 이 구역의 모든 PE는 PE 배열의 바로 우측 PE로부터 4픽셀의 새로운 참조 블록 데이터를 가져와서 기존의 참조 프레임 매크로 블록 데이터 덮어쓴다. 그렇게 되면 마지막 열의 PE는 우측의 PE가 존재하지 않으므로 로컬 메모리에서 그에 해당하는 참조 프레임 검색 영역에서 4 픽셀의 데이터를 불러와서 덮어쓰게 된다.
도 12는 가변 블록 각각에 대한 SAD 값을 구하는 방법을 나타내는 도면이다.
도 12를 참조하면, 상기의 도 9 내지 도 11에 의하여 현재 프레임 매크로 블록의 각 PE 단위에 대하여 SAD가 계산된 상태에서, 가변블록의 SAD 값을 계산하는 방법을 나타내고 있다. 가변 블록은 상기 도 2에서 설명한 바와 같이 7종류가 있고 각각의 SAD 값을 계산한다.
본 발명에서 각 PE는 4x2 크기의 블록에 대한 SAD 값을 이미 계산하고 있으므로, 그 값들을 기초로 각각의 SAD 값을 계산할 수 있다.
우선 4x4 블록의 SAD 값을 계산하는 방법은 상기 참조 번호 1201에서 확인 할 수 있는 바와 같이 각 PE에 저장된 SAD 값 중에서 짝수열에 저장된 SAD 값과 홀수열에 저장된 SAD 값을 서로 더하여 홀수열에 저장시킨다. 이렇게 되면 홀수열의 4x2 블록의 SAD 값과 짝수열의 4x2 블록의 SAD 값이 더해져서 4x4 블록의 SAD 값이 저장된다.
그런 다음 참조 번호 1203과 같이 상기 참조 번호 1201에서 결정된 4x4 블록의 SAD 값을 가지고 8x4 블록의 SAD 값을 구할 수 있다. 이는 상기 1201에서 SAD 값을 저장하고 있는 PE들을 행단위로 모두 더하여 그 결과 값을 짝수행에 저장하는 방식으로 계산된다. 또한 상기 1203에서 계산된 8x4 SAD 값을 저장하고 있는 PE들만을 다시 열단위로 합하여 홀수열에 저장하면 참조 번호 1205와 같이 8x8 블록에 대한 SAD 값을 구할 수 있다.
또한, 상기 1201에서 구해진 4x4 SAD 값을 저장하고 있는 PE만을 대상으로 홀수열과 짝수열을 합하여 그 값을 다시 홀수열의 PE에 저장한다면 참조 번호 1207과 같이 4x8 블록에 대한 SAD 값을 저장할 수 있다.
또한 상기 1205에서 8x8 블록의 SAD 값을 저장하고 있는 PE 만을 상대로 다시 홀수열과 짝수열을 합하여 그 값을 다시 홀수열의 PE에 저장한다면 참조 번호 1209와 같이 8x16 블록의 SAD 값을 저장할 수 있다.
또한, 상기 1205에서 8x8 블록의 SAD 값을 저장하고 있는 PE 만을 상대로 다시 홀수 행과 짝수행을 합하여 그 값을 다시 짝수행에 저장한다면 참조 번호 1211과 같이 16x8 블록의 SAD 값을 저장할 수 있다.
마지막으로 상기 1209에서 8x16 블록의 SAD 값을 저장하고 있는 PE 만을 상대로 짝수행과 홀수 행의 값을 더하여 짝수행의 PE에 다시 저장한다면 참조 번호 1213과 같이 16x16 블록의 SAD 값을 저장할 수 있다.
상기와 같이 미리 결정된 4x2 블록의 SAD 값을 이용하여 PE 배열부에 포함된 PE 값을 서로 이용하여 간단히 변환 블록의 SAD 값을 구할 수 있다.
도 13은 본 발명에 따른 SAD 연산의 후반부 처리를 하는 과정을 나타내는 도면이다.
본원 발명에서 PE 배열부는 3 개의 구역으로 나누어 3개의 현재 프레임 매크로 블록에 대하여 동시에 SAD를 계산함은 이미 살펴본 바와 갔다. 이때, 참조 프레임 검색 영역은 31x63 픽셀의 크기를 유지하고 있는데, 현재 프레임 매크로 블록이 이동하며 SAD를 연산할 경우에, 참조 프레임 검색 영역의 마지막 부분에 도착했을 경우에는 우측의 PE가 존재하지도 않는다. 이러한 경우 도 11에서 살펴본 바와 같이 로컬 메모리로부터 그 영역에 해당하는 픽셀 데이터를 불러와야 하는데 이러한 경우에는 상기 1301과 같이 2 픽셀의 데이터를 불러오게 된다.
상기와 같은 단계에 의하여 현재 프레임 매크로 블록에 대한 SAD 연산을 검 색 영역 전부에 대하여 수행할 수 있다.
도 14 및 도 15는 본 발명의 SAD 계산 방법을 간략하게 나타낸 순서도이다.
도 14는 본 발명의 PE 배열부에 속하는 PE 각각이 4x2 블록의 SAD 값을 계산하는 방법을 나타내는 순서도이다.
도 14를 살펴보면 우선 각 PE는 현재 프레임 매크로 블록과 참조 프레임 검색 영역의 데이터를 로컬 메모리에 저장한다(단계 1401). 그런 다음 각 PE에 해당하는 현재 프레임 매크로 블록의 데이터와 참조 프레임 매크로 블록의 데이터를 각각 레지스터로 불러들인다(단계1403). 그 후 상기 레지스터에 불러들인 데이터를 이용하여 SAD 값을 계산한다. 즉 각 픽셀마다 현재 프레임 매크로 블록의 데이터와 참조 프레임 매크로 블록의 데이터의 차이 값의 절대값을 구한다(단계 1405).
그런 다음 각 픽셀의 SAD 값을 누적하여 각 PE는 4x2 블록의 SAD값을 계산한다(단계 1407).
도 15는 각 PE에서 계산된 SAD 값을 이용하여 가변 블록의 SAD 값을 구하는 방법을 나타낸 순서도이다.
도 15를 참조하면, 우선 PE 배열에서 순서대로 짝수열의 PE의 SAD 값과 홀수열의 SAD 값을 서로 더하여 홀수열의 PE에 저장한다. 즉, 1열의 PE와 2열의 PE의 SAD 값을 더하여 1열의 PE에 저장하고 3열의 PE와 4열의 PE를 더하여 3열에 저장한다. 이렇게 하면 1,3,5...열의 PE에는 4x4 블록의 SAD 값이 저장된다(단계 1501).
그런 다음 상기에서 구해진 4x4 블록의 SAD 값을 저장한 PE 만을 대상으로 짝수행의 PE 와 홀수 행의 PE를 더하여 짝수행의 PE에 저장한다. 즉 1행의 PE와 2행의 PE를 더하여 2행의 PE에 저장하는 것이다 이렇게 하면, 2행1열, 4행1열, 2행3열,4행3열.. 의 PE에 8x4 블록의 SAD 값이 저장된다(단계 1503).
그런 다음 상기 8x4 블록의 SAD 갑을 저장한 PE만을 대상으로 다시 짝수열과 홀수열을 더하여 홀수열에 저장하게 된다. 그러면 8x8 블록의 SAD 값을 구할 수 있다(단계 1505), 다시 8x8 SAD 값을 저장한 PE를 대상으로 짝수열과 홀수열을 더하여 홀수열에 저장하면 8x16 블록에 대한 SAD 값을 저장할 수 있고(단계 1507) 그런 다음 다시 그 PE들을 대상으로 짝수행과 홀수행을 더하여 짝수행에 저장하면 16x16 블록의 SAD 값을 저장할 수 있다(1509).
한 편 상기 1501 단계에서 4x4 블록의 SAD 값이 저장된 PE를 상대로 다시 짝수열과 홀수열을 더하여 홀수열에 저장하면 4x8 블록의 SAD 값을 저장할 수 있으며(단계 1511), 상기 1505 단계에서 8x8 블록의 SAD 값을 저장한 PE를 대상으로 다시 짝수행 및 홀수행의 PE를 더하여 짝수행의 PE에 저장하면 16x8 블록의 SAD 값을 구할 수 있다.
이러한 방법으로 쉽게 모든 가변 블록에 대한 SAD 값을 구할 수 있다.
본 발명은 상기 실시예에 한정되지 않으며, 많은 변형이 본 발명의 사상 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 가능함은 물론이다.
도 1은 본 발명이 적용되는 H.264 부호화 방식을 개략적으로 나타내는 블록도.
도 2는 본 발명이 적용되는 H.264 부호화 장치의 움직임 추정에서 연산되는 가변 블록의 종류를 나타내는 도면.
도 3은 발명이 적용되는 H.264 부호화 방법에서 움직임 추정 방법을 간단히 설명하는 도면.
도 4는 본 발명의 SAD 계산을 위한 SAD 계산부의 대략적인 구성을 나타내는 도면.
도 5는 본 발명에 따른 PE 배열부의 PE 배열 및 동시 연산 방법을 나타내는 도면.
도 6은 본 발명에 따른 PE의 세부 구성을 나타내는 블록도.
도 7은 본 발명에 따른 SAD 연산 방법을 개략적으로 나타내는 도면.
도 8은 본 발명이 적용되는 PE 배열부와 검색 영역과의 메모리 매핑을 나타내는 도면.
도 9는 본 발명에 따른 SAD 연산을 위하여 사전 처리를 하는 과정을 나타내는 도면.
도 10 은 본 발명에서 각 PE에서 4x2 픽셀의 SAD가 연산되는 방법을 나타내는 도면.
도 11은 본 발명에서 검색 영역을 이동하면서 SAD를 계산하는 방법에 관한 도면.
도 12는 가변 블록 각각에 대한 SAD 값을 구하는 방법을 나타내는 도면.
도 13은 본 발명에 따른 SAD 연산의 후반부 처리를 하는 과정을 나타내는 도면.
도 14는 본 발명의 PE 배열부에 속하는 PE 각각이 4x2 블록의 SAD 값을 계산하는 방법을 나타내는 순서도.
도 15는 각 PE에서 계산된 SAD 값을 이용하여 가변 블록의 SAD 값을 구하는 방법을 나타낸 순서도.
<도면의 주요 부분에 대한 부호의 설명>
401 : PE 배열부(Processing Element Array)
403 : 로컬 메모리
405 : 제어부

Claims (15)

  1. 적어도 하나의 PE(Processing Element)가 행렬 형태로 배열되고 상기 행렬은 연속된 복수의 현재 프레임 매크로 블록에 포함되는 적어도 하나의 픽셀의 SAD 값을 동시에 계산하는 PE 배열부;
    현재 프레임 매크로 블록 데이터, 참조 프레임 매크로 블록 데이터 및 참조 프레임 검색 영역 데이터를 포함하고 상기 PE 배열부에 포함되는 각 PE로 상기 데이터들을 전송하는 로컬 메모리 및
    상기 로컬 메모리에 포함된 상기 데이터들을 상기 PE 배열부에 포함되는 각 PE가 연산하는 적어도 하나의 픽셀에 상응하여 전송하도록 명령하는 제어부
    를 포함하는 가변 블록 움직임 추정을 위한 SAD(Sum of Absolute Difference) 계산기.
  2. 제1항에 있어서,
    상기 PE는 현재 프레임 매크로 블록에 포함되는 적어도 하나의 픽셀의 SAD 값을 계산하는 최소 단위인 것을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산기.
  3. 제1항에 있어서,
    상기 PE 배열부는 상기 PE가 4행 및 24열로 구성되고, 상기 24열 중 8열 마 다 각각 다른 현재 프레임 매크로 블록에 포함된 픽셀에 대하여 SAD를 계산하는 것을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산기.
  4. 제1항에 있어서,
    상기 PE는 상기 로컬 메모리로부터 매크로 블록 데이터, 참조 프레임 매크로 블록 데이터 및 참조 프레임 검색 영역 데이터를 수신하는 수신부;
    상기 수신부에서 수신된 데이터들을 저장하는 레지스터 및
    상기 저장된 데이터들을 이용하여 SAD를 계산하는 ALU(Arithmetic Logic Unit)를 포함 하는 것
    을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산기.
  5. 제1항에 있어서,
    상기 PE 배열부는 상기 PE 배열부에 포함되는 PE를 적어도 4개의 구역으로 나누고, 상기 각 구역에 대하여 구획된(partitioned) SIMD(Sing input stream Multiple data stream) 연산하는 것
    을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산기.
  6. 제1항에 있어서,
    상기 PE 배열부의 각 PE는 상기 로컬 메모리에 포함된 현재 프레임 매크로 블록 데이터 및 참조 프레임 매크로 블록 데이터의 4x2 픽셀 데이터를 이용하여 SAD를 계산하는 것을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산기.
  7. 제1항에 있어서,
    상기 PE 배열부는 상기 각 PE에 저장된 SAD 값을 가변 블록의 크기에 상응하도록 더하여 가변 블록의 SAD 값을 계산하는 것
    을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산기.
  8. 현재 프레임 매크로 블록 데이터, 참조 프레임 매크로 블록 데이터 및 참조 프레임 검색 영역 데이터를 PE 배열의 로컬 메모리에 저장하는 단계;
    상기 PE 배열의 각 PE에 상응하는 참조 프레임 매크로 블록의 픽셀 데이터 및 현재 프레임 매크로 블록의 픽셀 데이터를 상기 PE에 포함되는 레지스터에 저장하는 단계;
    상기 각 PE에 저장된 상기 참조 프레임 매크로 블록의 픽셀 데이터 및 현재 프레임 매크로 블록의 픽셀 데이터를 이용하여 상기 각 PE에 상응하는 픽셀의 SAD를 계산하는 단계 및
    상기 계산된 각 PE의 SAD를 이용하여 가변 블록의 SAD를 계산하는 단계
    를 포함하되, 상기 PE 배열은 복수의 현재 프레임 매크로 블록에 대한 SAD 값을 동시에 계산할 수 있는 것
    을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산 방법.
  9. 제8항에 있어서,
    상기 PE는 현재 프레임 매크로 블록에 포함되는 적어도 하나의 픽셀의 SAD 값을 계산하는 최소 단위인 것을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산 방법.
  10. 제8항에 있어서,
    상기 PE 배열은 상기 PE가 4행 및 24열로 구성되고, 상기 24열 중 8열 마다 각각 다른 현재 프레임 매크로 블록에 포함된 픽셀에 대하여 SAD를 계산하는 것을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산 방법.
  11. 제8항에 있어서,
    상기 현재 프레임 매크로 블록의 SAD값의 계산은 상기 참조 프레임 검색 영역의 좌상단에서 우하단으로 우측으로 1 픽셀만큼씩 이동하며 계산되는 것을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산 방법.
  12. 제8항에 있어서,
    상기 PE 배열은 상기 PE 배열에 포함되는 PE를 적어도 4개의 구역으로 나누고, 상기 각 구역에 대하여 구획된(partitioned) SIMD 연산하는 것
    을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산 방법.
  13. 제8항에 있어서,
    상기 PE 배열의 각 PE는 상기 로컬 메모리에 포함된 현재 프레임 매크로 블록 데이터 및 참조 프레임 매크로 블록 데이터 중 4x2 픽셀 데이터를 이용하여 SAD를 계산하는 것을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산 방법.
  14. 제8항에 있어서,
    상기 계산된 각 PE의 SAD를 이용하여 가변 블록의 SAD를 계산하는 단계는,
    상기 각 PE에 저장된 SAD 값을 가변 블록의 크기에 상응하도록 더하여 가변 블록의 SAD 값을 계산하는 것을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산 방법.
  15. 제8항에 있어서,
    상기 가변 블록은 4x4, 4x8, 8x4, 8x8, 16x8, 8x16 및 16x16 픽셀의 크기를 가지는 블록인 것을 특징으로 하는 가변 블록 움직임 추정을 위한 SAD 계산 방법.
KR1020080015685A 2007-05-22 2008-02-21 가변 블록 움직임 추정을 위한 sad 계산 방법 및 장치 KR100951847B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/105,745 US8731059B2 (en) 2007-05-22 2008-04-18 Apparatus and method for calculating sum of absolute differences for motion estimation of variable block

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020070049858 2007-05-22
KR20070049858 2007-05-22

Publications (2)

Publication Number Publication Date
KR20080102947A true KR20080102947A (ko) 2008-11-26
KR100951847B1 KR100951847B1 (ko) 2010-04-12

Family

ID=40288542

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080015685A KR100951847B1 (ko) 2007-05-22 2008-02-21 가변 블록 움직임 추정을 위한 sad 계산 방법 및 장치

Country Status (1)

Country Link
KR (1) KR100951847B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010151018A2 (ko) * 2009-06-26 2010-12-29 에스케이텔레콤 주식회사 다차원 정수 변환을 이용한 영상 부호화/복호화 장치 및 방법
US9438927B2 (en) 2013-04-11 2016-09-06 Electronics And Telecommunications Research Institute Apparatus and method for motion estimation for variable block sizes
CN110913231A (zh) * 2019-12-12 2020-03-24 西安邮电大学 一种纹理图整数运动估计并行实现方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100719939B1 (ko) * 2004-10-08 2007-05-18 재단법인서울대학교산학협력재단 영상 움직임 추정기 및 그 영상 움직임 추정기를 이용한영상 압축방법
KR100742772B1 (ko) * 2005-04-08 2007-07-26 고려대학교 산학협력단 가변 블록 움직임 추정장치 및 그 방법
KR100716308B1 (ko) 2005-09-29 2007-05-08 연세대학교 산학협력단 가변 블록 움직임 추정 방법 및 장치

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010151018A2 (ko) * 2009-06-26 2010-12-29 에스케이텔레콤 주식회사 다차원 정수 변환을 이용한 영상 부호화/복호화 장치 및 방법
WO2010151018A3 (ko) * 2009-06-26 2011-03-31 에스케이텔레콤 주식회사 다차원 정수 변환을 이용한 영상 부호화/복호화 장치 및 방법
US9386324B2 (en) 2009-06-26 2016-07-05 Sk Telecom Co., Ltd. Image encoding/decoding apparatus and method using multi-dimensional integer transform
US9438927B2 (en) 2013-04-11 2016-09-06 Electronics And Telecommunications Research Institute Apparatus and method for motion estimation for variable block sizes
CN110913231A (zh) * 2019-12-12 2020-03-24 西安邮电大学 一种纹理图整数运动估计并行实现方法
CN110913231B (zh) * 2019-12-12 2023-05-30 西安邮电大学 一种纹理图整数运动估计并行实现方法

Also Published As

Publication number Publication date
KR100951847B1 (ko) 2010-04-12

Similar Documents

Publication Publication Date Title
CN111385569B (zh) 一种编解码方法及其设备
CN101889405B (zh) 用于执行运动估计的方法和装置
CN101087414B (zh) 图像编码装置和图像编码方法
JP5081305B2 (ja) フレーム間予測符号化の方法および装置
CN100579229C (zh) 用于处理具有多个参考图片的隔行视频的方法
CN101325710B (zh) 视频编码中具有多种成本计算方法的运动细化引擎及方法
EP2392139B1 (en) Method and apparatus for efficient hardware motion estimation
US20060120455A1 (en) Apparatus for motion estimation of video data
JP2009510845A5 (ko)
KR20140021952A (ko) 멀티뷰 비디오 시퀀스 코딩을 위한 적응형 프레임 예측 방법
CN102100059B (zh) 用于运动估计迭代搜索的简单下一搜索位置选择
CN102077598A (zh) 用于视频编码器中的计算有效的帧内模式预测的设备和方法
WO2017122604A1 (ja) 動画像符号化装置、動画像符号化方法、及び、動画像符号化プログラムが記憶された記憶媒体
CN102656889A (zh) 图像编码装置、图像解码装置、图像编码方法及图像解码方法
JP2007221662A (ja) 動きベクトル算出装置
CN102077599A (zh) 用于视频编码器中的高质量帧内模式预测的设备和方法
CN114339218A (zh) 图像编码方法、图像编码装置、电子设备和可读存储介质
CN102196272B (zh) 一种p帧编码方法及装置
JP4786612B2 (ja) 動画像符号化装置の予測動きベクトル生成装置
CN101325709B (zh) 用于视频编码的具有可选择分割的运动细化引擎及其方法
KR100951847B1 (ko) 가변 블록 움직임 추정을 위한 sad 계산 방법 및 장치
JP2011010297A (ja) 誤差絶対値和の推定システム及び推定方法
US9077996B2 (en) Predicted motion vectors
US8731059B2 (en) Apparatus and method for calculating sum of absolute differences for motion estimation of variable block
KR100926752B1 (ko) 동영상 부호화를 위한 미세 움직임 추정 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130325

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170327

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180403

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190325

Year of fee payment: 10