상기 목적을 달성하기 위하여, 본 발명의 일면에 따른 인트라 예측 모드를 선택하는 방법은 예측하려는 블록에 인접한 블록들의 방향 차이 정도에 따라 복수 개의 예측 모드들을 결정하는 단계, 상기 복수 개의 예측 모드들에 따라 상기 예측하려는 블록에 대한 SAE 값들을 계산하는 단계, 및 상기 SAE 값들을 기반으로 상기 예측하려는 블록이 최소의 SAE 값을 가지는 예측 모드를 인트라 예측 모드로 선택하는 단계를 포함하는 것을 특징으로 한다.
상기 목적을 달성하기 위하여, 본 발명의 다른 일면에 따른 인트라 예측 모드를 선택하는 방법은 예측하려는 블록에 인접한 블록들의 방향 차이 정도에 따라 복수 개의 예측 모드들을 결정하는 단계, 및 상기 복수 개의 예측 모드들 중에 어느 하나의 예측 모드를 인트라 예측 모드로 선택하는 단계를 포함하는 것을 특징으로 한다.
상기 목적을 달성하기 위하여, 본 발명의 또다른 일면에 따른 인트라 예측 모드를 선택하는 장치는 예측하려는 블록에 인접한 블록들의 방향 차이 정도에 따라 복수 개의 예측 모드들을 결정하는 결정부, 상기 복수 개의 예측 모드들에 따라 상기 예측하려는 블록에 대한 SAE 값들을 계산하는 연산부, 및 상기 SAE 값들을 기반으로 상기 예측하려는 블록이 최소의 SAE 값을 가지는 예측 모드를 인트라 예측 모드로 선택하는 선택부를 포함하는 것을 특징으로 한다.
이하에서는, 첨부된 도면들 및 상기 첨부된 도면들에 기재된 내용들을 참조하여 본 발명의 바람직한 실시예들을 상세하게 설명하지만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
본 발명의 일실시예에 따른 인트라 예측 모드 선택 방법은 비디오 데이터를 부호화하거나 복호화하는 과정에서 사용될 수 있는데, 이와 같이 인트라 예측 모드를 선택하는 장치를 도 1을 참조하여 설명한다.
도 1은 본 발명의 일실시예에 따른 인트라 예측 모드를 선택하는 장치(100)를 나타내는 블록도이다.
도 1에 도시한 바와 같이, 본 발명의 일실시예에 따른 인트라 예측 모드를 선택하는 장치(100)는 결정부(110), 연산부(120), 선택부(130), 및 메모리(140)를 포함한다.
상기 결정부(110)는 입력 데이터로부터 예측하려는 블록에 인접한 블록들의 방향 차이 정도를 검출하고 상기 검출된 방향 차이 정도에 따라 미리 결정된 개수의 예측 모드들을 결정하여 상기 결정된 예측 모드들을 출력한다. 여기서, 상기 입력 데이터는 상기 예측하려는 블록의 인트라 예측 모드를 결정하기 위해서 필요한 만큼의 데이터 단위 예를 들어, 프레임 단위 또는 8라인 데이터 단위로 입력될 수 있다.
상기 연산부(120)는 상기 출력된 예측 모드들에 따라 상기 예측하려는 블록에 대한 SAE 값들을 계산하여 계산된 SAE 값들을 출력한다.
상기 선택부(130)는 상기 출력된 SAE 값들을 기반으로 상기 예측하려는 블록이 최소의 SAE 값을 가지는 어느 하나의 예측 모드를 최종적인 인트라 예측 모드로 선택한다.
이때, 상기 메모리(140)는 상기 예측하려는 블록에 인접한 블록들의 방향 차이 정도에 따라 미리 결정된 개수의 예측 모드들을 저장한다. 여기서, 상기 블록 은 4*4 픽셀 휘도 (Luminance) 블록을 의미한다.
이와 같이 구성된 본 발명의 일실시예에 따른 인트라 예측 모드를 선택하는 방법을 도 2를 참조하여 설명한다.
도 2는 본 발명의 일실시예에 따른 인트라 예측 모드를 선택하는 방법을 나타내는 흐름도이다.
도 2에 도시한 바와 같이, 본 발명의 일실시예에 따른 인트라 예측 모드를 선택하는 방법은 인접한 블록들의 방향 차이 정도를 검출하는 단계(S210), 미리 결정된 개수의 예측 모드들을 결정하는 단계(S220), 예측하려는 블록에 대한 SAE 값들을 계산하는 단계(S230), 및 최소의 SAE 값을 가지는 예측 모드를 인트라 예측 모드로 선택하는 단계(S240)를 포함한다.
이와 같이 이루어진 본 발명에 따른 인트라 예측 모드를 선택하는 방법을 상세히 설명하면 다음과 같다.
상기 메모리(140)는 상기 예측하려는 블록에 인접한 블록들의 방향 차이 정도에 따라 미리 결정된 개수의 예측 모드들을 저장함으로써, 상기 결정부(110)는 상기 예측하려는 블록에 인접한 블록들의 방향 차이 정도를 검출하여(S210) 상기 메모리(140)에 저장된 정보들을 근거로 상기 예측하려는 블록에 인접한 블록들의 방향 차이 정도에 따라 미리 결정된 개수의 예측 모드들을 결정한다(S220).
이와 같이 저장된 예측 모드들을 미리 결정하는 원리를 도 3 내지 도 5를 참조하여 설명한다.
도 3은 본 발명의 일실시예에 따른 예측하려는 블록과 이에 인접한 블록들 을 설명하기 위한 예시도이다.
도 3에 도시한 바와 같이, 본 발명의 일실시예에 따른 인트라 예측 모드를 선택하는 방법은 상기 예측하려는 블록을 C로, 이에 인접한 블록들 즉, 상위 블록과 좌측 블록을 각각 A, B로 설정하면 상기 설정된 상위 블록(A)와 좌측 블록(B)를 이용하여 상기 블록(C)의 인트라 예측 모드를 예측할 수 있다.
도 4는 본 발명의 일실시예에 따른 예측 모드의 종류들을 설명하기 위한 예시도이다.
도 4에 도시한 바와 같이, 본 발명의 일실시예에 따른 인트라 예측 모드를 선택하는 방법은 블록들을 예측하기 위해 H.264/AVC (Advanced Video Coding)에서 사용되는 예측 모드 0 ~ 8들을 사용한다.
도 5는 본 발명의 일실시예에 따른 예측 모드들에 설정되는 방향 값을 설명하기 위한 예시도이다.
도 5에 도시한 바와 같이, 본 발명의 일실시예에 따른 인트라 예측 모드를 선택하는 방법은 상기 예측 모드 2를 기준으로 시계 방향(예측 모드 2 -> 8 -> 1 -> 6 -> 4 -> 5 -> 0 -> 7 -> 3)순이나 반시계 방향(예측 모드 2 -> 3 -> 7 -> 0 -> 5 -> 4 -> 6 -> 1 -> 8)순으로 각 방향에 대응하도록 순차적인 방향 값(0, 1, 2, …,7, 8)을 설정함으로써, 상기 예측하려는 블록에 인접한 블록들의 방향 차이 정도를 검출할 수 있다.
예를 들면, 상기 상위 블록(A)의 방향이 예측 모드 1이고 상기 좌측 블록(B)의 방향이 예측 모드 0이면 상기 예측 모드 1에는 방향 값 '2'가 상기 예측 모드 0에는 방향 값 '6'이 설정되어 있기 때문에 상기 인접한 블록들의 방향 차이는 |A-B| = 4가 됨을 알 수 있습니다.
이와 같이 검출한 인접한 블록들의 방향 차이 정도에 따라 미리 결정된 개수의 예측 모드들을 다음의 표 1과 같이 설정할 수 있는데, 이는 상기 예측 하려는 블록의 방향이 상기 인접한 블록의 방향과 유사하다는 컴퓨터 시뮬레이션 결과를 반영한 결과이다.
(표 1)
방향 차이 |
결정된 예측 모드들 |
| A - B | = 0 |
An -1, An, An +1 |
| A - B | = 1 |
An -1, An, Bn, Bn +1 |
| A - B | = 2 |
An -1, An, An +1, Bn, Bn +1 |
| A - B | >= 3 |
An -1, An, An +1, Bn -1, Bn, Bn +1 |
여기서, 예측 모드들에서 An는 상위 블록(A)의 방향 값을, An -1은 상위 블록(A)의 방향에 설정된 방향 값에서 '1'을 뺀 값에 대응하는 방향 값을, An +1은 상위 블록(A)의 방향에 설정된 방향 값에서 '1'을 더한 값에 대응하는 방향 값을 각각 의미한다. 또한, 예측 모드들에서 Bn는 좌측 블록(B)의 방향 값을, Bn -1은 좌측 블록(B)의 방향에 설정된 방향 값에서 '1'을 뺀 값에 대응하는 방향 값을, Bn +1은 좌측 블록(B)의 방향에 설정된 방향 값에서 '1'을 더한 값에 대응하는 방향 값을 각각 의미한다.
상기 표 1을 사용함으로써 화질 저하의 문제는 없으나 전송되는 비트율(Bit Rate)이 커질 수 있기 때문에 다음의 표 2와 같이 설정할 수도 있다.
(표 2)
방향 차이 |
결정된 예측 모드들 |
| A - B | = 0 |
An -2, An -1, An, An +1, An +2 |
| A - B | = 1 |
An -2, An -1, An, Bn, Bn +1, Bn +2, |
| A - B | = 2 |
An -2, An -1, An, An +1, Bn, Bn +1, Bn +2 |
| A - B | = 3 |
An -2, An -1, An, An +1, An +2, Bn, Bn +1, Bn +2 |
| A - B | >= 4 |
An -2, An -1, An, An +1, An +2, Bn -1, Bn, Bn +1, Bn +2 |
상기 표 1에서와 같이 미리 결정된 예측 모드들을 예를 들어 설명하면 다음과 같다.
첫째로, 상기 인접한 블록들의 방향 차이가 |A-B| = 0 이고 상기 상위 블록(A)와 상기 좌측 블록(B)의 방향이 예측 모드 1의 방향일 때, 상기 예측 모드 1에는 방향 값 '2'가 설정되어 있기 때문에 상기 결정된 예측 모드들은 방향 값 '1(An-1)'에 대응하는 예측 모드 8, 방향 값 '2'에 대응하는 예측 모드 1(An), 및 방향 값 '3(An +1)'에 대응하는 예측 모드 6을 각각 나타낼 수 있다.
둘째로, 상기 인접한 블록들의 방향 차이가 |A-B| = 1 이고 상기 상위 블록(A)의 방향이 예측 모드 1의 방향이고 상기 좌측 블록(B)의 방향이 예측 모드 6 의 방향일 때, 상기 결정된 예측 모드들은 상기 예측 모드 1에는 방향 값 '2'가 설정되어 있기 때문에 방향 값 '1(An -1)'에 대응하는 예측 모드 8, 방향 값 '2'에 대응하는 예측 모드 1(An)과 상기 예측 모드 6에는 방향 값 '3'이 설정되어 있기 때문에 상기 결정된 예측 모드들은 방향 값 '3(Bn)대응하는 예측 모드 6, 방향 값 '4(Bn+1)'에 대응하는 예측 모드 4를 각각 나타낼 수 있다.
셋째로, 상기 인접한 블록들의 방향 차이가 |A-B| = 2 이고 상기 상위 블록(A)의 방향이 예측 모드 1의 방향이고 상기 좌측 블록(B)의 방향이 예측 모드 4의 방향일 때, 상기 결정된 예측 모드들은 상기 예측 모드 1에는 방향 값 '2'가 설정되어 있기 때문에 방향 값 '1(An -1)'에 대응하는 예측 모드 8, 방향 값 '2(An)'에 대응하는 예측 모드 1, 방향 값 '3(An +1)'에 대응하는 예측 모드 6과 상기 예측 모드 4에는 방향 값 '4'가 설정되어 있기 때문에 상기 결정된 예측 모드들은 방향 값 '4(Bn)'에 대응하는 예측 모드 4, 방향 값 '5(Bn +1)'에 대응하는 예측모드 5를 각각 나타낼 수 있다.
넷째로, 상기 인접한 블록들의 방향 차이가 |A-B| >= 3 이고 상기 상위 블록(A)의 방향이 예측 모드 1의 방향이고 상기 좌측 블록(B)의 방향이 예측 모드 5의 방향일 때, 상기 결정된 예측 모드들은 상기 예측 모드 1에는 방향 값 '2'가 설정되어 있기 때문에 방향 값 '1(An -1)'에 대응하는 예측 모드 8, 방향 값 '2(An)'에 대응하는 예측 모드 1, 방향 값 '3(An +1)'에 대응하는 예측 모드 6과 상기 예측 모드 5에는 방향 값 '5'가 설정되어 있기 때문에 상기 결정된 예측 모드들은 방향 값 '4(Bn-1)'에 대응하는 예측 모드 4, 방향 값 '5(Bn)'에 대응하는 예측 모드 5, '6(Bn+1)'에 대응하는 예측모드 0를 각각 나타낼 수 있다.
상기 표 1과 표 2에서와 같이 예측 모드들을 미리 결정할 때, 상기 인접한 블록들의 방향 차이 정도를 더욱 세분화 할 수 있을 뿐만 아니라 그에 따라 결정된 예측 모드들의 개수도 다양하게 조절할 수 있음을 알 수 있다.
또한, 상기 예측하려는 블록에 인접한 상위 블록과 좌측 블록들 중 적어도 어느 하나가 없는 임의의 프레임 내의 가장 상위의 수평 방향 블록들이나 가장 좌측의 수직 방향 블록들은 예외적으로 설정해야 한다.
도 3에 도시한 바와 같이, 본 발명의 일실시예에 따른 인트라 예측 모드를 선택하는 방법은 상기 예측하려는 블록이 임의의 프레임의 첫번째 블록(M)일 때 인접한 블록에 영향을 받지 않는 모드 즉, 예측 모드 2를 상기 예측 모드로 결정하고, 상기 예측하려는 블록이 임의의 프레임의 첫번째 블록을 제외한 가장 상위의 수평 방향에 해당하는 블록들(Hn)일 때 상위 블록에 영향을 받지 않는 모드들 즉, 예측 모드 1, 2, 8을 상기 예측 모드들로 결정하며, 상기 예측하려는 블록이 임의의 프레임의 첫번째 블록을 제외한 가장 좌측의 수직 방향에 해당하는 블록들(Vn)일 때 좌측 블록에 영향을 받지 않는 모드들 즉, 예측 모드 0, 2, 3, 7을 상기 예측 모드들로 결정할 수 있다.
상기 연산부(120)는 상기 미리 결정된 개수의 예측 모드들에 따라 상기 예측하려는 4*4 휘도 블록에 대한 SAE 값들을 계산하는데(S230), 상기 SAE는 다음의 수학식 1에 의해 구할 수 있다.
여기서, 상기 curr(x,y)는 상기 예측하려는 현재 블록의 입력 데이터를 나타내고 상기 pred(x,y)는 예측 모드들의 데이터를 나타낸다. 상기 예측 모드들의 데이터는 H.264/AVC의 소정 알고리즘에 따라 결정되는 예측 모드를 적용하여 얻어지는 4*4 픽셀 휘도 블록 데이터이다.
결국, 상기 선택부(130)는 상기 계산된 SAE 값들을 기반으로 상기 예측하려는 블록이 최소의 SAE 값을 가지는 예측 모드를 최종적으로 인트라 예측 모드로 선택할 수 있다(S240).
본 발명의 실시 예는 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 매체는 프로그램 명령, 로컬 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
지금까지 본 발명에 따른 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서는 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며, 후술하는 특허 청구 범위뿐 아니라 이 특허 청구 범위와 균등한 것들에 의해 정해져야 한다.