KR20050043511A - 고속 움직임추정 알고리즘을 갖는 동영상 코딩방법 및 장치 - Google Patents

고속 움직임추정 알고리즘을 갖는 동영상 코딩방법 및 장치 Download PDF

Info

Publication number
KR20050043511A
KR20050043511A KR1020030078428A KR20030078428A KR20050043511A KR 20050043511 A KR20050043511 A KR 20050043511A KR 1020030078428 A KR1020030078428 A KR 1020030078428A KR 20030078428 A KR20030078428 A KR 20030078428A KR 20050043511 A KR20050043511 A KR 20050043511A
Authority
KR
South Korea
Prior art keywords
motion
subblocks
diff
representative
motion vectors
Prior art date
Application number
KR1020030078428A
Other languages
English (en)
Other versions
KR100597397B1 (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 KR1020030078428A priority Critical patent/KR100597397B1/ko
Priority to US10/983,101 priority patent/US20050207494A1/en
Publication of KR20050043511A publication Critical patent/KR20050043511A/ko
Application granted granted Critical
Publication of KR100597397B1 publication Critical patent/KR100597397B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • 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
    • 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/102Methods 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/103Selection of coding mode or of prediction mode
    • 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/533Motion estimation using multistep search, e.g. 2D-log search or one-at-a-time search [OTS]
    • 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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • 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

고속 움직임추정 알고리즘을 갖는 동영상 코딩방법 및 장치에 관한 것이다.
본 발명에 따른 동영상 코딩방법은 복수의 서브블록들로 구성된 각 매크로블록들에 대한 대표 서브블록들의 움직임 벡터를 구하고, 상기 구해진 대표 서브블록들의 움직임 벡터들간의 관계를 이용하여 모드를 결정하고 가변블록들에 대한 움직임을 추정하는 움직임 추정단계를 포함하는 것을 특징으로 한다.
본 발명에 따른 동영상 코딩장치는 입력된 이미지의 움직임을 추정하여 움직임 보상 시간적 필터링에 이용될 수 있도록 하는 움직임 추정부를 포함하며, 상기 움직임 추정부는 각 매크로블록들에 대한 대표 서브블록들의 움직임 벡터를 구하고, 상기 대표 서브블록들의 움직임 벡터들간의 관계를 이용하여 입력된 이미지의 움직임을 추정하는 움직임 추정하는 것을 특징으로 한다.
본 발명에 따르면 동영상 코딩에서 많은 연산량을 필요로 하는 움직임 추정과정을 비교적 빠른 속도로 정확하게 수행할 수 있다.

Description

고속 움직임추정 알고리즘을 갖는 동영상 코딩방법 및 장치{Method For Encording Moving Picture Using Fast Motion Estimation Algorithm, And Apparatus For The Same}
본 발명은 동영상 압축에서 움직임을 추정하는 방법 및 장치에 관한 것이다.
인터넷을 포함한 정보통신 기술이 발달함에 따라 문자, 음성뿐만 아니라 화상통신이 증가하고 있다. 기존의 문자 위주의 통신 방식으로는 소비자의 다양한 욕구를 충족시키기에는 부족하며, 이에 따라 문자, 영상, 음악 등 다양한 형태의 정보를 수용할 수 있는 멀티미디어 서비스가 증가하고 있다. 멀티미디어 데이터는 그 양이 방대하여 대용량의 저장매체를 필요로하며 전송시에 넓은 대역폭을 필요로 한다. 예를 들면 640*480의 해상도를 갖는 24 bit 트루컬러의 이미지는 한 프레임당 640*480*24 bit의 용량 다시 말해서 약 7.37Mbit의 데이터가 필요하다. 이를 초당 30 프레임으로 전송하는 경우에는 221Mbit/sec의 대역폭을 필요로 하며, 90분 동안 상영되는 영화를 저장하려면 약 1200G bit의 저장공간을 필요로 한다. 따라서 문자, 영상, 오디오를 포함한 멀티미디어 데이터를 전송하기 위해서는 압축코딩기법을 사용하는 것이 필수적이다.
데이터를 압축하는 기본적인 원리는 데이터의 중복(redundancy)을 없애는 과정이다. 이미지에서 동일한 색이나 객체가 반복되는 것과 같은 공간적 중복이나, 동영상 프레임에서 인접 프레임이 거의 변화가 없는 경우나 오디오에서 같은 음이 계속 반복되는 것과 같은 시간적 중복, 또는 인간의 시각 및 지각 능력이 높은 주파수에 둔감한 것을 고려한 심리시각 중복을 없앰으로서 데이터를 압축할 수 있다.
데이터 압축의 종류는 소스 데이터의 손실 여부와, 각각의 프레임에 대해 독립적으로 압축하는 지 여부와, 압축과 복원에 필요한 시간이 동일한 지 여부에 따라 각각 손실/무손실 압축, 프레임 내/프레임간 압축, 대칭/비대칭 압축으로 나눌 수 있다. 이 밖에도 압축 복원 지연 시간이 50ms를 넘지 않는 경우에는 실시간 압축으로 분류하고, 프레임들의 해상도가 다양한 경우는 스케일러블 압축으로 분류한다. 문자 데이터나 의학용 데이터 등의 경우에는 무손실 압축이 이용되며, 멀티미디어 데이터의 경우에는 주로 손실 압축이 이용된다. 한편 공간적 중복을 제거하기 위해서는 프레임 내 압축이 이용되며 시간적 중복을 제거하기 위해서는 프레임간 압축이 이용된다.
멀티미디어를 전송하기 위한 전송매체는 매체별로 그 성능이 다르다. 현재 사용되는 전송매체는 초당 수십 메가비트의 데이터를 전송할 수 있는 초고속통신망부터 초당 384 키로비트의 전송속도를 갖는 이동통신망 등과 같이 다양한 전송속도를 갖는다. 현재 MPEG-2, MPEG-4, H.263과 H.264를 포함하는 대부분의 비디오 코딩 표준은 움직임 보상 예측 코딩법에 기초하고 있는데, 시간적 중복은 움직임 보상에 의해 제거하고 공간적 중복은 변환 코딩에 의해 제거한다.
시간적 중복을 제거하는 과정을 좀더 자세히 살펴보면 프레임을 구성하는 구성단위, 예를 들면 각 매크로 블록들이 다음 프레임의 해당 매크로 블록의 위치가 얼만큼 이동했는지를 나타내는 움직임 벡터를 구하는 움직임추정(Motion Estimation)을 한다. 움직임추정이 끝나면 움직임 보상(Motion Compensation)을 하여 시간적 필터링을 통해 프레임간 시간적 중복성을 제거한다.
이러한 시간적 중복을 제거하는 과정은 매우 많은 연산을 필요로 하는데, 연산량을 줄이기 위한 여러 알고리즘들이 제안되고 있다. 크게 움직임 벡터 후보점의 갯수를 줄이는 방법을 통해서 계산을 줄이는 방법이 있고, 블록정합 코스트 계산을 줄이는 방법이 있으며, 움직임 벡터의 서브 샘플링 방법이 있다.
움직임 벡터를 서브 샘플링하는 방법은 매크로 블록을 서브 블록으로 나누고 서브 블록의 움직임 벡터를 가지고 매크로 블록의 움직임 벡터로 사용한다.
움직임 벡터 후보점의 개수를 줄이는 방법에 대해서는 도 1a, 도b, 도 1c 등의 방법이 있다. 먼저, 도 1a 방법은 삼단계 탐색법(Three Step Search)으로서 그 과정은 다음과 같다. 우선 중심을 포함한 9개의 위치에 대하여 평균 절대 차이값(Mean Absolute Difference; 이하, MAD라 함)를 구하고 가장 작은 MAD를 갖는 점(흰점1)을 찾는다. 그리고 찾아진 점을 기준으로 먼저번 보다 간격을 1 줄인 9개의 점을 기준으로 MAD 값을 구하고 가장 작은 MAD를 갖는 점(흰점2)을 찾는다.
마지막으로 찾아진 점을 기준으로 9개의 점에 대한 MAD를 계산하여 가장 작은 MAD를 갖는 점(흰점3)을 찾는다. 삼단계 탐색법은 3번의 단계만에 움직임 벡터를 결정할 수 있는데 각 단계가 바뀜에 따라 검색 범위의 크기를 줄여가는 것을 특징으로 한다.
도 1b의 경우에는 2차원 로그형 탐색법(2 D Logarithm Search)로서, 삼단계 탐색법과 유사하긴 하나 좁은 범위에서의 탐색 단계에서는 후보점들이 삼단계 탐색법 보다 더 많아지게 되어 좀더 정확한 움직임 벡터를 찾을 수 있다.
마지막으로 도 1c의 경우에는 적응예측적 탐색법(Adaptive/Predictive Search)를 보여주고 있는데 주변 블록과 이전 프레임의 블록의 움직임 벡터 값으로부터 현재 블록의 움직임 벡터를 예측한 후보점 위주로 탐색하는 방법이다. 즉, 도 1c에서 A, B, C 블록에 대한 움직임 벡터를 알고 있는 경우에 움직임 벡터를 아직 구하지 못한 블록은 A, B, C의 평균 값을 움직임 벡터로 추정한 후에 해당 위치의 후보점을 위주로 움직임 벡터를 찾는 방법이다.
한편, 블록정합 코스트를 줄이는 방법으로는 일반적으로 많이 쓰이는 SAD값은 수식 1로 정의되고 해당 블록에 대한 움직임 벡터는 수식 2로 정의된다.
[수식 1]
여기서, N은 매크로블록의 크기를 의미하고, Ik(m,n)은 k번째 프레임의 (m, n)픽셀의 밝기(intensity) 값을 의미한다.
[수식 2]
여기서 R2은 탐색영역을 의미한다. 즉, 움직임 벡터는 탐색영역안의 (dx, dy) 값들 중에서 SAD값을 최저로 하는 (dx, dy)를 의미한다. 그러나, 이러한 방법은 하나의 후보점에 대하여 N*N 번의 빼기연산과 N*(N-1) 번의 더하기 연산이 필요하다. 그러므로 SAD 계산량을 줄이기 위해 다른 코스트 함수 또는 변형된 SAD를 사용하기도 한다. 즉, Decimated MAD라고 불리는 방법은 N*N개의 픽셀 중에서 1/4로 추려진(decimated) 픽셀을 가지고 SAD값을 구한다. 한편, 정합 픽셀 카운팅법(Matched Pixel Counting)은 SAD를 구하지 않고 동일한 픽셀의 개수를 가지고 판단한다.
이러한 종래의 방법들의 특징은 국부적 최소값(Local Minimum)이 움직임 벡터로 선택될 가능성이 있다는 것이다. 즉, 후보점들 중에서 최소인 값을 선택함으로써 후보점외에서 최소가 존재하는 경우에는 최적의 움직임 벡터를 선택할 수 없게 된다. 또한 이러한 문제점 발생을 줄이기 위해 후보점들을 추가할 경우에는 계산량이 증가하는 경우가 많게 된다. 다시 말해서 실제 계산량과 움직임 벡터의 정확한 추정 사이에는 일정한 트레이트 오프(Trade-off) 관계가 성립한다고 할 수 있다.
실제 움직임 추정은 동영상 압축에 있어 병목지점과 같은 부분이 된다. 예를 들면 MPEG-1 시스템에서 15*15 탐색 범위를 가진 인코더의 경우에 전구역 탐색(Full Search) 알고리즘을 적용한다면 움직임 추정은 전체 인코딩 시스템 연산량의 75%를 차지할 정도가 되어서 실시간 구현이 불가능하게 된다.
움직임 추정은 동영상 압축의 성능에 매우 중요한 역할을 하지만 계산량이 많기 때문에 실시간 동영상 인코딩을 위해서는 움직임 추정을 고속으로 할 수 있는 알고리즘이 필요하다. 특히, H.264와 같이 가변 블록 움직임 보상을 할 경우에는 블록 크기별로 움직임 추정을 해야 하기 때문에 연산량은 더욱 증가하게 되므로, 고속 움직임 추정 알고리즘은 더욱 필요하게 된다.
본 발명은 상술한 필요성에 의해 안출된 것으로서, 동영상 압축에 있어서 고속으로 움직임을 추정할 수 있는 방법과 이를 위한 장치를 제공하는 것을 그 기술적 과제로 한다.
상기 목적을 달성하기 위하여, 본 발명에 따른 동영상 코딩방법은 복수의 서브블록들로 구성된 각 매크로블록들에 대한 대표 서브블록들의 움직임 벡터를 구하고, 상기 구해진 대표 서브블록들의 움직임 벡터들간의 관계를 이용하여 다른 모든 서브블록들에 대한 움직임 벡터를 추정하는 움직임 추정단계를 포함하는 것을 특징으로 한다. 상기 움직임 추정단계는 복수의 서브블록들로 구성된 각 매크로블록들에 대한 대표 서브블록들의 움직임 벡터를 구하는 (a) 단계, 및 상기 (a) 단계에서 구해진 대표 서브블록들간의 관계에 따라 모든 서브블록들에 대한 움직임 벡터를 추정하는 (b) 단계를 포함한다.
상기 (a) 단계는 주변 매크로블록에 대한 대표 서브블록들의 움직임 벡터값으로부터 예측되는 움직임 벡터값부터 지정된 소정의 범위를 탐색하여 움직임 벡터를 구하는데, 각 매크로블록의 사이즈는 16*16이고 매크로블록을 구성하는 서브블록들의 사이즈는 4*4이며 대표 서브블록은 각 매크로블록을 구성하는 서브블록들 중에서 중심부의 어느 한 서브블록으로 선택하는 것이 바람직하다.
상기 (b) 단계에서 매크로블록의 대표 서브블록의 움직임 벡터와 주변 매크로블록들의 대표 서브블록들의 각 움직임 벡터와의 차이가 제1 기준값보다 작은 매크로블록에 대해서는 상기 매크로블록을 구성하는 서브블록들의 움직임 벡터는 상기 대표 서브블록의 움직임 벡터로 결정할 수 있다. 이 때, 상기 주변 매크로블록들은 상기 매크로블록과 인접한 상하좌우 4개의 매크로블록들을 이용하는 것이 바람직하다.
상기 (b) 단계에서 매크로블록의 대표 서브블록의 움직임 벡터와 주변 매크로블록들의 대표 서브블록들 중 적어도 어느 한 움직임 벡터와의 차이가 제1 기준값보다 크거나 같은 매크로블록에 대해서는 상기 매크로블록을 4개의 좌상, 우상, 좌하, 및 우하 블록들로 나누어서 각 블록들을 대표하는 서브블록들의 움직임 벡터들(좌상, 우상, 좌하, 우하)을 구하는 (b1) 단계, 및 상기 좌상 및 우상 움직임 벡터들의 차이(이하, Diff(u)라 함)와 좌하 및 우하 움직임 벡터들의 차이(이하, Diff(d)라 함)와 좌상 및 좌하 움직임 벡터들의 차이(이하, Diff(l)라 함) 및 우상 및 우하 움직임 벡터들의 차이(이하, Diff(r)라 함)들에 따라 나머지 서브블록들의 움직임 벡터들을 구하는 (b2) 단계를 포함한다.
상기 (b1) 단계는 상기 대표 서브블록의 움직임 벡터를 기준으로하여 주변 매크로블록들의 대표 서브블록들의 움직임 벡터들 범위로 탐색하여 상기 좌상, 우상, 좌하, 및 우하 움직임벡터들을 구하는 것이 바람직하다.
상기 (b2) 단계에서 상기 Diff(u)와 Diff(d)와 Diff(l) 및 Diff(r)이 모두 제2 기준값보다 작은 경우에는 상기 매크로블록의 서브블록들의 움직임 벡터들은 상기 좌상, 우상, 좌하, 및 우하 움직임벡터들의 평균으로 결정할 수 있다. 상기 Diff(u)와 Diff(d)는 모두 제2 기준값보다 작고 상기 Diff(l)와 Diff(r) 중 적어도 하나는 제2 기준값보다 크거나 작은 경우에는 상기 좌상 및 우상 블록들을 구성하는 서브블록들의 움직임 벡터들은 상기 좌상과 우상 움직임 벡터의 평균으로 결정하고 상기 좌하 및 우하 블록들을 구성하는 서브블록들의 움직임 벡터들은 상기 좌하 및 우하 움직임 벡터의 평균으로 결정할 수 있다. 상기 (b2) 단계에서 상기 Diff(l)와 Diff(r)는 모두 제2 기준값보다 작고 상기 Diff(u)와 Diff(d) 중 적어도 하나는 제2 기준값보다 크거나 작은 경우에는 상기 좌상 및 좌하 블록들을 구성하는 서브블록들의 움직임 벡터들은 상기 좌상과 좌하 움직임 벡터의 평균으로 결정하고 상기 우상 및 우하 블록들을 구성하는 서브블록들의 움직임 벡터들은 상기 우상 및 우하 움직임 벡터의 평균으로 결정할 수 있다. 이 경우에 동영상 코딩에서 움직임 추정의 단위는 크기와 모양이 바뀔 수 있는 가변 블록을 기준으로 하고 상기 가변 블록의 크기와 모양은 상기 대표 서브블록들의 움직임 벡터들에 의해 구해진 서브블록들의 움직임 벡터가 같게되는 범위를 기준으로 할 수 있다.
상기 목적을 달성하기 위하여, 본 발명에 따른 동영상 코딩방법은 복수의 서브블록들로 구성된 각 매크로블록들에 대한 대표 서브블록들의 움직임 벡터를 구하고, 상기 구해진 대표 서브블록들간의 관계를 이용하여 움직임 추정을 수행할 블록의 크기와 모양을 결정하는 단계를 포함하는 것을 특징으로 한다.
상기 움직임 추정의 단위블록을 결정하는 단계는 복수의 서브블록들로 구성된 각 매크로블록들에 대한 대표 서브블록들의 움직임 벡터를 구하는 (a) 단계, 및 상기 (a) 단계에서 구해진 대표 서브블록들간의 관계에 따라 어떤 크기와 모양의 블록을 기준으로 움직임추정을 할지를 결정하는 (b) 단계를 포함한다.
상기 (a) 단계는 주변 매크로블록에 대한 대표 서브블록들의 움직임 벡터값으로부터 예측되는 움직임 벡터값부터 지정된 소정의 범위를 탐색하여 움직임 벡터를 구하고, 각 매크로블록의 사이즈는 16*16이고 매크로블록을 구성하는 서브블록들의 사이즈는 4*4이며 대표 서브블록은 각 매크로블록을 구성하는 서브블록들 중에서 중심부의 어느 한 서브블록인 것이 바람직하다.
상기 (b) 단계에서 매크로블록의 대표 서브블록의 움직임 벡터와 주변 매크로블록들의 대표 서브블록들의 각 움직임 벡터와의 차이가 제1 기준값보다 작은 매크로블록에 대해서는 상기 매크로블록 단위로 움직임을 추정한다. 이 때, 상기 주변 매크로블록들은 상기 매크로블록과 인접한 상하좌우 4개의 매크로블록들을 이용하는 것이 바람직하다.
상기 (b) 단계에서 매크로블록의 대표 서브블록의 움직임 벡터와 주변 매크로블록들의 대표 서브블록들 중 적어도 어느 한 움직임 벡터와의 차이가 제1 기준값보다 크거나 같은 매크로블록에 대해서는 상기 매크로블록을 4개의 좌상, 우상, 좌하, 및 우하 블록들로 나누어서 각 블록들을 대표하는 서브블록들의 움직임 벡터들(좌상, 우상, 좌하, 우하)을 구하는 (b1) 단계, 및 상기 좌상 및 우상 움직임 벡터들의 차이(이하, Diff(u)라 함)와 좌하 및 우하 움직임 벡터들의 차이(이하, Diff(d)라 함)와 좌상 및 좌하 움직임 벡터들의 차이(이하, Diff(l)라 함) 및 우상 및 우하 움직임 벡터들의 차이(이하, Diff(r)라 함)들에 따라 움직임 추정의 단위 블록을 결정하는 (b2) 단계를 포함한다.
상기 (b1) 단계는 상기 대표 서브블록의 움직임 벡터를 기준으로하여 주변 매크로블록들의 대표 서브블록들의 움직임 벡터들 범위로 탐색하여 상기 좌상, 우상, 좌하, 및 우하 움직임벡터들을 구하는 것이 바람직하다.
상기 (b2) 단계에서 상기 Diff(u)와 Diff(d)와 Diff(l) 및 Diff(r)이 모두 제2 기준값 보다 작은 경우에는 움직임을 추정하는 단위 블록은 상기 매크로블록으로 한다. 상기 Diff(u)와 Diff(d)는 모두 제2 기준값보다 작고 상기 Diff(l)와 Diff(r) 중 적어도 하나는 제2 기준값보다 크거나 작은 경우에는 움직임을 추정하는 단위블록은 상기 좌상 및 우상 블록을 합친 블록과 상기 좌하 및 우하 블록을 합친 블록으로 한다. 상기 Diff(l)와 Diff(r)는 모두 제2 기준값(=b)보다 작고 상기 Diff(u)와 Diff(d) 중 적어도 하나는 제2 기준값(=b)보다 크거나 작은 경우에는 움직임을 추정하는 단위블록은 상기 좌상 및 좌하 블록을 합친 블록과 상기 우상 및 우하 블록을 합친 블록으로 한다.
상기 (b2) 단계에서 상기 Diff(l)와 Diff(r)는 중 적어도 하나는 제2 기준값(=b)보다 크거나 같고 상기 Diff(u)와 Diff(d) 중 적어도 하나는 제2 기준값(=b)보다 크거나 작은 경우에는 상기 4개의 블록들을 각각 4개의 서브블록들(좌상, 우상, 좌하, 및 우하 서브블록)로 나누고 각 블록에 대하여 4개의 서브블록들의 움직임벡터들(제1, 제2, 제3, 및 제4 움직임 벡터)를 구하는 (b21) 단계, 및 상기 제1 및 제2 움직임 벡터들의 차이(이하, Diff(uu)라 함)와 제3 및 제4 움직임벡터들의 차이(이하, Diff(dd)라 함)와 제1 및 제3 움직임벡터들의 차이(이하, Diff(ll)라 함) 및 제2 및 제4 움직임 벡터들의 차이(이하, Diff(rr)라 함)들에 따라 움직임 추정의 단위 블록을 결정하는 (b22) 단계를 포함한다. Diff(uu)과 Diff(dd)과 Diff(ll) 및 Diff(rr) 모두 제3 기준값보다 작은 경우에 움직임을 추정하는 단위는 블록단위이고, Diff(uu)과 Diff(dd)는 모두 제3 기준 값보다 작고 Diff(ll) 및 Diff(rr) 중 적어도 하나는 제3 기준 값보다 크거나 같은 경우에는 움직임을 추정하는 단위는 상기 좌상 및 우상 서브블록을 합친 블록과 상기 좌하 및 우하 블록을 합친 블록이며, Diff(ll)과 Diff(rr)는 모두 제3 기준 값보다 작고 Diff(uu) 및 Diff(dd) 중 적어도 하나는 제3 기준 값보다 크거나 같은 경우에는 움직임을 추정하는 단위는 상기 좌상 및 좌하 서브블록을 합친 블록과 상기 우상 및 우하 블록을 합친 블록으로 한다.
상기 목적을 달성하기 위하여, 본 발명에 따른 동영상 코딩장치는 입력된 이미지와 기준 프레임을 이용하여 입력된 이미지의 움직임을 추정하여 움직임 보상 시간적 필터링에 이용될 수 있도록 하는 움직임 추정부를 포함하며, 상기 움직임 추정부는 복수의 서브블록들로 구성된 각 매크로블록들에 대한 대표 서브블록들의 움직임 벡터를 구하고, 상기 구해진 대표 서브블록들의 움직임 벡터들간의 관계를 이용하여 입력된 이미지의 움직임을 추정하는 움직임 추정하는 것을 특징으로 한다.
상기 움직임 추정부는 상기 대표 서브블록들의 움직임을 추정하는 서브블록 움직임 추정부와, 상기 서브블록 움직임 추정모듈에 의해 얻어진 움직임 벡터들간의 관계를 이용하여 움직임 추정의 단위블록을 선택하는 모드결정부, 및 상기 모드결정부에 따라 모드부에서 모드가 결정되지 않은 경우에 소정의 서브블록들 움직임 벡터들의 탐색 범위와 움직임 벡터들의 예측값을 상기 서브블록 움직임 추정부에 전달하는 탐색범위 결정 및 움직임 벡터 예측부를 포함한다.
상기 탐색범위 결정 및 움직임 벡터 예측부는 상기 움직임 벡터의 예측값은 주변 움직임 벡터들을 이용해 찾는다. 상기 탐색 범위는 어느 한 서브블록이 속하는 매크로블록의 상하좌우 매크로블록의 대표 서브블록들의 움직임 벡터의 범위로 결정한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다.
도 2는 H.264 엔코더의 기능성 블록도이다.
동영상 코딩에서 동영상 이미지는 다른 프레임과 독립하여 압축되는 프레임(Intra Frame)과, 다른 프레임을 기반으로 압축되는 프레임(Inter Frame)으로 나눌 수 있다. MPEG 동영상 압축에서 전자는 I-프레임이 이에 해당되고, 후자는 I-프레임 또는 다른 P-프레임을 참조하여 압축되는 P-프레임과 다른 두 프레임을 보간한 B-프레임이 이에 해당한다.
입력되는 이미지는 크게 볼 때는 먼저 시간적 중복성을 제거하고 나서 공간적 중복성을 제거한 후에 양자화 및 재순서화와 엔트로피 코딩을 거쳐 비트스트림으로 출력된다. 시간적 중복성을 없앨 때는 움직임 추정을 하고 추정된 움직임을 보상하여 시간적 필터링을 한다. 한편, 인트라 픽쳐의 경우에는 움직임 보상과정이 없게 된다. 공간적 중복성은 변환에 의해 제거하는데, MPEG의 경우에는 이산 코사인 변환(Discrete Cosine Transform; DCT라 함)에 의해 공간적 중복성을 제거하고 H.264의 경우에는 정수 변환(Integer Transform)에 의해 공간적 중복성을 제거한다. 양자화의 경우에는 정수 계수의 전체적 정확성을 감소시키기는 하지만 고주파수 계수들을 제거하기 위하여 사용된다. H.264에서 엔트로피 코딩은 CABAC(Context Adaptive Binary Arithmetic Codes) 방식을 이용하는데 대부분의 심볼들에 대한 적응적 확률 모델을 사용한다.
대부분의 동영상 압축 알고리즘에 있어서 시간적 중복성을 제거하는 과정에서 움직임 추정과 추정된 움직임을 보상하는 과정은 필수적인데, 실제로 움직임을 추정하는 과정은 계산량이 많기 때문에 실시간 동영상 압축을 위해서는 연산능력이 뛰어난 마이크로 프로세서를 사용해야 하고 이는 동영상 코딩장치의 비용을 상승시키는 요인이 된다. 본 발명은 움직임 추정을 위한 보다 효과적인 알고리즘을 제공하는 것과 이를 이용한 동영상 압축 방법 및 장치에 관한 것이다. 움직임 추정을 위한 보다 자세한 장치는 도 3을 통해 설명한다.
도 3은 본 발명의 실시예에 따른 움직임 추정 장치의 기능성 블록도이다.
서브 블록 움직임 추정부(10)는 입력되는 이미지 프레임의 일부 서브블록에 대한 움직임 벡터를 구한다. 움직임 벡터를 구할 때 주변의 서브블록들에 대한 움직임 벡터가 이미 구해진 경우에는 이를 참조하여 움직임 벡터의 탐색범위를 정하는 것이 바람직하다. 본 발명의 실시예에서는 16*16의 크기를 갖는 매크로 블록의 중심부에 4*4의 크기를 갖는 대표 서브블록의 움직임 벡터를 구한다.
모드 결정부(20)는 대표 서브블록들의 움직임 벡터들간의 관계를 이용하여 모드를 결정한다. 모드를 결정할 수 없는 경우에는 더 많은 서브블록들의 움직임 벡터를 이용하여 모드를 결정한다.
탐색 범위 결정부(30)는 모드를 결정할 수 없는 경우에 더 많은 서브블록들의 움직임 벡터를 구하기 위하여 각 서브블록들의 움직임 벡터의 탐색 범위를 결정한다.
움직임 벡터 예측부(40)는 서브블록들의 움직임 벡터를 구하기 위하여 기존의 서브블록의 움직임 벡터 값으로부터 움직임 벡터값을 예측한다. 예측된 움직임 벡터값과 탐색범위를 바탕으로 서브블록 움직임 추정부(10)는 해당 서브블록의 움직임 벡터를 추정한다. 움직임 벡터가 추정되면 다시 모드를 결정하고 모드가 결정되지 않은 경우에는 상기 과정을 재귀적으로 반복한다.
도 4a는 H.264의 계층 구조의 가변 블록을 보여주는 도면이다.
H.264에서 움직임 보상은 도 4a에서 도시된 바와 같이 트리 구조의 가변 블록 움직임 보상을 한다. 움직임 추정에서는 7가지 모드의 SAD값을 구해서 최소가 되는 모드의 움직임 벡터를 구하게 된다. 16*16의 크기를 갖는 매크로 블록 단위에서는 모드 1 내지 모드 3이 선택될 수 있고, 8*8의 크기를 갖는 블록 단위에서는 모드 4내지 6이 선택될 수 있고, 4*4의 크기를 갖는 서브블록 단위를 갖는 모드 7이 선택될 수 있다. 하나의 픽쳐는 도 4a에 도시된 바와 같이 다양한 모드로 구성될 수 있다. H.264의 가변 블록 움직임 보상을 한 예는 도 4b에 도시된다. 도 4b에 의하면 움직임이 거의 없는 배경에 대해서는 모드 1이 선택되고 움직임이 많은 곳에서는 높은 모드가 선택되는 것을 알 수 있다. 한편, 밝은 부분은 두 프레임간의 차이가 많이 발생하는 지점을 의미한다. H.264의 표준에 의한 움직임 추정을 위해서는 4*4의 크기를 갖는 모든 서브블록들에 대한 SAD를 구한 다음에 그 값을 인접 블록끼리 더하여 4*8, 8*4, 8*8, 16*8, 8*16, 및 16*16의 서브블록들에 대한 SAD를 구한 뒤에 그 값을 비교한다. 이러한 방식은 엄청난 계산량을 필요로 하게 되어 동영상 코딩의 시간과 비용을 상승시키는 요인이 된다. 본 발명은 가변 블록 움직임 추정을 위해 보다 효율적인 알고리즘을 사용하고 있으며, 이는 도 5를 참조하여 설명한다.
도 5는 본 발명의 실시예에 따른 모드 결정 및 움직임 추정을 보여주는 도면이다.
도 5에서 굵은 선의 사각형은 16*16의 크기를 갖는 매크로 블록을 의미하고 4*4의 크기로 음영이 있는 서브블록은 매크로 블록을 대표하는 대표 서브블록을 의미한다. 먼저, (a)와 같이 각 매크로 블록에 대한 대표 서브블록들의 움직임 벡터를 계산한다. 대표 서브블록은 도시된 바와 같이 중심부의 4개의 서브블록들 중 어느 하나인 것이 바람직하나, 본 발명의 기술적 사상은 이에 한정되지는 않는다.
대표 서브블록들의 움직임 벡터를 구할 때 이미 구해진 대표 서브블록들의 움직임 벡터들을 이용하여 연산량을 줄일 수도 있다. (b)는 이러한 경우를 보여주고 있는데, 주변 매크로블록에서 A와 B 및 C의 움직임 벡터가 이미 구해진 경우에 이들의 평균 값인 MEDIAN(A, B, C)을 움직임 벡터 값으로 예측을 하고 이를 중심으로 움직임 벡터값을 구할 수 있다.
모드의 결정과 움직임 추정의 과정은 (c)를 통해 설명한다. 먼저 모든 매크로 블록들의 대표 서브블록들이 구해진 경우에 어느 한 매크로 블록의 대표 서브블록의 움직임 벡터 T는 주변 매크로블록들의 대표 서브블록들의 움직임 벡터와 비교한다. 주변 매크로블록들은 T를 중심으로한 8개의 매크로블록이 될 수도 있으나 연산량을 줄이기 위하여 U가 있는 상, D가 있는 하, L이 있는 좌, R이 있는 우 매크로블록들인 것이 바람직하다. 이 때, 수학식 1을 만족하는 경우에 모드 1로 결정한다.
MV(T)는 서브블록 T의 움직임 벡터를 의미하고, X는 U, D, L, R을 의미하며, a 값은 일정한 기준 값으로서 1 픽셀의 크기를 의미한다.
수학식 1을 만족시키는 경우에 T를 포함하는 매크로블록을 구성하는 서브블록들 간의 움직임의 차이는 매우 적은 것으로 판단할 수 있고, 따라서, 모드 1로 결정할 수 있다. 즉, T를 포함하는 매크로 블록의 움직임 벡터는 MV(C)로 결정할 수 있다. 만일 4*4 크기의 서브블록 단위로 움직임을 추정하는 경우라면 T를 포함하는 매크로 블록의 모든 모든 서브블록들의 움직임 벡터는 MV(T)로 결정할 수 있다.
수학식 1을 만족시키지 않는 경우에는 매크로블록은 8*8의 크기를 갖는 4개의 블록들로 나누어서 각 블록들의 대표 서브블록의 움직임 벡터를 계산한다. 움직임 벡터를 계산할 때는 일정한 탐색범위를 가지고 탐색하는 것이 바람직한데, 탐색범위는 수학식 2로 결정하는 것이 바람직하다.
MV(L)_x < MV(Y)_x < MV(R)
MV(D)_y < MV(Y)_y < MV(U)
여기서 MV(Y)_x와 MV(Y)_y는 각각 Y 서브블록의 움직임 벡터의 x 성분과 y 성분을 의미하고, Y는 B, C, D 값을 의미하며, MV(L)_x < MV(Y)_x < MV(R)은 MV(L)_x와 MV(R)_x의 사이 값을 의미한다.
A는 수학식 1의 T에 해당하는 서브블록을 의미하는데 이미 움직임 벡터가 구해진 경우이므로 B, C, D를 구할 때 이용한다. 즉, B, C, D의 움직임 벡터에 대한 예측 벡터는 MV(T=A)로 하고 수학식 2로 탐색 범위를 정한 후에 B, C, D의 움직임 벡터들을 구하는 것이 바람직히다.
A, B, C, D에 대한 모든 움직임 벡터들이 구해진 경우에 모드 및 움직임 추정을 위하여 움직임 벡터들간의 관계는 움직임 벡터들간의 차이로 계산하며 그 관계는 수학식 3으로 정의한다.
이 때, Diff(u), Diff(d), Diff(l), Diff(r) 모두가 일정한 값인 b보다 작은 경우에는 4개의 8*8 블록들의 움직임의 차이는 거의 없는 것으로 판단할 수 있다. 따라서, 이러한 경우에는 모드 1로 결정하는 것이 바람직히다. 이 때, 매크로블록의 움직임 벡터는 MV(A)로 결정할 수도 있으나, MV(A), MV(B), MV(C), 및 MV(D)의 평균 값으로 결정하는 것이 바람직하다. 한편 4*4 크기의 서브블록 단위로 움직임을 추정하는 경우라면 매크로블록을 구성하는 모든 서브블록들은 MV(A), MV(B), MV(C), 및 MV(D)의 평균 값으로 모든 서브블록들의 움직임 벡터를 결정하는 것이 바람직하다. 물론 이 경우에 서브블록 A를 포함하는 블록의 서브블록들의 움직임 벡터는 MV(A)로 하고 서브블록 B를 포함하는 블록의 서브블록들의 움직임 벡터는 MV(B)로 하고 서브블록 C를 포함하는 블록의 서브블록들의 움직임 벡터는 MV(C)로 하며 서브블록 D를 포함하는 블록의 서브블록들의 움직임 벡터는 MV(D)로 하는 것도 가능하다. 이 때, b 값은 1/2 픽셀 크기인 것이 바람직하다.
만일 모드 1이 될 수 없는 경우에, 즉, Diff(u), Diff(d), Diff(l), Diff(r) 중 적어도 한 개는 일정한 값인 b보다 크거나 같은 경우에는 모드 2 또는 모드 3인 가능한지 여부를 판단한다. 모드 2와 모드 3은 각각 수학식 4와 수학식 5를 만족시키는 경우에 선택된다.
Diff(l) <b and Diff(r) <b
Diff(u) <b and Diff(d) <b
수학식 4를 만족하는 경우에 서브블록들간에 새로 방향으로는 움직임이 거의 비슷하다고 판단할 수 있으므로 모드 2로 선택한다. 한편, 이 경우에 A와 B를 포함하는 8*4 블록에 대해서는 MV(A)와 MV(C)의 평균 값으로 움직임 추정을 할 수 있고 B와 D를 포함하는 8*4 블록에 대해서는 MV(B)와 MV(D)의 평균 값으로 움직임을 추정할 수 있다. 한편, 4*4 서브블록 단위로 움직임을 추정하는 경우에는 A와 B를 포함하는 8*4 블록의 모든 서브블록들에 대해서는 MV(A)와 MV(C)의 평균 값으로 움직임 추정을 할 수 있고, B와 D를 포함하는 8*4 블록의 모든 서브블록들에 대해서는 MV(B)와 MV(D)의 평균 값으로 움직임을 추정할 수 있다.
모드 2와 모드 3이 아닌 경우에는 8*8 블록은 4*4 블록으로 나누어서 각 블록들의 움직임 벡터들을 구한다. 도 5에서는 서브블록 A를 포함하는 블록을 서브블록들(1, 2, 3, 4)로 나누어서 움직임 벡터들을 구한다. 이 경우에도 서브블록 A(=4)를 움직임 예측벡터로 하여 1, 2, 3 서브블록의 움직임 벡터들을 구한다. 이 경우에도 탐색 범위는 수학식 2의 범위로 결정하는 것이 바람직하다. 1, 2, 3, 4에 대한 모든 움직임 벡터들이 구해진 경우에 모드결정을 위하여 움직임 벡터들간의 관계는 움직임 벡터들간의 차이로 계산하며 그 관계는 수학식 6으로 정의한다.
이 때, Diff(uu), Diff(dd), Diff(ll), Diff(rr) 모두가 일정한 값인 c보다 작은 경우에는 4개의 4*4 서브 블록들의 움직임의 차이는 거의 없는 것으로 판단할 수 있다. 따라서, 이러한 경우에는 모드 4로 결정하는 것이 바람직히다. 이 때, 8*8 사이즈의 블록의 움직임 벡터는 MV(1), MV(2), MV(3), MV(4)의 평균으로 결정할 수 있다. 상기 c값은 1/4 픽셀로 결정하는 것이 바람직하다. 한편, 모드 4에 해당하지 않는 경우에 Diff(ll)과 Diff(rr)이 모두 c보다 작은 경우에는 모드 5로 정하고, Diff(uu)와 Diff(dd)이 모두 c보다 작은 경우에는 모드 6로 정할 수 있다.
그렇지 않은 경우에는 모드 7으로 정한다.
도 6은 본 발명의 실시예에 따른 모드 결정 및 움직임 추정과정을 보여주는 흐름도이다.
먼저 이미지를 입력받는다(S10). 입력된 이미지는 기준 이미지와 비교하여 각 매크로 블록들에 대한 대표 서브블록들의 움직임을 추정한다(S20). 이 때, 미리 구해진 움직임 벡터들의 정보를 이용하는 것이 바람직하다. 모든 대표 서브블록들의 움직임 벡터를 구하면 각 매크로 블록에 대하여 대표 서브블록의 움직임 벡터와 주변 매크로블록들의 대표 서브블록들의 움직임 벡터들간의 관계를 계산한다(S30). 이후에 소정의 계산을 통해 모드결정여부를 판단한다(S40). 모드가 결정되면 결정된 모드로 움직임 추정을 하고 가변 블록의 움직임 벡터를 결정한다(S50). 모드가 결정되지 않는 경우라면 매크로블록을 4등분하고(S60) 각각의 블록에 대한 대표 서브블록을 결정하고 이에 대한 움직임 벡터들을 구한다(S70). 그리고 나서 소정의 계산과정을 통해 모드가 결정되는 지 여부를 판단한다(S40). 모드가 결정된 경우라면 해당 모드에 따라 움직임 추정 및 가변블록의 움직임 벡터를 결정하고(S50), 그렇지 않은 경우라면 다시 S60 및 S70의 과정을 거쳐 모드 결정이 가능한지 여부를 판단한다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 예컨대 본 발명의 상세한 설명은 H.264를 기준으로 설명하였으나, 일부 서브블록들에 대한 움직임 벡터를 이용하여 가변블록의 모드를 결정하는 것과, 다른 서브블록들 또는 가변블록의 움직임 벡터를 구하는 것은 본 발명의 기술적 사상에 포함되는 것으로 해석되어야 한다. 따라서 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
본 발명에 따르면 동영상 코딩에서 많은 연산량을 필요로 하는 움직임 추정과정을 비교적 빠른 속도로 정확하게 수행할 수 있다. 이에 따라 저렴한 비용과 적은 시간으로 동영상 압축을 할 수 있다.
도 1a와 도 1b 및 도 1c는 각각 종전에 알려진 움직임 추정 알고리즘들을 보여주는 도면이다.
도 2는 H.264 엔코더의 기능성 블록도이다.
도 3은 본 발명의 실시예에 따른 움직임 추정 장치의 기능성 블록도이다.
도 4a는 H.264의 계층 구조의 가변 블록을 보여주는 도면이다.
도 4b는 가변 블록으로 구성된 프레임간 비교값을 보여주는 도면이다.
도 5는 본 발명의 실시예에 따른 모드 결정 및 움직임 추정을 보여주는 도면이다.
도 6은 본 발명의 실시예에 따른 모드 결정 및 움직임 추정과정을 보여주는 흐름도이다.

Claims (34)

  1. 움직임 보상 예측방식의 동영상 코딩방법에 있어서,
    복수의 서브블록들로 구성된 각 매크로블록들에 대한 대표 서브블록들의 움직임 벡터를 구하고, 상기 구해진 대표 서브블록들의 움직임 벡터들간의 관계를 이용하여 다른 모든 서브블록들에 대한 움직임 벡터를 추정하는 움직임 추정단계를 포함하는 것을 특징으로 하는 동영상 코딩방법
  2. 제1항에 있어서, 상기 움직임 추정단계는
    복수의 서브블록들로 구성된 각 매크로블록들에 대한 대표 서브블록들의 움직임 벡터를 구하는 (a) 단계; 및
    상기 (a) 단계에서 구해진 대표 서브블록들간의 관계에 따라 모든 서브블록들에 대한 움직임 벡터를 추정하는 (b) 단계; 를 포함하는 것을 특징으로 하는 동영상 코딩방법
  3. 제2항에 있어서, 상기 (a) 단계는 주변 매크로블록에 대한 대표 서브블록들의 움직임 벡터값으로부터 예측되는 움직임 벡터값부터 지정된 소정의 범위를 탐색하여 움직임 벡터를 구하는 것을 특징으로 하는 동영상 코딩방법
  4. 제2항 또는 제3항에 있어서, 상기 (a) 단계에서 각 매크로블록의 사이즈는 16*16이고 매크로블록을 구성하는 서브블록들의 사이즈는 4*4이며 대표 서브블록은 각 매크로블록을 구성하는 서브블록들 중에서 중심부의 어느 한 서브블록인 것을 특징으로 하는 동영상 코딩방법
  5. 제2항에 있어서, 상기 (b) 단계에서 매크로블록의 대표 서브블록의 움직임 벡터와 주변 매크로블록들의 대표 서브블록들의 각 움직임 벡터와의 차이가 제1 기준값(=a)보다 작은 매크로블록에 대해서는 상기 매크로블록을 구성하는 서브블록들의 움직임 벡터는 상기 대표 서브블록의 움직임 벡터로 결정하는 것을 특징으로 하는 동영상 코딩방법
  6. 제5항에 있어서, 상기 주변 매크로블록들은 상기 매크로블록과 인접한 상하좌우 매크로블록들인 것을 특징으로 하는 동영상 코딩방법
  7. 제5항 또는 제6항에 있어서, 상기 제1 기준값(=a)은 1픽셀 거리인 것을 특징으로 하는 동영상 코딩방법
  8. 제2항에 있어서, 상기 (b) 단계에서 매크로블록의 대표 서브블록의 움직임 벡터와 주변 매크로블록들의 대표 서브블록들 중 적어도 어느 한 움직임 벡터와의 차이가 제1 기준값(=a)보다 크거나 같은 매크로블록에 대해서는
    상기 매크로블록을 4개의 좌상, 우상, 좌하, 및 우하 블록들로 나누어서 각 블록들을 대표하는 서브블록들의 움직임 벡터들(좌상, 우상, 좌하, 우하)을 구하는 (b1) 단계; 및
    상기 좌상 및 우상 움직임 벡터들의 차이(이하, Diff(u)라 함)와 좌하 및 우하 움직임 벡터들의 차이(이하, Diff(d)라 함)와 좌상 및 좌하 움직임 벡터들의 차이(이하, Diff(l)라 함) 및 우상 및 우하 움직임 벡터들의 차이(이하, Diff(r)라 함)들에 따라 나머지 서브블록들의 움직임 벡터들을 구하는 (b2) 단계; 를 포함하는 것을 특징으로 하는 동영상 코딩방법
  9. 제8항에 있어서, 상기 (b1) 단계는 상기 대표 서브블록의 움직임 벡터를 기준으로하여 주변 매크로블록들의 대표 서브블록들의 움직임 벡터들 범위로 탐색하여 상기 좌상, 우상, 좌하, 및 우하 움직임벡터들을 구하는 것을 특징으로 하는 동영상 코딩방법
  10. 제8항에 있어서, 상기 (b2) 단계에서 상기 Diff(u)와 Diff(d)와 Diff(l) 및 Diff(r)이 모두 제2 기준값(=b) 보다 작은 경우에는 상기 매크로블록의 서브블록들의 움직임 벡터들은 상기 좌상, 우상, 좌하, 및 우하 움직임벡터들의 평균으로 결정하는 것을 특징으로 하는 동영상 코딩방법
  11. 제8항에 있어서, 상기 (b2) 단계에서 상기 Diff(u)와 Diff(d)는 모두 제2 기준값(=b)보다 작고 상기 Diff(l)와 Diff(r) 중 적어도 하나는 제2 기준값(=b)보다 크거나 작은 경우에는 상기 좌상 및 우상 블록들을 구성하는 서브블록들의 움직임 벡터들은 상기 좌상과 우상 움직임 벡터의 평균으로 결정하고 상기 좌하 및 우하 블록들을 구성하는 서브블록들의 움직임 벡터들은 상기 좌하 및 우하 움직임 벡터의 평균으로 결정하는 것을 특징으로 하는 동영상 코딩방법
  12. 제8항에 있어서, 상기 (b2) 단계에서 상기 Diff(l)와 Diff(r)는 모두 제2 기준값(=b)보다 작고 상기 Diff(u)와 Diff(d) 중 적어도 하나는 제2 기준값(=b)보다 크거나 작은 경우에는 상기 좌상 및 좌하 블록들을 구성하는 서브블록들의 움직임 벡터들은 상기 좌상과 좌하 움직임 벡터의 평균으로 결정하고 상기 우상 및 우하 블록들을 구성하는 서브블록들의 움직임 벡터들은 상기 우상 및 우하 움직임 벡터의 평균으로 결정하는 것을 특징으로 하는 동영상 코딩방법
  13. 제10항 내지 제12항 중 어느 한 항에 있어서, 상기 제1 기준값(=a)은 1픽셀 거리이고, 상기 제2 기준값(=b)은 1/2 픽셀 거리인 것을 특징으로 하는 동영상 코딩방법
  14. 제5항, 제10항, 제11항, 및 제12항 중 어느 한 항에 있어서, 동영상 코딩에서 움직임 추정의 단위는 크기와 모양이 바뀔 수 있는 가변 블록을 기준으로 하고 상기 가변 블록의 크기와 모양은 상기 대표 서브블록들의 움직임 벡터들에 의해 구해진 서브블록들의 움직임 벡터가 같게되는 범위를 기준으로 하는 것을 특징으로 하는 동영상 코딩방법
  15. 가변 블록을 기반으로 한 움직임 보상 예측방식의 동영상 코딩방법에 있어서,
    복수의 서브블록들로 구성된 각 매크로블록들에 대한 대표 서브블록들의 움직임 벡터를 구하고, 상기 구해진 대표 서브블록들간의 관계를 이용하여 움직임 추정을 수행할 블록의 크기와 모양을 결정하는 단계를 포함하는 것을 특징으로 하는 동영상 코딩방법
  16. 제15항에 있어서, 상기 움직임 추정의 단위블록을 결정하는 단계는
    복수의 서브블록들로 구성된 각 매크로블록들에 대한 대표 서브블록들의 움직임 벡터를 구하는 (a) 단계; 및
    상기 (a) 단계에서 구해진 대표 서브블록들간의 관계에 따라 어떤 크기와 모양의 블록을 기준으로 움직임추정을 할지를 결정하는 (b) 단계; 를 포함하는 것을 특징으로 하는 동영상 코딩방법
  17. 제15항에 있어서, 상기 (a) 단계는 주변 매크로블록에 대한 대표 서브블록들의 움직임 벡터값으로부터 예측되는 움직임 벡터값부터 지정된 소정의 범위를 탐색하여 움직임 벡터를 구하는 것을 특징으로 하는 동영상 코딩방법
  18. 제16항 또는 제17항에 있어서, 상기 (a) 단계에서 각 매크로블록의 사이즈는 16*16이고 매크로블록을 구성하는 서브블록들의 사이즈는 4*4이며 대표 서브블록은 각 매크로블록을 구성하는 서브블록들 중에서 중심부의 어느 한 서브블록인 것을 특징으로 하는 동영상 코딩방법
  19. 제16항에 있어서, 상기 (b) 단계에서 매크로블록의 대표 서브블록의 움직임 벡터와 주변 매크로블록들의 대표 서브블록들의 각 움직임 벡터와의 차이가 제1 기준값(=a)보다 작은 매크로블록에 대해서는 상기 매크로블록 단위로 움직임을 추정하는 것을 특징으로 하는 동영상 코딩방법
  20. 제19항에 있어서, 상기 주변 매크로블록들은 상기 매크로블록과 인접한 상하좌우 매크로블록들인 것을 특징으로 하는 동영상 코딩방법
  21. 제19항 또는 제20항에 있어서, 상기 제1 기준값(=a)은 1픽셀 거리인 것을 특징으로 하는 동영상 코딩방법
  22. 제16항에 있어서, 상기 (b) 단계에서 매크로블록의 대표 서브블록의 움직임 벡터와 주변 매크로블록들의 대표 서브블록들 중 적어도 어느 한 움직임 벡터와의 차이가 제1 기준값(=a)보다 크거나 같은 매크로블록에 대해서는
    상기 매크로블록을 4개의 좌상, 우상, 좌하, 및 우하 블록들로 나누어서 각 블록들을 대표하는 서브블록들의 움직임 벡터들(좌상, 우상, 좌하, 우하)을 구하는 (b1) 단계; 및
    상기 좌상 및 우상 움직임 벡터들의 차이(이하, Diff(u)라 함)와 좌하 및 우하 움직임 벡터들의 차이(이하, Diff(d)라 함)와 좌상 및 좌하 움직임 벡터들의 차이(이하, Diff(l)라 함) 및 우상 및 우하 움직임 벡터들의 차이(이하, Diff(r)라 함)들에 따라 움직임 추정의 단위 블록을 결정하는 (b2) 단계; 를 포함하는 것을 특징으로 하는 동영상 코딩방법
  23. 제22항에 있어서, 상기 (b1) 단계는 상기 대표 서브블록의 움직임 벡터를 기준으로하여 주변 매크로블록들의 대표 서브블록들의 움직임 벡터들 범위로 탐색하여 상기 좌상, 우상, 좌하, 및 우하 움직임벡터들을 구하는 것을 특징으로 하는 동영상 코딩방법
  24. 제22항에 있어서, 상기 (b2) 단계에서 상기 Diff(u)와 Diff(d)와 Diff(l) 및 Diff(r)이 모두 제2 기준값(=b) 보다 작은 경우에는 움직임을 추정하는 단위 블록은 상기 매크로블록인 것을 특징으로 하는 동영상 코딩방법
  25. 제22항에 있어서, 상기 (b2) 단계에서 상기 Diff(u)와 Diff(d)는 모두 제2 기준값(=b)보다 작고 상기 Diff(l)와 Diff(r) 중 적어도 하나는 제2 기준값(=b)보다 크거나 작은 경우에는 움직임을 추정하는 단위블록은 상기 좌상 및 우상 블록을 합친 블록과 상기 좌하 및 우하 블록을 합친 블록인 것을 특징으로 하는 동영상 코딩방법
  26. 제22항에 있어서, 상기 (b2) 단계에서 상기 Diff(l)와 Diff(r)는 모두 제2 기준값(=b)보다 작고 상기 Diff(u)와 Diff(d) 중 적어도 하나는 제2 기준값(=b)보다 크거나 작은 경우에는 움직임을 추정하는 단위블록은 상기 좌상 및 좌하 블록을 합친 블록과 상기 우상 및 우하 블록을 합친 블록인 것을 특징으로 하는 동영상 코딩방법
  27. 제24항 내지 제26항 중 어느 한 항에 있어서, 상기 제1 기준값(=a)은 1픽셀 거리이고, 상기 제2 기준값(=b)은 1/2 픽셀 거리인 것을 특징으로 하는 동영상 코딩방법
  28. 제22항에 있어서, 상기 (b2) 단계에서 상기 Diff(l)와 Diff(r)는 중 적어도 하나는 제2 기준값(=b)보다 크거나 같고 상기 Diff(u)와 Diff(d) 중 적어도 하나는 제2 기준값(=b)보다 크거나 작은 경우에는 상기 4개의 블록들을 각각 4개의 서브블록들(좌상, 우상, 좌하, 및 우하 서브블록)로 나누고 각 블록에 대하여,
    4개의 서브블록들의 움직임벡터들(제1, 제2, 제3, 및 제4 움직임 벡터)를 구하는 (b21) 단계; 및
    상기 제1 및 제2 움직임 벡터들의 차이(이하, Diff(uu)라 함)와 제3 및 제4 움직임벡터들의 차이(이하, Diff(dd)라 함)와 제1 및 제3 움직임벡터들의 차이(이하, Diff(ll)라 함) 및 제2 및 제4 움직임 벡터들의 차이(이하, Diff(rr)라 함)들에 따라 움직임 추정의 단위 블록을 결정하는 (b22) 단계; 를 포함하는 것을 특징으로 하는 동영상 코딩방법
  29. 제28항에 있어서, 상기 (b22) 단계에서, Diff(uu)과 Diff(dd)과 Diff(ll) 및 Diff(rr) 모두 제3 기준값(=c)보다 작은 경우에 움직임을 추정하는 단위는 블록단위이고, Diff(uu)과 Diff(dd)는 모두 제3 기준 값(=c)보다 작고 Diff(ll) 및 Diff(rr) 중 적어도 하나는 제3 기준 값(=c)보다 크거나 같은 경우에는 움직임을 추정하는 단위는 상기 좌상 및 우상 서브블록을 합친 블록과 상기 좌하 및 우하 블록을 합친 블록이며, Diff(ll)과 Diff(rr)는 모두 제3 기준 값(=c)보다 작고 Diff(uu) 및 Diff(dd) 중 적어도 하나는 제3 기준 값(=c)보다 크거나 같은 경우에는 움직임을 추정하는 단위는 상기 좌상 및 좌하 서브블록을 합친 블록과 상기 우상 및 우하 블록을 합친 블록인 것을 특징으로 하는 동영상 코딩방법
  30. 제29항에 있어서, 상기 제1 기준값(=a)은 1픽셀 거리이고, 상기 제2 기준값(=b)은 1/2 픽셀 거리이며, 상기 제3 기준값(=c)은 1/4픽셀 거리인 것을 특징으로 하는 동영상 코딩방법
  31. 움직임 보상 예측방식의 동영상 코딩장치에 있어서,
    입력된 이미지와 기준 프레임을 이용하여 입력된 이미지의 움직임을 추정하여 움직임 보상 시간적 필터링에 이용될 수 있도록 하는 움직임 추정부를 포함하며, 상기 움직임 추정부는 복수의 서브블록들로 구성된 각 매크로블록들에 대한 대표 서브블록들의 움직임 벡터를 구하고, 상기 구해진 대표 서브블록들의 움직임 벡터들간의 관계를 이용하여 입력된 이미지의 움직임을 추정하는 움직임 추정하는 것을 특징으로 하는 동영상 코딩장치
  32. 제 31항에 있어서, 상기 움직임 추정부는
    상기 대표 서브블록들의 움직임을 추정하는 서브블록 움직임 추정부;
    상기 서브블록 움직임 추정모듈에 의해 얻어진 움직임 벡터들간의 관계를 이용하여 움직임 추정의 단위블록을 선택하는 모드결정부; 및
    상기 모드결정부에 따라 모드부에서 모드가 결정되지 않은 경우에 소정의 서브블록들 움직임 벡터들의 탐색 범위와 움직임 벡터들의 예측값을 상기 서브블록 움직임 추정부에 전달하는 탐색범위 결정 및 움직임 벡터 예측부;
    를 포함하는 것을 특징으로 하는 동영상 코딩장치
  33. 제32항에 있어서, 상기 탐색범위 결정 및 움직임 벡터 예측부는 상기 움직임 벡터의 예측값은 주변 움직임 벡터들을 이용해 찾는 것을 특징으로 하는 동영상 코딩장치
  34. 제33항에 있어서, 상기 탐색범위 결정 및 움직임 벡터 예측부는 상기 탐색 범위는 어느 한 서브블록이 속하는 매크로블록의 상하좌우 매크로블록의 대표 서브블록들의 움직임 벡터의 범위로 결정하는 것을 특징으로 하는 동영상 코딩방법
KR1020030078428A 2003-11-06 2003-11-06 고속 움직임추정 알고리즘을 갖는 동영상 코딩방법 및 장치 KR100597397B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020030078428A KR100597397B1 (ko) 2003-11-06 2003-11-06 고속 움직임추정 알고리즘을 갖는 동영상 코딩방법 및 장치
US10/983,101 US20050207494A1 (en) 2003-11-06 2004-11-08 Method and apparatus for encoding moving picture using fast motion estimation algorithm

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030078428A KR100597397B1 (ko) 2003-11-06 2003-11-06 고속 움직임추정 알고리즘을 갖는 동영상 코딩방법 및 장치

Publications (2)

Publication Number Publication Date
KR20050043511A true KR20050043511A (ko) 2005-05-11
KR100597397B1 KR100597397B1 (ko) 2006-07-07

Family

ID=34986261

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030078428A KR100597397B1 (ko) 2003-11-06 2003-11-06 고속 움직임추정 알고리즘을 갖는 동영상 코딩방법 및 장치

Country Status (2)

Country Link
US (1) US20050207494A1 (ko)
KR (1) KR100597397B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100734858B1 (ko) * 2005-12-07 2007-07-03 한국전자통신연구원 효율적인 1/4 화소 단위 움직임 예측을 위한 1/4 화소 단위메모리 인덱싱 방법
KR101324352B1 (ko) * 2011-11-23 2013-11-01 충북대학교 산학협력단 인접한 블록의 움직임 벡터를 이용한 고속 움직임 추정 방법
US8774271B2 (en) 2008-12-23 2014-07-08 Electronics And Telecommunications Research Institute Apparatus and method for scalable encoding

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI239474B (en) * 2004-07-28 2005-09-11 Novatek Microelectronics Corp Circuit for counting sum of absolute difference
TWI295540B (en) * 2005-06-15 2008-04-01 Novatek Microelectronics Corp Motion estimation circuit and operating method thereof
KR100723861B1 (ko) * 2005-11-04 2007-05-31 한국전자통신연구원 고속 움직임 예측을 위한 고속 모드 검색 장치 및 방법
TWI296091B (en) * 2005-11-15 2008-04-21 Novatek Microelectronics Corp Motion estimation circuit and motion estimation processing element
KR20070069615A (ko) * 2005-12-28 2007-07-03 삼성전자주식회사 움직임 추정장치 및 움직임 추정방법
US7693219B2 (en) * 2006-01-04 2010-04-06 Freescale Semiconductor, Inc. System and method for fast motion estimation
KR101217627B1 (ko) * 2006-02-02 2013-01-02 삼성전자주식회사 블록 기반의 움직임 추정 방법 및 장치
US20070217515A1 (en) * 2006-03-15 2007-09-20 Yu-Jen Wang Method for determining a search pattern for motion estimation
US8908765B2 (en) * 2007-11-15 2014-12-09 General Instrument Corporation Method and apparatus for performing motion estimation
TWI376645B (en) * 2008-07-29 2012-11-11 Sonix Technology Co Ltd Image processing methof of noise reduction and apparatus thereof
US8498493B1 (en) 2009-06-02 2013-07-30 Imagination Technologies Limited Directional cross hair search system and method for determining a preferred motion vector
KR101522850B1 (ko) * 2010-01-14 2015-05-26 삼성전자주식회사 움직임 벡터를 부호화, 복호화하는 방법 및 장치
KR101768207B1 (ko) * 2010-01-19 2017-08-16 삼성전자주식회사 축소된 예측 움직임 벡터의 후보들에 기초해 움직임 벡터를 부호화, 복호화하는 방법 및 장치
WO2012044124A2 (ko) * 2010-09-30 2012-04-05 한국전자통신연구원 영상 부호화 방법과 복호화 방법 및 이를 이용한 영상 부호화 장치와 복호화 장치
US9667964B2 (en) 2011-09-29 2017-05-30 Dolby Laboratories Licensing Corporation Reduced complexity motion compensated temporal processing
JP5972888B2 (ja) * 2011-09-29 2016-08-17 シャープ株式会社 画像復号装置、画像復号方法および画像符号化装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6483876B1 (en) * 1999-12-28 2002-11-19 Sony Corporation Methods and apparatus for reduction of prediction modes in motion estimation
KR100984517B1 (ko) * 2003-01-10 2010-10-01 톰슨 라이센싱 인터프레임 인코딩을 위한 빠른 모드 결정 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100734858B1 (ko) * 2005-12-07 2007-07-03 한국전자통신연구원 효율적인 1/4 화소 단위 움직임 예측을 위한 1/4 화소 단위메모리 인덱싱 방법
US8774271B2 (en) 2008-12-23 2014-07-08 Electronics And Telecommunications Research Institute Apparatus and method for scalable encoding
KR101324352B1 (ko) * 2011-11-23 2013-11-01 충북대학교 산학협력단 인접한 블록의 움직임 벡터를 이용한 고속 움직임 추정 방법

Also Published As

Publication number Publication date
KR100597397B1 (ko) 2006-07-07
US20050207494A1 (en) 2005-09-22

Similar Documents

Publication Publication Date Title
KR101932735B1 (ko) 다중 참조를 허용하는 비디오 코덱에서 모션 벡터를 예측하는 방법, 및 그 방법을 이용한 모션 벡터 부호화/복호화 장치
KR100597397B1 (ko) 고속 움직임추정 알고리즘을 갖는 동영상 코딩방법 및 장치
KR100703760B1 (ko) 시간적 레벨간 모션 벡터 예측을 이용한 비디오인코딩/디코딩 방법 및 장치
KR100714698B1 (ko) 향상된 움직임 추정 방법, 상기 방법을 이용한 비디오인코딩 방법 및 장치
KR20050045746A (ko) 계층 구조의 가변 블록 크기를 이용한 움직임 추정 방법및 장치
US20150172687A1 (en) Multiple-candidate motion estimation with advanced spatial filtering of differential motion vectors
US20050276331A1 (en) Method and apparatus for estimating motion
JP2004048552A (ja) 画像符号化装置、画像符号化方法、画像復号装置、画像復号方法、および通信装置
KR19990067723A (ko) 비디오 프레임 시퀀스의 인코딩 방법 및 시스템과, 제조 물품
JP4417054B2 (ja) 離散コサイン変換係数を参照する動き推定方法及び装置
KR101691380B1 (ko) 시프팅 매트릭스를 이용한 dct 기반의 부화소 단위 움직임 예측 방법
KR100870554B1 (ko) 웨이블릿 기반의 효율적인 스케일러블 비디오 부호화를위한 움직임 보상 시간적 필터링 방법 및 그 방법을실행하기 위한 프로그램이 기록된 기록매체
KR100586103B1 (ko) 동영상 부호화 방법
KR100351568B1 (ko) 움직임 보상 예측 블록의 경계 방향성을 고려한 고압축장치 및 그 방법
KR100240620B1 (ko) 양방향의 반화소 움직임 추정을 위한 대칭 탐색 윈도우를 형성하는 방법 및 장치
KR0174441B1 (ko) 적응적 움직임 보상을 이용한 동영상 부호화 장치
KR100252346B1 (ko) 개선된 텍스쳐 움직임 벡터 부호화 장치 및 그 방법
KR100196827B1 (ko) 영상부호기의 움직임 벡터 압축방법
KR100293445B1 (ko) 움직임벡터코딩방법
KR100207397B1 (ko) 영상 부호화 시스템의 움직임 예측장치 및 방법
KR100657714B1 (ko) 3차원 스캐닝을 이용한 영상데이터 부호화 방법
KR0174959B1 (ko) 초저속 전송을 위한 동영상부호화 장치
KR0174444B1 (ko) 초저속 전송을 위한 움직임 보상장치
KR100238890B1 (ko) 개선된 텍스쳐 움직임 벡터 추정 장치 및 그 추정 방법
KR20040036225A (ko) 이웃하는 움직임 벡터를 이용한 가이디드 탐색방법

Legal Events

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

Payment date: 20130530

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140529

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee