KR20100083957A - 비트플레인 코딩을 이용한 깊이 정보맵 코딩 방법 및 장치 - Google Patents

비트플레인 코딩을 이용한 깊이 정보맵 코딩 방법 및 장치 Download PDF

Info

Publication number
KR20100083957A
KR20100083957A KR1020090003309A KR20090003309A KR20100083957A KR 20100083957 A KR20100083957 A KR 20100083957A KR 1020090003309 A KR1020090003309 A KR 1020090003309A KR 20090003309 A KR20090003309 A KR 20090003309A KR 20100083957 A KR20100083957 A KR 20100083957A
Authority
KR
South Korea
Prior art keywords
coding
depth information
bitplane
information map
bit
Prior art date
Application number
KR1020090003309A
Other languages
English (en)
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 KR1020090003309A priority Critical patent/KR20100083957A/ko
Publication of KR20100083957A publication Critical patent/KR20100083957A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/20Image signal generators
    • H04N13/271Image signal generators wherein the generated image signals comprise depth maps or disparity maps
    • 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

Landscapes

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

Abstract

본 발명은 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법을 포함하며, 깊이 정보맵의 각 픽셀을 그레이 코드(gray code)로 변환한 후, 그레이 코드로 표현된 변환된 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법을 포함하며, 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법과 깊이 정보맵 코딩 시 비트율을 조절하는 방법을 포함하며, 깊이 정보맵의 각 픽셀을 그레이 코드로 변환한 후, 그레이 코드로 표현된 변환된 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법과 깊이 정보맵 코딩 시 비트율을 조절하는 방법을 포함한다.
MPEG, 3D Video, Depth map coding, FTV(Free view-point TV), 다시점 비디오 코딩(Multi-view Video Coding)

Description

