이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한 다. 본 발명의 이점 및 특성, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
스케일러블 비디오 코딩은 종래의 MPEG-4나 H.264에 비하여 신택스의 양이 상당히 증가하였는데, 각각의 신택스 자체는 1비트 또는 몇 비트 수준이지만 전체 비디오 스트림을 기준으로 한다면 신택스로 인한 오버헤드도 무시하기 어렵다. 본 발명은 비디오 코딩에 있어서 소정 블록(슬라이스, 매크로블록 또는 서브 블록)별로 존재하는 동일한 플래그들(신택스들)을 모아서 한꺼번에 부호화함으로써, 상기 플래그로 인한 오버헤드를 감소시키는 것에 주안점을 두고 있다.
도 1 내지 도 3은 본 발명의 기본 개념을 설명하기 위한 도면이다.
비디오 코딩에서는 일반적으로 16×16 픽셀 크기의 매크로블록 단위로 프로세스가 진행된다. 도 1에서와 같이, 하나의 프레임 또는 슬라이스는 복수의 매크로블록(MBn; n은 자연수)으로 분할된다. 각각의 매크로블록은 소정의 손실 부호화 및 무손실 부호화 과정을 거쳐서 비디오 스트림으로 되는데, 예를 들어 매크로블록들의 부호화 순서는 도 1에 도시하는 바와 같이 지그재그 스캔 순서로 될 수 있다.
이와 같이 부호화된 매크로블록들(MBn)은 선두에 헤더(매크로블록 헤더)가 부가된 후 모아짐으로써 도 2와 같은 하나의 비디오 스트림(20)을 구성할 수 있다. 상기 헤더들은 다양한 플래그들(A_flagn, B_flagn 등)을 포함한다. 그런데, 각 헤더들은 동일한 플래그를 포함하지만, 상기 플래그가 갖는 값은 서로 다를 수 있다. 그러나, 공간적으로 인접한 위치의 매크로블록들 간에는 서로 공간적 연관성 내지 유사성을 가진다. 따라서, 인접한 매크로블록 간에 동일한 플래그는 동일한 값을 가질 가능성이 크다. 예를 들어, 해당 매크로블록이 부호화되었는지 여부를 나타내는 cbp(coded block pattern) 플래그는 공간적 연관성이 크다. 이러한 cbp 플래그는, H.264 표준 및 SVC 표준에서, 인터 매크로블록의 경우 g_aucCbpInter라는 파라미터로, 인트라 매크로블록의 경우 g_aucCbpIntra라는 파라미터로 정의되어 있다.
이러한 점에 착안하여, 본 발명에서는 동일한 플래그들의 값들(비트열)을 모은 후에 부호화하는 것을 제안한다. 예를 들어, 도 3에서 나타내는 바와 같이, A_flag라는 플래그들이 갖는 값들(A_flag1, A_flag2,..., A_flagn)을 모은 후 부호화하고, B_flag라는 플래그들이 갖는 값들(B_flag1, B_flag2,..., B_flagn)을 모은 후 엔트로피 부호화(무손실 부호화)하자는 것이다. 이와 같이, 동일한 플래그의 값들을 모은 후 부호화를 하게 되면, 상기 값들의 유사성으로 인하여 플래그 값들을 별도로 부호화하는 데 비하여 압축 효율이 높아진다는 것은 쉽게 예측될 수 있다.
이하에서는, 이와 같이 모아진 플래그 값들(이하 "플래그 비트열"이라고 함)을 구체적으로 어떤 알고리즘에 의하여 엔트로피 부호화할 것인가에 대하여 설명하 기로 한다. 도 4는 본 발명의 일 실시예에 따른 플래그 부호화 장치(100)의 구성을 도시하는 블록도이다.
플래그 부호화 장치(100)는 그룹 크기 설정부(120), 플래그 조합부(110), 비트열 분할부(130), 패턴 비트 설정부(140), 플래그 코딩부(150), 및 기록부(160)를 포함하며, 버퍼(170)를 더 포함할 수 있다.
플래그 조합부(120)는 각각의 매크로블록에 대한 특정 플래그의 값들을 모아서 도 3에서 도시한 예와 같이, 플래그 비트열을 생성한다. 상기 플래그는 일반적으로 1비트로 표현되는 플래그를 의미하지만, 2비트 이상으로 표현되는 플래그라도 무방하다.
그룹 크기 설정부(110)는 플래그 비트열을 분할하기 위한 단위가 되는 그룹 크기(group size; gs)를 설정한다. 상기 그룹 크기는 비트수로 표시되는데 예를 들어, 4, 8, 또는 16이 될 수 있다. 상기 특정 플래그 값의 분포 중 0의 개수가 많을수록 상기 그룹 크기는 크게 설정되는 것이 바람직하다. 상기 그룹 크기는 임의의 개수의 매크로블록 단위로 설정할 수 있는데, 복수의 매크로블록으로 이루어지는 슬라이스 또는 프레임마다 설정할 수도 있다. 이 경우, 슬라이스 헤더나 프레임 헤더에 상기 gs 값을 기록하면 될 것이다.
비트열 분할부(130)는 그룹 크기 설정부(110)에서 설정된 그룹 크기(gs 값)에 따라서 플래그 조합부(110)로부터 입력되는 플래그 비트열을 분할한다. 상기 그룹 크기 단위로 분할된 비트열은 패턴 비트 설정부(140)로 입력된다.
패턴 비트 설정부(140)는 상기 분할된 비트열이 모두 0인 경우에는 엔트로피 부호화를 거치도록 소정의 비트(이하, 패턴 비트(pb)라고 함)를 1로 설정하고, 그렇지 않은 경우에는 엔트로피 부호화를 거치지 않도록 상기 패턴 비트를 0으로 설정한다.
플래그 코딩부(150)는 상기 패턴 비트가 0으로 설정된 경우, 즉 상기 분할된 비트열 중 0이 아닌 값이 존재하는 경우에는, 상기 분할된 비트열을 엔트로피 부호화(무손실 부호화)한다. 상기 엔트로피 부호화로는 가변 길이 부호화, 산술 부호화 등 당업계에 알려진 기법을 사용할 수 있다. 또한, 상기 분할된 비트열을 각각 엔트로피 부호화하는 것도 가능하지만, 0이 아닌 값을 포함하는 분할된 비트열들 전체를 다시 모아서 한꺼번에 엔트로피 부호화를 할 수도 있다.
상기 패턴 비트가 0일 때의 의미와 1일 때의 의미는 서로 반대로 선택될 수 있음은 물론이다. 따라서 이하 본 명세서에서는, 1비트가 나타낼 수 있는 두 개의 값 중 하나를 제1 비트, 다른 하나를 제2 비트로 표현될 수도 있다.
기록부(160)는 그룹 크기(gs)와 패턴 비트(pb)를 비디오 스트림에 기록한다. 상기 그룹 크기(gs)는 슬라이스 또는 프레임 단위로 기록될 수 있으며, 상기 패턴 비트(pb)는 상기 그룹 크기(gs) 만큼의 매크로블록 마다 기록될 수 있다. 예를 들어, 그룹 크기가 4인 경우에는 4개의 매크로블록 중 첫번째 매크로블록의 헤더에 상기 패턴 비트를 기록할 수 있다. 또한, 기록부(160)는 상기 pb가 0인 경우에는 플래그 코딩부(150)로부터 제공되는 엔트로피 코딩 결과도 아울러 기록한다. 상기 엔트로피 부호화 결과는 상기 pb와 마찬가지로 상기 첫번째 매크로블록의 헤더에 기록될 수 있다. 만약, 플래그 코딩부(150)에서 분할된 비트열들 전체를 모아서 한 꺼번에 엔트로피 부호화한 경우라면 엔트로피 부호화 결과는 슬라이스 헤더 또는 프레임 헤더에 기록될 수도 있다.
한편, 이상에서는 설정된 그룹 크기(gs)를 기록하여 전송하는 예를 설명하였지만, 상기 그룹 크기(gs)를 부호화 장치 및 복호화 장치에서 공통되는 정보를 이용하여 산출할 수 있다면 상기 그룹 크기(gs)를 전송할 필요는 없을 것이다.
플래그 부호화 장치(100)의 다른 실시예로서, 그룹 크기 설정부(120)가 기 생성된 매크로블록들에 관한 플래그 비트열의 분포를 확인하여, 그룹 크기를 가변적으로 변경할 수 있도록 할 수 있다. 예를 들어, 그룹 크기 설정부(120)는 기 누적된 플래그 비트열 중 최근 소정 개수의 비트들을 선택하여, 이 중에서 0이 차지하는 비율과 임계치와의 관계에 따라서 그룹 크기를 설정할 수 있다.
보다 자세한 예로서, 그룹 크기 설정부(120)는 상기 선택된 비트들 중에서의 0의 비율이 1/3보다 작으면 상기 그룹 크기를 1로 설정하고, 상기 0의 비율이 4/5보다 크면 상기 그룹 크기를 8로 설정한다. 그 이외의 경우에는 상기 그룹 크기를 4로 설정한다.
이와 같이 기 누적된 비트들은 플래그 부호화 장치 뿐만 아니라 이에 대응되는 플래그 복호화 장치에서도 공통적으로 알 수 있는 정보이므로, 기록부(160)는 상기 설정된 그룹 크기를 비디오 스트림에 기록할 필요는 없다.
도 5는 본 발명의 일 실시예에 따른 플래그 복호화 장치(200)의 구성을 도시하는 블록도이다.
플래그 복호화 장치(200)는 그룹 크기 설정부(210), 패턴 비트 판독부(220), 플래그 디코딩부(230), 출력 버퍼(240), 및 플래그 설정부(250)를 포함하여 구성될 수 있다.
그룹 크기 설정부(210)는 비디오 스트림에 포함된 그룹 크기(gs) 정보를 판독하여 그룹 크기를 설정하거나, 출력 버퍼(240)에서 제공되는 기 복원된 플래그 값의 분포를 통하여 그룹 크기를 설정한다. 전자는 플래그 부호화 장치(100)에서 그룹 크기를 기록하여 전송한 경우이고, 후자는 플래그 부호화 장치(100)에서 비트 분포에 따라서 그룹 크기를 설정하고 전송하지 않은 경우이다. 후자의 경우, 그룹 크기 설정부(210)는 플래그 부호화 장치(100)의 그룹 크기 설정부(120)와 마찬가지의 방법으로 그룹 크기를 산출해낸다.
패턴 비트 판독부(220)는 비디오 스트림에 포함된 패턴 비트(pb)의 값을 판독하여 그 값이 1이면 플래그 설정부(250)에, 그 값이 0이면 플래그 디코딩부(230)에 통지(notify)한다.
플래그 디코딩부(230)는 패턴 비트 판독부(220)로부터 상기 pb가 0으로 통지된 경우, 비디오 스트림으로부터 상기 설정된 그룹 크기 만큼의 블록들에 대한 부호화된 플래그 비트열(플래그 부호화 장치(100)에서 엔트로피 부호화된 결과)을 판독하고, 이를 엔트로피 복호화한다. 상기 엔트로피 복호화 과정은 플래그 코딩부(150)에서 수행된 엔트로피 부호화 과정의 역으로서 수행된다.
플래그 설정부(250)는 패턴 비트 판독부(220)로부터 상기 pb가 1로 통지된 경우에는 상기 그룹 크기에 해당하는 해당 플래그들을 모두 0으로 설정한다.
출력 버퍼(240)는 플래그 디코딩부(230)에서 엔트로피 복호화된 값 및 플래 그 설정부(250)에서 설정된 값을 일시 저장한다. 상기 저장된 값들은 복원된 플래그로서 출력 버퍼(240)로부터 출력된다.
도 6 내지 도 9는 본 발명의 실시예들에 따른 흐름도를 도시한 것이다. 이 중에서, 도 6은 본 발명의 일 실시예에 따른 플래그 부호화 방법을 나타낸 흐름도이다.
먼저, 그룹 크기 설정부(120)는 플래그 비트열을 분할하기 위한 단위가 되는 그룹 크기(gs)를 설정한다(S11). 상기 그룹 크기는 예를 들어, 4, 8, 또는 16이 될 수 있다. 비트열 분할부(130)는 플래그 비트열을 상기 그룹 크기 단위로 분할한다(S12).
그러면, 패턴 비트 설정부(140)는 상기 분할된 비트열이 모두 0인가를 판단하여(S13), 그러하다면 패턴 비트(pb)를 1로 설정하고(S16), 그러하지 아니하다면 상기 패턴 비트(pb)를 0으로 설정한다(S14).
플래그 코딩부(150)는 상기 패턴 비트가 0으로 설정된 경우에 상기 분할된 비트열을 엔트로피 부호화한다(S15). 이 때, 플래그 코딩부(150)는 상기 분할된 비트열을 각각 엔트로피 부호화할 수도 있고, 0이 아닌 값을 포함하는 분할된 비트열들 전체를 모아서 한꺼번에 엔트로피 부호화할 수도 있다.
마지막으로, 상기 단계들이 슬라이스 또는 프레임 내의 모든 매크로블록에 대하여 수행되었으면(S17의 예) 종료하고, 그렇지 않으면 S12 단계로 진행한다.
한편, 특정 플래그가 도 2와 같이 공간적 연관성만을 가지는 경우에는 도 6과 같은 플래그 부호화 알고리즘을 적용할 수 있다. 그런데, SVC와 같이 다 계층 기반의 비디오 코딩 스킴에 있어서는 특정 플래그가 공간적 연관성만이 아니라, 계층적 연관성을 가질 수도 있다. 예를 들어, 잔차 예측 플래그(residual_prediction_flag), 인트라 베이스 플래그(intra_base_flag), 모션 예측 플래그(motion_prediction_flag), 베이스 모드 플래그(base_mode_flag) 등은 계층적 연관성을 가질 수 있기 때문에, 현재 계층의 어떤 매크로블록이 갖는 플래그 값과 그에 대응되는 하위 계층의 매크로블록이 갖는 플래그 값은 같은 값을 가질 가능성이 높다.
상기 잔차 예측 플래그는 잔차 예측을 사용하는지 여부를 표시하는 플래그이다. 잔차 예측이란, 어떤 계층의 잔차 신호(residual signal)를 대응되는 하위 계층의 잔차 신호를 이용하여 예측함으로써, 잔차 신호들의 계층간 중복성을 감소시키기 위한 기법이다. 상기 하위 계층은 어떤 계층을 효율적으로 부호화하기 위하여 참조되는 다른 계층을 임의의 계층으로서, 제1 계층에 한정되지는 않으며 반드시 하위의 계층을 의미하는 것도 아니다.
이러한 잔차 예측을 사용하는지 여부는 잔차 예측 플래그에 의하여 표시되어 비디오 디코더 단으로 전달된다. 그 플래그가 1이면 잔차 예측을 사용하는 것을 표시하고, 0이면 사용하지 않는 것을 표시한다. 일반적으로, 어떤 플래그가 1이면 해당 기능을 사용한다는 것을, 0이면 해당 기능을 사용하지 않는다는 것을 의미한다.
인트라 베이스 플래그는 인트라 베이스 예측을 사용하는지 여부를 표시하는 플래그이다. 현재 스케일러블 비디오 코딩 초안에서는 도 7과 같이 기존의 H.264에서 사용되던 인터 예측(①) 및 인트라 예측(②)뿐만 아니라, 하위 계층의 이미지를 이용하여 현재 계층에서의 프레임을 예측함으로써 부호화할 데이터를 감소시키는 인트라 베이스 예측(③)도 아울러 지원한다. 상기 초안에서는 인트라 베이스 예측은 인트라 예측의 일종으로서 취급하며, 인트라 예측에 있어서 상기 인트라 베이스 플래그가 0이면 종래의 방향적(directional) 인트라 예측을, 상기 플래그가 1이면 인트라 베이스 예측을 표시한다.
모션 예측 플래그는 현재 계층의 모션 벡터를 예측하여 모션 벡터 차분(motion vector difference; MVD)을 구함에 있어서, 동일 계층의 다른 모션 벡터를 이용하는가 하위 계층의 모션 벡터를 이용하는가 여부를 표시하는 플래그이다. 상기 플래그가 1인 경우 하위 계층의 모션 벡터를 이용함을 의미하고, 0인 경우 동일 계층의 다른 모션 벡터를 이용함을 의미한다.
베이스 모드 플래그는 현재 계층의 모션 정보를 표시함에 있어서, 하위 계층의 모션 정보를 이용하는가 여부를 나타내는 플래그이다. 만약, 베이스 모드 플래그가 1이면, 현재 계층의 모션 정보로는 하위 계층의 모션 정보를 그대로 이용하거나, 하위 계층의 모션 정보에서 다소 정제(refine)된 값을 이용하게 된다. 베이스 모드 플래그가 0이면 현재 계층의 모션 정보는 하위 계층의 모션 정보와 무관하게 별도로 검색되어 기록됨을 나타낸다. 상기 모션 정보는 매크로블록 종류(macroblock type; mb_type), 인터 예측시 픽쳐의 참조 방향(순방향, 역방향, 양방향 등), 및 모션 벡터를 포함한다.
아무튼 이와 같이 계층간 연관성을 갖는 플래그들은 동일한 값을 가질 확률이 높으므로, 현재 계층의 매크로블록에 대한 플래그를 코딩할 때 이러한 점을 고 려한다면 보다 코딩 효율을 높일 수가 있다. 이에 본 발명의 다른 실시예에서는, 현재 계층 매크로블록에 대한 플래그 값을 직접 코딩하는 것이 아니라, 먼저 계층간 플래그 값끼리 배타적 논리합(XOR)을 수행한 후 그 결과 값을 코딩하는 것을 제안한다.
도 8은 본 발명의 다른 실시예에 따른 플래그 부호화 장치(190)의 구성을 도시한 도면이다. 도 8을 도 4와 비교하면 플래그 판독부(101) 및 연산부(105)가 더 포함되어 있을 뿐이다.
플래그 판독부(101)는 현재 계층의 매크로블록에 대한 플래그(FC)와 상기 매크로블록에 대응되는 하위 계층의 매크로블록에 대한 플래그(FB)를 판독한다. 상기 플래그의 판독은 예를 들어, 매크로블록 헤더를 파싱(parsing)함으로써, 또는 메모리 상에 로딩된 변수 값을 읽음으로써 알 수 있다.
연산부(105)는 상기 FC와 FB에 대하여 배타적 논리합 연산을 수행한다. 그 결과 계층적 연관성으로 인하여 0이 출력될 가능성이 높아지며, 그 경우 엔트로피 부호화의 효율은 상승될 수 있다. 연산부(105)에서의 연산 결과가 플래그 조합부(110)에 입력된 이 후에는 도 4와 마찬가지이므로 그 이후의 설명은 생략하기로 한다.
도 9는 도 8의 실시예에 따른 흐름도이다.
먼저, 플래그 판독부(101)는 FC 및 FB를 판독하고(S19), 연산부(105)는 상기 판독된 FC 및 FB를 입력으로 하여 배타적 논리합 연산을 수행한다(S20).
그 다음, 그룹 크기 설정부(120)는 그룹 크기(gs)를 설정하고(S21), 비트열 분할부(130)는 상기 연산 결과(RC)로 이루어지는 비트열을 상기 그룹 크기 단위로 분할한다(S22).
패턴 비트 설정부(140)는 상기 분할된 비트열이 모두 0인가를 판단하여(S23), 그러하다면 패턴 비트(pb)를 1로 설정하고(S26), 그러하지 아니하다면 상기 패턴 비트(pb)를 0으로 설정한다(S24).
플래그 코딩부(150)는 상기 패턴 비트가 0으로 설정된 경우에 상기 분할된 비트열을 엔트로피 부호화한다(S25). 마지막으로, 상기 단계들이 슬라이스 또는 프레임 내의 모든 매크로블록에 대하여 수행되었으면(S27의 예) 종료하고, 그렇지 않으면 S22 단계로 진행한다.
한편, 도 10은 본 발명의 일 실시예에 따른 플래그 복호화 방법을 나타낸 흐름도이다.
먼저, 그룹 크기 설정부(210)는 그룹 크기(gs)를 설정한다(S31). 이 때, 그룹 크기 설정부(210)는 비디오 스트림에 포함된 그룹 크기(gs) 정보를 판독하여 그룹 크기를 설정하거나, 출력 버퍼(240)에서 제공되는 기 복원된 플래그 값의 분포를 통하여 그룹 크기를 설정할 수 있다. 후자의 경우, 그룹 크기 설정부(210)는 플래그 부호화 장치(100)의 그룹 크기 설정부(120)와 마찬가지의 방법으로 그룹 크기를 산출해낸다.
패턴 비트 판독부(220)는 비디오 스트림에 포함된 패턴 비트(pb)의 값을 판독하여(S32), 그 값이 0인지 1인지를 판단한다(S33).
상기 판단 결과 그 값이 1이면(S33의 예), 플래그 설정부(250)는 상기 그룹 크기에 해당하는 플래그들을 모두 0으로 설정한다(S35).
상기 판단 결과 그 값이 0이면(S33의 아니오), 플래그 디코딩부(230)는 비디오 스트림으로부터 상기 설정된 그룹 크기 만큼의 블록들에 대한 부호화된 플래그 비트열(플래그 부호화 장치(100)에서 엔트로피 부호화된 결과)을 판독하고, 이를 엔트로피 복호화한다(S34). 상기 엔트로피 복호화 과정은 플래그 코딩부(150)에서 수행된 엔트로피 부호화 과정의 역으로서 수행된다.
마지막으로, 상기 단계들이 슬라이스 또는 프레임 내의 모든 매크로블록에 대하여 수행되었으면(S36 예) 종료하고, 그렇지 않으면 S32 단계로 진행한다.
한편, 도 8과 같이 계층간 연관성까지 고려하여 플래그를 부호화한 경우에는, 복호화를 위해서는 도 5에 다소간의 구성요소가 추가되어야 한다. 도 11은 본 발명의 다른 실시예에 따른 플래그 복호화 장치(290)의 구성을 도시하는 도면이다.
도 11을 도 5와 비교하면 연산부(260)가 더 포함되어 있을 뿐이다. 연산부(260) 이전의 동작은 도 5와 마찬가지이므로 생략한다. 출력 버퍼(240)에서 출력되는 값은 FC와 FB에 대한 배타적 논리합의 연산 결과인 RC이다. 연산부(260)는 FB와 RC에 대하여 배타적 논리합을 수행함으로써 현재 계층의 매크로블록에 대한 특정 플래그인 FC를 복원한다.
도 12는 도 11의 실시예에 따른 흐름도이다.
먼저, 그룹 크기 설정부(210)는 그룹 크기(gs)를 설정한다(S41). 이 때, 그룹 크기 설정부(210)는 비디오 스트림에 포함된 그룹 크기(gs) 정보를 판독하여 그룹 크기를 설정하거나, 출력 버퍼(240)에서 제공되는 기 복원된 플래그 값의 분포를 통하여 그룹 크기를 설정할 수 있다.
패턴 비트 판독부(220)는 비디오 스트림에 포함된 패턴 비트(pb)의 값을 판독하여(S42), 그 값이 0인지 1인지를 판단한다(S43).
상기 판단 결과 그 값이 1이면(S43의 예), 플래그 설정부(250)는 상기 그룹 크기에 해당하는 RC를 모두 0으로 설정한다(S46).
상기 판단 결과 그 값이 0이면(S43의 아니오), 플래그 디코딩부(230)는 비디오 스트림에 포함된 부호화된 데이터, 즉 RC를 상기 그룹 크기만큼 판독하고, 이를 엔트로피 복호화한다(S44).
연산부(260)는 FC에 대응되는 하위 계층의 플래그 값 FB와, 상기 S46 단계에서 0으로 설정된 RC 또는 상기 S44 단계에서 엔트로피 복호화된 RC에 대하여 배타적 논리합을 수행한다(S45).
마지막으로, 상기 단계들이 슬라이스 또는 프레임 내의 모든 매크로블록에 대하여 수행되었으면(S46 예) 종료하고, 그렇지 않으면 S42 단계로 진행한다.
도 13은 도 4 또는 도 8의 플래그 부호화 장치(100, 190)가 적용될 수 있는 다 계층 기반의 비디오 인코더(500)의 구성을 도시하는 블록도이다.
오리지널 비디오 시퀀스는 현재 계층 인코더(400)로 입력되고, 아울러 다운샘플링부(305)에 의하여 다운샘플링(계층간에 해상도의 변화가 있는 경우에 한함)된 후 하위 계층 인코더(300)로 입력된다.
예측부(410)는 현재 매크로블록에서 소정의 방법으로 예측된 이미지를 차분함으로써 잔차 신호를 구한다. 상기 예측 방법으로는 방향적 인트라 예측, 인터 예측, 인트라 베이스 예측, 및 잔차 예측 등이 있다.
변환부(420)는 상기 구한 잔차 신호를 DCT, 웨이브렛 변환 등 공간적 변환 기법을 이용하여 변환하여 변환 계수를 생성한다.
양자화부(430)는 상기 변환 계수를 소정의 양자화 스텝으로 양자화하여(양자화 스텝이 클수록 데이터의 손실 내지 압축률이 높다) 양자화 계수를 생성한다.
엔트로피 부호화부(440)는 상기 양자화 계수를 무손실 부호화하여 현재 계층 비디오 스트림을 출력한다.
플래그 설정부(450)는 다양한 단계에서 얻어지는 정보들로부터 플래그를 설정한다. 예를 들어, 잔차 예측 플래그(residual_prediction_flag), 인트라 베이스 플래그(intra_base_flag) 등은 예측부(410)에서 얻어지는 정보를 통하여 설정된다. 이와 같이 설정된 현재 계층의 플래그들(FC)은 플래그 부호화 장치(190)로 입력된다.
현재 계층 인코더(400)에서와 마찬가지로, 하위 계층 인코더(300)도 동일한 기능의 예측부(310), 변환부(320), 양자화부(330), 엔트로피 부호화부(340), 및 플래그 설정부(350)를 포함한다. 엔트로피 부호화부(340)는 하위 계층 비디오 스트림을 Mux(multiplexer; 360)로 출력하며, 플래그 설정부(350)는 하위 계층의 플래그들(FB)을 플래그 부호화 장치(100)에 제공한다.
Mux(360)는 현재 계층 비디오 스트림과 하위 계층 비디오 스트림을 결합하여 비디오 스트림(VS)을 생성하여, 플래그 부호화 장치(100)에 제공한다.
플래그 부호화 장치(100)는 상기 제공된 FB, FC 간의 연관성을 이용하여 FC를 부호화하고, 상기 부호화된 FC 및 상기 제공된 FB를 상기 제공된 비디오 스트림에 삽입함으로써, 최종 비디오 스트림(최종 BS)를 출력한다.
물론, 플래그 부호화 장치(190)는 플래그 부호화 장치(100)로 대체될 수 있으며, 이 경우에는 계층 간의 연관성은 사용되지 않으므로, FC는 FB와 상관없이 공간적 연관성만을 이용하여 엔트로피 부호화된다.
도 14는 도 5 또는 도 11의 플래그 복호화 장치(200, 290)가 적용될 수 있는 다 계층 기반의 비디오 디코더(800)의 구성을 도시하는 블록도이다.
입력되는 최종 비디오 스트림(VS)은 플래그 복호화 장치(200) 및 Demux(demultiplexer; 650)에 입력된다. Demux(650)는 상기 최종 비디오 스트림을 현재 계층 비디오 스트림 및 하위 계층 비디오 스트림으로 분리하여 현재 계층 인코더(700) 및 하위 계층 디코더(600)에 각각 제공한다.
엔트로피 복호화부(710)는 엔트로피 부호화부(440)과 대응되는 방식으로 무손실 복호화를 수행하여 양자화 계수를 복원한다.
역양자화부(720)는 상기 복원된 양자화 계수를 양자화부(430)에서 사용된 양자화 스텝으로 역 양자화한다.
역변환부(730)는 상기 역 양자화된 결과를 역 DCT 변환, 역 웨이브렛 변환 등의 역공간적 변환 기법을 사용하여 역변환한다.
역예측부(740)는 예측부(410)에서 구한 예측 이미지를 동일한 방식으로 구하고, 상기 구한 예측 이미지를 상기 역변환된 결과와 가산함으로써 비디오 시퀀스를 복원한다. 이 때, 역예측부(740)는 경우(인트라 베이스 예측, 잔차 예측 등의 경우)에 따라서는, 하위 계층 디코더(600)에서 디코딩된 결과를 이용하기도 한다.
현재 계층 디코더(700)에서와 마찬가지로, 하위 계층 디코더(600)도 동일한 기능의 엔트로피 복호화부(610), 역양자화부(620), 역변환부(630), 및 역예측부(640)를 포함한다.
한편, 플래그 복호화 장치(290)는 상기 최종 비디오 스트림으로부터 하위 계층의 플래그들(FB)과, 현재 계층의 플래그들(FC)의 부호화된 값을 추출하고, 상기 FB와 상기 부호화된 값으로부터 현재 계층의 플래그들(FC)을 복원한다.
상기 추출된 하위 계층의 플래그들(FB)은 하위 계층 디코더(600)의 구성 요소들(610, 620, 630, 640)에서 해당 동작을 수행하는 데에 이용될 수 있고, 상기 복원된 현재 계층의 플래그들(FC)은 또는 현재 계층 디코더(700)의 구성요소들(710, 720, 730, 740)에서 해당 동작을 수행하는 데에 이용될 수 있다.
물론, 플래그 부호화 장치(290)는 플래그 부호화 장치(200)로 대체될 수 있 으며, 이 경우에는 계층 간의 연관성은 사용되지 않으므로, FC는 FB와 상관없이 공간적 연관성만을 이용하여 엔트로피 복호화된다.
지금까지 도 4, 도 5, 도 8, 도 11, 도 13 및 도 14의 각 구성요소들은 메모리 상의 소정 영역에서 수행되는 태스크, 클래스, 서브 루틴, 프로세스, 오브젝트, 실행 쓰레드, 프로그램과 같은 소프트웨어(software)나, FPGA(field-programmable gate array)나 ASIC(application-specific integrated circuit)과 같은 하드웨어(hardware)로 구현될 수 있으며, 또한 상기 소프트웨어 및 하드웨어의 조합으로 이루어질 수도 있다. 상기 구성요소들은 컴퓨터로 판독 가능한 저장 매체에 포함되어 있을 수도 있고, 복수의 컴퓨터에 그 일부가 분산되어 분포될 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특성을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야 한다.