비트플레인 코딩을 이용한 깊이 정보맵 코딩 방법 및 장치{METHOD AND APPARATUS FOR CODING DEPTH MAP USING BIT-PLANE CODING}
본 발명은 깊이 정보맵(Depth map) 코딩 시, 깊이 정보의 화질 및 코딩 효율을 향상 시키기 위한 방법 및 장치에 관한 것이다.
실감 미디어의 관심이 대폭적으로 증가하면서 또한 그에 대한 연구가 활발히 진행되고 있다. 이와 관련된 연구로써 JVT(Joint Video Team of ISO/IEC JTC1/SC29/WG11 MPEG and ITU-T SG16 Q.6 VCEG)에서는 2008년 7월 복수의 카메라로부터 입력 받은 여러 뷰(multiple view)의 영상을 효율적으로 코딩하여 사용자에게 전달하기 위한 다시점 비디오 코딩(Multi-view Video Coding, H.264 Amendment 4) 표준을 완료하였고, 또한 현재 MPEG에서는 3D Video에 대한 표준이 진행중이다. 3D Video는 N개의 시점 영상과 N개 이하의 깊이 정보맵(depth map)을 함께 전송하여 전송받은 시점 영상과 깊이 정보맵을 이용하여 뷰 인터폴레이션(view interpolation)을 수행함으로 전송 받은 시점 영상보다 더 많은 시점의 영상을 생성할 수 있도록 하는 방법이다. 3D Video는 3차원 디스플레이 시스템을 지원할 수 있으며, 대표적인 시스템의 예로 FTV(Free View-point TV)를 들 수 있다.
다시점 비디오 코딩과 3D Video 표준 모두 다양한 시점을 제공함으로써 사용자에게 현장감을 전해줄 수 있는 기술이다. 하지만 다시점 비디오 코딩은 고정된 개수 카메라로부터 입력 받은 고정된 수의 시점만을 사용자에게 보여줄 수 있을 뿐이다. 다시점 비디오 코딩에서는 좀 더 많은 시점을 지원하기 위해서는 더욱 많은 카메라를 사용해야 하며, 또한 카메라 수만큼의 시점 데이터를 전송해야 한다. 하지만 현존하는 전달미디어(방송, 통신, 저장 미디어)의 전송 대역폭과 저장 용량에는 한계가 존재하기 때문에 많은 수의 뷰를 전달하는데는 한계가 따른다.
이러한 문제점을 보완할 수 있는 방법으로 3D Video 표준이 대두되었는데, 3D Video는 다시점 비디오 코딩과 달리 카메라로부터 입력 받은 시점 이외에 깊이 정보맵(depth map)을 함께 전송하여 입력 받은 시점 이외에 다양한 시점을 깊이 정보맵을 이용해 사용자가 원하는 시점을 무한대까지 생성할 수 있도록 지원한다. 따라서 3D Video에서는 다시점 비디오 코딩 방법과 같이 많은 수의 영상 시점을 모두 전송할 필요가 없고, 소수의 시점 영상과 깊이 정보맵만을 전송하면 되기 때문에 대역폭과 저장공간을 절약할 수 있다는 장점이 있다.
3D Video에서는 입력 받은 시점 영상(들)을 인코딩/디코딩하는 과정 이외에 깊이 정보맵을 생성하는 과정, 깊이 정보맵을 인코딩/디코딩하는 과정, 깊이 정보맵을 이용하여 가상의 시점 영상을 생성하는 방법이 추가적으로 필요하다. 따라서 현재 3D Video 표준에서는 주로 깊이 정보맵을 생성하는 방법과 깊이 정보맵을 이용하여 가상의 시점 영상을 생성하는 방법에 대한 연구를 수행하고 있다. 하지만, 깊이 정보맵을 코딩하는 방법에 대해서는 MPEG-C Part 3에서 3D 영상을 깊이 정보 을 이용하여 랜더링하기 위해 픽쳐 내의 실 세계에서 가장 가까이 있는 객체의 평면 공간의 위치와 실 세계에서 가장 멀리 있는 객체의 평면 공간의 위치를 보내기 위한 파라미터(parameter) 코딩 방법만 정의하고 있을 뿐 아직 깊이 정보맵 자체의 코딩 방법은 정의하지 않고 있다. 따라서 깊이 정보맵 코딩에 대한 연구가 필요하다고 할 수 있다.
깊이 정보맵이란 현재 시점에서 카메라와 실제 사물(object)과의 거리를 시점 영상과 동일한 해상도로 각 픽셀에 해당하는 깊이 정보를 일정한 비트수로 표현하는 것이다. 깊이 정보맵의 일 예로 도 1은 MPEG의 다시점 비디오 코딩의 테스트 시퀀스인 “Breakdancers” 영상 시퀀스(도 1 왼쪽 영상)의 깊이 정보맵(도 1 오른쪽 영상)을 보여주고 있다. 실제 도 1의 깊이 정보맵은 각 픽셀에 대응하는 화면에 보이는 깊이 정보를 8비트로 표현한 것으로 카메라와 가까울수록 큰 값으로 표현된 것이다.
도 1의 깊이 정보맵을 이용하여 각 픽셀에서 실 세계에서의 거리(Z)를 구하는 방법의 일 예는 아래 수식과 같다.
Figure 112009002657014-PAT00001
v는 도 1의 깊이 정보맵에서 실제 표현되는 깊이 정보값이고, Zfar와 Znear는 실제 MPEG-C Part 3에서 정의하는 파라미터로써 영상 안에서 보여지는 실 세계에서 의 가장 먼 부분(Zfar)과 가까운 부분(Znear)의 실제 위치를 나타낸다. 따라서 깊이 정보맵에 표현되는 깊이 정보는 영상에서 보여지는 실 세계에서의 가장 먼 부분과 가까운 부분을 2n (n: 깊이 정보맵을 표현하는 비트수, 도 1의 깊이 정보맵과 상기 수식에서는 n=8) 등분한 것을 표현한 것이다.
현재 깊이 정보맵의 코딩은 H.264나 다시점 비디오 코딩과 같은 기존의 표준코덱을 그대로 사용하는 것이 일반적이다. 하지만 기존의 표준코덱은 깊이 정보맵의 특성에 맞게 설계가 되지 않았기 때문에, 깊이 정보맵을 코딩함에 있어 어느 정도 코딩 효율을 얻을 수 있지만, 최적의 코딩 효율은 얻을 수 없다.
그리고 3D Video 표준을 사용하는 시스템에서 합성된 가상 시점의 영상의 화질은 깊이 정보맵의 정확도에 따라 결정이 되기 때문에 깊이 정보맵의 특성을 고려한 최적의 코딩 효율을 얻을 수 있는 방법이 필요하다.
본 발명은 깊이 정보맵의 화질 및 코딩 효율을 향상 시키는 깊이 정보맵 코딩 방법 및 장치를 제공하고자 한다.
이를 달성하기 위한 본 발명의 일 형태에 따르면, 본 발명은 깊이 정보 코딩 시, 깊이 정보맵을 비트플레인(bit-plane) 단위로 코딩을 수행하는 방법 및 장치를 이용하여 깊이 정보의 화질 및 코딩효율을 향상시키는 방법을 포함함을 특징으로 한다.
본 발명은 깊이 정보맵 코딩시, 깊이 정보맵을 비트플래인 단위로 나눈 뒤, 각 비트플래인을 각각 코딩하는 방법을 이용하여 깊이 정보맵의 화질 및 코딩효율을 향상시키는 효과가 있다.
이하 첨부된 도면을 참조하여 본 발명을 구성하는 장치 및 동작 방법을 본 발명의 실시 예를 참조하여 상세히 설명한다. 하기 설명에서는 구체적인 구성 소자 등과 같은 특정 사항들이 나타나고 있는데 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐 이러한 특정 사항들이 본 발명의 범위 내에서 소정의 변형이나 혹은 변경이 이루어질 수 있음은 이 기술분야에서 통상의 지식을 가진 자에게는 자명하다 할 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다.
깊이 정보맵은 일반적인 실사 영상과는 다르게 상당히 완만한 특성을 갖는데, 도 2를 통해서 쉽게 그 특성을 알 수 있다. 도 2는 도 1의 실제 영상과 깊이 정보맵의 각 픽셀의 레벨(실제 영상에서는 휘도(luminance) 성분의 레벨 즉 밝기를 뜻하고, 깊이 정보맵에서는 깊이의 레벨의 뜻한다)을 표현한 3차원 그래프인데, 실제 영상의 그래프(도 2 왼쪽 그래프)에서는 픽셀 사이에 변화가 심한 형태를 보여주고 있음을 확인할 수 있고, 이에 비해 깊이 정보맵의 그래프(도 2 오른쪽 그래프)는 상당히 완만한 형태를 보여주고 있음을 확인할 수 있다.
그리고 또한 깊이 정보맵을 비트플래인(bit-plane) 단위로 표현할 수 있는데, 깊이 정보맵의 비트플래인은 실사 영상의 비트플래인에 비해 상당히 단조로운 형태를 보여준다. 도 3은 도 1의 실제 영상과 깊이 정보맵을 비트플래인 단위로 표현한 모습을 보여준다. 실제 영상의 비트플래인(도 3 왼쪽)은 최상위 비트플래인(MSBP; most significant bit-plane)은 단조로운 형태 정보를 가지지만 하위 비트플래인으로 갈수록 상당히 복잡해 지며, 최하위 비트플래인(LSBP; least significant bit-plane)부터 세 개의 비트플래인은 거의 white noise 형태로 상당히 복잡함을 알 수 있다. 하지만 깊이 정보맵의 비트플래인(도 3 가운데)은 최상위 비트플래인부터 최하위 비트플래인으로 갈수록 복잡해지긴 하나, 전체 비트플레인이 실제 영상의 비트플레인에 비해 상당히 단조로운 형태를 보임을 알 수 있다. 또한 깊이 정보맵의 각 비트플레인 모습은 어떤 일정한 형태를 유지하고 있음을 확인 할 수 있다. 그리고 보통 비트플래인을 표현할 때 그레이 코드(Gray Code)를 적용하면 각 비트플래인 단위에서 중복도가 높아지는데 깊이 정보맵의 각 레벨 값에 그레이 코드를 적용한 비트플래인의 모습은 도 3 오른쪽과 같고, 더욱 단조로운 형태를 보이는 것을 직접 확인할 수 있다.
깊이 정보맵을 비트플래인 단위로 표현하였을 때, 각 비트플래인 단위에서 중복성이 높은 것을 확인할 수 있었다. 따라서 기존의 동영상 표준코덱에서 사용하는 복잡도가 높은 연산인 DCT를 사용하는 것보다, 비트플래인 별로 데이터 중복성가 높다는 사실을 바탕으로, 비트플래인 단위 코딩을 수행하면 깊이 정보맵의 코딩 효율을 높일 수 있을 것이다.
본 발명에서는 깊이 정보맵의 코딩 시에 깊이 정보맵의 코딩 효율을 높일 수 있는 방법으로 각각 아래와 같은 방법을 제안한다.
[방법 #1] 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법
[방법 #2] 깊이 정보맵의 각 픽셀을 그레이 코드(gray code)로 변환한 후, 그레이 코드로 표현된 변환된 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법( [방법 #1]에서 그레이 코드 변환 수행을 추가한 방법)
[방법 #3] 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법과 깊이 정보맵 코딩 시 비트율을 조절하는 방법( [방법 #1]에서 비트율 조절을 수행 방법을 추가한 방법)
[방법 #4] 깊이 정보맵의 각 픽셀을 그레이 코드로 변환한 후, 그레이 코드로 표현된 변환된 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법과 깊이 정보맵 코딩 시 비트율을 조절하는 방법([방법 #1]에서 [방법 #2]와 [방법 #3]을 조합한 방법)
[방법 #1] 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법
깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법의 인코더구조의 일 예는 도 4와 같다.
도 4의 “비트플래인 분리” 과정에서는 N-bit로 표현되는 깊이 정보맵을 입력받아서 N개의 비트플래인으로 분리한다. 분리한 N개의 비트플래인은 각각 “비트플래인 코딩”으로 반복하여 입력이 되며, “비트플래인 코딩”을 수행한 결과를 비트스트림으로 출력한다.
도 4의 “비트플래인 코딩”을 수행하는 방법의 실시 일 예로 국제 동영상 표준인 MPEG-4 Part 2 Visual(ISO/IEC 14496-2)의 이진 형상 코딩(binary shape coding)에서 사용하는 방법을 그대로 사용할 수 있다. MPEG-4 Part 2 Visual의 이진 형상 코딩 방법을 그대로 사용한 각 비트플래인 코딩의 구조는 도 5와 같다.
도 5에서 “현재 비트플래인 버퍼”에서는 입력으로 들어온 현재 비트플래인을 저장한다. 도 5의 코딩 구조에서 “참조 비트플래인 버퍼”에서는 이전에 코딩되어 현재 비트플래인 코딩 시에 참조로 사용하는 비트플래인이 저장이 되어 있 으며, “재구성된 비트플래인 버퍼”에는 비트플래인 코딩을 통해 재구성된 현재 비트플래인이 저장이 된다.
도 5에서 데이터를 처리하는 단위는 가로 세로 MxN픽셀 크기의 이진 형태의 블록이 된다. 먼저 “움직임 예측” 과정에서는 “현재 비트플래인 버퍼”에 저장된 현재 비트플래인의 현재 코딩하려는 블록과 가장 유사한 부분을 “참조 비트플래인 버퍼”에 저장된 참조 비트플래인에서 검색하여 가장 잘 매칭이 되는 영역과의 움직임 변위 즉 움직임 벡터를 계산하여 출력하며, “움직임 보상” 과정에서는 “움직임 예측” 과정에서 생성된 움직임 벡터를 이용하여 “참조 비트플래인 버퍼”에 저장된 참조 비트플래인으로부터 움직임 보상된 블록을 출력한다. “모드 결정” 과정에서는 현재 블록의 모드를 결정하는 부분으로써 현재 블록과 움직임 보상된 블록을 통해 결정이 되며, 현재 비트플래인의 코딩 모드가 시간 방향 예측을 수행하지 않을 경우에는 인트라(intra) 픽쳐 모드 결정 방법과, 현재 비트플래인의 코딩 모드가 시간 방향 예측을 수행할 경우에는 인터(inter)픽쳐 모드 결정 방법을 수행하며, 각각의 상세한 설명은 추후에 기술한다. “동일 레벨 블록 코딩” 부분은 “모드 결정” 과정에서 현재 블록내의 픽셀 값이 모두 '0'('all_0' 모드)이거나 모두 '1'('all_1' 모드)일 경우에 수행되는 부분으로 'all_0' 모드일 경우에는 재구성된 블록 내의 모든 픽셀값을 '0'로 설정하여 출력하며, 'all_1' 모드일 경우에는 재구성된 블록 내의 모든 픽셀값을 '1'로 설정하여 출력한다. “CAE(Context-based Arithmetic Encoding) 코딩” 과정은 현재 블록의 모드가 'all_0'과 'all_1'이 아닐 경우와 참조 비트플래인에서 현재 블록과 동일한 위치의 참조 블록, 또는 움직임 보상을 수행한 참조 블록간의 오차가 허용 오차 범위를 초과할 경우에 수행되며, 현재 블록 내의 각 픽셀은 인트라 모드일 경우에는 각 픽셀의 주변의 픽셀 정보를 기반으로, 인터 모드일 경우에는 각 픽셀의 주변의 픽셀 정보와 현재 픽셀에 대응하는 참조 영상의 픽셀과 그 주변 픽셀 정보를 기반으로 하는 이진 산술 코딩(Binary Arithmetic Coding)을 수행한다. “CAE 코딩” 방법에 대한 상세한 설명은 추후에 기술한다. “멀티플렉서” 에서는 현재 블록의 움직임 벡터와 현재 블록의 모드, 그리고 “CAE 코딩” 결과를 입력으로 받아 “비트스트림”을 생성한다. 재구성된 블록은 현재 블록의 모드에 의해 움직임 보상을 수행한 블록, 또는 CAE 코딩을 수행한 블록, 또는 “동일 레벨 블록 코딩”을 통해 만들어진 블록이 되며, 이것은 “재구성된 비트플래인 버퍼”에 저장된다.
도 5의 “모드 결정” 부분에서 인트라 픽쳐 모드 결정 방법은 도 6과 같으며, 자세한 알고리즘은 다음과 같다.
Step 1) 현재 블록의 모든 픽셀값이 동일한 값이면 Step 2로 분기한다. 만약 그렇지 않으면 Step 3으로 분기한다.
Step 2) 현재 블록의 모든 픽셀값이 '1'이면 현재 블록의 모드를 'all_1'로 설정한다. 만약 그렇지 않다면 현재 블록의 모드를 'all_0'으로 설정한다.
Step 3) 현재 블록의 모드를 'intraCAE'로 한다. 'intraCAE' 모드의 코딩 방법은 추후에 자세히 설명한다.
도 5의 “모드 결정” 부분에서 인터 픽쳐 모드 결정 방법은 도 7과 같으 며, 자세한 알고리즘은 다음과 같다.
Step 1) 현재 블록의 움직임 벡터의 예측값(MVP)에 대응하는 참조 블록과 현재 블록간의 오차(Aerr)가 허용 오차 범위(Berr)와 동일하거나 작다면 Step 2로 분기한다. 만약 그렇지 않다면 Step 3으로 분기한다.
Step 2) 현재 블록 모드를 'No Update Without MV'로 한다. 'No Update Without MV' 모드는 현재 블록의 재구성된 블록을 현재 블록의 주변으로부터 움직임 벡터의 예측값(MVP)에 대응하는 참조 블록으로 하며, 현재 블록의 모드 정보만을 전송하고 이외의 추가 데이터는 전송하지 않는다.
Step 3) 현재 블록의 모든 픽셀값이 동일한 값이면 Step 4로 분기한다. 만약 그렇지 않으면 Step 5로 분기한다.
Step 4) 현재 블록의 모든 픽셀값이 '1'이면 현재 블록의 모드를 'all_1'로 설정한다. 만약 그렇지 않다면 현재 블록의 모드를 'all_0'으로 설정한다.
Step 5) 움직임 예측을 수행한다.
Step 6) 움직임 예측에서 계산한 움직임 벡터에 대응하는 참조 블록과 현재 블록간의 오차(Cerr)가 허용 오차 범위(Berr)와 동일하거나 작다면 Step 7로 분기한다. 만약 그렇지 않다면 Step 8로 분기한다.
Step 7) 현재 블록의 모드를 'No Updata with MV'로 한다. 'No Updata with MV' 모드는 현재 블록의 재구성된 블록을 움직임 예측을 통해 계산한 움직임 벡터에 대응하는 참조 블록으로 하며, 현재 블록의 모드 정보와 움직임 벡터만을 전송하고 이외의 추가 데이터는 전송하지 않는다.
Step 8) 'intraCAE' 모드 코딩과 'interCAE'모드 코딩을 각각 수행한다. 'intraCAE'와 'interCAE'모드의 코딩 방법은 추후에 자세히 설명한다.
Step 9) 만약 'intraCAE' 모드 코딩 결과의 비트량이 'interCAE' 모드 코딩 결과의 비트량 보다 작다면 Step 10으로 분기한다. 만약 그렇지 않다면 Step 11로 분기한다.
Step 10) 현재 블록의 모드를 'intraCAE'로 한다. 'intraCAE' 모드 코딩 방법은 추후에 설명한다.
Step 11) 현재 블록의 모드를 'interCAE'로 한다. 'inter CAE' 모드 코딩 방법은 추후에 설명한다.
상기 “모드 결정” 부분에서 결정된 현재 블록의 모드가 'intraCAE'와 'interCAE'로 선택 되었을 경우, 컨텍스트 기반 산술 인코딩(CAE, Context-based Arithmetic Encoding) 방법을 사용하며, “CAE 코딩”의 구조는 도 8과 같다.
도 8의 “비트율 조절” 과정은 현재 블록 모드가 'intraCAE' 모드와 'interCAE'모드일 때 수행되며 크기 변환(Size Conversion) 방법을 통해 수행된다. 현재 블록을 변환 비율(Conversion Ratio; CR) 1/2 혹은 1/4 크기로 다운샘플링(down-sampling)한 후, 다시 현재 블록 크기로 업샘플링(up-sampling)하여 생성한 블록과 현재 블록간의 오차를 계산하여 그 오차가 허용 오차 범위와 같거나 작다면, 현재 블록을 1/2 혹은 1/4로 다운샘플링하여 생성한 블록에 대한 코딩을 수 행한다. 변환 비율을 설정하는 방법은 순서도는 도 9와 같으며, 자세한 알고리즘은 다음과 같다.
Step 1) 현재 블록에 대해 변환비율(CR)을 1/4로 설정하고, 현재 블록의 변환비율에 따라 크기변환 즉 1/4 다운샘플링과 업샘플링을 수행한 블록을 생성한다. Step 2로 분기한다.
Step 2) 현재 블록과 변환비율(CR) 1/4로 크기변환을 수행한 블록간의 오차가 허용 오차 범위보다 크다면 Step 3으로 분기한다. 만약 그렇지 않다면 알고리즘을 종료한다.
Step 3) 현재 블록에 대해 변환비율(CR)을 1/2로 설정하고, 현재 블록의 변환비율에 따라 크기변환 즉 1/2 다운샘플링과 업샘플링을 수행한 블록을 생성한다. Step 4로 분기한다.
Step 4) 현재 블록과 변환비율(CR) 1/2로 크기변환을 수행한 블록 간의 오차가 허용 오차 범위보다 크다면 Step 5로 분기한다. 만약 그렇지 않다면 알고리즘을 종료한다.
Step 5) 현재 블록에 대해 변환비율(CR)을 1로 설정한다. 알고리즘을 종료한다.
도 8의 “다운샘플링” 과정은 “비트율 조절” 과정에서 출력된 변환비율(CR)에 따라서 현재 블록에 대응하는 참조 비트플래인 영상의 참조 블록에 대한 다운샘플링(Down-sampling)을 수행하여 컨텍스트 계산에 사용할 수 있도록 한다. 만약 변환비율(CR)이 '1'이라면 다운샘플링을 수행하지 않는다.
도 8의 “컨텍스트 계산” 과정에서는 현재 블록의 모드가 'intraCAE' 모드일 경우에는 현재 블록의 코딩할 픽셀의 주변의 픽셀값들를 기반으로, 'interCAE' 모드일 경우에는 현재 블록의 코딩할 픽셀의 주변의 픽셀값들과 현재 블록의 코딩할 픽셀에 대응하는 참조 영상의 픽셀과 그 주변 픽셀값들을 통해 컨텍스트 템플릿(context template)를 구성한다. “산술 인코딩” 과정에서는 “컨텍스트 계산” 과정에서 구성된 컨텍스트 템플릿을 인덱스(index)로 하는 확률 테이블을 참조하여 현재 코딩할 픽셀에 대한 산술 인코딩을 수행하여 비트스트림을 생성한다.
'intraCAE' 모드에서 컨텍스트 템플릿을 구성할 때 사용하는 픽셀들은 도 10과 같고 현재 픽셀(X)을 중심으로 10개의 주변 픽셀들을 (c9 c8 c7 c6 c5 c4 c3 c2 c1 c0) 형태의 10비트 컨텍스트 템플릿을 형성한 후에, 이것을 산술 코딩시의 확률 테이블의 인덱스로 사용한다. 그리고 'interCAE' 모드에서 컨텍스트 템플릿을 구성할 때 사용하는 픽셀들은 도 11과 같고 현재 픽셀(X)을 중심으로 4개의 주변 픽셀들과, 현재 블록에 대응하는 참조 블록에서 현재 픽셀에 대응하는 픽셀(c6)과 그 주변 4개 픽셀들을 (c8 c7 c6 c5 c4 c3 c2 c1 c0) 형태의 9비트 컨텍스트 템플릿을 형성한 후에, 이것을 산술 코딩시의 확률 테이블의 인덱스로 사용한다.
도 8에서 “컨텍스트 계산”과 “산술 인코딩”은 현재 블록 또는 다운샘플링된 블록의 픽셀 수만큼 반복된다. 현재블록의 픽셀은 가로 방향 또는 세로 방향으로 스캔을 적응적으로 수행할 수 있으며, 두 가지 스캔 모드를 모두 수행한 후, 비트량이 적은 스캔 모드를 선택하고, 스캔 모드 정보는 비트스트림에 저장한다.
”비트플래인 코딩”을 거친 후에 나온 각 비트플래인의 비트스트림의 구성 은 일 예로 도 12와 같이 최상위(MSB; Most Significant Bit) 비트플래인으로부터 최하위(LSB; Least Significant Bit) 순으로 차례로 구성할 수 있으며, 도 12와 같은 구성은 일 예로 픽쳐 단위로 구성이 될 수 있고, 또 다른 일 예로 슬라이스(slice) 단위로 구성이 될 수도 있고, 또 다른 일 예로 NxN 블록 단위로 구성이 될 수도 있다.
“비트플래인 코딩”을 거친 후에 나온 각 비트플래인의 비트스트림의 구성의 또다른 일 예로 도 13과 같이 각 비트플래인 사이에 구분자를 두어 각 비트플래인 사이를 구분할 수도 있다.
“비트플래인 코딩”을 거친 후에 나온 각 비트플래인의 비트스트림의 구성의 또다른 일 예로 도 14와 같이 각 비트플래인 사이에 헤더(header) 정보를 넣을 수도 있다. 헤더 정보는 각 비트플래인의 속성을 정의하거나 코딩에 필요한 정보 등을 포함할 수 있다.
도 4의 “비트플래인 코딩”을 수행하는 방법의 또다른 실시 일 예로 상기 살펴본 MPEG-4 Part 2 Visual의 이진 형상 코딩 방법을 응용하는 방법이 있다.
① MPEG-4 Part 2 Visual의 이진 형상 코딩 방법을 응용하는 방법의 일 예로 전체 코딩 과정중에서 일부의 과정을 제거하고 수행하는 방법이 있다. 일 예로 “CAE 코딩” 과정에서 도 8의 “비트율 조절” 부분을 제거하고 수행할 수 있다. 즉, 변환비율(CR)을 항상 '1'로 하여 코딩을 수행할 수 있다. 또 다른 일 예로 픽쳐 모드와 관계 없이 비트플래인 코딩 시에 인트라(intra) 코딩만을 수행하는 방법이 있다. 이와 같은 경우에는 상기 설명한 것 중, "all_0", "all_1", "intraCAE" 세 가지 모드만을 사용할 수 있다.
② MPEG-4 Part 2 Visual의 이진 형상 코딩 방법을 응용하는 방법의 또 다른 일 예로 "CAE 코딩" 과정에서 각 컨텍스트 템플릿에 대한 확률을 변경할 수 있다. 기존의 방법에서는 이진 형상 영상(shape image)에 적합한 확률이었으나, 이를 깊이 정보맵에 적합한 확률로 수정하여 사용할 수도 있다.
③ MPEG-4 Part 2 Visual의 이진 형상 코딩 방법을 응용하는 방법의 또 다른 일 예로 움직임 정보를 각 비트플래인 별로 저장하지 않고, 각 블록 단위로 움직임 정보를 하나만을 저장할 수도 있다.
도 4의 "비트플래인 코딩"을 수행하는 방법의 또다른 실시 일 예로 Run Length Coding 방법과 Variable Length Coding 방법을 사용하여 코딩을 수행할 수도 있다.
도 4의 “비트플래인 코딩”을 수행하는 방법의 또다른 실시 일 예로 주변의 코딩 정보를이용한 Context-based 코딩과 Arithmetic Coding 방법을 사용하여 수행할 수도 있다.
도 4의 “비트플래인 코딩”을 수행하는 방법의 또다른 실시 일 예로 다양한 이진 영상 코딩 방법을 사용하여 코딩을 수행할 수도 있다. 일 예로 CAC(Constant Area Coding) 혹은 JBIG(Joint Bi-Levelnary Image Processing Group)의 방법을 사용할 수도 있다.
깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법의 디코더 구조의 일 예는 도 15와 같다.
도 15의 "비트플래인 디코딩" 과정에서는 입력된 비트스트림을 각 비트플래인 별로 디코딩하여 N개의 비트플래인 영상을 출력한다. "비트플래인 결합" 과정에서는 출력된 각각의 비트플래인 영상을 결합하여 N-bit로 표현되는 “재구성된 깊이 정보맵”을 출력한다.
도 15의 “비트플래인 디코딩”을 수행하는 방법의 실시 일 예로 국제 동영상 표준인 MPEG-4 Part 2 Visual의 이진 형상 디코딩에서 사용하는 방법을 그대로 사용할 수 있다. MPEG-4 Part 2 Visual의 이진 형상 디코딩 방법을 그대로 사용한 각 비트플래인의 디코딩 구조는 도 16과 같다.
도 16에서 “참조 비트플래인 버퍼”에서는 이전에 디코딩되어 현재 비트플래인 디코딩 시에 참조로 사용하는 비트플래인이 저장이 되어 있으며, “재구성된 비트플래인 버퍼”에는 비트플래인 디코딩을 통해 재구성된 비트플래인이 저장 된다.
도 16에서 데이터를 처리하는 단위는 가로 세로 MxN픽셀 크기의 이진 형태의 블록이 된다. “디멀티플렉서” 에서는 비트스트림을 입력으로 받아 현재 블록의 움직임 벡터와 현재 블록의 모드, 그리고 “CAE 디코딩” 과정에서 사용될 비트스트림을 출력한다. “움직임 보상” 과정에서는 입력된 현재 블록의 움직임 벡터를 이용하여 “참조 비트플래인 버퍼”에 저장된 참조 비트플래인으로부터 움직임 보상된 블록을 출력한다. “동일 레벨 블록 디코딩” 부분은 입력된 현재 블록의 모드가 ‘all_0’ 모드이거나 ‘all_1’ 모드일 경우 수행되는 부분으로 ‘all_0’ 모드일 경우에는 재구성된 블록 내의 모든 픽셀값을 ‘0’으로 설정하여 출력하며, ‘all_1’ 모드일 경우에는 재구성된 블록 내의 모든 픽셀값을 ‘1’로 설정하여 출력한다. “CAE(Context-based Arithmetic Encoding) 디코딩” 과정은 현재 블록의 모드가 ‘intraCAE’와 ‘interCAE’ 일 경우 수행되며, 현재 블록 내의 각 픽셀은 인트라 모드일 경우에는 각 픽셀의 주변의 픽셀 정보를 기반으로, 인터 모드일 경우에는 각 픽셀의 주변의 픽셀 정보와 현재 픽셀에 대응하는 참조 영상의 픽셀과 그 주변 픽셀 정보를 기반으로 하는 이진 산술 디코딩(Binary Arithmetic Deoding)을 수행한다. “CAE 디코딩” 방법에 대한 상세한 설명은 추후에 기술한다. 재구성된 블록은 현재 블록의 모드에 의해 움직임 보상을 수행한 블록, 또는 “CAE 디코딩”을 수행한 블록, 또는 “동일 레벨 블록 디코딩”을 통해 만들어진 블록이 되며, 이것은 “재구성된 비트플래인 버퍼”에 저장된다.
현재 블록의 모드가 ‘intraCAE’와 ‘interCAE’로 선택 되었을 경우, 컨텍스트 기반 산술 인코딩(CAE, Context-based Arithmetic Encoding) 방법을 사용하며, “CAE 디코딩”의 구조는 도 17과 같다.
도 17의 “변환비율 디코딩” 과정에서는 입력된 비트스트림에서 변환비율(CR)을 디코딩하여 출력한다. “다운샘플링” 과정에서는 입력된 변환비율에 따라 현재 블록에 대응하는 참조 비트플래인 영상의 “참조 블록”에 대한 다운샘플링을 수행하여 컨텐스트 계산에 사용할 수 있도록 한다. 만약 변환비율(CR)이 ‘1’ 이라면 다운샘플링을 수행하지 않는다. “컨텍스트 계산” 과정에서 컨텍스트 템플릿(context template)의 구성은 상기 도 8의 “컨텍스트 계산”에서 설명된 것과 동일하다. “산술 디코딩” 과정에서는 “컨텍스트 계산” 과정에서 구성된 컨 텍스트 템플릿을 인덱스(index)로 하는 확률 테이블을 참조하여 입력된 비트스트림에 대한 산술 디코딩을 수행하여 현재 픽셀을 생성한다. “업샘플링” 과정에서는 디코딩된 블록에 업샘플링(Up-sampling)을 수행하여 “재구성된 블록”을 생성한다. 만약 변환비율이 ‘1’이라면 업샘플링을 수행하지 않는다.
도 15의 “비트플래인 디코딩”을 수행하는 방법의 또다른 실시 일 예로 상기 살펴본 MPEG-4 Part 2 Visual의 이진 형상 디코딩 방법을 응용하는 방법이 있다.
① MPEG-4 Part 2 Visual의 이진 형상 디코딩 방법을 응용하는 방법의 일 예로 전체 디코딩 과정에서 일부의 과정을 제거하고 수행하는 방법이 있다. 일 예로 “CAE 디코딩” 과정에서 변환비율(CR)을 항상 '1'인 데이터만을 디코딩할 수 있다. 또 다른 일 예로 픽쳐 모드와 관계 없이 비트플래인 디코딩을 수행할 때 인트라(intra) 디코딩만을 수행하는 방법이 있다. 이와 같은 경우에는 상기 설명한 모드 중, “all_0”, “all_1”, “intraCAE” 세 가지 모드만을 디코딩할 수 있다.
② MPEG-4 Part 2 Visual의 이진 형상 디코딩 방법을 응용하는 방법의 또 다른 일 예로 “CAE 디코딩” 과정에서 각 컨텍스트 템플릿에 대한 확률을 변경할 수 있다. 기존의 방법에서는 이진 형상 영상에 적합한 확률이었으나, 이를 깊이 정보맵에 적합한 확률로 수정하여 사용할 수도 있다.
③ MPEG-4 Part 2 Visual의 이진 형상 코딩 방법을 응용하는 방법의 또 다른 일 예로 각 블록 단위로 저장되어 있는 움직임 정보를 각 비트플래인에서 사용 할 수 있도록 하는 방법이 있다.
도 15의 “비트플래인 디코딩”을 수행하는 방법의 또다른 실시 일 예로 Run Length Coding 방법과 Variable Length Coding방법을 사용하여 디코딩을 수행할 수도 있다.
도 15의 “비트플래인 디코딩”을 수행하는 방법의 또다른 실시 일 예로 주변의 코딩 정보를 이용한 Context-based 디코딩 방법과 Arithmetic Coding 방법을 사용한 디코딩 방법을 수행할 수도 있다.
도 15의 “비트플래인 디코딩”을 수행하는 방법의 또다른 실시 일 예로 다양한 이진 영상 코딩 방법을 사용하여 디코딩을 수행할 수도 있다. 일 예로 CAC(Constant Area Coding) 혹은 JBIG(Joint Bi-Levelnary Image Processing Group)의 방법을 사용할 수도 있다.
[방법 #2] 깊이 정보맵의 각 픽셀을 그레이 코드(gray code)로 변환한 후, 그레이 코드로 표현된 변환된 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법( [방법 #1]에서 그레이 코드 변환 수행을 추가한 방법)
깊이 정보맵을 그레이 코드(gray code)로 변환한 후 그레이 코드를 적용한 깊이 정보맵을 비트플래인 단위로 구분하여 각각의 비트플래인을 코딩하는 방법의 인코더 구조의 일 예는 도 18과 같다.
도 18는 [방법 #1]의 도 4 인코더 구조에서 “그레이 코드 변환” 과정을 추가하여 수행하는 구조이다. “그레이 코드 변환” 과정에서는 깊이 정보맵을 입력 받아서 각각의 픽셀을 그레이 코드로의 변환을 수행한다. 그레이 코드는 연속하는 값을 표현할 때, 1-비트만을 변경하여 표현하는 코드이다. 일반적으로 깊이 정보맵은 주변 픽셀과 상당히 유사한 특성을 갖는데, 깊이 정보맵 그대로를 비트플래인으로 나누었을 경우에는 각 비트플래인의 픽셀은 픽셀의 유사도와 상관없이 서로 다른 값을 가질 수 있다. 일 예로 8-비트로 표현되는 깊이 정보맵에서 연속되는 두 개의 픽셀이 '127'과 '128'의 값을 가진다고 가정할 경우에 '127'은 이진수로 (01111111)2 로 표현이 되며 '128'은 이진수로 (10000000)2 로 표현이 된다. 이와 같은 경우에는 깊이 정보 자체는 유사한 값을 갖지만, 비트플래인 별로 비교를 했을 경우에는 모든 비트에서 다른 값을 가지는 것을 확인할 수 있다. 하지만 깊이 정보맵을 그레이 코드로 변경하였을 경우에는 실제 값이 '1' 차이가 나면 1-비트만 차이가 나도록 되어 있기 때문에 각 비트플래인 안에서 주변 비트값의 유사도를 높여줄 수 있다. 실제 m-비트 깊이 정보 픽셀의 이진값 (am-1…a2a1a0)2 를 그레이 코드 (gm-1…g2g1g0)2 로 변경하는 방법은 아래 수식과 같다.
Figure 112009002657014-PAT00002
여기서
Figure 112009002657014-PAT00003
는 XOR(eXclusive OR) 연산을 의미한다. 실제 '127'과 '128'의 값을 그레이 코드로 변환을 수행하면 '127'은 이진수로 (11000000)2 로 표현이 되 며, '128'은 이진수로 (01000000)2 로 표현이 된다. 그레이 코드로 변환을 수행하였을 때 각 비트의 유사도가 증가한 것을 쉽게 확인할 수 있다.
도 18의 “비트플래인 분리”과정과 “비트플래인 코딩” 과정은 [방법#1]의 도 4의 “비트플래인 분리”과정과 “비트플래인 코딩” 과정과 동일하다. 단, 깊이 정보맵을 그레이 코드로 변환하였을 때에는 정보의 손실이 있으면 안된다. 정보의 손실이 발생을 한다면 그레이 코드를 기존의 깊이 정보맵으로 복원을 할 때, 정확한 값을 복원할 수 없기 때문에 “비트플래인 코딩” 과정에서 정보의 손실을 발생하지 않도록 코딩해야 한다.
깊이 정보맵을 그레이 코드(Gray code)로 변환한 후 그레이 코드를 적용한 깊이 정보맵을 비트플래인 단위로 구분하여 각각의 비트플래인을 코딩하는 방법의 디코더 구조의 일 예는 도 19과 같다.
도 19는 [방법 #1]의 도 15의 디코더 구조에서 “역 그레이 코드 변환” 과정을 추가하여 수행하는 구조이다. 도 19의 “비트플래인 디코딩”과 “비트플래인 결합”은 [방법 #1]의 도 15의 “비트플래인 디코딩”과 “비트플래인 결합” 과정과 동일하다. “역 그레이 코드 변환” 과정에서는 그레이 코드로 표현된 깊이 정보맵을 원래의 형태로 복원하는 것으로 실제 m-비트 깊이 정보 픽셀의 그레이 코드 (gm-1…g2g1g0)2 를 이진값 (am-1…a2a1a0)2 로 변경하는 방법은 아래 수식과 같다.
Figure 112009002657014-PAT00004
여기서
Figure 112009002657014-PAT00005
는 XOR(eXclusive OR) 연산을 의미한다.
본 발명에서 제안하는 방법의 우수성을 검증하기 위해 본 발명의 발명자는 ISO/IEC 14496 (MPEG-4) Video Reference Software인 Microsoft-FDAM1-2.3-001213에 실제 구현을 하여 실험을 수행하였고, 현존하는 동영상 국제 표준 중에 최고의 압축 효율을 보여주는 H.264/AVC와의 비교를 수행하였다. H.264/AVC의 실험은 H.264/AVC의 참조 소프트웨어인 JM(Joint Model) 13.2을 사용하였다. 실험은 무손실(lossless)로 코딩을 수행하였고, 코딩구조는 'IPPP' 코딩구조를 사용하였다. 테스트 영상은 “Ballet” XGA(1024x768) 15Hz 영상 시퀀스의 깊이 정보맵과 “Breakdancers” XGA(1024x768) 15Hz 영상 시퀀스의 깊이 정보맵을 이용하였다.
Lossless Coding Ballet Breakdancers
H.264/AVC
(IPPP, CAVLC)
8847 kbps 9836 kbps
H.264/AVC
(IPPP, CABAC)
7371 kbps 8152 kbps
제안하는 방법
(IPPP, CAE)
5067 kbps 5706 kbps
표 1은 본 발명에서 제안하는 방법의 비트량과 H.264/AVC에서 각각 엔트로피 코딩(entropy coding) 방법을 CAVLC(Context-based Adaptive Variable Length Coding)를 사용한 결과의 비트량과 CABAC(Context-based Adaptive Binary Arithmetic Coding)을 사용한 결과의 비트량을 비교한 것으로 본 발명에서 제안하는 방법이 기존의 방법인 H.264/AVC(IPPP, CAVLC)보다 비트율이 평균 42.3%가 감소되었고, H.264/AVC(IPPP, CABAC)보다 비트율이 평균 30.8%가 감소되었다.
[방법 #3] 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법과 깊이 정보맵 코딩 시 비트율을 조절하는 방법( [방법 #1]에서 비트율 조절을 수행 방법을 추가한 방법)
깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법에서 비트율을 조절하는 방법의 인코더 구조의 일 예는 도 20과 같다.
도 20는 [방법 #1]의 도 4 인코더 구조에서 “비트율 조절” 과정을 추가하여 수행하는구조이다. “비트율 조절” 과정은 실제 코딩시에 원하는 비트율을 얻도록 하기 위해 수행되는 것으로써 코딩을 수행할 실제 데이터를 결정하는 것이다. “비트율 조절”의 일 예로 현재 입력되는 양자화 파라미터(Quantization Parameter; QP)에 따라 실제 코딩을 수행할 비트플래인을 MSB 비트플래인부터 LSB 비트플래인의 순서대로 선택하는 방법이 있을 수 있다. 실시 일 예로 QP가 32일 때에는 LSB 와 LSB+1 비트플래인을 제외한 모든 비트플래인을 코딩하도록 설정할 수 있다. “비트율 조절”의 또 다른 일 예로 현재 입력되는 양자화 파라미터에 따라 비트플래인 단위가 아닌 일정한 영역 일 예로 슬라이스나 MxN 블록과 같은 영역 단위로 코딩을 수행할 비트플래인 영역을 설정하도록 할 수 있다. “비트율 조절”을 통해 코딩을 수행할 비트플래인 수에 따라서 “비트플래인 분리”를 수행한다. 그리고 픽쳐단위가 아닌 일정한 영역으로 “비트플래인 코딩”을 수행할 경우에는 슬라이스 혹은 블록 단위로 코딩을 수행여부에 따라 코딩을 수행한다.
도 20의 “비트플래인 코딩” 과정은 [방법#1]의 도 4의 “비트플래인 코딩” 과정과 동일하다.
깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법에서 비트율을 조절하는 방법의 디코더 구조의 일 예는 도 21과 같다.
도 21은 [방법 #1]의 도 15의 디코더 구조에서 “깊이 정보맵 구성” 과정을 추가하여 수행하는 구조이다. 도 21의 “비트플래인 디코딩”과 “비트플래인 결합”은 [방법 #1]의 도 15의 “비트플래인 디코딩”과 “비트플래인 결합” 과정과 동일하다. “깊이 정보맵 구성” 과정에서는 실제 깊이 정보맵의 비트수에 맞게 구성하여 재구성된 깊이 정보맵을 출력하는 것이다.
[방법 #4] 깊이 정보맵의 각 픽셀을 그레이 코드로 변환한 후, 그레이 코드로 표현된 변환된 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법과 깊이 정보맵 코딩 시 비트율을 조절하는 방법([방법 #1]에서 [방법 #2]와 [방법 #3]을 조합한 방법)
깊이 정보맵의 각 픽셀을 그레이 코드로 변환한 후, 그레이 코드로 표현된 변환된 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법에서 비트율을 조절하는 방법의 인코더 구조의 일 예는 도 22와 같다.
도 22은 [방법 #1]의 도 4의 인코더 구조에서 [방법 #3]의 도 22의 인코더 구조에서 “비트율 조절” 과정과 [방법 #2]의 도 20의 인코더 구조에서 “그레이 코드 변환” 과정을 추가한 것으로, “비트율 조절” 과정은 [방법 #3]의 “비트율 조절” 과정과 동일하며, “그레이 코드 변환” 과정은 [방법 #2]의 “그레이 코드 변환” 과정과 동일하고, “비트플래인 분리”와 “비트플래인 코딩” 과정은 [방법 #1]의 “비트플래인 분리”와 “비트플래인 코딩” 과정과 동일하다.
깊이 정보맵의 각 픽셀을 그레이 코드로 변환한 후, 그레이 코드로 표현된 변환된 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법에서 비트율을 조절하는 방법의 디코더 구조의 일 예는 도 23와 같다.
도 23는 [방법 #1]의 도 15의 디코더 구조에서 [방법 #2]의 도 19의 디코더 구조에서 “역 그레이 코드 변환” 과정과 [방법 #3의] 도 21의 “깊이 정보맵 구성”을 추가한 것으로, “비트플래인 디코딩” 과정과 비트플래인 결합” 과정은 [방법 #1]의 “비트플래인 디코딩” 과정과 “비트플래인 결합” 과정과 동일하며, “역 그레이 코드 변환” 과정은 [방법 #2]의 “역 그레이 코드 변환” 과정과 동일하며, “깊이 정보맵 구성” 과정은 [방법 #3]의 “깊이 정보맵 구성” 방법과 동일하다.
본 발명에서 깊이 정보맵의 코딩 시에 싶이 정보맵의 코딩 효율을 높일 수 있는 방법의 인코더 장치도는 도 24와 같다.
도 24의 “비트율 조절부”는 옵션에 따라 사용할 수도 있고 사용하지 않을 수도 있다. “비트율 조절부”는 [방법 #3]의 코딩을 수행할 비트플래인을 선택하거나 비트플래인 보다 더 작은 영역을 선택할 수 있다. “그레이 코드 변환부”는 옵션에 따라 사용할 수도 있고 사용하지 않을 수도 있다. “그레이 코드 변환부” 는 원본 깊이 정보맵 혹은 비트율 조절을 수행한 후의 깊이 정보맵의 그레이 코드로의 변환을 수행한다. “비트플래인 분리부”에서는 N-bit로 표현되는 깊이 정보맵을 N개의 비트플래인으로 분리한다. “비트플래인 코딩부”에서는 비트플래인의 수만큼 반복해서 수행이 되며, [방법 #1]에서 설명한 MPEG-4 Part 2 Visual의 형상 코딩 방법을 사용하는 방법, MPEG-4 Part 2 Visual의 형상 코딩 방법을 응용한 방법, Run Length Coding과 Variable Length Coding 을 사용하는 방법, Context-based Arithmetic Coding을 사용하는 방법, CAC(Constant Area Coding)을 사용하는 방법, JBIG(Joint Bi-Levelnary Image Processing Group)의 방법을 사용하는 방법이 있다. “비트플래인 코딩부”에서는 각 비트플래인을 코딩한 정보를 비트스트림으로 출력한다.
본 발명에서 깊이 정보맵의 코딩 시에 깊이 정보맵의 코딩 효율을 높일 수 있는 방법의 디코더 장치도는 도 25와 같다.
도 25의 “비트플래인 디코딩부”에서는 비트스트림의 입력을 받아 비트플래인 수만큼 반복해서 수행이 되며, [방법 #1]에서 설명한 MPEG-4 Part 2 Visual의 형상 코딩 방법을 사용하는 방법, MPEG-4 Part 2 Visual의 형상 코딩 방법을 응용한 방법, Run Length Coding과 Variable Length Coding 을 사용하는 방법, Context-based Arithmetic Coding을 사용하는 방법, CAC(Constant Area Coding)을 사용하는 방법, JBIG(Joint Bi-Levelnary Image Processing Group)의 방법을 사용하는 방법이 있다. “비트플래인 결합부”에서는 “비트플래인 디코딩부”에서 출력된 N개의 비트플래인들을 N-bit에 맞게 결합을 수행한다. “역 그레이 코드 변환부”는 옵션에 따라 수행할 수도 있고 수행하지 않을 수도 있다. “역 그레이 코드 변환부”는 각 픽셀의 비트수에 맞게 [방법 #2]에서와 같이 그레이 코드를 원래의 코드 형태로 복원을 수행한다. “깊이 정보맵 구성부”는 옵션에 따라 수행할 수도 있고 수행하지 않을 수도 있다. “깊이 정보맵 구성부”는 실제 깊이 정보맵의 비트수에 맞게 구성하여 재구성된 깊이 정보맵을 출력한다.
상기와 같이 본 발명의 일 실시예에 따른 비트플레인 코딩을 이용한 깊이 정보맵 코딩 방법 및 장치의 동작 및 구성이 이루어질 수 있으며, 한편 상기한 본 발명의 설명에서는 구체적인 실시예에 관해 설명하였으나 여러 가지 변형이 본 발명의 범위를 벗어나지 않고 실시될 수 있다.
도 1은 실제 영상(왼쪽)과 깊이 정보맵 영상(오른쪽)의 예시도
도 2는 도 1의 실제 영상과 깊이 정보맵의 각 픽셀의 레벨(level)을 표현한 3차원 그래프, (왼쪽) 실제 영상의 그래프, (오른쪽) 깊이 정보맵의 그래프를 나타내는 도면
도 3은 비트플래인 분석: 도 1의 실제 영상의 비트플래인 표현(왼쪽), 깊이 정보맵의 비트플래인(가운데), 깊이 정보맵의 비트플래인에 gray code를 적용(오른쪽)한 예를 보이는 예시도
도 4는 깊이 정보맵을 비트플래인 단위로 구분하여 각각의 비트플래인을 코딩하는 인코더 장치의 블록 구성도
도 5는 비트플래인 코딩을 수행하기 위한 장치의 블록 구성도
도 6은 인트라 픽쳐 모드 결정 방법 흐름도
도 7은 인터 픽쳐 모드 결정 방법 흐름도
도 8은 CAE 코딩을 수행하기 위한 장치의 블록 구성도
도 9는 변환비율(CR; Conversion Ratio) 결정 방법의 흐름도
도 10은 intraCAE를 위한 컨텍스트 템플릿을 나타내는 도면
도 11은 interCAE를 위한 컨텍스트 템플릿을 나타내는 도면
도 12는 각 비트플래인의 비트스트림의 구성의 일 예시도
도 13은 각 비트플래인의 비트스트림의 구성의 일 예시도
도 14는 각 비트플래인의 비트스트림의 구성의 일 예시도
도 15는 깊이 정보맵을 비트플래인 단위로 구분하여 각각의 비트플래인을 코딩하는 디코더의 블록 구성도
도 16은 비트플래인 디코딩을 수행하는 장치의 블록 구성도
도 17은 CAE 디코딩을 수행하기 위한 장치의 블록 구성도
도 18은 깊이 정보맵의 각 픽셀을 그레이 코드로 변환한 후, 그레이 코드로 변환된 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법의 인코더의 블록 구성도
도 19는 깊이 정보맵의 각 픽셀을 그레이 코드로 변환한 후, 그레이 코드로 변환된 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법의 디코더의 블록 구성도
도 20은 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법에서 비트율을 조절하는 방법의 인코더의 블록 구성도
도 21은 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법에서 비트율을 조절하는 방법의 디코더의 블록 구성도
도 22는 깊이 정보맵의 각 픽셀을 그레이 코드로 변환한 후, 그레이 코드로 표현된 변환된 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법에서 비트율을 조절하는 방법의 인코더의 블록 구성도
도 23은 깊이 정보맵의 각 픽셀을 그레이 코드로 변환한 후, 그레이 코드로 표현된 변환된 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법에서 비트율을 조절하는 방법의 디코더의 블록 구성도
도 24는 깊이 정보맵의 코딩 시에 깊이 정보맵의 코딩 효율을 높일 수 있는 인코더 장치의 블록 구성도
도 25는 깊이 정보맵의 코딩 시에 깊이 정보맵의 코딩 효율을 높일 수 있는 디코더 장치의 블록 구성도

Claims (4)

  1. 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법.
  2. 깊이 정보맵의 각 픽셀을 그레이 코드(gray code)로 변환한 후, 그레이 코드로 표현된 변환된 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법.
  3. 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법과 깊이 정보맵 코딩 시 비트율을 조절하는 방법.
  4. 깊이 정보맵의 각 픽셀을 그레이 코드로 변환한 후, 그레이 코드로 표현된 변환된 깊이 정보맵을 비트플래인 단위로 분리하여 각각의 비트플래인을 코딩하는 방법과 깊이 정보맵 코딩 시 비트율을 조절하는 방법.
KR1020090003309A 2009-01-15 2009-01-15 비트플레인 코딩을 이용한 깊이 정보맵 코딩 방법 및 장치 KR20100083957A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090003309A KR20100083957A (ko) 2009-01-15 2009-01-15 비트플레인 코딩을 이용한 깊이 정보맵 코딩 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090003309A KR20100083957A (ko) 2009-01-15 2009-01-15 비트플레인 코딩을 이용한 깊이 정보맵 코딩 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20100083957A true KR20100083957A (ko) 2010-07-23

Family

ID=42643508

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090003309A KR20100083957A (ko) 2009-01-15 2009-01-15 비트플레인 코딩을 이용한 깊이 정보맵 코딩 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20100083957A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8798158B2 (en) 2009-03-11 2014-08-05 Industry Academic Cooperation Foundation Of Kyung Hee University Method and apparatus for block-based depth map coding and 3D video coding method using the same
KR101529903B1 (ko) * 2009-03-11 2015-06-17 경희대학교 산학협력단 블록기반 깊이정보 맵의 코딩 방법과 장치, 및 이를 이용한 3차원 비디오 코딩 방법
CN113891091A (zh) * 2016-01-05 2022-01-04 韩国电子通信研究院 用于预测残差信号的方法和装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8798158B2 (en) 2009-03-11 2014-08-05 Industry Academic Cooperation Foundation Of Kyung Hee University Method and apparatus for block-based depth map coding and 3D video coding method using the same
KR101529903B1 (ko) * 2009-03-11 2015-06-17 경희대학교 산학협력단 블록기반 깊이정보 맵의 코딩 방법과 장치, 및 이를 이용한 3차원 비디오 코딩 방법
CN113891091A (zh) * 2016-01-05 2022-01-04 韩国电子通信研究院 用于预测残差信号的方法和装置

Similar Documents

Publication Publication Date Title
US11461932B2 (en) Method and apparatus for point cloud compression
US8798158B2 (en) Method and apparatus for block-based depth map coding and 3D video coding method using the same
US11831893B2 (en) Image coding device, image decoding device, image coding method, and image decoding method
US7848425B2 (en) Method and apparatus for encoding and decoding stereoscopic video
CN104041035B (zh) 用于复合视频的无损编码及相关信号表示方法
US20130322524A1 (en) Rate control method for multi-layered video coding, and video encoding apparatus and video signal processing apparatus using the rate control method
US20160277760A1 (en) Features of base color index map mode for video and image coding and decoding
JPH1169356A (ja) 動画像符号化方式及び動画像復号方式
US20150271502A1 (en) Video encoding device, video decoding device, video encoding method, and video decoding method
KR20100083980A (ko) 적응적 블록기반 깊이 정보맵 코딩 방법 및 장치
KR101529903B1 (ko) 블록기반 깊이정보 맵의 코딩 방법과 장치, 및 이를 이용한 3차원 비디오 코딩 방법
KR20100083957A (ko) 비트플레인 코딩을 이용한 깊이 정보맵 코딩 방법 및 장치
KR20100102493A (ko) 블록 기반 적응적 비트플레인 코딩을 이용한 깊이 정보맵 코딩 방법 및 장치
WO2015190078A1 (ja) 映像符号化装置、映像符号化方法および記録媒体
CN111587575B (zh) 基于高频归零确定变换系数扫描顺序的方法及其设备
KR20230013080A (ko) 영상 디코딩 방법 및 그 장치
JPWO2016142977A1 (ja) 映像符号化装置、映像符号化方法および映像符号化プログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal