KR20160011951A - 영상 처리 디바이스 및 방법 - Google Patents

영상 처리 디바이스 및 방법 Download PDF

Info

Publication number
KR20160011951A
KR20160011951A KR1020140093296A KR20140093296A KR20160011951A KR 20160011951 A KR20160011951 A KR 20160011951A KR 1020140093296 A KR1020140093296 A KR 1020140093296A KR 20140093296 A KR20140093296 A KR 20140093296A KR 20160011951 A KR20160011951 A KR 20160011951A
Authority
KR
South Korea
Prior art keywords
data block
information
encoder
compression
error
Prior art date
Application number
KR1020140093296A
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 KR1020140093296A priority Critical patent/KR20160011951A/ko
Priority to US14/807,443 priority patent/US20160029027A1/en
Priority to PCT/KR2015/007690 priority patent/WO2016013892A1/en
Publication of KR20160011951A publication Critical patent/KR20160011951A/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/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/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/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
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • 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/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/94Vector quantisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 개시는 영상 처리 디바이스에 구비된 인코더에서 영상 프레임을 구성하는 각 데이터 블록의 인코딩을 위해 독립적인 압축 모드를 적용하는 장치 및 방법에 관한 것이다.
이를 위해, 지정된(specified) 복수의 압축 모드들 각각을 기반으로 적어도 하나의 데이터 블록을 부호화하고, 상기 복수의 압축 모드들 각각에 적어도 일부 기반하여 상기 복수의 압축 모드들 각각에 대응하는 적어도 하나의 데이터 블록을 재 구성한다. 상기 적어도 하나의 데이터 블록 및 상기 적어도 하나의 데이터 블록을 재 구성한 데이터 블록을 이용하여 상기 복수의 압축 모드들 각각에 대응하는 데이터 간의 차이를 결정하고, 상기 데이터 간의 차이에 적어도 일부 기반하여 상기 복수의 압축 모드들로부터 적어도 하나의 압축 모드를 선택한다.

Description

영상 처리 디바이스 및 방법{DEVICE AND METHOD FOR PROCESSING IMAGE}
본 개시의 다양한 실시 예들은 데이터 블록 단위로 이미지 압축을 수행하는 영상 처리 디바이스 및 방법에 관한 것이다.
최근 방송 서비스는 통신 서비스와의 융합에 의한 영상 통신 서비스가 일반화되었다. 상기 영상 통신 서비스는 빠른 속도와 많은 정보 처리가 가능한 단말뿐만 아니라 정보의 빠른 전송을 위한 광 대역 네트워크의 보급이 급속히 증가하고 있다.
상기 영상 통신 서비스를 지원하는 단말은 이미지 처리로 인한 많은 전력 소모가 발생한다. 특히 휴대가 가능한 단말 (이하 ‘휴대 단말’이라 칭함)에서 처리할 이미지의 해상도는 디스플레이 시의 소비 전력을 결정하는 주요한 요인이 될 수 있다. 예컨대 휴대 단말에서 디스플레이 시의 소비 전력은 처리할 이미지의 해상도에 비례하여 증가한다.
상기 이미지 해상도의 증가는 처리할 이미지에 관한 정보를 전달할 휴대 단말 내의 대역폭 또는 네트워크에서의 대역폭을 증가시킨다. 일 예로 휴대 단말에서 애플리케이션 프로세서 (AP: Application Processor)에서 디스플레이 디바이스로 프레임을 전송하기 위한 대역폭은 디스플레이 해상도에 비례하여 증가한다.
일반적으로 정보를 처리하는 대부분의 전자 장치는 정보 량을 줄이기 위해 다양한 압축 및 압축 해제 (이하 “복원”이라 칭함) 기술이 사용되고 있다. 상기 압축 및 복원 기술은 정보를 기록하는 기록 매체의 용량을 효율적으로 사용할 수 있을 뿐만 아니라 용이한 정보 전달이 가능하도록 한다.
일반적으로 압축 영상의 품질은 데이터 블록의 인코딩을 위해 사용된 압축 모드의 종류에 의해 결정될 수 있다. 예를 들면, 데이터 블록은 최소 압축 에러가 예측되는 압축 방식을 사용하는 인코딩할 수 있다. 따라서 최소 압축 에러가 예측되는 압축 모드를 선택하고, 상기 선택한 압축 모드를 사용하여 데이터 블록에 대한 인코딩을 수행함으로써, 높은 영상 품질을 얻기 위한 개발 및 연구가 이루어지고 있다.
본 개시의 한 실시 예에 따르면, 영상 처리 디바이스에 구비된 인코더에서 영상 프레임을 구성하는 각 데이터 블록의 인코딩을 위해 독립적인 압축 모드를 적용하는 장치 및 방법을 제공할 수 있다.
본 개시의 한 실시 예에 따르면, 영상 처리 디바이스에 구비된 인코더에서 영상 프레임을 소정 크기로 분할한 데이터 블록을 최소 에러 율을 갖는 압축 모드를 사용하여 압축하는 장치 및 방법을 제공할 수 있다.
본 개시의 한 실시 예에 따르면, 영상 처리 디바이스에 구비된 인코더에서 복수의 압축 모드 각각을 사용하여 데이터 블록 단위로 압축하고, 상기 압축 후에 재 구성 데이터 블록에 대해 계산한 에러 율을 기반으로 해당 데이터 블록에 대한 압축 모드를 결정하는 장치 및 방법을 제공할 수 있다.
본 개시의 한 실시 예에 따르면, 영상 처리 디바이스에 구비된 인코더에서 데이터 블록에 대응한 에러 율을 계산하기 위해, 최적화된 복수의 압축 모드들 각각의 동작을 새로이 제안하는 장치 및 방법을 제공할 수 있다.
본 개시의 다양한 실시 예에 따른 장치는, 지정된(specified) 복수의 압축 모드들 각각을 기반으로 적어도 하나의 데이터 블록을 부호화기 위한 부호화 모듈과, 상기 복수의 압축 모드들 각각에 적어도 일부 기반하여 상기 복수의 압축 모드들 각각에 대응하는 적어도 하나의 데이터 블록을 재 구성하기 위한 재구성 모듈과, 상기 적어도 하나의 데이터 블록 및 상기 적어도 하나의 데이터 블록을 재 구성한 데이터 블록을 이용하여 상기 복수의 압축 모드들 각각에 대응하는 데이터 간의 차이를 결정하기 위한 결정 모듈 및 상기 데이터 간의 차이에 적어도 일부 기반하여 상기 복수의 압축 모드들로부터 적어도 하나의 압축 모드를 선택하기 위한 선택 모듈을 포함할 수 있다.
본 개시의 다양한 실시 예에 따른 방법은, 지정된 복수의 압축 모드들 각각을 기반으로 적어도 하나의 데이터 블록을 부호화 하는 동작과, 상기 복수의 압축 모드들 각각에 의해 생성된 압축 비트 스트림들을 사용하여 상기 복수의 압축 모드들 각각에 대응한 적어도 하나의 데이터 블록을 재 구성하는 동작과, 상기 적어도 하나의 데이터 블록과 상기 복수의 압축 모드들 각각에 대응하여 재 구성한 데이터 블록을 사용하여 상기 복수의 압축 모드들 각각에 대응하는 데이터 간의 차이를 계산하는 동작 및 상기 복수의 압축 모드들 각각에 대응하여 계산한 차이들 중에서 최소 차이를 갖는 압축 모드를 선택하는 동작을 포함할 수 있다.
다양한 실시 예에 따르면, 최소 에러에 의해 데이터 블록을 재 구성할 수 있는 압축 모드에 의해 데이터 블록을 인코딩함으로써, 압축 이미지의 압축 효율을 향상시킬 수 있을 뿐만 아니라 복원 이미지의 품질 저하를 최소화할 수 있다.
도 1은 다양한 실시 예에 따른, 네트워크 환경에서 전자 장치의 일 예를 도시한 도면이다.
도 2는 다양한 실시 예에 따른 전자 장치의 블록 구성을 도시한 도면이다.
도 3은 다양한 실시 예에 따른 프로그램 모듈 310의 블록 구성을 도시한 도면이다.
도 4는 다양한 실시 예에 따른, 영상 처리 디바이스의 구성을 도시한 도면이다.
도 5는 다양한 실시 예에 따른, 영상 처리 디바이스의 일 예를 도시한 도면이다.
도 6은 다양한 실시 예에 따른, 인코더의 구성 예를 도시한 도면이다.
도 7은 다양한 실시 예에 따른, 이미지 압축장치에서 수행하는 제어 흐름을 도시한 도면이다.
도 8은 다양한 실시 예에 따른, 인코더가 압축 모드 별로 출력하는 압축 비트 스트림의 예를 도시한 도면이다.
도 9는 다양한 실시 예에 따른, 예측 테이블의 일 예를 도시한 도면이다.
도 10은 다양한 실시 예에 따른, 인코더에서 압축 모드 1에 따른 서브 루틴을 도시한 도면이다.
도 11a 내지 도 11d는 선택된 서브 데이터 블록에 대해 공간 예측을 수행하는 예들을 도시한 도면이다.
도 12는 인코더가 각 압축 모드를 기반으로 생성한 압축 비트 스트림의 예를 도시한 도면이다.
도 13은 다양한 실시 예에 따른, 인코더에서 압축 모드 2에 따른 서브 루틴을 도시한 도면이다.
도 14는 다양한 실시 예에 따른, 압축 모드 2에 의한 인코딩 시의 에러 정도를 도시한 도면이다.
도 15는 다양한 실시 예에 따른, 압축 모드 2에 있어 에러 정정을 위한 벡터를 획득하는 일 예를 도시한 도면이다.
도 16은 다양한 실시 예에 따른, 압축 모드 2에 의한 인코딩을 수행하여 획득되는 압축 비트 스트림의 일 예를 도시한 도면이다.
도 17은 다양한 실시 예에 따른, 인코더에서 압축 모드 3에 따른 서브루틴을 도시한 도면이다.
도 18은 다양한 실시 예에 따른, 압축 모드 3에 의한 인코딩 시, 시드 값 또는 RV 값을 획득하는 일 예를 도시한 도면이다.
도 19는 다양한 실시 예에 따른, 압축 모드 3에 의한 인코딩 시, 스칼라 양자화에 있어서 비트들이 4개의 대표 값들 사이에서 분산이 이루어지는 예를 도시한 도면이다.
도 20은 다양한 실시 예에 따른, 압축 모드 3에 의한 인코딩 시, 보간에 의해 픽셀들을 재 구성하는 예를 도시한 도면이다.
도 21은 다양한 실시 예에 따른, 압축 모드 3에 의한 인코딩을 수행하여 획득되는 압축 비트 스트림의 일 예를 도시한 도면이다.
도 22는 다양한 실시 예에 따른, 인코더에서 압축 모드 4에 따른 서브루틴을 도시한 도면이다.
도 23은 다양한 실시 예에 따른 압축 모드 4에 의한 인코딩을 수행하여 획득되는 압축 비트 스트림의 일 예를 도시한 도면이다.
이하, 본 개시의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 개시를 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 개시의 실시 예의 다양한 변경 (modification), 균등물 (equivalent), 및/또는 대체물 (alternative)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 문서에서, “가진다,” “가질 수 있다,”“포함한다,” 또는 “포함할 수 있다” 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 문서에서, “A 또는 B,”“A 또는/및 B 중 적어도 하나,”또는 “A 또는/및 B 중 하나 또는 그 이상”등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, “A 또는 B,” “ A 및 B 중 적어도 하나,”또는 “ A 또는 B 중 적어도 하나”는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
다양한 실시 예에서 사용된 “제 1,”“제 2,”“첫째,”또는“둘째,”등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 해당 구성요소들을 한정하지 않는다. 상기 표현들은 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 수 있다. 예를 들면, 제 1 사용자 기기와 제 2 사용자 기기는, 순서 또는 중요도와 무관하게, 서로 다른 사용자 기기를 나타낼 수 있다. 예를 들면, 본 개시의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 바꾸어 명명될 수 있다.
어떤 구성요소 (예: 제 1 구성요소)가 다른 구성요소 (예: 제 2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어 ((operatively or communicatively) coupled with/to)" 있다거나 "접속되어 (connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소 (예: 제 3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소 (예: 제 1 구성요소)가 다른 구성요소 (예: 제 2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소 (예: 제 3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 문서에서 사용된 표현 “~하도록 구성된 (또는 설정된)(configured to)”은 상황에 따라, 예를 들면, “~에 적합한 (suitable for),” “~하는 능력을 가지는 (having the capacity to),” “~하도록 설계된 (designed to),” “~하도록 변경된 (adapted to),” “~하도록 만들어진 (made to),”또는 “~를 할 수 있는 (capable of)”과 바꾸어 사용될 수 있다. 용어 “~하도록 구성 (또는 설정)된”은 하드웨어적으로 “특별히 설계된 (specifically designed to)”것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, “~하도록 구성된 장치”라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 “~할 수 있는” 것을 의미할 수 있다. 예를 들면, 문구 “A, B, 및 C를 수행하도록 구성 (또는 설정)된 프로세서”는 해당 동작을 수행하기 위한 전용 프로세서 (예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서 (generic-purpose processor) (예: CPU 또는 application processor)를 의미할 수 있다.
본 문서에서 사용된 용어들은 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 다른 실시예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 개시의 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 일반적으로 사용되는 사전에 정의된 용어들은 관련 기술의 문맥 상 가지는 의미와 동일 또는 유사한 의미를 가지는 것으로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 개시의 실시 예들을 배제하도록 해석될 수 없다.
본 개시의 다양한 실시 예들에 따른 전자 장치는, 예를 들면, 전자 장치는 스마트 폰 (smart phone), 태블릿 PC (tablet personal computer), 이동 전화기 (mobile phone), 화상 전화기, 전자북 리더기 (e-book reader), 데스크탑 PC (desktop personal computer), 랩탑 PC (laptop personal computer), 넷북 컴퓨터 (netbook computer), 워크스테이션 (workstation), 서버, PDA (personal digital assistant), PMP (portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라 (camera), 또는 웨어러블 장치 (wearable device) (예: 스마트 안경, 머리 착용형 장치 (head-mounted-device (HMD)), 전자 의복, 전자 팔찌, 전자 목걸이, 전자 앱세서리 (appcessory), 전자 문신, 스마트 미러, 또는 스마트 와치 (smart watch))중 적어도 하나를 포함할 수 있다.
어떤 실시 예들에서, 전자 장치는 스마트 가전 제품 (smart home appliance)일 수 있다. 스마트 가전 제품은, 예를 들면, 텔레비전, DVD (digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스 (set-top box), 홈 오토매이션 컨트롤 패널 (home automation control panel), 보안 컨트롤 패널 (security control panel), TV 박스 (예: 삼성 HomeSync™, 애플TV™, 또는 구글 TV™), 게임 콘솔 (예: Xbox™, PlayStation™), 전자 사전, 전자 키, 캠코더 (camcorder), 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
다른 실시 예에서, 전자 장치는, 각종 의료기기 (예: 각종 휴대용 의료측정기기 (혈당 측정기, 심박 측정기, 혈압 측정기, 또는 체온 측정기 등), MRA (magnetic resonance angiography), MRI (magnetic resonance imaging), CT (computed tomography), 촬영기, 또는 초음파기 등), 네비게이션 (navigation) 장치, GPS 수신기 (global positioning system receiver), EDR (event data recorder), FDR (flight data recorder), 자동차 인포테인먼트 (infotainment) 장치, 선박용 전자 장비 (예: 선박용 항법 장치, 자이로 콤파스 등), 항공 전자기기 (avionics), 보안 기기, 차량용 헤드 유닛 (head unit), 산업용 또는 가정용 로봇, 금융 기관의 ATM (automatic teller’s machine), 상점의 POS (point of sales), 또는 사물 인터넷 장치 (Internet of Things) (예: 전구, 각종 센서, 전기 또는 가스 미터기, 스프링클러 장치, 화재경보기, 온도조절기 (thermostat), 가로등, 토스터 (toaster), 운동기구, 온수탱크, 히터, 보일러 등) 중 적어도 하나를 포함할 수 있다.
어떤 실시 예에 따르면, 전자 장치는 가구 (furniture) 또는 건물/구조물의 일부, 전자 보드 (electronic board), 전자 사인 수신 장치 (electronic signature receiving device), 프로젝터 (projector), 또는 각종 계측 기기 (예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 다양한 실시 예에서, 전자 장치는 전술한 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다. 어떤 실시 예에 따른 전자 장치는 플렉서블 전자 장치일 수 있다. 또한, 본 개시의 실시 예에 따른 전자 장치는 전술한 기기들에 한정되지 않으며, 기술 발전에 따른 새로운 전자 장치를 포함할 수 있다.
이하, 첨부 도면을 참조하여, 다양한 실시 예에 따른 전자 장치가 설명된다. 본 문서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치 (예: 인공지능 전자 장치)를 지칭할 수 있다.
도 1은 다양한 실시 예에 따른, 네트워크 환경에서 전자 장치의 일 예를 도시한 도면이다.
도 1을 참조하여, 다양한 실시 예에서의, 네트워크 환경 100 내의 전자 장치 101이 기재된다. 상기 전자 장치 101은 버스 110, 프로세서 120, 메모리 130, 입출력 인터페이스 150, 디스플레이 160, 및 통신 인터페이스 170을 포함할 수 있다. 어떤 실시 예에서는, 전자 장치 101은, 상기 구성요소들 중 적어도 하나를 생략하거나 다른 구성 요소를 추가적으로 구비할 수 있다.
상기 버스 110은, 예를 들면, 상기 구성요소들 110-170을 서로 연결하고, 상기 구성요소들 간의 통신 (예: 제어 메시지 및/또는 데이터)을 전달하는 회로를 포함할 수 있다.
상기 프로세서 120은, 중앙처리장치 (central processing unit (CPU)), 어플리케이션 프로세서 (application processor (AP)), 또는 커뮤니케이션 프로세서(communication processor (CP)) 중 하나 또는 그 이상을 포함할 수 있다. 상기 프로세서 120은, 예를 들면, 상기 전자 장치 101의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.
한 실시 예에 따르면, 상기 프로세서 120은 영상 데이터의 압축 또는 압축된 영상 데이터의 복원을 위한 처리를 실행할 수 있다. 예컨대, 상기 프로세서 120이 하나의 AP와 하나의 영상 처리 프로세서를 포함하는 경우, 상기 AP는 영상 데이터를 압축하여 상기 영상 처리 프로세서로 제공할 수 있다. 이런 경우, 상기 영상 처리 프로세서는 압축된 영상 데이터를 복원하여 디스플레이할 수 있다. 예컨대, 상기 프로세서 120이 하나의 AP와 하나의 영상 프로세서를 포함하는 경우, 상기 AP는 압축하지 않은 영상 데이터를 상기 영상 처리 프로세서로 제공할 수 있다. 이런 경우, 상기 영상 처리 프로세서는 상기 AP로부터 제공된 영상 데이터를 압축하고, 디스플레이를 위해 상기 압축된 영상 데이터를 복원할 수 있다.
상기 메모리 130은, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 상기 메모리 130은, 예를 들면, 상기 전자 장치 101의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 한 실시 예에 따르면, 상기 메모리 130은 소프트웨어 및/또는 프로그램 140을 저장할 수 있다. 상기 프로그램 140은, 예를 들면, 커널 141, 미들웨어 143, 어플리케이션 프로그래밍 인터페이스 (application programming interface (API)) 145, 및/또는 어플리케이션 프로그램 (또는 “어플리케이션”) 147 등을 포함할 수 있다. 상기 커널 141, 미들웨어 143, 또는 API 145의 적어도 일부는, 운영 시스템 (operating system (OS))라 불릴 수 있다.
상기 커널 141은, 예를 들면, 다른 프로그램들 (예: 상기 미들웨어 143, 상기 API 145, 또는 상기 어플리케이션 프로그램 147)에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들 (예: 상기 버스 110, 상기 프로세서 120, 또는 상기 메모리 130 등)을 제어 또는 관리할 수 있다. 또한, 상기 커널 141은 상기 미들웨어 143, 상기 API 145, 또는 상기 어플리케이션 프로그램 147에서 상기 전자 장치 101의 개별 구성요소에 접근함으로써, 시스템 리소스들을 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다.
상기 미들웨어 143은, 예를 들면, 상기 API 145 또는 상기 어플리케이션 프로그램 147이 상기 커널 141과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다. 또한, 상기 미들웨어 143은 상기 어플리케이션 프로그램 147로부터 수신된 작업 요청들과 관련하여, 예를 들면, 상기 어플리케이션 프로그램 147 중 적어도 하나의 어플리케이션에 상기 전자 장치 101의 시스템 리소스 (예: 상기 버스 110, 상기 프로세서 120, 또는 상기 메모리 130 등)를 사용할 수 있는 우선 순위를 배정하는 등의 방법을 이용하여 작업 요청에 대한 제어 (예: 스케줄링 또는 로드 밸런싱)을 수행할 수 있다.
상기 API 145는, 예를 들면, 상기 어플리케이션 147이 상기 커널 141 또는 상기 미들웨어 143에서 제공되는 기능을 제어하기 위한 인터페이스로, 예를 들면, 파일 제어, 창 제어, 화상 처리, 또는 문자 제어 등을 위한 적어도 하나의 인터페이스 또는 함수 (예: 명령어)를 포함할 수 있다.
상기 입출력 인터페이스 150은, 예를 들면, 사용자 또는 다른 외부 기기로부터 입력된 명령 또는 데이터를 상기 전자 장치 101의 다른 구성요소(들)에 전달할 수 있는 인터페이스의 역할을 할 수 있다. 또한, 상기 입출력 인터페이스 150은 상기 전자 장치 101의 다른 구성요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다.
상기 디스플레이 160은, 예를 들면, 액정 디스플레이 (LCD), 발광 다이오드 (LED) 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 마이크로 전자기계 시스템 (Micro electromechanical systems, MEMS) 디스플레이, 또는 전자종이 (electronic paper) 디스플레이를 포함할 수 있다. 상기 디스플레이 160은, 예를 들면, 사용자에게 각종 콘텐츠 (예: 텍스트, 이미지, 비디오, 아이콘, 또는 심볼 등)을 표시할 수 있다. 상기 디스플레이 160은, 터치 스크린을 포함할 수 있으며, 예를 들면, 전자 펜 또는 사용자의 신체의 일부를 이용한 터치, 제스쳐, 근접, 또는 호버링 입력을 수신할 수 있다.
상기 통신 인터페이스 170은, 예를 들면, 상기 전자 장치 101과 외부 장치 (예: 제 1 외부 전자 장치 102, 제 2 외부 전자 장치 104, 또는 서버 106) 간의 통신을 설정할 수 있다. 예를 들면, 상기 통신 인터페이스 170은 무선 통신 또는 유선 통신을 통해서 네트워크 162에 연결되어 상기 외부 장치 (예: 상기 제 2 외부 전자장치 104 또는 서버 106)와 통신할 수 있다.
상기 무선 통신은, 예를 들면, 셀룰러 통신 프로토콜로서, 예를 들면, LTE, LTE-A, CDMA, WCDMA, UMTS, WiBro, 또는 GSM 등 중 적어도 하나를 사용할 수 있다. 상기 유선 통신은, 예를 들면, USB (universal serial bus), HDMI (high definition multimedia interface), RS-232 (recommended standard 232), 또는 POTS (plain old telephone service) 등 중 적어도 하나를 포함할 수 있다. 상기 네트워크 162는 통신 네트워크 (telecommunications network), 예를 들면, 컴퓨터 네트워크 (computer network)(예: LAN 또는 WAN), 인터넷 (internet), 또는 전화망 (telephone network) 중 적어도 하나를 포함할 수 있다.
상기 제 1 및 제 2 외부 전자 장치 102, 104 각각은 상기 전자 장치 101과 동일한 또는 다른 종류의 장치일 수 있다. 한 실시 예에 따르면, 상기 서버 106은 하나 또는 그 이상의 서버들의 그룹을 포함할 수 있다. 다양한 실시 예에 따르면, 상기 전자 장치 101에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 전자 장치 (예: 전자 장치 102, 104, 또는 서버 106)에서 실행될 수 있다. 한 실시 예에 따르면, 상기 전자 장치 101이 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 상기 전자 장치 101은 상기 기능 또는 상기 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 다른 장치 (예: 전자 장치 102, 104, 또는 서버 106)에게 요청할 수 있다. 상기 다른 전자 장치 (예: 전자 장치 102, 104, 또는 서버 106)는 상기 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 상기 전자 장치 101로 전달할 수 있다. 상기 전자 장치 101은 수신된 결과를 그대로 또는 추가적으로 처리하여 상기 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
도 2는 다양한 실시 예에 따른 전자 장치 201의 블록 구성을 도시한 도면이다.
도 2를 참조하면, 전자 장치 201은, 예를 들면, 도 1에 도시된 전자 장치 101의 전체 또는 일부를 포함할 수 있다. 상기 전자 장치 201은 하나 이상의 어플리케이션 프로세서 (AP: application processor) 210, 통신 모듈 220, SIM (subscriber identification module) 카드 224, 메모리 230, 센서 모듈 240, 입력 장치 250, 디스플레이 260, 인터페이스 270, 오디오 모듈 280, 카메라 모듈 291, 전력 관리 모듈 295, 배터리 296, 인디케이터 297, 및 모터 298 등을 포함할 수 있다.
상기 AP 210은, 예를 들면, 운영 체제 또는 응용 프로그램을 구동하여 상기 AP 210에 연결된 다수의 하드웨어 또는 소프트웨어 구성요소들을 제어할 수 있고, 각종 데이터 처리 및 연산을 수행할 수 있다. 상기 AP 210은, 예를 들면, SoC (system on chip) 로 구현될 수 있다. 한 실시 예에 따르면, 상기 AP 210은 GPU (graphic processing unit) 및/또는 이미지 신호 프로세서 (image signal processor)를 더 포함할 수 있다. 상기 AP 210은 도 2에 도시된 구성요소들 중 적어도 일부 (예: 셀룰러 모듈 221)를 포함할 수도 있다. 상기 AP 210 는 다른 구성요소들 (예: 비휘발성 메모리) 중 적어도 하나로부터 수신된 명령 또는 데이터를 휘발성 메모리에 로드(load)하여 처리하고, 다양한 데이터를 비휘발성 메모리에 저장(store)할 수 있다.
상기 통신 모듈 220은, 도 1의 상기 통신 인터페이스 160와 동일 또는 유사한 구성을 가질 수 있다. 상기 통신 모듈 220은, 예를 들면, 셀룰러 모듈 221, Wifi 모듈 223, BT 모듈 225, GPS 모듈 227, NFC 모듈 228 및 RF (radio frequency) 모듈 229를 포함할 수 있다.
상기 셀룰러 모듈 221은, 예를 들면, 통신망을 통해서 음성 통화, 영상 통화, 문자 서비스, 또는 인터넷 서비스 등을 제공할 수 있다. 한 실시 예에 따르면, 상기 셀룰러 모듈 221은 가입자 식별 모듈 (예: SIM 카드 224)을 이용하여 통신 네트워크 내에서 전자 장치 201의 구별 및 인증을 수행할 수 있다. 한 실시 예에 따르면, 상기 셀룰러 모듈 221은 상기 AP 210이 제공할 수 있는 기능 중 적어도 일부 기능을 수행할 수 있다. 한 실시 예에 따르면, 상기 셀룰러 모듈 221은 커뮤니케이션 프로세서 (CP: communication processor)를 포함할 수 있다.
상기 Wifi 모듈 223, 상기 BT 모듈 225, 상기 GPS 모듈 227 또는 상기 NFC 모듈 228 각각은, 예를 들면, 해당하는 모듈을 통해서 송수신되는 데이터를 처리하기 위한 프로세서를 포함할 수 있다. 어떤 실시 예에 따르면, 셀룰러 모듈 221, Wifi 모듈 223, BT 모듈 225, GPS 모듈 227 또는 NFC 모듈 228 중 적어도 일부 (예: 두 개 이상)는 하나의 IC (integrated chip) 또는 IC 패키지 내에 포함될 수 있다.
상기 RF 모듈 229는, 예를 들면, 통신 신호 (예: RF 신호)를 송수신할 수 있다. 상기 RF 모듈 229는, 예를 들면, 트랜시버 (transceiver), PAM (power amp module), 주파수 필터 (frequency filter), LNA (low noise amplifier), 또는 안테나 등을 포함할 수 있다. 다른 실시 예에 따르면, 셀룰러 모듈 221, Wifi 모듈 223, BT 모듈 225, GPS 모듈 227 또는 NFC 모듈 228 중 적어도 하나는 별개의 RF 모듈을 통하여 RF 신호를 송수신할 수 있다.
상기 SIM 카드 224는, 예를 들면, 가입자 식별 모듈을 포함하는 카드 및/또는 내장 SIM (embedded SIM)을 포함할 수 있으며, 고유한 식별 정보 (예: ICCID(integrated circuit card identifier)) 또는 가입자 정보 (예: IMSI(international mobile subscriber identity))를 포함할 수 있다.
상기 메모리 230 (예: 상기 메모리 230)은, 예를 들면, 내장 메모리 232 또는 외장 메모리 234를 포함할 수 있다. 상기 내장 메모리 232는, 예를 들면, 휘발성 메모리(예: DRAM (dynamic RAM), SRAM (static RAM), 또는 SDRAM (synchronous dynamic RAM) 등), 비휘발성 메모리 (non-volatile Memory)(예: OTPROM(one time programmable ROM), PROM (programmable ROM), EPROM (erasable and programmable ROM), EEPROM (electrically erasable and programmable ROM), mask ROM, flash ROM, 플래시 메모리 (NAND flash 또는 NOR flash 등), 하드 드라이브, 또는 솔리드 스테이트 드라이브 (Solid State Drive (SSD)) 중 적어도 하나를 포함할 수 있다.
상기 외장 메모리 234는 flash drive, 예를 들면, CF (compact flash), SD (secure digital), Micro-SD (micro secure digital), Mini-SD (mini secure digital), xD (extreme digital), 또는 메모리 스틱 (memory stick) 등을 더 포함할 수 있다. 상기 외장 메모리 234는 다양한 인터페이스를 통하여 상기 전자 장치 201과 기능적으로 및/또는 물리적으로 연결될 수 있다.
상기 센서 모듈 240은, 예를 들면, 물리 량을 계측하거나 전자 장치 201의 작동 상태를 감지하여, 계측 또는 감지된 정보를 전기 신호로 변환할 수 있다. 상기 센서 모듈 240은, 예를 들면, 제스처 센서 240A, 자이로 센서 240B, 기압 센서 240C, 마그네틱 센서 240D, 가속도 센서 240E, 그립 센서 240F, 근접 센서 240G, 칼라 센서 240H (예: RGB (red, green, blue) 센서), 생체 센서 240I, 온/습도 센서 240J, 조도 센서 240K, 또는 UV (ultra violet) 센서 240M 중의 적어도 하나를 포함할 수 있다. 추가적으로 또는 대체적으로, 상기 센서 모듈 240은, 예를 들면, 후각 센서 (E-nose sensor), EMG 센서 (electromyography sensor), EEG 센서 (electroencephalogram sensor), ECG 센서 (electrocardiogram sensor), IR (infrared) 센서, 홍채 센서 및/또는 지문 센서를 포함할 수 있다. 상기 센서 모듈 240은 그 안에 속한 적어도 하나 이상의 센서들을 제어하기 위한 제어 회로를 더 포함할 수 있다. 어떤 실시 예에서는, 전자 장치 201는 AP 210의 일부로서 또는 별도로, 센서 모듈 240을 제어하도록 구성된 프로세서를 더 포함하여, 상기 AP 210이 슬립 (sleep) 상태에 있는 동안, 센서 모듈 240을 제어할 수 있다.
상기 입력 장치 250은, 예를 들면, 터치 패널 (touch panel) 252, (디지털) 펜 센서 (pen sensor) 254, 키 (key) 256, 또는 초음파 (ultrasonic) 입력 장치 258을 포함할 수 있다. 상기 터치 패널 252는, 예를 들면, 정전식, 감압식, 적외선 방식, 또는 초음파 방식 중 적어도 하나의 방식을 사용할 수 있다. 또한, 상기 터치 패널 252는 제어 회로를 더 포함할 수도 있다. 상기 터치 패널 252는 택타일 레이어 (tactile layer)를 더 포함하여, 사용자에게 촉각 반응을 제공할 수 있다.
상기 (디지털) 펜 센서 254는, 예를 들면, 터치 패널의 일부이거나, 별도의 인식용 시트 (sheet)를 포함할 수 있다. 상기 키 256은, 예를 들면, 물리적인 버튼, 광학식 키, 또는 키 패드를 포함할 수 있다. 상기 초음파 (ultrasonic) 입력 장치 258은 초음파 신호를 발생하는 입력 도구를 통해, 전자 장치 201에서 마이크 (예: 마이크 288)로 음파를 감지하여 데이터를 확인할 수 있다.
상기 디스플레이 260 (예: 상기 디스플레이 160)은 패널 262, 홀로그램 장치 264, 또는 프로젝터 266을 포함할 수 있다. 상기 패널 262는, 도 1의 디스플레이 160과 동일 또는 유사한 구성을 포함할 수 있다. 상기 패널 262는, 예를 들면, 유연하게 (flexible), 투명하게 (transparent), 또는 착용할 수 있게 (wearable) 구현될 수 있다. 상기 패널 262는 상기 터치 패널 252와 하나의 모듈로 구성될 수도 있다. 상기 홀로그램 장치 264은 빛의 간섭을 이용하여 입체 영상을 허공에 보여줄 수 있다. 상기 프로젝터 266은 스크린에 빛을 투사하여 영상을 표시할 수 있다. 상기 스크린은, 예를 들면, 상기 전자 장치 201의 내부 또는 외부에 위치할 수 있다. 한 실시 예에 따르면, 상기 디스플레이 260은 상기 패널 262, 상기 홀로그램 장치 264, 또는 프로젝터 266을 제어하기 위한 제어 회로를 더 포함할 수 있다.
상기 인터페이스 270은, 예를 들면, HDMI (high-definition multimedia interface) 272, USB (universal serial bus) 274, 광 인터페이스 (optical interface) 276, 또는 D-sub (D-subminiature) 278을 포함할 수 있다. 상기 인터페이스 270은, 예를 들면, 도 1에 도시된 통신 인터페이스 160에 포함될 수 있다. 추가적으로 또는 대체적으로, 상기 인터페이스 270은, 예를 들면, MHL (mobile high-definition link) 인터페이스, SD (secure Digital) 카드/MMC (multi-media card) 인터페이스, 또는 IrDA (infrared data association) 규격 인터페이스를 포함할 수 있다.
상기 오디오 모듈 280은, 예를 들면, 소리 (sound)와 전기 신호를 쌍방향으로 변환시킬 수 있다. 상기 오디오 모듈 280의 적어도 일부 구성요소는, 예를 들면, 도 1 에 도시된 입출력 인터페이스 140에 포함될 수 있다. 상기 오디오 모듈 280은, 예를 들면, 스피커 282, 리시버 284, 이어폰 286, 또는 마이크 288 등을 통해 입력 또는 출력되는 소리 정보를 처리할 수 있다.
상기 카메라 모듈 291은, 예를 들면, 정지 영상 및 동영상을 촬영할 수 있는 장치로서, 한 실시 예에 따르면, 하나 이상의 이미지 센서 (예: 전면 센서 또는 후면 센서), 렌즈, ISP (image signal processor), 또는 플래쉬 (flash)(예: LED 또는 xenon lamp)를 포함할 수 있다.
상기 전력 관리 모듈 295는, 예를 들면, 상기 전자 장치 201의 전력을 관리할 수 있다. 한 실시 예에 따르면, 상기 전력 관리 모듈 295는 PMIC (power management integrated circuit), 충전 IC (charger integrated circuit), 또는 배터리 또는 연료 게이지 (battery or fuel gauge)를 포함할 수 있다. 상기 PMIC는, 유선 및/또는 무선 충전 방식을 가질 수 있다. 무선 충전 방식은, 예를 들면, 자기공명 방식, 자기유도 방식 또는 전자기파 방식 등을 포함하며, 무선 충전을 위한 부가적인 회로, 예를 들면, 코일 루프, 공진 회로, 또는 정류기 등을 더 포함할 수 있다. 상기 배터리 게이지는, 예를 들면, 상기 배터리 296의 잔량, 충전 중 전압, 전류, 또는 온도를 측정할 수 있다. 상기 배터리 296은, 예를 들면, 충전식 전지 (rechargeable battery) 및/또는 태양 전지 (solar battery)를 포함할 수 있다.
상기 인디케이터 297은 상기 전자 장치 201 혹은 그 일부 (예: 상기 AP 210)의 특정 상태, 예를 들면, 부팅 상태, 메시지 상태 또는 충전 상태 등을 표시할 수 있다. 상기 모터 298은 전기적 신호를 기계적 진동으로 변환할 수 있고, 진동 (vibration), 또는 햅틱 (haptic) 효과 등을 발생시킬 수 있다. 도시되지는 않았으나, 상기 전자 장치 201은 모바일 TV 지원을 위한 처리 장치 (예: GPU)를 포함할 수 있다. 상기 모바일 TV지원을 위한 처리 장치는, 예를 들면, DMB (digital multimedia broadcasting), DVB (digital video broadcasting), 또는 미디어 플로우 (media flow) 등의 규격에 따른 미디어 데이터를 처리할 수 있다.
상기 전자 장치의 전술한 구성요소들 각각은 하나 또는 그 이상의 부품 (component)으로 구성될 수 있으며, 해당 구성 요소의 명칭은 전자 장치의 종류에 따라서 달라질 수 있다. 다양한 실시 예에서, 전자 장치는 전술한 구성요소 중 적어도 하나를 포함하여 구성될 수 있으며, 일부 구성요소가 생략되거나 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 또한, 다양한 실시 예에 따른 전자 장치의 구성 요소들 중 일부가 결합되어 하나의 개체 (entity)로 구성됨으로써, 결합되기 이전의 해당 구성 요소들의 기능을 동일하게 수행할 수 있다.
도 3은 다양한 실시 예에 따른 프로그램 모듈 310의 블록 구성을 도시한 도면이다.
한 실시 예에 따르면, 상기 프로그램 모듈 310 (예: 프로그램 140)은 전자 장치 (예: 상기 전자 장치 101)에 관련된 자원을 제어하는 운영 체제 (operation system (OS)) 및/또는 운영 체제 상에서 구동되는 다양한 어플리케이션 (예: 상기 어플리케이션 프로그램 147)을 포함할 수 있다. 상기 운영 체제는, 예를 들면, 안드로이드 (Android), iOS, 윈도우 (Windows), 심비안 (Symbian), 타이젠 (Tizen), 또는 바다 (Bada) 등이 될 수 있다.
프로그램 모듈 310은 커널 320, 미들웨어 330, API (application programming interface) 360, 및/또는 어플리케이션 370을 포함할 수 있다. 상기 프로그램 모듈 310의 적어도 일부는 전자 장치 상에 프리로드 (preload) 되거나, 서버 (예: 서버 106)로부터 다운로드 (download) 가능하다.
상기 커널 320 (예: 도 1의 커널 141)은, 예를 들면, 시스템 리소스 매니저 321 또는 디바이스 드라이버 323를 포함할 수 있다. 상기 시스템 리소스 매니저 321는 시스템 리소스의 제어, 할당, 또는 회수 등을 수행할 수 있다. 한 실시 예에 따르면, 상기 시스템 리소스 매니저 321은 프로세스 관리부, 메모리 관리부, 또는 파일 시스템 관리부 등을 포함할 수 있다. 상기 디바이스 드라이버 323은, 예를 들면, 디스플레이 드라이버, 카메라 드라이버, 블루투스 드라이버, 공유 메모리 드라이버, USB 드라이버, 키 패드 드라이버, WiFi 드라이버, 오디오 드라이버, 또는 IPC (inter-process communication) 드라이버를 포함할 수 있다.
상기 미들웨어 330은, 예를 들면, 상기 어플리케이션 370이 공통적으로 필요로 하는 기능을 제공하거나, 상기 어플리케이션 370이 전자 장치 내부의 제한된 시스템 자원을 효율적으로 사용할 수 있도록 상기 API 360을 통해 다양한 기능들을 상기 어플리케이션 370으로 제공할 수 있다. 한 실시 예에 따르면, 상기 미들웨어 330 (예: 상기 미들웨어 143)은 런타임 라이브러리 335, 어플리케이션 매니저 (application manager) 341, 윈도우 매니저 (window manager) 342, 멀티미디어 매니저 (multimedia manager) 343, 리소스 매니저 (resource manager) 344, 파워 매니저 (power manager) 345, 데이터베이스 매니저 (database manager) 346, 패키지 매니저 347, 연결 매니저 (connectivity manager) 348, 통지 매니저 (notification manager) 349, 위치 매니저 (location manager) 350, 그래픽 매니저 (graphic manager) 351, 또는 보안 매니저 (security manager) 352 중 적어도 하나를 포함할 수 있다.
상기 런타임 라이브러리 335는, 예를 들면, 상기 어플리케이션 370이 실행되는 동안에 프로그래밍 언어를 통해 새로운 기능을 추가하기 위해 컴파일러가 사용하는 라이브러리 모듈을 포함할 수 있다. 상기 런타임 라이브러리 335는 입출력 관리, 메모리 관리, 또는 산술 함수에 대한 기능 등을 수행할 수 있다.
상기 어플리케이션 매니저 341은, 예를 들면, 상기 어플리케이션 370 중 적어도 하나의 어플리케이션의 생명 주기 (life cycle)를 관리할 수 있다. 상기 윈도우 매니저 342는 화면에서 사용하는 GUI 자원을 관리할 수 있다. 상기 멀티미디어 매니저 343은 다양한 미디어 파일들의 재생에 필요한 포맷을 파악하고, 해당 포맷에 맞는 코덱 (codec)을 이용하여 미디어 파일의 인코딩 (encoding) 또는 디코딩 (decoding)을 수행할 수 있다. 상기 리소스 매니저 344는 상기 어플리케이션 370 중 적어도 어느 하나의 어플리케이션의 소스 코드, 메모리 또는 저장 공간 등의 자원을 관리할 수 있다.
상기 파워 매니저 345는, 예를 들면, 바이오스 (BIOS: basic input/output system) 등과 함께 동작하여 배터리 (battery) 또는 전원을 관리하고, 전자 장치의 동작에 필요한 전력 정보 등을 제공할 수 있다. 상기 데이터베이스 매니저 346은 상기 어플리케이션 370 중 적어도 하나의 어플리케이션에서 사용할 데이터베이스를 생성, 검색, 또는 변경할 수 있다. 상기 패키지 매니저 347는 패키지 파일의 형태로 배포되는 어플리케이션의 설치 또는 업데이트를 관리할 수 있다.
상기 연결 매니저 348은, 예를 들면, WIFI 또는 블루투스 등의 무선 연결을 관리할 수 있다. 상기 통지 매니저 349는 도착 메시지, 약속, 근접성 알림 등의 사건 (event)을 사용자에게 방해되지 않는 방식으로 표시 또는 통지할 수 있다. 상기 위치 매니저 350은 전자 장치의 위치 정보를 관리할 수 있다. 상기 그래픽 매니저 351은 사용자에게 제공될 그래픽 효과 또는 이와 관련된 사용자 인터페이스를 관리할 수 있다. 상기 보안 매니저 352는 시스템 보안 또는 사용자 인증 등에 필요한 제반 보안 기능을 제공할 수 있다. 한 실시 예에 따르면, 전자 장치 (예: 상기 전자 장치 101)가 전화 기능을 포함한 경우, 상기 미들웨어 330은 상기 전자 장치의 음성 또는 영상 통화 기능을 관리하기 위한 통화 매니저 (telephony manager)를 더 포함할 수 있다.
상기 미들웨어 330은 전술한 구성요소들의 다양한 기능의 조합을 형성하는 미들웨어 모듈을 포함할 수 있다. 상기 미들웨어 330은 차별화된 기능을 제공하기 위해 운영 체제의 종류 별로 특화된 모듈을 제공할 수 있다. 또한, 상기 미들웨어 330은 동적으로 기존의 구성요소를 일부 삭제하거나 새로운 구성요소들을 추가할 수 있다.
상기 API 360 (예: 상기 API 145)은, 예를 들면, API 프로그래밍 함수들의 집합으로, 운영 체제에 따라 다른 구성으로 제공될 수 있다. 예를 들면, 안드로이드 또는 iOS의 경우, 플랫폼 별로 하나의 API 셋을 제공할 수 있으며, 타이젠(Tizen)의 경우, 플랫폼 별로 두 개 이상의 API 셋을 제공할 수 있다.
상기 어플리케이션 370 (예: 상기 어플리케이션 프로그램 147)은, 예를 들면, 홈 371, 다이얼러 372, SMS/MMS 373, IM (instant message) 374, 브라우저 375, 카메라 376, 알람 377, 컨택트 378, 음성 다이얼 379, 이메일 380, 달력 381, 미디어 플레이어 382, 앨범 383, 또는 시계 384, 건강 관리 (health care)(예: 운동량 또는 혈당 등을 측정), 또는 환경 정보 제공 (예: 기압, 습도, 또는 온도 정보 등을 제공) 등의 기능을 제공할 수 있는 하나 이상의 어플리케이션을 포함할 수 있다.
한 실시 예에 따르면, 상기 어플리케이션 370은 상기 전자 장치 (예: 전자 장치 101)와 외부 전자 장치 (예: 전자 장치 102, 104) 사이의 정보 교환을 지원하는 어플리케이션 (이하, 설명의 편의 상, “정보 교환 어플리케이션”)을 포함할 수 있다. 상기 정보 교환 어플리케이션은, 예를 들면, 상기 외부 전자 장치에 특정 정보를 전달하기 위한 알림 전달 (notification relay) 어플리케이션, 또는 상기 외부 전자 장치를 관리하기 위한 장치 관리 (device management) 어플리케이션을 포함할 수 있다.
예를 들면, 상기 알림 전달 어플리케이션은 상기 전자 장치의 다른 어플리케이션 (예: SMS/MMS 어플리케이션, 이메일 어플리케이션, 건강 관리 어플리케이션, 또는 환경 정보 어플리케이션 등)에서 발생된 알림 정보를 외부 전자 장치 (예: 전자 장치 102, 104)로 전달하는 기능을 포함할 수 있다. 또한, 상기 알림 전달 어플리케이션은, 예를 들면, 외부 전자 장치로부터 알림 정보를 수신하여 사용자에게 제공할 수 있다. 상기 장치 관리 어플리케이션은, 예를 들면, 상기 전자 장치와 통신하는 외부 전자 장치 (예: 전자 장치 104)의 적어도 하나의 기능 (예: 외부 전자 장치 자체 (또는, 일부 구성 부품)의 턴-온/턴-오프 또는 디스플레이의 밝기 (또는, 해상도) 조절), 상기 외부 전자 장치에서 동작하는 어플리케이션 또는 상기 외부 전자 장치에서 제공되는 서비스 (예: 통화 서비스 또는 메시지 서비스)를 관리 (예: 설치, 삭제, 또는 업데이트)할 수 있다.
한 실시 예에 따르면, 상기 어플리케이션 370은 상기 외부 전자 장치 (예: 전자 장치 102, 104)의 속성 (예: 전자 장치의 속성으로서, 전자 장치의 종류가 모바일 의료 기기)에 따라 지정된 어플리케이션 (예: 건강 관리 어플리케이션)을 포함할 수 있다. 한 실시 예에 따르면, 상기 어플리케이션 370은 외부 전자 장치 (예: 서버 106 또는 전자 장치 102, 104)로부터 수신된 어플리케이션을 포함할 수 있다. 한 실시 예에 따르면, 상기 어플리케이션 370은 프리로드 어플리케이션 (preloaded Application) 또는 서버로부터 다운로드 가능한 제3자 어플리케이션 (third party application)을 포함할 수 있다. 도시된 실시 예에 따른 프로그램 모듈 310의 구성요소들의 명칭은 운영 체제의 종류에 따라서 달라질 수 있다.
다양한 실시 예에 따르면, 상기 프로그램 모듈 310의 적어도 일부는 소프트웨어, 펌웨어, 하드웨어, 또는 이들 중 적어도 둘 이상의 조합으로 구현될 수 있다. 상기 프로그램 모듈 310의 적어도 일부는, 예를 들면, 프로세서 (예: AP 210)에 의해 구현 (implement)(예: 실행)될 수 있다. 상기 프로그램 모듈 310의 적어도 일부는 하나 이상의 기능을 수행하기 위한, 예를 들면, 모듈, 프로그램, 루틴, 명령어 세트 (sets of instructions) 또는 프로세스 등을 포함할 수 있다.
본 문서에서 사용된 용어 “모듈”은, 예를 들면, 하드웨어, 소프트웨어 또는 펌웨어(firmware) 중 하나 또는 둘 이상의 조합을 포함하는 단위 (unit)를 의미할 수 있다. “모듈”은, 예를 들면, 유닛 (unit), 로직 (logic), 논리 블록 (logical block), 부품 (component), 또는 회로 (circuit) 등의 용어와 바꾸어 사용 (interchangeably use)될 수 있다. “모듈”은, 일체로 구성된 부품의 최소 단위 또는 그 일부가 될 수 있다. “모듈”은 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수도 있다. “모듈”은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들면,“모듈”은, 알려졌거나 앞으로 개발될, 어떤 동작들을 수행하는 ASIC (application-specific integrated circuit) 칩, FPGAs (field-programmable gate arrays) 또는 프로그램 가능 논리 장치 (programmable-logic device) 중 적어도 하나를 포함할 수 있다.
다양한 실시 예에 따른 장치 (예: 모듈들 또는 그 기능들) 또는 방법 (예: 동작들)의 적어도 일부는, 예컨대, 프로그램 모듈의 형태로 컴퓨터로 읽을 수 있는 저장매체 (computer-readable storage media)에 저장된 명령어로 구현될 수 있다. 상기 명령어는, 프로세서 (예: 상기 프로세서 120)에 의해 실행될 경우, 상기 하나 이상의 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 저장매체는, 예를 들면, 상기 메모리 130이 될 수 있다.
상기 컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체 (Magnetic Media)(예: 자기테이프), 광기록 매체 (Optical Media)(예: CD-ROM(Compact Disc Read Only Memory), DVD (Digital Versatile Disc), 자기-광 매체 (Magneto-Optical Media)(예: 플롭티컬 디스크(Floptical Disk)), 하드웨어 장치 (예: ROM(Read Only Memory), RAM (Random Access Memory), 또는 플래시 메모리 등) 등을 포함할 수 있다. 또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
다양한 실시 예에 따른 모듈 또는 프로그램 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 다양한 실시 예에 따른 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱 (heuristic)한 방법으로 실행될 수 있다. 또한, 일부 동작은 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
본 문서에 개시된 실시 예는 개시된, 기술 내용의 설명 및 이해를 위해 제시된 것이며, 본 개시의 범위를 한정하는 것은 아니다. 이로써, 본 개시의 범위는, 본 개시의 기술적 사상에 근거한 모든 변경 또는 다양한 다른 실시 예를 포함하는 것으로 해석되어야 한다.
후술될 실시 예에서는 시각적인 이미지 손실이 발생하지 않도록, 영상 프레임을 압축하는 이미지 처리 방안을 제안할 것이다. 이를 위해 인코더는 하나의 영상 프레임을 소정 크기의 데이터 블록들로 분할하고, 상기 데이터 블록 단위로 미리 설정된 다수의 압축 모드들 중 최소 에러 율이 예측되는 압축 모드를 획득할 수 있다.
다양한 실시 예에 따르면, 인코더는 최소 에러 율을 찾기 위해, 미리 설정된 다수의 압축 모드 별로 에러 율을 산출할 수 있다. 예를 들어 미리 설정된 다수의 압축 모드 중 하나의 압축 모드를 사용하여 하나의 데이터 블록에 대한 인코딩을 수행하고, 상기 인코딩에 의해 생성한 압축 비트 스트림을 기반으로 데이터 블록을 재 구성할 수 있다. 상기 하나의 압축 모드에 대한 에러 율은 압축 이전의 데이터 블록과 재 구성된 데이터 블록을 기반으로 산출할 수 있을 것이다.
한 실시 예에 따르면, 상기 미리 결정된 다수의 압축 모드들의 에러 율은 동일한 절차에 의해 산출될 수 있다. 모든 압축 모드들의 에러 율은 해당 압축 모드를 기반으로 데이터 블록을 인코딩하고, 상기 인코딩에 따른 압축 비트 스트립에 의해 데이터 블록을 재 구성하며, 상기 재 구성된 데이터 블록과 원 데이터 블록에 의한 에러 율을 획득하는 동일한 절차에 의해 산출될 수 있다.
한 실시 예에 따르면, 인코더는 최소 에러 율이 예측되는 압축 모드를 획득하면, 상기 획득한 압축 모드에 따른 압축 비트 스트림을 최종 출력할 수 있다. 상기 압축 비트 스트림을 구성하는 필드들은 압축 모드 별로 다르게 정의될 수 있다. 하지만 압축 비트 스트림을 구성하는 필드들 중 일부 필드는 모든 압축 모드들에 대해 공통으로 요구될 수 있다. 예컨대 최소 에러 율을 얻기 위해 사용된 압축 모드를 식별하는 정보, 즉 모드 선택 정보는 모든 압축 모드들에 의해 생성된 압축 비트 스트림이 공통으로 포함할 수 있다.
한 실시 예에 따르면, 인코더는 미리 설정된 다수의 압축 모드들에 의한 인코딩을 수행하기 위해, 예측 테이블을 최신 정보로 관리할 수 있다. 예를 들어 상기 인코더는 각 압축 모드에 대응한 에러 율을 산출한 후, 그 결과가 예측 테이블에 반영될 수 있다. 상기 인코더는 에러 율을 산출하면서 획득한 정보를 사용하여 예측 테이블의 정보를 갱신할 수 있다. 상기 예측 테이블은 하나의 대표 값 (RV: representative value) 테이블을 포함할 수 있다.
이하 개시에서 제안하는 다양한 실시 예들을 첨부된 도면을 참조하여 구체적으로 설명하도록 한다.
도 4는 다양한 실시 예에 따른, 영상 처리 디바이스의 구성을 도시한 도면이다.
도 4를 참조하면, 영상 처리 디바이스 400 (예: 전자 장치 (100))은 영상 처리를 통해 영상을 디스플레이할 수 있다. 한 실시 예에 따르면, 상기 영상 처리 디바이스 400은 영상 압축 및 복원 등의 영상 처리를 수행할 수 있다. 한 실시 예에 따르면, 상기 영상 처리 디바이스 400은 정지 영상 또는 동 영상에 상응한 영상 프레임을 압축하거나 압축 영상 프레임을 복원할 수 있다.
상기 영상 처리 디바이스 400은 압축 영상 프레임을 지정된 기록매체에 기록하거나 소정의 통신망을 통해 외부 장치로 전송할 수도 있다. 한 실시 예에 따르면, 상기 영상 처리 디바이스는 기록매체에 기록된 압축 영상 프레임을 복원하거나 외부 장치로부터 소정의 통신망을 통해 전송되는 압축 영상 프레임을 복원할 수도 있다.
한 실시 예에 따르면, 상기 영상 처리 디바이스 400은 내부에서 영상 프레임을 압축하거나 복원하는 것을 가정하고 있다. 한 실시 예에 따르면, 상기 영상 처리 디바이스 400은 두 개의 영상 처리 모듈들 410, 420과, 상기 두 개의 영상 처리 모듈들 410, 420 간을 연결하는 인터페이스 430을 포함할 수 있다.
한 실시 예에 따르면, 상기 제 2 영상 처리 모듈 420은 소정의 인터페이스 430을 통해 상기 제 1 영상 처리 모듈 410으로부터 영상 프레임을 제공받을 수 있다. 상기 제 1 영상 처리 모듈 410으로부터 제 2 영상 처리 모듈 420으로 제공되는 영상 프레임은 압축되거나 압축되지 않을 수도 있다.
한 실시 예에 따르면, 제 1 영상 처리 모듈 410이 인코더(encoder)를 구비하는 경우, 상기 제 1 영상 처리 모듈 410은 압축된 영상 프레임을 상기 제 2 영상 처리 모듈 420으로 제공할 수 있다. 이런 경우, 상기 제 2 영상 처리 모듈 420은 별도의 인코더를 포함하지 않을 수 있다.
한 실시 예에 따르면, 제 1 영상 처리 모듈 410이 인코더를 구비하지 않을 경우, 상기 제 1 영상 처리 모듈 410은 압축되지 않은 영상 프레임을 상기 제 2 영상 처리 모듈 420으로 제공할 수 있다. 이런 경우, 상기 제 2 영상 처리 모듈 420은 제공받은 영상 프레임을 압축하기 위해, 인코더를 포함할 수 있다.
예를 들어, 제 1 영상 처리 모듈 410에서 제 2 영상 처리 모듈 420으로 압축된 영상 데이터를 제공하는 경우, 제 1 영상 처리 모듈 410은 내부 인코더에 의해 영상 데이터를 압축하고, 상기 압축한 영상 데이터를 인터페이스 430을 통해 제 2 영상 처리 모듈 420으로 전달할 수 있다. 상기 제 2 영상 처리 모듈 420은 인터페이스430을 통해 전달받은 압축된 영상 데이터를 저장 영역인 프레임 버퍼 (frame buffer)에 저장할 수 있다.
한 실시 예에 따르면, 상기 제 2 영상 처리 모듈 420은 상기 프레임 버퍼에 저장된 압축된 영상 데이터를 복원하고, 상기 복원한 영상 데이터를 디스플레이를 위해 출력할 수 있다. 다른 실시 예에 따르면, 상기 제 2 영상 처리 모듈 420은 압축된 영상 데이터를 직접 복원하고, 상기 복원한 영상 데이터를 디스플레이를 위해 출력할 수도 있다. 이런 경우, 상기 제 2 영상 처리 모듈 420은 압축된 영상 데이터를 임시 저장하는 프레임 버퍼를 포함하지 않을 수 있다.
한 실시 예에 따르면, 제 1 영상 처리 모듈 410이 영상 데이터를 압축하여 전송할 경우, 제 2 영상 처리 모듈 420은 인코더를 구비하고 있더라도, 제 1 영상 처리 모듈 410으로부터 수신한 영상 데이터의 압축 여부를 판단하여, 제 2 영상 처리 모듈 420에 포함되어 있는 인코더를 사용하지 않을 수 있다.
상술한 실시 예에 따르면, 인터페이스를 통해 압축 영상 데이터를 전달하는 경우, 제 1 영상 처리 모듈 410은 영상 데이터의 전달을 위해 사용되는 인터페이스 430을 통해 전송하는 영상 데이터의 대역폭 (bandwidth)을 감소시켜 전송할 수 있다.
예를 들어, 제 1 영상 처리 모듈 410에서 제 2 영상 처리 모듈 420으로 압축되지 않은 영상 데이터를 제공하는 경우, 제 1 영상 처리 모듈 410은 압축되지 않은 영상 데이터를 인터페이스 430을 통해 제 2 영상 처리 모듈 420으로 전달할 수 있다. 상기 제 2 영상 처리 모듈 420은 인터페이스 430을 통해 전달받은 영상 데이터를 압축하고, 상기 압축한 영상 데이터를 저장 영역인 프레임 버퍼에 저장할 수 있다.
한 실시 예에 따르면, 상기 제 2 영상 처리 모듈 420은 프레임 버퍼에 저장된 압축된 영상 데이터를 복원하고, 상기 복원한 영상 데이터를 디스플레이를 위해 출력할 수 있다. 다른 실시 예에 따르면, 상기 제 2 영상 처리 모듈 420은 압축된 영상 데이터를 직접 복원하고, 상기 복원한 영상 데이터를 디스플레이를 위해 출력할 수도 있다. 이런 경우, 상기 제 2 영상 처리 모듈 420은 압축된 영상 데이터를 임시 저장하는 프레임 버퍼를 포함하지 않을 수 있다.
한 실시 예에 따르면, 도 4에서의 제 1 영상 처리 모듈 410은 어플리케이션 프로세서 (AP: Application Processor)를 포함하고, 제2 영상 처리 모듈 420은 디스플레이 구동 칩 (DDI: Display Driver IC) 또는 타이밍 컨트롤러 (T-CON: Timing Controller)을 포함할 수 있다.
예를 들어 영상 처리 디바이스에서 제 1 영상 처리 모듈 410은 AP를 포함하고, 제 2 영상 처리 모듈 420은 DDI를 포함할 수 있다.
상기 AP와 상기 DDI는 스마트 폰 등의 모바일 기기에 있어서, 디스플레이에 표시할 영상 처리를 담당하는 부품이 될 수 있다.
상기 AP는 압축 또는 압축되지 않은 영상 프레임을 인터페이스를 통해 상기 DDI로 제공할 수 있다. 상기 인터페이스는 영상 데이터의 전달이 용이한 고속의 직렬 인터페이스 (serial interface)가 사용될 수 있다. 상기 고속의 직렬 인터페이스로는 MIPI (mobile industry processor interface), eDP (embedded display port), SPI(serial peripheral interface) 등을 포함할 수 있다.
다른 예로 영상 처리 디바이스에서 제 1 영상 처리 모듈 410은 AP를 포함하고, 제 2 영상 처리 모듈 420은 T-CON을 포함할 수 있다. 상기 AP와 상기 T-CON은 태블릿 PC 등의 모바일 기기에 있어서, 디스플레이에 표시할 영상 처리를 담당하는 부품 또는 모듈이 될 수 있다.
상기 AP는 압축 또는 압축되지 않은 영상 프레임을 인터페이스를 통해 상기 T-CON으로 제공할 수 있다. 상기 인터페이스는 영상 데이터의 전달이 용이한 고속의 직렬 인터페이스가 사용될 수도 있다. 상기 고속의 직렬 인터페이스로는 예컨대, MIPI와, eDP, SPI 등을 포함할 수 있다.
한 실시 예에 따르면, 영상 처리 디바이스에서 제 2 영상 처리 모듈 420은 복수의 T-CON들 (T-CON1, T-CON2)을 포함할 수 있다. 상기 복수의 T-CON들 (T-CON1, T-CON2)은, 프로세서로부터 이미지 (IMG1, IMG2), 또는 신호들 (예컨대 커맨드, 메인 클럭, 수직 동기화 신호 등) 중 적어도 하나를 수신하고, 상기 수신된 신호들에 기초하여 소스 드라이버 (SDRV1, SDRV2)를 제어하기 위한 제어신호를 생성할 수 있다. 한 실시 예에 따르면, 복수의 T-CON들 (T-CON1, T-CON2)은, 이미지 처리부를 포함하고, 수신한 이미지 (IMG1, IMG2)를 처리할 수 있다. 한 실시 예에 따르면, 이미지 처리부는 복수의 T-CON들 (T-CON1, T-CON2)과는 다른 별도의 모듈로 구현될 수 있다.
한 실시 예에 따르면, 영상 처리 디바이스에서 제 1 영상 처리 모듈 410은 AP를 포함하고, 제 2 영상 처리 모듈 420은 DDI와 T-CON을 모두 포함할 수 있다.
도 5는 다양한 실시 예에 따른, 영상 처리 디바이스의 일 예를 도시한 도면이다.
도 5를 참조하면, 영상 처리 디바이스는 제 1 영상 처리 모듈 410과 제 2 영상 처리 모듈 420 및 상기 제 1 및 제 2 영상 처리 모듈 410, 420을 연결하는 인터페이스 430을 포함한다. 상기 제 1 영상 처리 모듈 410은 압축된 영상 프레임 또는 압축되지 않은 영상 프레임을 제 2 영상 처리 모듈 420으로 제공할 수 있다.
한 실시 예에 따르면, 상기 제 2 영상 처리 모듈 420으로 압축된 영상 프레임을 제공하기 위해, 상기 제 1 영상 처리 모듈 410은 인코더 514를 포함할 수 있다. 상기 제 2 영상 처리 모듈 420으로 압축되지 않은 영상 프레임을 제공할 경우, 상기 제 1 영상 처리 모듈 410은 인코더 514를 포함하지 않을 수도 있다.
한 실시 예에 따르면, 상기 제 1 영상 처리 모듈 420으로부터 압축된 영상 프레임을 제공받는 상기 제 2 영상 처리 모듈 420은 인코더 523을 포함하지 않거나 포함하더라도 그 동작이 불필요할 수 있다. 하지만 상기 제 1 영상 처리 모듈 420으로부터 압축되지 않은 영상 프레임을 제공받는 상기 제 2 영상 처리 모듈 420은 인코더 523을 포함할 수 있다.
도 5에는 다양한 실시 예와의 관련 여부를 고려하여, 제 1 영상 처리 모듈 410과 제 2 영상 처리 모듈 420에 있어, 영상 데이터를 처리하기 위해 필요한 구성만을 도시하였다.
한 실시 예에 따르면, 영상 데이터를 압축하여 출력하는 제 1 영상 처리 모듈 410은 프레임 버퍼 512, 인코더 514 및 인터페이스 516을 포함할 수 있다. 압축된 영상 데이터를 복원 (decoding)하는 제 2 영상 처리 모듈 420은 인터페이스 521, 인코더 523, 메모리 525, 디코더 527 및 인터페이스 529를 포함할 수 있다. 상기 제 1 영상 처리 모듈 410은 인코더 514를 포함하지 않을 수 있고, 상기 제 2 영상 처리 모듈 420은 인코더 523을 포함하지 않을 수 있다. 한 실시 예로, 상기 제 1 영상 처리 모듈 410이 인코더 514를 포함하는 경우, 상기 제 2 영상 처리 모듈 420은 인코더 523을 포함하지 않을 수 있다. 하지만 상기 제 1 영상 처리 모듈 410이 인코더 514를 포함하지 않는 경우, 상기 제 2 영상 처리 모듈 420은 인코더 523을 포함할 수 있다.
상기 제 1 영상 처리 모듈 410과 상기 제 2 영상 처리 모듈 420은 사용 용도, 구현 방안 등을 고려하여 그 구성을 변경할 수 있다.
한 실시 예로, 제 2 영상 처리 모듈 420에 포함된 두 개의 인터페이스 521, 529는 하나의 인터페이스에 의해 구현될 수 있다. 상기 제 2 영상 처리 모듈 420에 포함된 메모리 525는 별도 구성이 아닌 인터페이스 521 또는 디코더 527 내에 구비될 수도 있다. 다른 실시 예로, 프레임 버퍼 512는 다른 디바이스로 전달할 영상 프레임을 임시로 저장하기 위해 인터페이스 516에 구비된 기록 영역으로 대체될 수 있다.
먼저 제 1 영상 처리 모듈 410이 압축된 영상 프레임을 제 2 영상 처리 모듈 420으로 제공하는 한 실시 예에 대해 설명하도록 한다.
한 실시 예에 따라 압축된 영상 프레임을 출력하는 제 1 영상 처리 모듈 410에 대해 설명하면, 프레임 버퍼 512는 인코더 514가 압축할 영상 프레임을 임시로 저장하기 위한 기록 영역을 구비하는 것에 의해 구현될 수 있다.
상기 프레임 버퍼 512는 압축을 위해 입력되는 영상 프레임 (또는 영상 데이터)를 기록할 수 있다. 상기 프레임 버퍼 512에 기록되는 영상 프레임의 개수는 버퍼 크기에 의해 조정될 수 있다.
상기 프레임 버퍼 512가 하나의 영상 프레임을 기록할 수 있는 크기를 가질 시, 상기 프레임 버퍼 512에 기록된 정지 영상 또는 동영상은 하나의 영상 프레임 단위로 갱신될 수 있다.
상기 인코더 514는 프레임 압축률, 압축 방식 등을 고려하여 프레임 버퍼 512로부터 제공되는 영상 프레임을 인코딩하며, 상기 인코딩에 의해 압축된 영상 프레임을 출력할 수 있다.
상기 프레임 압축률은 고정된 값으로 설정될 수 있다. 한 실시 예로, 상기 프레임 압축률은 1/4이 될 수 있다. 상기 프레임 압축률이 1/4라는 것은, 압축 이전의 영상 프레임의 크기와 압축 이후의 영상 프레임의 크기가 4:1의 비율을 가짐을 의미한다.
한 실시 예로, 하나의 영상 프레임이 데이터 블록 단위 (16개의 픽셀들 (
Figure pat00001
))로 분할될 경우, 데이터 블록 하나의 크기는 384 비트 (
Figure pat00002
)가 될 수 있다. 여기서 압축 이전 하나의 데이터 블록 크기를 결정하는 ‘16’은 ‘압축 이전 하나의 데이터 블록을 구성하는 픽셀들의 개수’이고, ‘3’은 ‘각 픽셀을 구성하는 세 가지 색 요소 (R, G, B)’를 나타내며, ‘8’은 ‘색 요소 각각을 표현하는 비트 수’이다.
상기 압축 방식은 영상 압축을 위해 사용할 수 있는 모든 인코딩 기법들을 대상으로 할 수 있다. 상기 압축을 위해 입력되는 영상 프레임 (이하 ‘타깃 영상 프레임’이라 칭함)의 종류, 특성 등을 고려하여 상기 타깃 영상 프레임의 인코딩을 수행하기에 적합한 복수의 인코딩 기법을 선별하여 사용할 수 있다. 한 실시 예로, 사용할 인코딩 기법으로 공간적 예측 기법 (spatial prediction, 이하 ‘압축 모드 1’이라 칭함), 코드북 인덱싱 기법 (codebook indexing, 이하 ‘압축 모드 2’라 칭함), 보간을 이용한 4-레벨 VQ-BTC 기법 (4-level VQ-BTC with interpolation, 이하 ‘압축 모드 3’이라 칭함), 변형 4-레벨 VQ-BTC 기법 (modified 4-level VQ-BTC, 이하 ‘압축 모드 4’라 칭함)이 선택될 수 있다.
상기 인코더 514는 선별된 인코딩 기법들 각각에 상응한 압축 모드를 기반으로 타깃 영상 프레임에 대한 인코딩을 제공할 수 있다.
한 실시 예로, 상기 압축 모드 1 내지 압축 모드 4를 기반으로 영상 프레임에 대한 인코딩을 지원하는 경우, 압축 모드 별 인코더 514의 동작은 하기와 같이 요약될 수 있다. 하기의 설명에서 하나의 영상 프레임은 복수의 데이터 블록들로 분할되고, 하나의 데이터 블록은 16개의 픽셀들 (
Figure pat00003
)로 구성되고, 각 픽셀은 24 비트 (
Figure pat00004
)의 정보 비트로 정의될 수 있다. 따라서 인코딩이 이루어지지 않은 하나의 데이터 블록을 구성하는 정보 비트는 384 비트 (
Figure pat00005
)가 될 것이다. 상기 데이터 블록을 소정 크기를 가지는 서브 데이터 블록으로 분할될 수 있다. 예컨대 하나의 데이터 블록 (384 비트)을 네 개의 서브 데이터 블록들로 분할한다면, 상기 네 개의 서브 데이터 블록들 각각의 크기는 96 비트가 될 수 있다.
한 실시 예로 하나의 데이터 블록을 구성하는 16개의 픽셀들 (
Figure pat00006
)을 4개의 픽셀들 (
Figure pat00007
)로 분할하고, 상기 분할된 4개의 픽셀들 (
Figure pat00008
)을 서브 데이터 블록으로 정의할 수 있다.
압축 모드 1의 경우, 인코더 514는 압축할 서브 데이터 블록의 주변에 위치하는 인접 픽셀들을 기반으로 상기 압축할 서브 데이터 블록을 구성하는 픽셀들 각각을 예측할 수 있다. 한 실시 예로, 상기 인접 픽셀들은 압축할 서브 데이터 블록의 좌측에 위치하는 픽셀들, 상측에 위치하는 픽셀들, 좌상측에 위치하는 픽셀들 및 우상측에 위치하는 픽셀들이 될 수 있다. 상기 인접 픽셀들은 압축할 서브 데이터 블록의 상측 라인에 위치하거나 상기 압축할 서브 데이터 블록에 선행하여 디코딩된 서브 데이터 블록에 위치할 수 있다.
상기 인코더 514는 서로 다른 방향 별로 위치하는 인접 픽셀들에 의해 압축할 서브 데이터 블록을 구성하는 픽셀들 각각을 예측할 수 있다. 상기 인코더 514는 예측을 통해 최소의 에러 율을 갖는 방향에 대한 정보를 인코딩에 의해 출력되는 압축 정보에 포함시킬 수 있다.
압축 모드 2의 경우, 인코더 514는 대표 값 (RV) 테이블에 등록된 소정 개수의 대표 값들을 사용하여 픽셀 별로 인코딩을 수행할 수 있다. 한 실시 예로, RV 테이블은 앞서 인코딩된 데이터 블록들에 대해 선택된 32개의 대표 값들을 포함할 수 있다. 상기 인코더 514가 RV 테이블에 포함된 32개의 대표 값들을 일정한 크기로 유지하기 위해서는, RV 테이블을 갱신하기 위한 효율적인 메커니즘이 제안될 수 있다.
압축 모드 3의 경우, 인코더 514는 하나의 데이터 블록에 포함된 픽셀들 중 아래 라인에 위치하는 8개의 픽셀들을 간단한 4-레벨 VQ-BTC를 이용하여 인코딩하고, 보간을 이용하여 위 라인에 위치하는 8개의 픽셀들을 인코딩할 수 있다. 상기 인코더 514는 이전 라인을 구성하는 픽셀들의 정보, 아래 라인을 구성하는 픽셀들로부터 재구성된 값들을 보간을 위해 사용할 수 있다.
압축 모드 4의 경우, 인코더 514는 변형된 K 평균 알고리즘을 이용하여 네 개의 대표 값들을 선택한다. 상기 인코더 514는 4-레벨 VQ-BT를 이용하여 인코딩된 그 네 개의 대표 값들을 이용하여 데이터 블록을 인코딩할 수 있다.
상기 압축 모드 1 내지 4 별로 인코더 514가 수행하는 구체적인 인코딩 동작에 대해서는 후술될 것이다. 후술될 각각의 압축 모드에 대응한 동작은 압축에 따른 영상 품질의 개선과, 하드웨어의 구현 요구에 맞도록, 일반적인 동작을 변형한 것이 될 수 있다.
상기 인코더 514는 선별된 압축 모드들 중 하나의 압축 모드를 선택할 수 있다. 한 실시 예로, 상기 인코더 514는 압축 모드 별로 에러 율을 계산하고, 상기 계산된 결과를 기반으로 최소 에러 율을 가지는 압축 모드를 선택할 수 있다. 상기 에러 율은 압축 이전의 원 데이터 블록과 재 구성된 데이터 블록 간의 오류 발생 확률에 의해 정의될 수 있다. 상기 재 구성된 데이터 블록은 인코딩에 의해 획득된 압축 정보를 사용하여 복원한 데이터 블록이 될 수 있다.
상기 인코더 514는 선택한 압축 모드를 사용하여 영상 프레임을 인코딩하여 획득한 압축 비트 스트림을 출력할 수 있다. 상기 인코더 514에 의해 출력되는 압축 비트 스트림은 인터페이스부 430으로 제공될 수 있다.
상기 인터페이스부 430은 압축 비트 스트림을 기반으로 상대 디바이스 또는 모듈 또는 장치 등에서 요구하는 포맷의 압축 영상 프레임을 구성하고, 이를 상대 디바이스 또는 모듈 또는 장치 등으로 전달될 수 있다. 한 실시 예로, 상기 인터페이스부 430은 압축 영상 프레임을 제 2 영상 처리 모듈로 전달할 수 있다.
한 실시 예에 따라 압축된 영상 프레임을 복원 (decoding)하는 제 2 영상 처리 모듈 420에 대해 설명하면, 인터페이스 521은 제 1 영상 처리 모듈 410으로부터 제공되는 압축 영상 프레임을 메모리 525로 전달할 수 있다. 상기 인터페이스 521은 제공되는 압축 영상 프레임에 대해 별도의 처리를 수행하지 않거나 필요에 따라 최소한의 처리만을 수행할 수 있다. 한 실시 예로, 상기 인터페이스 521은 압축 영상 프레임이 자신에게 전달된 것이 맞는지를 확인하는 정도의 처리를 수행할 수 있다.
상기 메모리 525는 상기 인터페이스 521에 의해 전달되는 압축 영상 프레임을 사전에 약속된 기록 방식에 따라 지정된 위치에 기록할 수 있다. 상기 메모리 525는 디코딩을 위해 기록된 압축 영상 프레임을 미리 지정된 순서에 따라 출력할 수 있다. 상기 제 2 영상 처리 모듈 420은 메모리 525를 포함하지 않을 수도 있다. 상기 제 2 영상 처리 모듈 420이 메모리 525를 포함하지 않을 경우, 상기 압축 영상 프레임은 인터페이스 521에서 디코더 527로 직접 전달될 수도 있다.
상기 디코더 527은 상기 메모리 525 또는 상기 인터페이스 521로부터 제공되는 압축 영상 프레임을 입력으로 할 수 있다. 상기 디코더 527은 입력된 압축 영상 프레임에 사용된 압축 모드를 확인하고, 상기 확인된 압축 모드를 고려하여 입력된 압축 영상 프레임에 대한 디코딩을 수행할 수 있다. 상기 디코더 527은 디코딩에 의해 복원된 영상 프레임을 출력할 수 있다. 상기 디코더 527에 의해 출력되는 복원된 영상 프레임은 인터페이스 529로 제공될 수 있다.
상기 인터페이스 529는 복원된 영상 프레임을 지정된 디바이스 (예컨대 디스플레이 디바이스)로 출력할 수 있다. 상기 인터페이스 529는 복원된 영상 프레임을 제공할 디바이스의 요청에 의해, 복원된 영상 프레임의 포맷을 변경할 수 있다.
다음으로 제 1 영상 처리 모듈 410이 압축되지 않은 영상 프레임을 제 2 영상 처리 모듈 420으로 제공하는 한 실시 예에 대해 설명하도록 한다.
영상 데이터를 압축하여 출력하는 제 1 영상 처리 모듈 410은 프레임 버퍼 512 및 인터페이스 516을 포함한다. 상기 제 1 영상 처리 모듈 410은 사용 용도, 구현 방안 등을 고려하여 그 구성을 변경할 수 있음은 물론이다.
한 실시 예에 따라 압축되지 않은 영상 프레임을 출력하는 제 1 영상 처리 모듈 410에 대해 설명하면, 프레임 버퍼 512는 입력되는 영상 프레임 (또는 영상 데이터)를 기록할 수 있다. 상기 프레임 버퍼 512에 기록되는 영상 프레임의 개수는 버퍼 크기에 의해 조정될 수 있다. 상기 프레임 버퍼 512가 하나의 영상 프레임을 기록할 수 있는 크기를 가질 시, 상기 프레임 버퍼 512에 기록된 정지 영상 또는 동영상은 하나의 영상 프레임 단위로 갱신될 수 있다.
상기 인터페이스 516은 상기 프레임 버퍼 512에 기록된 영상 프레임을 제 2 영상 처리 모듈 420으로 제공할 수 있다. 한 실시 예로, 상기 인터페이스 516은 영상 프레임은 상대 디바이스 또는 모듈 또는 장치 등에서 요구하는 포맷으로 구성할 수 있다.
한 실시 예에 따라 압축되지 않은 영상 프레임을 복원 (decoding)하는 제 2 영상 처리 모듈 420에 대해 설명하면, 인터페이스 521은 제 1 영상 처리 모듈 410으로부터 제공되는 압축되지 않은 영상 프레임을 인코더 523으로 전달할 수 있다. 상기 인터페이스 521은 제공되는 압축되지 않은 영상 프레임에 대해 별도의 처리를 수행하지 않거나 필요에 따라 최소한의 처리만을 수행할 수 있다. 한 실시 예로, 인터페이스 521은 압축되지 않은 영상 프레임이 자신에게 전달된 것이 맞는지를 확인하는 정도의 처리를 수행할 수 있다.
상기 인코더 523은 프레임 압축률, 압축 방식 등을 고려하여 상기 인터페이스 521로부터 제공되는 영상 프레임을 인코딩할 수 있다. 상기 인코더 523은 인코딩에 의해 압축된 영상 프레임을 메모리 525로 출력할 수 있다.
상기 인코더 523에서의 영상 프레임에 대한 인코딩은 제 1 영상 처리 모듈 410에 포함된 인코더 514에 의한 인코딩과 동일한 동작에 의해 수행될 수 있다. 상기 인코더 514에 의해 출력되는 압축 영상프레임에 상응한 압축 비트 스트림은 메모리 525로 제공될 수 있다.
상기 메모리 525는 상기 인코더 523에 의해 제공되는 압축 영상 프레임을 사전에 약속된 기록 방식에 따라 지정된 위치에 기록할 수 있다. 상기 메모리 525는 디코딩을 위해 기록된 압축 영상 프레임을 미리 지정된 순서에 따라 상기 디코더 527로 출력할 수 있다.
상기 디코더 527은 상기 메모리 525로부터 출력되는 압축 영상 프레임을 입력으로 할 수 있다. 상기 디코더 527은 입력된 압축 영상 프레임에 사용된 압축 모드를 확인하고, 상기 확인된 압축 모드를 고려하여 압축 영상 프레임에 대한 디코딩을 수행할 수 있다. 상기 디코더 527은 디코딩에 의해 복원된 영상 프레임을 출력할 수 있다. 상기 디코더 527에 의해 출력되는 복원된 영상 프레임은 인터페이스 529로 제공될 수 있다.
상기 인터페이스 529는 복원된 영상 프레임을 지정된 디바이스 (예컨대 디스플레이 디바이스)로 출력할 수 있다. 상기 인터페이스 529는 복원된 영상 프레임을 제공할 디바이스의 요청에 의해, 복원된 영상 프레임의 포맷을 변경할 수 있다.
이하 제안될 인코더 구조 및 인코더의 동작에 대한 설명에서는 4:1 (오리지널 크기:압축된 크기)의 고정 압축률을 고려한다. 하지만 제안된 인코더 구조 및 그 동작이 4:1의 고정 압축률에 한정적으로 적용되어야 하는 것은 아니다. 그 외의 다양한 압축률에 대해서도 동일 또는 유사한 방법으로 적용될 수 있다.
하나의 이미지에 대응한 타깃 영상 프레임은 인코딩을 위해, 소정 크기를 가지는 비 중복 데이터 블록들 (non-overlapping blocks)로 분할됨을 가정할 수 있다. 예컨대 상기 소정 크기의 데이터 블록은 16 개 (
Figure pat00009
)의 픽셀들로 이루어질 수 있다.
한 실시 예에 따르면, 16개의 픽셀들로 구성된 각각의 데이터 블록은 압축 모드로 칭해지는 소정 가지 수의 서로 다른 압축 알고리즘들 (인코딩 기법들)을 이용하여 인코딩 및 디코딩에 의해 재 구성될 수 있다. 예컨대 데이터 블록 각각은 네 가지의 서로 다른 압축 알고리즘들에 의해 인코딩될 수 있다. 상기 서로 다른 압축 알고리즘들에 의해 인코딩된 데이터 블록 각각은 디코딩을 통해 압축 이전의 데이터 블록으로 재 구성될 수 있다.
한 실시 예에 따르면, 하나의 데이터 블록을 구성하는 16개의 픽셀들 각각은 세 가지의 색 요소들 (R, G, B)로 이루어질 수 있다. 상기 세 가지의 색 요소들 (R, G, B) 각각은 8 비트의 정보로 표현될 수 있다. 따라서 하나의 픽셀은 8 비트의 세 가지의 색 요소들 (R, G, B)로 이루어지므로, 24 (=
Figure pat00010
비트의 정보에 의해 정의될 것이다. 상기 16개의 픽셀들로 구성된 하나의 데이터 블록은 384 (=24
Figure pat00011
비트의 정보로 정의될 수 있다.
예를 들면, 타깃 영상 프레임을 구성하는 각 데이터 블록을 4:1의 압축률에 의해 압축하기 위해, 인코더는 384 비트의 정보를 96 비트의 정보로 표현할 수 있다. 다양한 실시 예에서는 네 가지의 압축 알고리즘들에 한정하여 설명할 것이다. 하지만 다양한 실시 예들이 네 가지의 압축 알고리즘들에만 한정되어 적용되는 것은 아니며, 다른 압축 알고리즘들에 대해서도 동일 또는 유사하게 적용하는 것도 가능할 것이다.
한 실시 예에 따르면, 압축 모드 1은 예컨대, 공간적 예측 (spatial prediction) 알고리즘을 사용할 수 있다. 압축 모드 2는 예컨대, 코드북 인덱싱 (codebook indexing) 알고리즘을 사용할 수 있다. 압축 모드 3은 예컨대, 보간을 이용한 4-레벨 VQ-BTC (4-level VQ-BTC with interpolation) 알고리즘을 사용할 수 있다. 압축 모드 4는 예컨대, 변형 4-레벨 VQ-BTC (modified 4-level VQ-BTC) 알고리즘을 사용할 수 있다.
상기 네 가지의 압축 알고리즘들은 본 개시의 다양한 실시 예에서, 압축으로 인한 이미지 품질이 손실되는 것을 최소화하고, 하드웨어 구현이 용이하도록, 각각의 압축 모드는 압축 알고리즘들을 각각의 압축 모드에 적용하여 다양한 형태로 구현될 수 있다.
도 6은 다양한 일 실시 예에 따른, 인코더의 구성 예를 도시한 도면이다.
도 6을 참조하면, 인코더 600은 최소 에러 값을 사용하여 블록을 재 구성할 수 있는 압축 알고리즘을 선택적으로 적용할 수 있는 구조를 가질 수 있다.
부호화 모듈 610은 데이터 블록과 주변 값 및 대표 값 (RV: representative value)을 입력으로 할 수 있다. 예컨대 상기 데이터 블록은 타깃 영상 프레임을
Figure pat00012
단위로 분할한 것일 수 있다. 상기 부호화 모듈 610은 입력된 데이터 블록을 미리 설정 (specified)된 서로 다른 네 가지의 압축 알고리즘을 이용하여, 인코딩을 수행할 수 있다. 하기 설명에서의 압축 알고리즘은 데이터 블록을 압축하기 위해 미리 설정된 서로 다른 네 가지의 압축 알고리즘을 지칭하는 의미로 사용할 것이다.
상기 주변 값은 인코딩을 위해 입력된 데이터 블록에 인접한 데이터 블록들을 대표하는 값을 포함할 수 있다. 상기 인접한 데이터 블록들을 대표하는 값은 해당 데이터 블록을 인코딩하여 획득한 압축 데이터 블록을 디코딩함으로써, 재 구성한 데이터 블록을 대표하는 값이 될 수 있다. 상기 주변 값은 외부로부터 제공될 수 있다. 예를 들면, 상기 주변 값은 예측 테이블을 관리하는 외부 서버 등의 디바이스로부터 제공될 수 있다. 상기 예측 테이블은 RV 테이블, 주면 픽셀들의 대표 값 (surround pixel value) 및 어떤 일정한 컬러 값 (constant value)을 포함할 수 있다.
상기 재구성 모듈 620은 압축 알고리즘 별 인코딩 결과 값들과, 주변 값들 및 대표 값 (RV)을 사용하여 원 데이터 블록을 재 구성할 수 있다. 상기 원 데이터 블록은 인코딩을 위해 상기 부호화 모듈 610으로 입력된 데이터 블록이다. 상기 재 구성은 각 압축 알고리즘에 의한 인코딩을 통해 획득한 인코딩 결과 값을 기반으로 원 데이터 블록을 디코딩하여 복원하는 것을 의미할 수 있다. 따라서 상기 재구성 모듈 620은 압축 알고리즘 별로 재구성한 데이터 블록을 출력할 수 있다.
상기 결정 모듈 630은 재구성 모듈 620의 출력을 기반으로 각 압축 알고리즘에 의해 데이터 블록을 압축할 시에 예상되는 에러 값들을 계산할 수 있다. 상기 결정 모듈 630은 원 데이터 블록과 재 구성된 데이터 블록 간의 차이 값을 기반으로 에러 값을 계산할 수 있다.
상기 결정 모듈 630은 압축 알고리즘 별로 계산한 에러 값들 중 가장 작은 에러 값에 대응한 압축 알고리즘을 선택하는 선택신호를 출력할 수 있다.
상기 선택 모듈 640은 상기 결정 모듈 630에 의해 제공된 선택신호를 사용하여 상기 부호화 모듈 610으로부터 입력된 압축 알고리즘 별 인코딩 결과 값들 중 하나의 인코딩 결과 값을 압축 비트 스트림으로 출력할 수 있다. 상기 압축 비트 스트림은 압축을 위해 상기 부호화 모듈 610으로 입력된 데이터 블록에 대한 인코딩 결과에 해당할 것이다.
상기 RV 테이블 650은 상기 선택 모듈 640에 의해 제공되는 압축 비트 스트림에 의해, 기존에 저장된 대표 값 (RV)을 갱신할 수 있다. 상기 RV 테이블 650은 데이터 블록의 인코딩을 위해, 상기 부호화 모듈 610이 요구하는 대표 값 (RV)을 제공할 수 있다. 상기 RV 테이블 650은 주변 픽셀들의 대표 값 (surround pixel value) 및 어떤 일정한 컬러 값 (constant value)과 함께 예측 테이블을 구성할 수 있다. 상기 예측 테이블에 대한 일 예를 도 9에서 보이고 있으며, 이에 대한 설명은 후술될 것이다.
상기 부호화 모듈 610에 의해 출력되는 압축 알고리즘 별 인코딩 결과 값들은 재구성 모듈 620과 선택 모듈 640으로 입력된다. 상기 압축 알고리즘 별 인코딩 결과 값들은 네 가지의 압축 알고리즘 각각에 의해 데이터 블록에 대한 인코딩을 수행하여 획득할 수 있다.
상기 결정 모듈 630에 의해 출력된 선택신호는 상기 선택 모듈 640으로 제공된다. 상기 선택신호는 최소의 에러 값이 예상되는 압축 알고리즘에 의한 인코딩 결과 값이 최종 출력될 수 있도록 할 것이다. 상기 선택 모듈 640에 의해 출력된 압축 비트 스트림은 RV 테이블 650에게도 제공된다.
도 7은 다양한 실시 예에 따른, 이미지 압축장치에서 수행하는 제어 흐름을 도시한 도면이다.
도 7을 참조하면, 인코더 600은 블록 인덱스 (blk_i)를 초기화할 수 있다 (710 단계). 상기 블록 인덱스 (blk_i)는 압축할 데이터 블록을 선택하기 위해 사용될 것이다. 한 실시 예에 따르면, 하나의 영상 프레임이 소정 크기를 가지는 K개의 데이터 블록들로 분할된 경우, 블록 인덱스 (blk_i)는 0 내지 K-1 범위 (
Figure pat00013
) 내에서 순차적으로 선택될 수 있다. 상기 블록 인덱스 (blk_i)의 초기화는 K개의 데이터 블록들 중 첫 번째 데이터 블록, 예컨대 블록 인덱스 (blk_i)가 0인 데이터 블록을 압축할 데이터 블록으로 선택할 수 있다.
상기 인코더 600은 타깃 영상 프레임을 분할하는 K개의 데이터 블록들에서 블록 인덱스 (blk_i)에 상응한 데이터 블록을 선택할 수 있다 (720 단계). 한 실시 예에 따르면, 타깃 영상 프레임을 분할한 K개의 데이터 블록들이 순차적으로 입력되는 경우, 인코더 600은 입력되는 데이터 블록들로부터 현재 블록 인덱스 (blk_i)를 가지는 데이터 블록을 선택할 수 있다. 한 실시 예에 따르면, 타깃 영상 프레임을 분할한 K개의 데이터 블록들이 미리 저장되어 있는 경우, 인코더 600은 저장된 데이터 블록들로부터 현재 블록 인덱스 (blk_i)를 포함하는 데이터 블록을 독출할 수 있다.
상술한 바에 따라 인코더 600이 데이터 블록을 선택하기 위해서는, 타깃 영상 프레임을 K개의 데이터 블록들로 분할하기 위한 동작이 선행될 수 있다. 또한 후술될 인코딩을 수행하기 위해, 데이터 블록 각각을 소정 크기를 가지는 서브 데이터 블록으로 분할하는 동작도 선행될 수 있다.
상기 인코더 600은 복수의 압축 모드 별 에러 율을 계산할 수 있다 (730 단계). 한 실시 예에 따르면, 상기 복수의 압축 모드 별 에러 율은 데이터 블록에 대한 블록 인코딩, 재 구성 및 에러 율 계산의 순서에 의해 계산될 수 있다. 예컨대, 인코더 600은 각 압축 모드를 기반으로 데이터 블록에 대한 블록 인코딩을 수행함으로써, 압축 모드 별로의 압축 비트 스트림을 생성할 수 있다. 상기 인코더 600은 압축 모드 별로 생성한 압축 비트 스트림을 사용하여 압축 이전의 데이터 블록을 재 구성할 수 있다. 따라서 상기 인코더 600은 압축 모드 별로 재 구성된 데이터 블록을 생성할 수 있다. 상기 인코더 600은 압축 모드 별로 재 구성한 데이터 블록과, 압축 이전의 데이터 블록을 사용하여 압축 모드 별로 에러 율을 계산할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 앞서 정의한 압축 모드 1 내지 4 각각에 대응한 에러 율을 계산할 수 있다. 이를 위해 상기 인코더 600이 압축 모드 1 내지 4 각각을 기반으로 데이터 블록에 대한 인코딩을 수행하는 것을 앞에서 설명된 바와 동일 또는 유사한 방법으로 수행할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 압축 모드 1 내지 4 각각에 의해 데이터 블록을 인코딩하여 얻어진 네 개의 압축 비트 스트림들 각각을 사용하여 압축 이전의 데이터 블록을 재 구성할 수 있다. 상기 인코더 600은 재 구성된 네 개의 데이터 블록들 각각을 압축 이전의 데이터 블록 간의 동일한 정도에 상응한 에러 율을 계산할 수 있다.
상기 인코더 600은 압축 모드 별로 계산한 에러 율들 중 가장 낮은 에러 율을 선택하고, 상기 선택한 에러 율이 계산된 압축 모드가 무엇인지를 확인할 수 있다 (740 단계).
상기 인코더 600은 확인된 압축 모드를 기반으로 데이터 블록을 인코딩하여 생성된 또는 생성되었던 압축 비트 스트림을 인코딩에 따른 결과로 출력할 수 있다 (750 단계).
상기 인코더 600은 출력된 압축 비트 스트림을 기반으로 RV 테이블에 등록된 기존 대표 값을 갱신할 수 있다 (760 단계). 한 실시 예에 따르면, 상기 인코더 600은 RV 테이블에 앞서 선택된 데이터 블록에 대응하여 기록된 대표 값을 출력된 압축 비트 스트림을 기반으로 갱신할 수 있다. 이런 경우, 상기 인코더 600은 이후 데이터 블록을 각 압축 모드를 기반으로 인코딩할 시, RV 테이블에 기록된 갱신된 대표 값을 사용할 수 있다.
상기 인코더 600은 대상 영상 프레임을 분할한 K개의 데이터 블록들에 대한 압축이 완료되었는지를 판단할 수 있다 (770 단계). 예컨대 상기 인코더 600은 현재 데이터 블록 인덱스 (blk_i)가 K-1인지를 판단함으로써, 대상 영상 프레임에 대한 압축이 완료되었는지를 판단할 수 있다.
상기 인코더 600은 대상 영상 프레임에 대한 압축이 완료되지 않았다고 판단하면, 현재 데이터 블록 인덱스 (blk_i)를 1 증가시킨다 (780 단계). 현재 데이터 블록 인덱스 (blk_i)를 1 증가시키는 것은 인코딩을 위해 다음 데이터 블록을 선택하기 위함이다. 상기 인코더 600은 다음 데이터 블록의 선택이 이루어지면, 선택된 데이터 블록에 대한 인코딩 동작을 수행할 수 있다 (720 단계 내지 760 단계).
상기 인코더 600은 대상 영상 프레임에 대한 압축이 완료되었다고 판단하면, 대상 영상 프레임에 대한 인코딩 동작을 종료할 수 있다. 하지만 상기 인코딩 동작의 종료는 하나의 영상 프레임에 대한 것일 뿐, 인코딩을 수행할 영상 프레임이 남아 있다면, 도 7에서 보이고 있는 제어 흐름에 따른 동작이 반복하여 수행될 수 있다.
도 8은 다양한 실시 예에 따른, 인코더가 압축 모드 별로 출력하는 압축 비트 스트림의 예를 도시한 도면이다.
도 8을 참조하면, 인코더가 출력하는 압축 비트 스트림은 96 비트의 길이를 가진다. 상기 압축 비트 스트림의 길이는 모든 압축 모드에 공통적으로 적용된다. 상기 압축 비트 스트림은 2 비트의 모드 선택 정보 (Mode select)와, 94 비트의 압축된 데이터 (Encoded data)로 구성된다.
한 실시 예에 따르면, 모드 선택 정보 ‘00’은 압축 모드 1 (공간적 예측 기법)을 나타내고, ‘01’은 압축 모드 2 (코드북 인덱싱 기법)을 나타내며, ‘10’은 압축 모드 3 (4-레벨 VQ-BTC 기법)을 나타내고, ‘11’은 압축 모드 4 (변형 4-레벨 VQ-BTC 기법)을 나타낼 수 있다.
상기 압축된 데이터는 압축 모드 별로 서로 다른 정보를 포함할 수 있다. 예컨대 압축 모드 1 내지 4 각각의 압축 데이터는 다른 종류의 데이터들로 구성될 수 있다.
한 실시 예에 따르면, 압축 모드 1에 의해 압축된 데이터는 8 비트의 공간 예측 정보 (Spatial Prediction)와 4 비트의 에러 서브 데이터 블록 선택 정보 및 82 비트를 넘지 않는 에러 정정 부호화 정보 (Error correction coding)로 구성될 수 있다 (도 12 참조). 상기 에러 정정 부호화 정보는 하나의 데이터 블록에서 에러를 갖는 서브 데이터 블록의 개수에 따라 다르게 정의될 수 있다. 이에 대한 구체적인 설명은 후술될 것이다.
한 실시 예에 따르면, 압축 모드 2에 의해 압축된 데이터는 80 비트의 RV 테이블 인덱싱 정보 (RV Table Indexing)와 14 비트의 에러 정정 정보 (R.Coding)로 구성될 수 있다 (도 16 참조). 상기 에러 정정 정보는 데이터 블록을 재 구성하기 위한 기준 픽셀을 나타내는 4 비트의 기준 인덱스 (base index) 및 상기 기준 픽셀로부터 목표 픽셀을 얻기 위한 벡터를 정의하는 5 비트의 방향 정보 (direction)와 5 비트의 길이 정보 (length)를 포함할 수 있다.
한 실시 예에 따르면, 압축 모드 3에 의해 압축된 데이터는 94 비트의 4-level VQ-BTC와 보간 정보로 구성될 수 있다 (도 21 참조). 상기 4-level VQ-BTC와 보간 정보는 하나의 데이터 블록을 구성하는 8개의 하위 픽셀들 각각이 속하는 그룹을 식별하는 16 비트의 비트 맵, 보간을 통해 재 구성될 상위 픽셀 값을 안내하는 16 비트의 보간 인덱스들 및 그룹 별로 획득한 62 비트를 넘지 않는 에러 정정 정보로 구성될 수 있다. 상기 에러 정정 정보는 각 그룹에 포함된 두 개의 픽셀들의 중심 값을 나타내는 18 비트의 대표 값과, 상기 대표 값에서 그룹 내의 픽셀을 얻기 위한 벡터를 정의하는 6 비트의 방향 정보 (direction)와 7 비트의 길이 정보 (length)를 포함할 수 있다.
한 실시 예에 따르면, 압축 모드 4에 의해 압축된 데이터는 94 비트의 4-level VQ-BTC 정보로 구성될 수 있다 (도 23 참조). 상기 4-level VQ-BTC 정보는 하나의 데이터 블록을 구성하는 8개의 하위 픽셀들과 8개의 상위 픽셀들 각각이 속하는 그룹을 식별하는 16 비트의 비트 맵 및 그룹 별로 획득한 62 비트를 넘지 않는 에러 정정 정보로 구성될 수 있다. 상기 에러 정정 정보는 각 그룹에 포함된 두 개의 픽셀들의 중심 값을 나타내는 18 비트의 대표 값과, 상기 대표 값에서 그룹 내의 픽셀을 얻기 위한 벡터를 정의하는 6 비트의 방향 정보 (direction)와 7 비트의 길이 정보 (length)를 포함할 수 있다.
앞에서의 제안된 일 실시 예에 따른 영상 처리 디바이스에서는 영상 프레임의 인코딩을 위해 사용할 최적 압축 모드를 다수의 압축 모드들로부터 선택함을 전제로 하고 있다.
하기에서는 영상 처리 디바이스에서 영상 프레임의 인코딩을 위해 적용할 다수의 압축 모드 별 인코딩 동작에 대해 구체적으로 설명할 것이다.
다양한 실시 예에 따르면, 각 압축 모드에 따른 인코딩 동작을 설명함에 있어, 하나의 영상 프레임이 16개의 데이터 블록들로 분할될 수 있다. 상기 각 데이터 블록은 3개의 색 요소들 (RGB)에 의해 표현되고, 각 색 요소가 8 비트 값으로 표현될 수 있다. 예를 들면, 하나의 영상 프레임은 384 비트 (
Figure pat00014
)의 크기를 가지므로, 4:1의 압축 율에 의해 인코딩할 시에 96 비트의 압축 비트 스트림이 생성될 수 있다. 앞서 정의된 바와 같이 상기 96 비트의 압축 비트 스트림은 예컨대, 2 비트의 모드 선택 정보와 예컨대 94 비트의 압축된 데이터로 구성될 수 있다.
하기의 설명에서는 압축 모드 별로 94 비트의 압축된 데이터를 구성하는 것에 대해 구체적으로 살펴볼 것이다.
첫 번째로 다양한 압축 기법들 중 하나인 압축 모드 1을 사용하여 압축된 데이터를 구성하는 것에 대해 설명하도록 한다.
압축 모드 1 (공간적 예측 기법)에 따른 인코딩 동작은, 공간 예측에 따른 예측 방향을 결정하고, 에러 정정을 위한 정보를 생성하며, 데이터 블록의 재 구성에 의한 에러 률 (MAE: mean absolute error)을 계산하는 동작을 포함할 수 있다.
한 실시 예에 따르면, 인코더는 하나의 데이터 블록을 분할한 각 서브 데이터 블록에 대해 최적의 공간 예측이 가능한 예측 방향을 결정하고, 상기 결정된 예측 방향에 의해 8 비트의 공간 예측 정보를 구성할 수 있다. 상기 인코더는 공간 예측을 통해 확인한 에러 서브 데이터 블록의 개수에 대응하여 미리 설정된 시나리오를 기반으로 86 비트를 넘지 않도록 에러 정정 부호화 정보를 구성할 수 있다. 이런 경우, 상기 인코더는 8 비트의 공간 예측 정보와 86 비트를 넘지 않는 에러 정정 부호화 정보에 의해 압축된 데이터를 구성하고, 상기 압축된 데이터에 2 비트의 모드 선택 정보를 추가하여 96 비트를 넘지 않도록 압축 비트 스트림을 구성할 수 있다.
한 실시 예에 따르면, 상기 인코더는 앞서 구성한 압축 비트 스트림을 사용하여 데이터 블록을 재 구성하고, 상기 재 구성한 데이터 블록이 가지는 에러 율을 계산할 수 있다. 상기 계산한 에러 율은 해당 데이터 블록을 인코딩하기 위한 압축 모드를 결정하기 위한 적어도 하나의 기준으로 사용될 수 있다.
한 실시 예에 따르면, 386 비트의 영상 프레임을 4:1의 압축 율에 의해 96 비트의 압축 비트 스트림을 생성할 수 있다. 상기 96 비트의 압축 비트 스트림은 2 비트의 모드 선택 정보, 8 비트의 공간 예측 정보, 4 비트의 에러 서브 데이터 블록 선택 정보 및 82 비트를 넘지 않는 에러 정정 부호화 정보에 의해 구성될 수 있다. 상기 에러 정정 부호화 정보는 82 비트보다 작을 수 있으나, 이 경우 부족한 수만큼의 패딩 비트들을 추가할 수 있다.
한 실시 예에 따르면, 상기 공간 예측 정보는 4개의 서브 데이터 블록들 각각에 대응한 최적의 공간 예측이 가능한 예측 방향을 2 비트로 나타낼 수 있다. 이런 경우, 상기 공간 예측 정보는 8 비트로 나타낼 수 있다.
도 9는 다양한 실시 예에 따른 예측 테이블의 일 예를 도시한 도면이다.
도 9에서의 예측 테이블은 각각이 24 비트로 구성된 64개의 대표 값들에 의해 생성됨을 가정할 수 있다. 예컨대 상기 예측 테이블은 대표 값 테이블 (RV table), 주변 픽셀들의 대표 값 (surround pixel value) 및 어떤 일정한 컬러 값 (constant value)에 의해 생성될 수 있다.
한 실시 예에 따르면, RV 테이블은 32개의 픽셀들에 대응하는 예컨대, 32개의 대표 값 (RV)들을 포함할 수 있다. 상기 주변 픽셀들의 대표 값들은 예컨대, 16개의 주변 셀들에 대응하는 예컨대, 16개의 대표 값들에 의해 구성되고, 상기 컬러 값들 또한 예컨대, 16개의 컬러 값들로 구성될 수 있다.
이런 경우, 상기 예측 테이블은 64개의 픽셀 값들에 의해 생성될 수 있으며, 상기 예측 테이블을 구성하는 64개의 픽셀 값들 각각에 대응하여 대표 값은 예컨대, 24 비트를 사용하여 정의할 수 있다. 예컨대 상기 64개의 대표 값들에 대해서는 6 비트의 고유한 예측 테이블 인덱스를 부여할 수 있다.
한 실시 예에 따르면, 인코더는 도 9와 같이 미리 생성된 예측 테이블을 사용하여 에러 서브 데이터 블록의 개수에 대응하여 미리 설정된 알고리즘을 기반으로 에러 정정 부호화 정보를 생성할 수 있다.
도 10은 다양한 실시 예에 따른, 인코더에서 압축 모드 1에 따른 서브 루틴을 도시한 도면이다.
도 10을 참조하면, 하나의 영상 프레임을 분할하는 데이터 블록을 소정 크기의 서브 데이터 블록들로 분할하여 처리하는 것을 가정할 수 있다.
한 실시 예에 따르면, 인코더 600은 인코딩 대상으로 선택된 데이터 블록을 분할한 다수의 서브 데이터 블록들 중 하나를 선택할 수 있다 (1000 단계). 상기 서브 데이터 블록들은 서브 데이터 블록 별로 부여된 인덱스에 의해 순차적으로 선택될 수 있다. 예컨대
Figure pat00015
의 크기 (16개 픽셀들)를 갖는 데이터 블록이
Figure pat00016
의 크기 (4개의 픽셀들)를 갖는 4개의 서브 데이터 블록들로 분할된 경우, 상기 인코더 600은 상기 4개의 서브 데이터 블록들을 순차적으로 선택할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 선택된 서브 데이터 블록에 대한 공간 예측을 미리 설정된 예측 방향들 각각에 대응하여 수행할 수 있다 (1002 단계). 상기 인코더 600은 미리 설정된 예측 방향 별로 수행한 공간 예측 결과를 기반으로 최적 예측 방향을 결정할 수 있다 (1004 단계).
상기 인코더 600은 모든 서브 데이터 블록들에 대한 최적 예측 방향이 결정되었는지를 판단할 수 있다 (1006 단계). 예컨대, 하나의 데이터 블록을 분할한 4개의 서브 데이터 블록들에 대한 공간 예측을 통해, 8 비트의 공간 예측 정보를 구성할 수 있다.
모든 서브 데이터 블록들에 대한 최적 예측 방향을 결정하지 못하였다면, 상기 인코더 600은 공간 예측을 따른 예측 방향을 결정하는 과정 (1000 단계 내지 1006 단계)을 반복하여 수행할 수 있다.
상기 인코더 600은 모든 서브 데이터 블록들에 대한 공간 예측이 완료되면, 에러 서브 데이터 블록 선택 정보와 에러 정정을 위해 사용될 에러 정정 부호화 정보를 구성할 수 있다 (1008 단계, 1010 단계).
상기 인코더 600은 에러 정정 부호화 정보를 구성하기 위한, 서로 다른 다수의 시나리오들 각각에 대응한 알고리즘을 포함할 수 있다. 예컨대, 상기 인코더 600은 공간 예측이 이루어진 서브 데이터 블록들 중 에러를 갖는 서브 데이터 블록 (이하 ‘에러 서브 데이터 블록’이라 칭함)의 개수 별로 서로 다른 시나리오에 의해 에러 정정 부호화 정보를 구성하도록 하는 알고리즘을 포함할 수 있다.
예컨대, 하나의 데이터 블록이 4개의 서브 데이터 블록으로 분할될 경우, 에러 서브 데이터 블록의 개수는 네 개 이하로 결정될 것이다. 이 경우 인코더 600은 에러 서브 데이터 블록의 개수에 대응한 네 가지의 서로 다른 시나리오를 기반으로 하는 알고리즘을 포함할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 공간 예측 결과를 기반으로 에러 서브 데이터 블록의 개수를 카운트하고, 상기 카운트 값에 의해 에러 서브 데이터 블록의 개수를 확인할 수 있다 (1008 단계). 상기 인코더 600은 공간 예측에 따른 에러 율이 0 보다 큰 서브 데이터 블록을 에러 서브 데이터 블록으로 카운트할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 에러 서브 데이터 블록의 개수를 확인하면, 상기 확인한 에러 서브 데이터 블록의 개수를 고려하여 에러 서브 데이터 블록 선택 정보를 생성할 수 있다. 예를 들어, 네 개의 서브 데이터 블록들 중 첫 번째와 세 번째 서브 데이터 블록이 에러를 갖는다면, ‘1010’의 에러 서브 데이터 블록 선택 정보를 생성할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 상기 확인한 에러 서브 데이터 블록의 개수에 대응하여 마련된 알고리즘을 기반으로 에러 정정 부호화 정보를 생성할 수 있다 (1010 단계).
한 실시 예에 따르면, 인코더 600은 에러 서브 데이터 블록의 개수가 하나인 경우에 대해, 하나의 에러 서브 데이터 블록에 대한 에러 정정 부호화 정보를 생성하기 위한 알고리즘을 제공할 수 있다.
한 실시 예에 따르면, 인코더 600은 에러 서브 데이터 블록의 개수가 둘인 경우에 대해서는, 두 개의 에러 서브 데이터 블록들 각각에 대한 에러 정정 부호화 정보를 생성하기 위한 알고리즘을 제공할 수 있다.
한 실시 예에 따르면, 인코더 600은 그 외의 에러 서브 데이터 블록의 개수에 대해서도, 그 개수에 맞는 에러 정정 부호화 정보를 생성하기 위한 알고리즘을 제공할 수 있다.
한 실시 예에 따르면, 인코더 600은 에러 서브 데이터 블록의 개수에 따라 에러 정정 부호화 정보를 생성하는 알고리즘을 다르게 적용할 수 있다. 이런 경우, 상기 인코더 600은 각 서브 데이터 블록의 누적 에러를 고려하여 에러 정정 부호화 정보를 구성하는 비트들을 에러 서브 데이터 블록 간에 효율적으로 분산할 수 있다.
예를 들어, 상기 에러 정정 부호화 정보는 에러 서브 데이터 블록을 구성하는 각 픽셀에 대응하여 생성될 수 있다. 상기 각 픽셀에 대응한 에러 정정 부호화 정보는 대표 값 (RV), 예측 테이블 인덱스 등을 이용하여 생성될 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 에러 정정 부호화 정보를 생성하기 위한 대표 값 (RV), 예측 테이블 인덱스 등을 획득하기 위해, 미리 예측 테이블을 생성할 수 있다. 예를 들면, 상기 예측 테이블은 고유한 예측 데이터 인덱스에 대응한 대표 값 (RV) 테이블, 주변 픽셀들의 대표 값 (RV) 및 어떤 일정한 컬러 값들에 의해 생성될 수 있다. 상기 RV 테이블은 하나의 영상 프레임을 구성하는 전체 픽셀들 각각의 오리지널 값에 대응하는 대표 값 (RV)을 포함할 수 있다.
상기 인코더 600은 미리 생성된 예측 테이블을 사용하여 에러 서브 데이터 블록의 개수에 대응하여 미리 설정된 알고리즘을 기반으로 에러 정정 부호화 정보를 생성할 수 있다.
상기 에러 정정 부호화 정보를 생성하면, 상기 인코더 600은 2 비트의 모드 선택 정보, 8 비트의 공간 예측 정보, 4 비트의 에러 서브 데이터 블록 선택 정보 및 에러 정정 부호화 정보를 결합하여 압축 비트 스트림을 구성할 수 있다 (1012 단계).
한 실시 예에 따르면, 상기 인코더 600은 구성한 압축 비트 스트림을 사용하여 압축 이전의 데이터 블록, 즉 원래 데이터 블록을 재 구성할 수 있다 (1014 단계). 상기 인코더 600은 재 구성한 데이터 블록과 원래 데이터 블록을 사용하여 압축 모드 1에 따른 에러 율 (MAE)을 계산할 수 있다 (1016 단계).
도 11a 내지 도 11d는 선택된 서브 데이터 블록에 대해 공간 예측을 수행하는 예들을 도시한 도면이다. 예를 들면, 미리 설정된 4개의 예측 방향 별로 선택된 서브 데이터 블록에 대한 공간 예측을 수행할 수 있다.
도 11a는 왼쪽에서 오른쪽 방향으로 공간 예측 (left prediction)을 수행하는 예를 도시한 도면이다.
도 11a를 참조하면, 선택된 서브 데이터 블록을 구성하는 각 픽셀 값은 상기 선택된 서브 데이터 블록의 왼쪽에 위치하는 픽셀 값에 의해 예측될 수 있다.
한 실시 예에 따르면, 선택된 서브 데이터 블록을 구성하는 4개의 픽셀들 중 위쪽 두 개의 픽셀 값은 상기 선택된 서브 데이터 블록의 왼쪽에 위치하는 두 개의 픽셀들 중 위쪽 픽셀의 픽셀 값인 ‘a’로 예측될 수 있다. 상기 선택된 서브 데이터 블록을 구성하는 4개의 픽셀들 중 아래 쪽 두 개의 픽셀 값은 상기 선택된 서브 데이터 블록의 왼쪽에 위치하는 두 개의 픽셀들 중 아래 쪽 픽셀의 픽셀 값인 ‘b’로 예측될 수 있다.
도 11b는 위쪽에서 아래쪽 방향으로 공간 예측 (top-down prediction)을 수행하는 예를 도시한 도면이다.
도 11b를 참조하면, 선택된 서브 데이터 블록을 구성하는 각 픽셀 값은 상기 선택된 서브 데이터 블록의 위쪽에 위치하는 픽셀 값에 의해 예측될 수 있다.
한 실시 예에 따르면, 선택된 서브 데이터 블록을 구성하는 4개의 픽셀들 중 왼쪽 두 개의 픽셀 값은 상기 선택된 서브 데이터 블록의 위쪽에 위치하는 두 개의 픽셀들 중 왼쪽 픽셀의 픽셀 값인 ‘a’로 예측될 수 있다. 상기 선택된 서브 데이터 블록을 구성하는 4개의 픽셀들 중 오른 쪽 두 개의 픽셀 값은 상기 선택된 서브 데이터 블록의 위쪽에 위치하는 두 개의 픽셀들 중 오른쪽 픽셀의 픽셀 값인 ‘b’로 예측될 수 있다.
도 11c는 좌/상측에서 우/하측으로의 대각선 방향으로 공간 예측 (left diagonal prediction)을 수행하는 예를 도시한 도면이다.
도 11c를 참조하면, 선택된 서브 데이터 블록을 구성하는 각 픽셀 값은 상기 선택된 서브 데이터 블록의 좌/상측에 위치하는 픽셀 값에 의해 예측될 수 있다.
한 실시 예에 따르면, 선택된 서브 데이터 블록을 구성하는 4개의 픽셀들 중 왼쪽 아래에 위치하는 하나의 픽셀 값은 상기 선택된 서브 데이터 블록의 왼쪽에 위치하는 두 개의 픽셀들 중 위쪽 픽셀 (좌/상측 방향에 위치하는 픽셀)의 픽셀 값인 ‘a’로 예측될 수 있다. 상기 선택된 서브 데이터 블록을 구성하는 4개의 픽셀들 중 왼쪽 위에 위치하는 픽셀 값과 오른쪽 아래에 위치하는 픽셀 값은 좌/상측 방향에 위치하는 픽셀 값인 ‘b’로 예측될 수 있다. 상기 선택된 서브 데이터 블록을 구성하는 4개의 픽셀들 중 오른쪽 위에 위치하는 하나의 픽셀 값은 상기 선택된 서브 데이터 블록의 위쪽에 위치하는 두 개의 픽셀들 중 오른쪽 픽셀 (좌/상측 방향에 위치하는 픽셀)의 픽셀 값인 ‘c’로 예측될 수 있다.
도 11d는 우/상측에서 좌/하측으로의 대각선 방향으로 공간 예측 (right diagonal prediction)을 수행하는 예를 도시한 도면이다.
도 11d를 참조하면, 선택된 서브 데이터 블록을 구성하는 각 픽셀 값은 상기 선택된 서브 데이터 블록의 우/상측에 위치하는 픽셀 값에 의해 예측될 수 있다.
한 실시 예에 따르면, 선택된 서브 데이터 블록을 구성하는 4개의 픽셀들 중 왼쪽 위에 위치하는 하나의 픽셀 값은 상기 선택된 서브 데이터 블록의 위쪽에 위치하는 두 개의 픽셀들 중 오른쪽 픽셀 (우/상측 방향에 위치하는 픽셀)의 픽셀 값인 ‘a’로 예측될 수 있다. 상기 선택된 서브 데이터 블록을 구성하는 4개의 픽셀들 중 오른쪽 위에 위치하는 픽셀 값과, 왼쪽 아래에 위치하는 픽셀 값은 우/상측 방향에 위치하는 픽셀 값인 ‘b’로 예측될 수 있다. 상기 선택된 서브 데이터 블록을 구성하는 4개의 픽셀들 중 오른쪽 아래에 위치하는 하나의 픽셀 값은 우/상측 방향에 위치하는 픽셀 값인 ‘c’로 예측될 수 있다.
도 11a 내지 도 11d에서는 하나의 서브 데이터 블록을 구성하는 픽셀 값들을 미리 설정된 방향 별로의 예측을 수행하였다. 하지만 하나의 데이터 블록이 복수의 서브 데이터 블록들로 분할된 경우, 나머지 서브 데이터 블록들에 대해서도 앞서 제안된 바에 따른 동작에 의해, 미리 설정된 방향 별로 공간 예측을 수행할 수 있다.
상기 인코더 600은 서브 데이터 블록 별로 미리 결정된 예측 방향들 중 하나의 최적 예측 방향을 결정할 수 있다. 일 예로 상기 인코더 600은 4개의 예측 방향 별로 예측된 픽셀 값들을 기반으로 에러 율 (MAE)을 계산하고, 상기 계산한 예측 방향 별 에러 율들 중 최소 에러 율이 계산된 예측 방향을 최적 예측 방향으로 결정할 수 있다.
상기 예측 방향을 예컨대, 4개로 가정하고 있으므로, 최적 예측 방향은 예컨대, 2 비트의 식별 비트 값으로 표현될 수 있다. 이런 경우, 데이터 블록을 분할하는 4개의 서브 데이터 블록들에 대해 결정된 4개의 최적 예측 방향들을 표현하는 공간 예측 정보는 8 비트 (
Figure pat00017
)의 식별 비트 값에 의해 정의될 수 있다.
하기 <표 1>은 4개의 예측 방향들 각각을 가리키는 식별 비트 값을 정의한 일 예이다.
식별 비트 값 예측 방향
00 좌측 예측 (left prediction) (도 11a)
01 상-하 예측 (top-down prediction) (도 11b)
10 좌-대각 예측 (left diagonal prediction) (도 11c)
11 우-대각 예측 (right diagonal prediction) (도 11d)
도 12는 인코더가 각 압축 모드를 기반으로 생성한 압축 비트 스트림의 예를 도시한 도면이다.
도 12를 참조하면, 4개의 서브 데이터 블록들 중 에러 서브 데이터 블록이 하나 또는 둘 또는 셋 또는 넷인 경우 각각에 대응하여 구성된 압축 비트 스트림의 예를 도시하였다.
한 실시 예에 따르면, 상기 압축 비트 스트림은 모드 선택 정보 (2 비트) 1210, 공간 예측 정보 (8 비트) 1212, 에러 서브 데이터 블록 선택 정보 (4비트) 1214 및 에러 정정 부호화 정보 1216 내지 1253 (82 비트를 넘지 않음)으로 구성될 수 있다. 상기 에러 정정 부호화 정보는 에러를 가지는 서브 데이터 블록의 개수에 따라 상이하게 정의될 수 있다. 예를 들어, 상기 에러 정정 부호화 정보가 82 비트를 넘지 않는다는 것은, 인코더 600이 해당 데이터 블록에 대응하여 생성할 수 있는 에러 정정 부호화 정보의 최대 크기는 82 비트를 넘지 않음을 의미할 수 있다.
다양한 실시 예에 따르면, 상기 모드 선택 정보 1210은 해당 데이터 블록의 인코딩을 위해 사용된 압축 모드를 알리기 위한 정보일 수 있다. 상기 공간 예측 정보 1212는 해당 데이터 블록을 분할한 4개의 서브 데이터 블록들 각각의 공간 예측을 위한 최적의 예측 방향을 알리기 위한 정보일 수 있다.
상기 에러 서브 데이터 블록 선택 정보 1214는 하나의 데이터 블록을 분할한 서브 데이터 블록들 중 에러를 갖는 적어도 하나의 서브 데이터 블록을 식별하기 위한 정보일 수 있다. 예를 들어, 상기 에러 서브 데이터 블록 선택 정보 1214는 4 비트로 구성될 수 있다. 상기 에러 서브 데이터 블록 선택 정보 1214를 구성하는 4 비트는 네 개의 서브 데이터 블록들과 일대일 대응 관계를 가질 수 있다. 이런 경우, 에러 서브 데이터 블록 선택 정보 1214를 구성하는 각 비트는 대응하는 서브 데이터 블록의 에러 발행 여부를 나타낼 수 있다.
다양한 실시 예에 따르면, 상기 에러 정정 부호화 정보 1216 내지 1253은 에러 서브 데이터 블록에 대한 에러 정정을 위해 사용할 정보일 수 있다. 한 실시 예에 따르면, 상기 에러 정정 부호화 정보는 에러 서브 데이터 블록에 대응한 비트 맵 정보 및 에러 정정 정보를 포함할 수 있다. 한 실시 예에 따르면, 상기 에러 정정 부호화 정보는 에러 서브 데이터 블록의 개수에 따라 상이한 포맷을 가질 수 있다. 이에 대한 구체적인 설명은 후술하도록 한다.
다양한 실시 예에 따르면, 상기 비트 맵 정보는 에러 서브 데이터 블록을 구성하는 픽셀들 중에서 최소 에러를 가지는 하나의 픽셀과 그렇지 않은 나머지 세 개의 픽셀들을 확인할 수 있는 정보일 수 있다. 한 실시 예에 따르면, 상기 비트 맵 정보는 4 비트로 구성될 수 있다. 한 실시 예에 따르면, 상기 비트 맵 정보를 구성하는 4 비트는 네 개의 픽셀들과 일대일 대응 관계를 가질 수 있다. 한 실시 예에 따르면, 상기 비트 맵 정보를 구성하는 각 비트는 대응하는 하나의 픽셀의 에러 정정 부호가 예측 테이블 인덱스에 의해 구성되었는지 대표 값에 의해 구성되었는지를 나타낼 수 있다.
한 실시 예에 따르면, 상기 에러 정정 정보는 에러 서브 데이터 블록의 에러 정정을 위해 사용될 정보일 수 있다. 예를 들면, 상기 에러 정정 정보는 예측 테이블 인덱스와 예측 테이블에서 선택된 대표 값들에 의해 구성될 수 있다.
이하 에러 서브 데이터 블록이 하나 또는 둘 또는 셋 또는 넷인 경우 각각에 대응하여 압축 비트 스트림을 생성하는 동작에 대해 설명하고자 한다.
한 실시 예에 따르면, 에러 서브 데이터 블록이 하나인 경우, 인코더 600은 모드 선택 정보 (2 비트) 1210과 공간 예측 정보 (8 비트) 1212 및 에러 서브 데이터 블록 선택 정보 (4비트) 1214 외에 82 비트의 에러 정정 부호화 정보를 생성할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 에러 서브 데이터 블록 선택 정보 1214를 구성하는 4 비트 중 에러 서브 데이터 블록에 대응한 한 비트의 값을 나머지 비트들의 값과 다르게 설정할 수 있다. 상기 에러 서브 데이터 블록 선택 정보 1214는 디코더가 4개의 서브 데이터 블록들을 복원할 때에, 상기 4개의 서브 데이터 블록들 중 에러를 갖고 있는 서브 데이터 블록을 확인하기 위해 이용될 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 에러 정정 부호화 정보를 네 개의 서브 데이터 블록들 중 에러가 발생한 하나의 서브 데이터 블록에 대해 생성할 수 있다. 예를 들어 상기 인코더 600은 하나의 에러 서브 데이터 블록에 대한 비트 맵 정보 1216과 에러 정정 정보 1218에 의해 에러 정정 부호화 정보를 생성할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 비트 맵 정보 1216과 에러 정정 정보 1218을 구성하기 위해, 에러 서브 데이터 블록을 구성하는 네 개의 픽셀들 중 최소 에러를 가지는 픽셀을 선택할 수 있다. 예를 들어 상기 인코더 600은 네 개의 픽셀들 중 최소 에러를 가지는 하나의 픽셀을 선택함으로써, 비트 맵 정보 1216을 구성할 수 있다.
한 실시 예에 따르면, 상기 비트 맵 정보 1216은 에러 서브 데이터 블록을 구성하는 픽셀들 중에서 최소 에러를 가지는 하나의 픽셀과 그렇지 않은 나머지 세 개의 픽셀들을 확인하기 위해 사용될 수 있다. 상기 비트 맵 정보 1216은 예컨대, 4 비트로 구성될 수 있다. 상기 비트 맵 정보 1216을 구성하는 4 비트는 네 개의 픽셀들과 일대일 대응 관계를 가질 수 있다. 이런 경우, 비트 맵 정보 1216을 구성하는 각 비트는 대응하는 하나의 픽셀의 에러 정정 부호가 예측 테이블 인덱스에 의해 구성되었는지 대표 값에 의해 구성되었는지를 나타낼 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 최소 에러를 가지는 픽셀에 대한 에러 정정 정보 1218을 6 비트의 예측 테이블 인덱스에 의해 구성할 수 있다. 예를 들어 인코더 600은 예측 테이블을 구성하는 64개의 대표 값들 중 상기 최소 에러를 가지는 픽셀의 공간 예측에 의해 계산된 픽셀 값과 가장 근사한 대표 값을 찾고, 상기 찾은 대표 값에 대응하여 부여된 예측 테이블 인덱스에 의해 최소 에러를 가지는 픽셀의 에러 정정 정보를 구성할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 최소 에러를 가지는 픽셀을 제외한 나머지 세 개의 픽셀들 각각에 대응하여 RV 테이블을 구성하는 32개의 대표 값들에서 선택된 대표 값들에 의해 에러 정정 정보 1218을 구성할 수 있다.
예를 들어, 나머지 세 개의 픽셀들 각각의 에러 정정 정보는 RV 테이블을 구성하는 32개의 대표 값들 중 해당 픽셀의 공간 예측에 의해 계산된 픽셀 값과 가장 근사한 대표 값을 찾을 수 있다. 상기 인코더 600은 나머지 세 개의 픽셀들 별로 찾은 대표 값들에 의해 에러 정정 정보를 구성할 수 있다. 예컨대, 상기 대표 값이 24 비트로 정의되는 경우, 나머지 세 개의 픽셀들에 대한 에러 정정 정보는 72 비트 (
Figure pat00018
)로 구성될 수 있다.
아울러 상기 인코더 600은 비트 맵 정보와, 최소 에러를 가지는 픽셀에 대응한 예측 테이블 인덱스 및 나머지 세 개의 픽셀들 각각에 대응한 대표 값들에 의해 에러 정정 부호화 정보를 생성할 수 있다. 예를 들면, 상기 비트 맵 정보는 4 비트이고, 상기 예측 테이블 인덱스는 6 비트이며, 상기 나머지 세 개의 픽셀들 각각에 대응한 대표 값들의 전체 비트 수는 72 비트이므로, 에러 정정 부호화 정보의 비트 수는 82 비트가 될 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 2 비트의 모드 선택 정보, 8 비트의 공간 예측 정보, 4 비트의 에러 서브 데이터 블록 선택 정보 및 82 비트의 에러 정정 부호화 정보로 구성된 96 비트의 압축 비트 스트림을 생성할 수 있다.
예를 들면, 상기 2 비트의 모드 선택 정보는 선택된 데이터 블록을 인코딩하기 위해 압축 모드 1이 사용되었음을 나타낼 수 있다. 상기 8 비트의 공간 예측 정보는 선택된 데이터 블록을 분할한 4개의 서브 데이터 블록들 각각의 공간 예측을 위한 예측 방향을 나타낼 수 있다. 상기 에러 서브 데이터 블록 선택 정보는 서브 데이터 블록들 중 에러를 갖는 서브 데이터 블록을 식별하는데 사용될 수 있다.
한 실시 예에 따르면, 상기 에러 정정 부호화 정보는 4 비트의 비트 맵 및 78 비트를 넘지 않도록 각 픽셀에 대해 구성된 에러 정정 정보를 포함할 수 있다. 상기 에러 정정 정보는 최소 에러를 갖는 픽셀의 픽셀 값을 이용하여 예측 테이블로부터 획득한 예측 데이터 인덱스 (6 비트)와, 나머지 세 개의 픽셀들 각각의 픽셀 값들을 이용하여 RV 테이블로부터 획득한 세 개의 대표 값들 72 비트 (
Figure pat00019
)에 의해 구성될 수 있다.
한 실시 예에 따르면, 에러 서브 데이터 블록이 둘인 경우, 인코더 600은 모드 선택 정보 (2 비트) 1210과 공간 예측 정보 (8 비트) 1212 및 에러 서브 데이터 블록 선택 정보 (4 비트) 1214 외에 80 비트의 에러 정정 부호화 정보를 생성할 수 있다.
예를 들어, 상기 인코더 600은 에러 서브 데이터 블록 선택 정보 1214를 구성하는 4 비트 중 두 개의 에러 서브 데이터 블록들에 대응한 두 비트의 값을 나머지 두 비트의 값과 다르게 설정할 수 있다. 상기 에러 서브 데이터 블록 선택 정보 1214는 디코더가 4개의 서브 데이터 블록들을 복원할 때에, 상기 4개의 서브 데이터 블록들 중 에러를 갖고 있는 두 개의 에러 서브 데이터 블록을 확인하기 위해 사용될 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 에러 정정 부호화 정보를 네 개의 서브 데이터 블록들 중 에러가 발생한 두 개의 서브 데이터 블록들에 대해 생성할 수 있다. 예컨대 인코더 600은 두 개의 에러 서브 데이터 블록들 각각에 대한 비트 맵 정보 1220, 1224와 에러 정정 정보 1222, 1226에 의해 에러 정정 부호화 정보를 생성할 수 있다.
예를 들면, 상기 인코더 600은 비트 맵 정보 1220, 1224와 에러 정정 정보 1222, 1226을 구성하기 위해, 에러 서브 데이터 블록들 각각에 대응하여 네 개의 픽셀들 중 최대 에러를 가지는 제 1 픽셀과, 그 다음으로 큰 에러를 가지는 제 2 픽셀을 선택할 수 있다. 상기 인코더 600은 두 개의 에러 서브 데이터 블록들 별로 제1 및 제 2 픽셀을 선택함으로써, 각 에러 서브 데이터 블록에 대응한 비트 맵 정보 1220, 1224를 구성할 수 있다.
한 실시 예에 따르면, 상기 비트 맵 정보 1220, 1224는 에러 서브 데이터 블록을 구성하는 픽셀들 중에서 최대 에러를 가지는 픽셀과 그 다음으로 큰 에러를 가지는 픽셀 및 나머지 두 개의 픽셀들을 확인하기 위해 사용될 수 있다. 상기 비트 맵 정보 1220, 1224는 예컨대, 8 비트로 구성될 수 있다. 상기 비트 맵 정보 1220, 1224를 구성하는 8 비트는 네 개의 픽셀들과 일대일 대응 관계를 가질 수 있다. 이런 경우, 비트 맵 정보 1220, 1224는 디코더가 디코딩 시에 어느 픽셀 (제 1 픽셀)의 에러 정정 부호가 예측 테이블 인덱스에 의해 구성되었는지를 확인하기 위해 사용될 수 있다. 뿐만 아니라 비트 맵 정보 1220, 1224는 디코더가 디코딩 시에 어느 픽셀 (제 2 픽셀)의 에러 정정 부호가 대표 값에 의해 구성되었는지를 확인하기 위해 사용될 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 에러 서브 데이터 블록 별로 최대 에러를 가지는 제 1 픽셀에 대한 에러 정정 정보를 24 비트의 대표 값으로 구성하고, 그 다음으로 큰 에러를 가지는 제 2 픽셀에 대한 에러 정정 정보를 6 비트의 예측 테이블 인덱스로 구성할 수 있다.
이런 경우, 두 개의 에러 서브 데이터 블록들 각각에 대응한 에러 정정 부호화 정보는 8 비트의 비트 맵 정보 1220, 1224와 24 비트의 대표 값 및 6 비트의 예측 테이블 인덱스로 구성될 수 있다. 그러므로 전체 에러 정정 부호화 정보는 76 비트가 될 수 있다.
한 실시 예에 따르면, 인코더 600은 예측 테이블을 구성하는 64개의 대표 값들 중 제 1 픽셀의 공간 예측에 의해 계산된 픽셀 값과 가장 근사한 대표 값을 획득할 수 있다. 상기 인코더 600은 예측 테이블을 구성하는 64개의 대표 값들 중 제 2 픽셀이 공간 예측에 의해 계산된 픽셀 값과 가장 근사한 대표 값을 찾고, 상기 찾은 대표 값에 대응하여 부여된 예측 테이블 인덱스를 획득할 수 있다.
상기 인코더 600은 두 개의 에러 서브 데이터 블록 별로 제 1 픽셀에 대한 대표 값과 제 2 픽셀에 대한 예측 데이터 인덱스를 획득할 수 있다. 이런 경우, 상기 인코더 600은 제 1 픽셀에 대해 획득한 대표 값과 제 2 픽셀에 대해 획득한 예측 데이터 인덱스의 결합에 의해 두 개의 에러 서브 데이터 블록 각각의 에러 정정 정보 1222, 1226을 구성할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 비트 맵 정보 1220, 1224와 에러 정정 정보 1222, 1226의 조합에 의해, 에러 서브 데이터 블록 별로의 에러 정정 부호화 정보를 생성할 수 있다. 상기 비트 맵 정보 1220, 1224는 예컨대, 8 비트이고, 상기 예측 테이블 인덱스는 예컨대, 6 비트이며, 상기 대표 값은 예컨대, 24 비트이므로, 하나의 에러 서브 데이터 블록에 대한 에러 정정 부호화 정보의 비트 수는 예컨대, 38이다. 그러므로 두 개의 에러 서브 데이터 블록에 대한 에러 정정 부호화 정보의 비트 수는 76 비트가 될 수 있다.
예를 들면, 상기 인코더 600은 76 비트의 에러 정정 부호화 정보에 2 비트의 모드 선택 정보와 8 비트의 공간 예측 정보 및 4 비트의 에러 서브 데이터 블록 선택 정보를 추가하여 90 비트의 압축 비트 스트림을 생성할 수 있다.
이런 경우 상기 2 비트의 모드 선택 정보는 선택된 데이터 블록을 인코딩하기 위해 압축 모드 1이 사용되었음을 나타낼 수 있다. 상기 8 비트의 공간 예측 정보는 선택된 데이터 블록을 분할한 4개의 서브 데이터 블록들 각각의 공간 예측을 위한 예측 방향을 나타낼 수 있다. 상기 에러 서브 데이터 블록 선택 정보는 서브 데이터 블록들 중 에러를 갖는 두 개의 서브 데이터 블록을 식별하도록 하는 정보일 수 있다.
예를 들면, 상기 에러 정정 부호화 정보는 두 개의 에러 서브 데이터 블록 각각에 대응하여 8 비트의 비트 맵 및 30 비트의 에러 정정 정보를 포함할 수 있다. 상기 에러 정정 정보는 최대 에러를 갖는 제 1 픽셀의 픽셀 값을 이용하여 예측 테이블로부터 획득한 대표 값 (24 비트)과 그 다음으로 큰 에러를 갖는 제 2 픽셀 값을 이용하여 예측 테이블로부터 획득한 예측 데이터 인덱스 (6 비트)에 의해 구성될 수 있다.
일 실시 예에 따르면, 에러 서브 데이터 블록이 셋인 경우, 인코더 600은 모드 선택 정보 (2 비트) 1210과 공간 예측 정보 (8 비트) 1212 및 에러 서브 데이터 블록 선택 정보 (4비트) 1214 외에 86 비트의 에러 정정 부호화 정보를 생성할 수 있다.
이런 경우, 상기 인코더 600은 네 개의 서브 데이터 블록들 중 에러를 가지는 세 개의 서브 데이터 블록을 식별할 수 있도록, 에러 서브 데이터 블록 선택 정보 1214를 구성할 수 있다. 예를 들면, 상기 인코더 600은 에러 서브 데이터 블록 선택 정보 1214를 구성하는 4 비트 중 세 개의 에러 서브 데이터 블록들에 대응한 비트 값들을 나머지 하나의 비트 값과 다르게 설정할 수 있다. 이와 같이 설정된 비트 값들을 가지는 에러 서브 데이터 블록 선택 정보 1214는 디코더가 4개의 서브 데이터 블록들을 디코딩할 때, 상기 4개의 서브 데이터 블록들 중 에러를 갖고 있는 세 개의 에러 서브 데이터 블록들을 확인하기 위해 사용될 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 네 개의 서브 데이터 블록들 중 에러가 발생한 세 개의 서브 데이터 블록들에 대해 에러 정정 부호화 정보를 생성할 수 있다. 예컨대 인코더 600은 세 개의 에러 서브 데이터 블록들 각각에 대한 비트 맵 정보 1230, 1232, 1234와 에러 정정 정보 1231, 1233, 1235 및 서브 데이터 블록 구분 정보 1236, 1237, 1238에 의한 에러 정정 부호화 정보를 생성할 수 있다.
예를 들어 상기 인코더 600은 비트 맵 정보 1230, 1232, 1234와 에러 정정 정보 1231, 1233, 1235 및 서브 데이터 블록 구분 정보 1236, 1237, 1238을 구성하기 위해, 세 개의 에러 서브 데이터 블록들 각각에 대한 에러 정도를 확인할 수 있다. 상기 인코더 600은 확인된 에러 정도를 기반으로 세 개의 에러 서브 데이터 블록을 구분할 수 있다. 예컨대 상기 인코더 600은 가장 높은 에러를 가지는 에러 서브 데이터 블록을 제 1 에러 서브 데이터 블록으로 결정하고, 가장 낮은 에러를 가지는 에러 서브 데이터 블록을 제 3 에러 서브 데이터 블록으로 결정하며, 나머지 하나의 에러 서브 데이터 블록을 제 2 에러 서브 데이터 블록으로 결정할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 제1, 제2, 제 3 에러 서브 데이터 블록 별로 다른 형식의 에러 정정 부호화 정보를 생성할 수 있다. 상기 다른 형식은 에러 정정 부호화 정보의 구성이 다름을 의미할 수 있다.
한 실시 예에 따르면, 인코더 600은 제 1 에러 서브 데이터 블록에 대한 에러 정정 부호화 정보를 2-레벨 비트 맵 (8 비트) 1230, 하나의 대표 값 및 하나의 예측 테이블 인덱스로 이루어진 에러 정정 정보 1231 및 제 1 에러 서브 데이터 블록에 대해 할당된 서브 데이터 블록 구분 정보 (2 비트) 1236에 의해 생성할 수 있다. 상기 제 1 에러 서브 데이터 블록에 대한 에러 정정 부호화 정보는 40 비트로 구성될 수 있다.
예를 들면, 상기 인코더 600은 제 2 에러 서브 데이터 블록에 대한 에러 정정 부호화 정보를 1-레벨 비트 맵 (4 비트) 1232, 하나의 대표 값으로 이루어진 에러 정정 정보 1233 및 제 2 에러 서브 데이터 블록에 대해 할당된 서브 데이터 블록 구분 정보 (2 비트) 1237에 의해 생성할 수 있다. 상기 제 2 에러 서브 데이터 블록에 대한 에러 정정 부호화 정보는 30 비트로 구성될 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 제 3 에러 서브 데이터 블록에 대한 에러 정정 부호화 정보를 1-레벨 비트 맵 (4 비트) 1234, 하나의 예측 테이블 인덱스로 이루어진 에러 정정 정보 1235 및 제 3 에러 서브 데이터 블록에 대해 할당된 서브 데이터 블록 구분 정보 (2 비트) 1238에 의해 생성할 수 있다. 상기 제 3 에러 서브 데이터 블록에 대한 에러 정정 부호화 정보는 12 비트로 구성될 수 있다.
이런 경우, 인코더 600은 제 1 에러 서브 데이터 블록을 위한 40 비트의 에러 정정 부호화 정보와, 제 2 에러 서브 데이터 블록을 위한 30 비트의 에러 정정 부호화 정보 및 제 3 에러 서브 데이터 블록을 위한 12 비트의 에러 정정 부호화 정보를 포함하는 82 비트의 에러 정정 부호화 정보를 생성할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 모드 선택 정보 (2 비트) 1210, 공간 예측 정보 (8 비트) 1212, 에러 서브 데이터 블록 선택 정보 (4 비트) 1214 및 에러 정정 부호화 정보 (82 비트)에 의해 압축 비트 스트림을 구성할 수 있다.
한 실시 예에 따르면, 에러 서브 데이터 블록이 넷인 경우, 인코더 600은 모드 선택 정보 (2 비트) 1210과 공간 예측 정보 (8 비트) 1212 및 에러 서브 데이터 블록 선택 정보 (4비트) 1214 외에 84 비트의 에러 정정 부호화 정보를 생성할 수 있다.
이런 경우, 상기 인코더 600은 에러를 가지는 네 개의 서브 데이터 블록을 식별할 수 있도록, 에러 서브 데이터 블록 선택 정보 1214를 구성할 수 있다. 예컨대 상기 인코더 600은 에러 서브 데이터 블록 선택 정보 1214를 구성하는 모든 비트들의 값을 미리 약속된 값으로 설정할 수 있다. 상기 미리 약속된 값은 해당 서브 데이터 블록이 에러를 가짐을 나타내기 위해 약속한 비트 값을 의미할 수 있다. 상기 에러 서브 데이터 블록 선택 정보 1214는 디코더가 4개의 서브 데이터 블록들을 복원할 때에, 상기 4개의 서브 데이터 블록들 모두가 에러를 갖고 있음을 확인할 수 있도록 하는데 사용될 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 에러가 발생한 4개의 에러 서브 데이터 블록들에 대해 에러 정정 부호화 정보를 생성할 수 있다. 예컨대 인코더 600은 세 개의 에러 서브 데이터 블록들을 에러의 발생 정도를 고려하여 두 개의 그룹으로 분류하고, 상기 분류된 그룹 별로 다른 형식의 에러 정정 부호화 정보를 생성할 수 있다. 상기 다른 형식은 에러 정정 부호화 정보의 구성이 다름을 의미할 수 있다.
한 실시 예에 따르면, 인코더 600은 에러 서브 데이터 블록들 각각에 대한 에러 정도를 확인하고, 상기 확인된 에러 정도에 고려하여 상기 에러 서브 데이터 블록들을 두 개의 그룹으로 분류할 수 있다. 예컨대 상기 인코더 600은 상대적으로 높은 에러를 가지는 두 개의 에러 서브 데이터 블록들을 제 1 에러 서브 데이터 블록 그룹으로 결정하고, 상대적으로 낮은 에러를 가지는 두 개의 에러 서브 데이터 블록들을 제 2 에러 서브 데이터 블록 그룹으로 결정할 수 있다.
예를 들면, 상기 인코더 600은 제 1 에러 서브 데이터 블록 그룹으로 분류된 두 개의 에러 서브 데이터 블록들 각각에 대한 에러 정정 부호화 정보를 비트 맵 (4 비트) 1240, 1242, 하나의 대표 값 (24 비트) 1241, 1243 및 서브 데이터 블록 구분 정보 (1 비트) 1250, 1251에 의해 생성할 수 있다. 상기 제 1 에러 서브 데이터 블록 그룹을 구성하는 각 에러 서브 데이터 블록에 대한 에러 정정 부호화 정보는 29 비트로 구성될 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 제 2 에러 서브 데이터 블록 그룹으로 분류된 두 개의 에러 서브 데이터 블록들 각각에 대한 에러 정정 부호화 정보를 비트 맵 (4 비트) 1244, 1246, 하나의 예측 테이블 인덱스 (6 비트) 1245, 1247 및 서브 데이터 블록 구분 정보 (1 비트) 1252, 1253에 의해 생성할 수 있다. 상기 제 2 에러 서브 데이터 블록 그룹을 구성하는 각 에러 서브 데이터 블록에 대한 에러 정정 부호화 정보는 11 비트로 구성될 수 있다.
이런 경우, 인코더 600은 제 1 에러 서브 데이터 블록 그룹을 구성하는 두 개의 에러 서브 데이터 블록들을 위한 58 비트의 에러 정정 부호화 정보와, 제 2 에러 서브 데이터 블록 그룹을 구성하는 두 개의 에러 서브 데이터 블록들을 위한 22 비트의 에러 정정 부호화 정보를 포함하는 80 비트의 에러 정정 부호화 정보를 생성할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 모드 선택 정보 (2 비트) 1210, 공간 예측 정보 (8 비트) 1212, 에러 서브 데이터 블록 선택 정보 (4 비트) 1214 및 에러 정정 부호화 정보 (80 비트)에 의해 압축 비트 스트림을 구성할 수 있다.
두 번째로 다양한 압축 기법들 중 하나인 압축 모드 2를 사용하여 압축된 데이터를 구성하는 것에 대해 설명하도록 한다.
압축 모드 2 (코드북 인덱싱 기법)에 따른 인코딩 동작은, 데이터 블록을 구성하는 각 픽셀 값을 코드-북 (대표 값 (RV) 테이블)을 구성하는 대표 값들의 인덱스로 인코딩하는 동작을 포함할 수 있다.
예컨대 하나의 색 요소는 8 비트로 이루어지고, 하나의 픽셀은 세 가지의 색 요소들 (R, G, B)에 의해 구성되므로, 하나의 픽셀 값은 24 (
Figure pat00020
) 비트를 가질 수 있다. 압축 모드 2에 따른 인코딩 시에 사용될 코드-북 (RV 테이블)은 예컨대, 32개의 대표 값들로 구성된다. 이런 경우, 상기 코드-북 (RV 테이블) 내의 각 대표 값 (24 비트)에는 5 비트의 코드-북 인덱스 (또는 대표 값 (RV) 인덱스)가 부여될 수 있다.
예를 들면, 인코더 600은 코드-북 (RV 테이블)을 구성하는 32개의 대표 값들 중 픽셀 값과 가장 유사한 대표 값을 찾고, 상기 픽셀 값을 상기 찾은 대표 값에 부여된 5 비트의 코드-북 인덱스로 치환할 수 있다. 이로써 24 비트의 픽셀 값은 5 비트의 코드-북 인덱스로 인코딩될 수 있다.
한 실시 예에 따르면, 4:1의 압축 율을 목표할 수 있다. 이런 경우, 384 (
Figure pat00021
) 비트로 구성된 하나의 데이터 블록의 인코딩 결과 값은 96 (
Figure pat00022
) 비트가 되어야 한다. 상기 하나의 데이터 블록이 384 비트로 구성되는 것은, 하나의 데이터 블록이 24 비트로 구성된 16개의 픽셀들로 구성되기 때문이다.
한 실시 예에 따르면, 하나의 데이터 블록을 구성하는 16개의 픽셀들을 코드-북 인덱스로 인코딩한다면, 상기 인코딩 결과로 예컨대, 80 (
Figure pat00023
) 비트를 얻을 수 있다. 상기 80 비트는 목표로 하는 비트 수인 96 비트에 비해, 14 비트가 부족한 것이다. 이런 경우, 14 비트의 잉여 비트가 발생한다. 상기 압축 모드 2는 예컨대, 14 비트의 잉여 비트를 에러 정정을 위해 활용할 수 있다.
도 13은 다양한 실시 예에 따른, 인코더에서 압축 모드 2에 따른 서브 루틴을 도시하고 있는 도면이다.
도 13을 참조하면, 하나의 데이터 블록은 16개의 픽셀들로 구성되고, 각 픽셀 값은 4:1의 압축 율에 의해 인코딩될 수 있다.
인코더 600은 픽셀 별 인덱싱을 수행하여 코드-북 (RV 테이블) 인덱스 정보를 구성할 수 있다 (1310 단계). 예컨대 상기 인코더 600은 24 비트의 픽셀 값을 코드-북 (RV 테이블)을 구성하는 대표 값들과 비교하고, 상기 비교에 의해 상기 픽셀 값과 가장 근사한 대표 값을 선택할 수 있다. 상기 인코더 600은 하나의 픽셀에 대응하여 대표 값을 선택하면, 상기 코드-북 (RV 테이블)에서 상기 선택한 대표 값에 대해 부여한 5 비트의 코드-북 (RV 테이블) 인덱스를 획득할 수 있다. 상기 인코더 600은 획득한 5 비트의 코드-북 (RV 테이블) 인덱스가 해당 픽셀 값을 대신할 수 있도록 한다. 예컨대, 상기 인코더 600은 24 비트의 픽셀 값을 5 비트의 코드-북 (RV 테이블) 인덱스로 인코딩할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 동일한 방법에 의해 하나의 데이터 블록을 구성하는 모든 픽셀들에 대한 인코딩을 수행할 수 있다. 상기 인코더 600은 모든 픽셀에 대한 인코딩이 완료될 시, 80 비트의 인덱싱 정보 (Indices to RV table)를 얻을 수 있다.
상기 인코더 600은 모든 픽셀에 대한 인코딩이 완료되면, 벡터 양자화를 이용하여 에러 정정 정보를 구성할 수 있다 (1312 단계). 상기 에러 정정 정보는 하나의 데이터 블록에서 최대 에러를 가지는 픽셀을 식별하는 정보 (Base Index), 에러 정정을 위한 벡터 (V)의 방향 (direction) 및 거리 (length)에 관한 정보를 포함할 수 있다.
이런 경우, 상기 인코더 600은 에러 정정 정보를 구성하기 위한 하나의 기준 픽셀을 선택할 수 있다. 상기 기준 픽셀은 하나의 데이터 블록을 구성하는 픽셀들 중 하나로써, 최대 에러를 가지는 픽셀을 선택할 수 있다. 상기 인코더 600은 기준 픽셀을 선택하면, 기준 픽셀의 좌표 값과 에러 정정을 통해 얻고자 하는 목표 픽셀의 좌표 값을 이용한 벡터 양자화를 수행할 수 있다. 상기 인코더 600은 벡터 양자화를 통해 기준 픽셀의 좌표와 목표 픽셀의 좌표에 의해 정의되는 벡터 (V)를 획득할 수 있다. 상기 벡터 (V)는 기준 픽셀 값에 대한 에러 정정을 통해 목표 픽셀 셀을 얻기 위해 활용될 수 있다.
상기 벡터 (V)는 방향 정보와 거리 정보에 의해 정의될 수 있다. 이런 경우, 상기 인코더 600은 벡터 (V)로부터 방향 정보와 거리 정보를 계산할 수 있다. 상기 인코더 600은 앞서 계산한 방향 정보와 거리 정보 및 기준 픽셀을 나타내는 식별 정보에 의해 에러 정정 정보를 구성할 수 있다. 예컨대, 벡터 (V)의 방향 정보와 거리 정보 각각은 5 비트로 정의될 수 있으며, 기준 픽셀을 나타내는 식별 정보는 4 비트로 정의될 수 있다. 이런 경우 상기 에러 정정 정보는 15 비트로 구성될 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 압축 모드 2에 따른 인코딩 결과로, 압축 비트 스트림을 구성할 수 있다 (1314 단계). 상기 압축 비트 스트림은 압축모드 선택 정보, 코드-북 (RV 테이블) 인덱스 정보 및 에러 정정 정보를 포함할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 초기 인덱싱에 따른 코드-북 (RV 테이블) 인덱스 정보와 에러 정정 정보를 기반으로 벡터 양자화를 수행할 수 있다. 예를 들면, 상기 인코더 600은 벡터 양자화를 수행함으로써, 각 픽셀에 대응한 대표 값을 재 구성할 수 있다. 상기 인코더 600은 픽셀들 각각에 대응하여 재 구성한 대표 값들에 의해 코드-북 (RV 테이블)을 구성하는 대표 값 (RV)을 갱신할 수 있다 (1316 단계).
한 실시 예에 따르면, 상기 인코더 600은 대표 값들이 갱신된 코드-북 (RV 테이블)에 대한 서치를 통해, 픽셀 값들에 대한 인덱싱을 재 수행할 수 있다 (1318 단계). 상기 인코더 600은 최초 인덱싱으로 인해 픽셀에 야기되는 에러를 줄이기 위해, 대표 값이 갱신된 코드-북 (RV 테이블)을 기반으로 픽셀들에 대한 인덱싱을 다시 수행할 수 있다.
상기 인코더 600은 재 인덱싱이 완료되면, 그 결과를 기반으로 픽셀들에 대한 재 구성을 수행할 수 있다 (1320 단계). 상기 인코더 600은 재 구성된 픽셀들과 원래의 픽셀들에 따른 에러 율 (MAE)을 계산할 수 있다 (1322 단계).
한 실시 예에 따르면, 압축 모드 2에서 코드-북 (RV 테이블)의 사이즈는 변경될 수 있으며, 에러 정정을 위해 스칼라 양자화나 벡터 양자화를 이용할 수 있다. 뿐만 아니라 인덱싱에 사용될 수 있는 값들 역시 품질의 변화를 위해 변경될 수 있을 것이다. 한 실시 예에 따르면, 픽셀마다, RV 테이블로부터의 일부 값들 및/또는 픽셀 주변의 일부 값들로 구성된 새로운 임시 RV 테이블이 만들어질 수 있다. 상기 코드-북 (RV 테이블)을 구성하는 대표 값들의 개수 및 주변 픽셀들로부터 고려될 값들의 개수는 변경될 수도 있다.
도 14는 다양한 실시 예의 압축 모드 2에 의한 인코딩 시의 에러 정도를 도시한 도면이다. 예컨대 하나의 픽셀 값을 코드-북 (RV 테이블)을 구성하는 대표 값들로 치환하였을 시에 예상되는 에러 율을 세 가지의 색 요소 (R, G, B)의 좌표 상에 벡터로 표현한 예를 도시하고 있다.
도 15는 다양한 실시 예에 따른, 압축 모드 2에 있어 에러 정정을 위한 벡터를 획득하는 일 예를 도시한 도면이다.
도 15를 참조하면, 에러 정정을 위한 벡터는 설명의 편의를 위해 두 가지의 색 요소 (G, R)에 의한 좌표로 정의할 수 있다.
한 실시 예에 따르면, 압축 모드 2에서는 에러 정정을 위해 벡터의 방향과 길이를 활용할 수 있다. 예컨대 하나의 데이터 블록을 구성하는 16개의 픽셀들 중 에러를 가지는 하나의 픽셀을 선택할 수 있다. 이 경우, 16개의 픽셀들 중 가장 큰 에러를 가지는 픽셀을 선택할 수 있다.
한 실시 예에 따르면, 상기 선택한 픽셀 (base pixel)의 좌표 a (G, B)와 목표 픽셀 (target pixel)의 좌표 b (G’, B’)를 연결하는 벡터 (V)를 획득할 수 있다. 상기 벡터 (V)는 상기 선택한 픽셀 (base pixel)의 좌표 a (G, B)와 목표 픽셀 (target pixel)의 좌표 b (G’, B’)를 고려한 벡터 양자화를 수행하여 획득할 수 있다.
한 실시 예에 따르면, 임의의 기준 좌표 (0,0)에서 선택한 픽셀의 좌표 a를 연결하는 벡터 (A)와 임의의 기준 좌표 (0,0)에서 선택한 픽셀의 좌표 b를 연결하는 벡터 (B)를 이용하여 벡터 (V)를 계산할 수도 있다.
예컨대 상기 에러 정정을 위해 활용할 14 비트는 벡터 (V)의 획득을 위해 선택된 벡터를 나타내는 4 비트, 벡터 (V)의 방향을 표현하는 5 비트 및 벡터 (V)의 양자화된 거리를 표현하는 5 비트로 구성될 수 있다.
한 실시 예에 따르면, 인코더 600은 에러 정정을 위한 14 비트와, 초기 인덱싱에 따른 결과 값을 이용한 벡터 양자화를 수행하여 대표 값들을 재 구성할 수 있다. 상기 인코더 600은 재 구성한 결과를 기반으로 코드-북 (RV 테이블)을 구성하는 대표 값들을 갱신할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 갱신된 코드-북 (RV 테이블)을 기반으로 픽셀들에 대한 재 인덱싱을 수행할 수 있다. 상기 재 인덱싱을 수행하는 것은 초기 인덱싱에서 픽셀들이 가지는 에러를 줄이기 위한 목적을 가질 수 있다.
도 16은 다양한 실시 예에 따른, 압축 모드 2에 의한 인코딩을 수행하여 획득되는 압축 비트 스트림의 일 예를 도시한 도면이다.
도 16을 참조하면, 압축 비트 스트림은 압축 모드 2에 의해 인코딩되었음을 나타내는 2 비트의 압축모드 선택 정보 (Mode selection) 1610, 픽셀 별 인덱싱을 통해 구성한 80 비트의 코드-북 (RV 테이블) 인덱스 정보 (Indices to RV bits) 1620 및 14 비트의 에러 정정 정보를 포함할 수 있다. 상기 에러 정정 정보는 5 비트의 방향 정보 1640과 5 비트의 거리 정보 1650 및 4 비트의 기준 픽셀을 나타내는 식별 정보 1630을 포함할 수 있다.
세 번째로 다양한 압축 기법들 중 하나인 압축 모드 3을 사용하여 압축된 데이터를 구성하는 것에 대해 설명하도록 한다.
압축모드 3 (보간을 이용한 4-레벨 VQ-BTC 기법)에 따른 인코딩 동작은, 데이터 블록을 구성하는 하위 픽셀들의 묶음 (cluster)을 기반으로 데이터 블록을 압축하는 동작을 포함할 수 있다.
예컨대 8개의 상위 픽셀들과 8개의 하위 픽셀들로 이루어진 하나의 데이터 블록을 인코딩할 경우, 8개의 하위 픽셀들을 4개의 그룹으로 분류하고, 상기 분류된 결과를 기반으로 8개의 하위 픽셀들 별로 2 비트를 요구하는 16 비트의 비트 맵을 구성할 수 있다. 이런 경우, 상기 비트 맵은 8개의 하위 픽셀들 각각이 어떤 그룹으로 분류되었는지를 인지하기 위한 정보로 사용될 수 있다.
한 실시 예에 따르면, 그 외에 하위 픽셀들을 재 구성하기 위해, 인코더 600은 4개의 그룹들을 2개의 쌍으로 구성하고, 상기 2개의 쌍 각각에 대한 2개의 대표 값을 획득할 수 있다. 예를 들면, 인코더 600은 각 쌍에 대응한 2개의 대표 값을 해당 쌍을 구성하는 2개의 그룹 각각에 포함된 4개의 하위 픽셀들이 가지는 픽셀 값들의 평균에 의해 획득할 수 있다.
예컨대 상기 인코더 600은 하나의 쌍에 대응한 중심 값을 그 쌍에서 획득된 두 개의 대표 값들의 평균에 의해 계산할 수 있다. 상기 중심 값이 계산되면, 상기 인코더 600은 상기 중심 값에서 상기 중심 값을 계산하기 위해 사용된 하나의 대표 값으로 형성되는 벡터를 산출할 수 있다. 상기 벡터를 산출하였다면, 상기 인코더 600은 상기 산출한 벡터에 대응한 방향 정보와 길이 정보를 얻을 수 있다.
상기 두 개의 쌍 별로 획득한 대표 값, 방향 및 길이 정보는 압축 비트 스트림에서의 에러 정정 정보를 포함할 수 있다.
예를 들어, 상기 인코더 600은 상기 8개의 상위 픽셀들을 위쪽 라인을 구성하는 픽셀들과 하위 픽셀들을 이용한 서로 다른 종류의 방식을 이용한 보간에 의해 재 구성할 수 있다. 상기 인코더 600은 상기 서로 다른 종류의 보간 방식 별로 보간 인덱스를 부여하고, 상기 8개의 상위 픽셀 각각에 대한 최적의 보간 방식에 해당하는 보간 인덱스에 의해 보간 인덱스 집합을 구성할 수 있다.
상기 압축 모드 3에 따른 압축 비트 스트림은 비트 맵, 보간 인덱스 집합 및 에러 정정 정보를 포함할 수 있다.
도 17은 다양한 실시 예에 따른, 인코더 600에서 압축 모드 3에 따른 서브루틴을 도시한 도면이다.
도 17을 참조하면, 하나의 데이터 블록은 8개의 상위 픽셀들과 8개의 하위 픽셀들에 의한 16 (
Figure pat00024
) 개의 픽셀들로 구성될 수 있다. 상기 하나의 데이터 블록은 4:1의 압축 율에 의해 인코딩될 수 있다.
한 실시 예에 따르면, 인코더 600은 하나의 데이터 블록을 구성하는 8개의 하위 픽셀들이 가지는 픽셀 값들의 평균 값을 검출할 수 있다 (1710 단계). 예컨대, 상기 픽셀 값은 휘도 계수 (luminance coefficient)에 의해 정의될 수 있다. 이런 경우, 상기 평균 값은 하위 픽셀들이 가지는 휘도 계수들의 평균 값이 될 것이다. 상기 휘도 계수는 표준 YCbCr 컬러 변환 기술을 사용하여 계산할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 계산한 평균 값을 임계 값으로 하여 상기 하위 픽셀들을 두 개의 묶음 (cluster)으로 구분할 수 있다 (1712 단계). 상기 인코더 600은 각 하위 픽셀의 휘도 계수와 평균 값을 비교하고, 그 결과에 따라 하위 픽셀들을 두 개의 묶음들로 분류할 수 있다. 예컨대 상기 인코더 600은 평균 값 이상의 휘도 계수를 가지는 하위 픽셀들에 의해 하나의 묶음을 구성하고, 평균 값 미만의 휘도 계수를 가지는 하위 픽셀들에 의해 다른 하나의 묶음을 구성할 수 있다.
상기 인코더 600은 각 묶음으로 분류된 픽셀들의 평균 픽셀 값을 검출할 수 있다 (1714 단계). 한 실시 예에 따르면, 상기 인코더 600은 각 묶음에 속하는 하위 픽셀들이 가지는 휘도 계수들의 평균 값을 계산할 수 있다.
상기 인코더 600은 묶음 별로 검출한 평균 값을 임계 값으로 하여 각 묶음에 속하는 하위 픽셀들을 두 개의 서브 묶음으로 구분할 수 있다 (1716 단계). 예를 들면, 상기 인코더 600은 하나의 묶음에 속하는 하위 픽셀의 휘도 계수와 그 묶음의 평균 값을 비교하고, 그 결과에 따라 하위 픽셀들을 두 개의 서브 묶음들로 분류할 수 있다. 상기 인코더 600은 다른 하나의 묶음에 속하는 하위 픽셀들의 휘도 계수와 그 묶음의 평균 값을 비교하고, 그 결과에 따라 하위 픽셀들을 두 개의 서브 묶음들로 분류할 수 있다.
상술한 동작에 의해, 인코더 600은 하나의 데이터 블록을 구성하는 픽셀들을 평균 값에 의해 네 개의 서브 묶음들로 분류할 수 있다. 예컨대 상기 인코더 600은 하나의 데이터 블록을 구성하는 8개의 하위 픽셀들을 전체 휘도 계수의 평균 값을 사용하여 4개씩 두 개의 묶음으로 분류할 수 있다. 상기 인코더 600은 두 개의 묶음 각각에 대해 검출한 휘도 계수의 평균 값을 사용하여 각 묶음으로 분류된 4개의 하위 픽셀들을 2개씩 두 개의 서브 묶음으로 분류할 수 있다.
그 결과로 하나의 데이터 블록 내에 존재하는 8개의 하위 픽셀들은 2개의 픽셀들을 포함하는 4개의 서브 묶음들로 분류될 것이다. 상기 서브 묶음은 픽셀이 가지는 휘도 계수의 크기에 의해 분류된 것이므로, 각 서브 묶음은 휘도 계수의 크기에 의해 구분하는 것이 가능할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 서브 묶음들 각각에 대응하여 시드 (seed)를 부여하고, 상기 각각의 시드에 대한 비트 맵을 구성할 수 있다 (1718 단계).
예컨대 상기 인코더 600은 4개의 서브 묶음 각각에 대해 “00”, “01”, “10” 및 “11” 또는 “HH”, “HL”, “LH” 및 “LL”을 이용하여 시드를 부여할 수 있다. 이하 “00”, “01”, “10” 및 “11” 또는 “HH”, “HL”, “LH” 및 “LL”을 이용한 시드가 부여된 서브 묶음을 ‘그룹’이라 칭하도록 한다.
상기 “00” 또는 “HH”는 두 번에 걸친 분류에서 픽셀 값이 모두 평균 값 이상인 것으로 판단되었음을 의미한다. 상기 “01” 또는 “HL”는 픽셀 값이 첫 번째 분류에서 평균 값 이상인 것으로 판단되었으나 두 번째 분류에서 평균 값 미만인 것으로 판단되었음을 의미한다. 상기 “10” 또는 “LH”는 픽셀 값이 첫 번째 분류에서 평균 값 미만인 것으로 판단되었으나 두 번째 분류에서 평균 값 이상인 것으로 판단되었음을 의미한다. 상기 “11” 또는 “LL”은 두 번에 걸친 분류에서 픽셀 값이 모두 평균 값 미만인 것으로 판단되었음을 의미한다.
한 실시 예에 따르면, 상기 인코더 600은 각 그룹에 대해 부여된 시드, 즉 “00”, “01”, “10” 및 “11” 또는 “HH”, “HL”, “LH” 및 “LL”에 의해, 하위 픽셀들에 대응한 비트 맵을 구성할 수 있다. 예컨대, 비트 맵을 구성하는 정보 량을 최소화하기 위해서는 각 그룹에 대해 “00”, “01”, “10” 및 “11”을 이용하여 시드를 부여할 수 있다.
하기 <표 2>는 8개의 하위 픽셀들이 분류되고, 그 분류에 대응한 그룹 별로 시드가 부여된 일 예를 보이고 있다.
하위 픽셀 구분 그룹 구분 시드 구분
픽셀 # 1 그룹 # 3 10
픽셀 # 2 그룹 # 1 00
픽셀 # 3 그룹 # 4 11
픽셀 # 4 그룹 # 2 01
픽셀 # 5 그룹 # 2 01
픽셀 # 6 그룹 # 1 00
픽셀 # 7 그룹 # 3 10
픽셀 # 8 그룹 # 4 11
한 실시 예로써, 상기 <표 2>와 같이 하위 픽셀들에 대한 분류 및 시드가 부여되었다면, 인코더 600은 8개의 하위 픽셀들 각각에 부여된 시드를 식별하기 위한 비트 맵을 구성할 수 있다. 예를 들어, 각 하위 픽셀에 부여된 시드를 식별하기 위해 2 비트씩을 할당하였다면, 비트 맵은 총 16 (
Figure pat00025
) 비트에 의해 구성될 것이다. 상기 <표 2>에 따르면, 비트 맵은 “1000110101001011”로 구성될 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 하위 픽셀들에 대한 에러 정정 정보를 구성할 수 있다 (1720 단계). 상기 에러 정정 정보는 대표 값 (RV)과 벡터에 관한 정보를 포함할 수 있다. 상기 벡터에 관한 정보는 방향 정보 (direction)와 길이 정보 (length)로 구성될 수 있다.
한 실시 예에 따르면, 4:1이라는 압축 율을 만족시키기 위해, 에러 정정 정보를 62 비트가 넘지 않도록 구성할 수 있다.
이를 위해서는 두 가지의 방안을 생각해 볼 수 있다. 예를 들어, 벡터 양자화를 이용하는 방안과 스칼라 양자화를 이용하는 방안이 있을 수 있다.
한 실시 예에 따른 벡터 양자화를 이용하는 방안에 대해 설명하면, 인코더 600은 각 서브 그룹에 대한 대표 값 (RV)을 RV 테이블로부터 획득할 수 있다. 상기 대표 값은 서브 그룹에 속하는 픽셀들의 평균 값에 의해 결정될 수 있다. 상기 평균 값은 픽셀 값들의 평균일 수 있다. 예컨대 상기 픽셀 값이 휘도 계수로 정의될 시, 상기 평균 값은 서브 그룹에 속하는 픽셀들이 가지는 휘도 계수들의 평균을 취하여 얻을 수 있다.
상기 인코더 600은 4개의 서브 그룹들에 대한 대표 값들을 획득하면, 상기 획득한 4개의 대표 값들을 두 개의 쌍 (pair)으로 그룹핑할 수 있다. 상기 인코더 600은 그룹핑에 의해 쌍을 이루는 두 개의 대표 값들 간의 중심 값을 산출할 수 있다. 상기 중심 값은 각 쌍에 대해 산출하므로, 인코더 600은 두 개의 중심 값을 얻을 수 있다. 상기 인코더 600은 각 쌍에 대응하여 얻어진 중심 값에서 원래의 대표 값으로 형성되는 벡터에 대한 방향 정보와 길이 정보를 계산할 수 있다.
상기 인코더 600은 각 서브 그룹에 대해 획득한 대표 값들과 각 쌍에 대해 계산한 방향 정보 및 길이 정보에 의해, 하나의 데이터 블록에 대응한 에러 정정 정보를 구성할 수 있다.
상술한 벡터 양자화를 이용하는 방안의 한 실시 예에 대한 구체적인 설명은 도 18을 참조하여 후술될 것이다.
한 실시 예에 따른 스칼라 양자화를 이용하는 방안에 대해 설명하면, 인코더 600은 서로 다른 경우들을 고려하여 비트들을 4개의 대표 값들 사이에서 분산시킬 수 있다. 예컨대 4개의 대표 값들이 동일한 경우, 인코더 600은 4개의 대표 값들을 총 24 비트로 인코딩할 수 있다. 4개의 대표 값들이 서로 다른 경우, 인코더 600은 4개의 대표 값들 중 두 개의 대표 값들 각각을 16 비트로 인코딩하고, 나머지 두 개의 대표 값들 각각을 15 비트로 인코딩할 수 있다. 상기 인코더 600은 인코딩 결과 값을 사용하여 하나의 데이터 블록에 대한 에러 정정 정보를 구성할 수 있다.
상술한 스칼라 양자화를 이용하는 방안의 한 실시 예에 대한 구체적인 설명은 도 19를 참조하여 후술될 것이다.
한 실시 예에 따르면, 상기 인코더 600은 앞서 이루어진 인코딩 결과를 기반으로 데이터 블록을 구성하는 하위 픽셀들을 재 구성할 수 있다 (1722 단계). 예를 들면, 상기 인코더 600은 하위 픽셀들 각각이 속하는 시드를 나타내는 비트 맵과 에러 정정 정보를 기반으로 하위 픽셀들을 재 구성할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 재 구성한 하위 픽셀들과 이전 라인의 픽셀들 간의 보간을 이용하여 데이터 블록을 구성하는 상위 픽셀들을 재 구성할 수 있다 (1724 단계).
상기 인코더 600은 한 실시 예에 따라 재 구성된 하위 및 상위 픽셀들과 원래의 데이터 블록을 구성하는 픽셀들에 의한, 에러 율 (MAE)을 계산한다 (1726 단계).
도 18은 다양한 실시 예에 따른, 압축 모드 3에 의한 인코딩 시, 시드 값 또는 RV 값을 획득하는 일 예를 도시한 도면이다.
도 18을 참조하면, 인코더 600은 하나의 쌍 1870, 1880을 이루는 두 개의 대표 값들(Representative Values)에 의해 중심 값 (Mean Value) 1810, 1840을 산출할 수 있다. 예를 들면, 상기 인코더 600은 상기 하나의 쌍 1870, 1880에 존재하는 두 개의 대표 값 각각을 상기 쌍 1870, 1880을 구성하는 두 개의 그룹에 포함된 4개의 하위 픽셀들 (pixel values)이 가지는 픽셀 값들의 평균에 의해 획득할 수 있다. 상기 인코더 600은 중심 값 1810, 1840을 하나의 쌍 1870, 1880을 구성하는 두 개의 대표 값들의 평균에 의해 계산할 수 있다.
상기 인코더 600은 중심 값 1810, 1840에서 원래의 대표 값으로 향하는 벡터 1830, 1860을 정의하는 방향 정보와 길이 정보를 획득할 수 있다. 한 실시 예로써, 상기 인코더 600은 각 쌍에 대응한 중심 값과 벡터 정보 (방향 정보와 길이 정보)를 획득함으로써, 상기 획득한 중심 값과 벡터 정보 (방향 정보와 길이 정보)에 의해 각 쌍에 대응한 에러 정정 정보를 구성할 수 있다.
예컨대 상기 인코더 600은 62 비트를 넘지 않도록 에러 정정 정보를 구성하여야 하므로, 각 쌍의 중심 값에 18 비트를 할당하고, 방향 정보에 6 비트를 할당하며, 길이 정보에 7 비트를 할당할 수 있다.
도 19는 다양한 실시 예에 따른, 압축 모드 3에 의한 인코딩 시, 스칼라 양자화에 있어서 비트들이 4개의 대표 값들 사이에서 분산이 이루어지는 예를 도시한 도면이다.
도 20은 다양한 실시 예에 따른, 압축 모드 3에 의한 인코딩 시, 보간에 의해 픽셀들을 재 구성하는 예를 도시한 도면이다.
도 20을 참조하면, 데이터 블록 2040의 8개의 상위 픽셀들 2030 중 임의 하나의 픽셀 (y)은 이전 라인의 픽셀들 2020에서의 인접 픽셀들 (a1, b1, c1)과, 상기 데이터 블록 2040의 하위 픽셀들 2010에서의 인접 픽셀들 (a2, b2, c2)을 이용하여 재 구성할 수 있다. 예컨대 상기 이전 라인의 픽셀들 2020에서의 인접 픽셀들과 상기 하위 픽셀들 2010에서의 인접 픽셀들 (a2, b2, c2)은 재 구성할 픽셀 y에 인접한 픽셀들을 의미한다.
상기 픽셀 y는 인접 픽셀들 간의 보간에 의해, 가장 가까운 값이거나 에지를 찾음으로써 재 구성할 수 있다. 예컨대 이전 라인의 픽셀들 2020에서의 인접 픽셀들 (a1, b1, c1)과, 하위 픽셀들 2010에서의 인접 픽셀들 (a2, b2, c2)의 조합 (원 문자 1, 2, 3)에 대한 절대 값들을 계산할 수 있다. 상기 절대 값은 조합을 구성하는 두 개의 픽셀 값들 간의 차이 값에 대한 절대치 (
Figure pat00026
,
Figure pat00027
,
Figure pat00028
)에 의해 계산할 수 있다.
한 실시 예에 따르면, 인코더는 세 개의 조합들 각각에 대해 계산한 절대 값들 중 최소 값을 선택할 수 있다. 상기 절대 값은 해당 조합을 구성하는 두 개의 픽셀들 간의 거리를 나타내는 하나의 예일 수 있다. 예컨대 상기 절대 값이 최소라는 것은 해당 조합을 구성하는 두 개의 픽셀들 간의 거리가 가장 가까움을 나타내는 것이다. 이런 경우, 절대 값이 최소인 두 개의 픽셀들의 보간을 이용하여 픽셀 y를 재 구성한다면, 해당 데이터 블록의 인코딩에 따른 에러 율을 최소화할 수 있을 것이다.
예컨대, a1과 c2가 절대 값이 최소인 경우, 픽셀 y의 값은 a1과 c2 간의 보간을 이용하여 재 구성할 수 있다. 이 경우, 네 가지의 가능한 값들은 픽셀 y를 가장 잘 재 구성할 수 있도록, 서로 다른 보간을 이용하여 선택될 수 있다.
하기 <표 3>은 서로 다른 종류의 보간을 이용하여 재 구성이 가능한 값들에 대한 일 예를 정의하고 있다. 하기 <표 3>에서 픽셀 y의 값의 재 구성은 a1 (이전 라인 픽셀 값)과 c2 (하위 픽셀 값) 간의 보간을 이용하는 것을 가정하고 있다.
보간 인덱스
(Interpolation index)
재 구성 픽셀 값
00 a1
01 c2
10
Figure pat00029
11
Figure pat00030
상기 <표 3>에 따르면, 인코더는 절대 값이 최소인 두 개의 픽셀들을 선택하고, 상기 선택한 두 개의 픽셀들을 기반으로 서로 다른 종류의 보간을 이용하여 재 구성된 픽셀 값들을 산출할 수 있다. 예를 들면, 인코더 600은 획득한 픽셀 값들 중에서 픽셀 y에 가장 근접한 값, 즉 픽셀 y의 재 구성을 가장 잘할 수 있는 값을 선택하는 보간 인덱스를 획득할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 8개의 상위 픽셀들 각각에 대응하여 2 비트씩의 보간 인덱스를 획득할 것이다. 이 경우, 상기 인코더 600은 상위 픽셀 별로 획득한 보간 인덱스들에 의해 16 비트의 보간 인덱스 집합 (Interpolation indices)을 구성할 수 있다. 상기 인코더 600은 하위 픽셀들로부터의 4개의 대표 값들에 의해 RV 테이블을 갱신할 수 있다.
도 21은 다양한 실시 예에 따른, 압축 모드 3에 의한 인코딩을 수행하여 획득되는 압축 비트 스트림의 일 예를 도시한 도면이다.
도 21을 참조하면, 압축 비트 스트림은 압축모드 선택 정보 (Mode selection) 2110, 비트 맵 2120, 보간 인덱스들 2130 및 에러 정정 정보 2140, 2150을 포함할 수 있다.
상기 압축모드 선택 정보 2110은 데이터 블록이 압축 모드 3에 의해 인코딩되었음을 나타내기 위한 2 비트의 정보가 될 수 있다. 상기 비트 맵 2120은 하위 픽셀들 각각에 부여된 시드를 식별하기 위한 16 비트의 정보가 될 수 있다. 상기 보간 인덱스들 2130은 보간을 통해 재 구성될 상위 픽셀 값을 안내하기 위한 16 비트의 정보가 될 수 있다. 상기 에러 정정 정보 2140, 2150은 그룹 별로 획득되며, 62 비트를 넘지 않는다.
예컨대 8개의 하위 픽셀들에 의해 구성한 4개의 그룹들을 두 개의 쌍으로 그룹핑하는 경우, 인코더 600은 상기 그룹핑된 각 쌍에 대응하여 31 비트의 에러 정정 정보를 구성할 수 있다. 상기 31 비트의 에러 정정 정보는 18 비트의 대표 값 2142, 2152와, 6 비트의 방향 정보 2144, 2154 및 7 비트의 길이 정보 2146, 2156을 포함할 수 있다.
네 번째로 다양한 압축 기법들 중 하나인 압축 모드 4를 사용하여 압축된 데이터를 구성하는 것에 대해 설명하도록 한다.
압축 모드 4는 압축 모드 3과 유사한 방식에 의한 인코딩 동작을 수행할 수 있다. 예컨대, 압축 모드 4에서는 하나의 데이터 블록을 구성하는 8개의 상위 픽셀들을 재 구성하기 위한 정보를 압축 모드 3과 다르게 정의할 수 있다. 예를 들어 상기 압축 모드 3에서는 보간을 이용하여 상위 픽셀들을 재 구성하나, 압축 모드 4에서는 비트 맵을 이용하여 재 구성할 수 있다.
정리하면, 압축 모드 3에 따른 압축 비트 스트림은 상위 픽셀들을 보간에 의해 재 구성하기 위한 보간 인덱스 집합을 포함할 수 있는데 반하여, 압축 모드 4에 따른 압축 비트 스트림은 상위 픽셀들을 재 구성하기 위한 비트 맵을 포함할 수 있다.
이런 경우, 압축 모드 4에 의한 압축 비트 스트림은 2 비트의 모드 선택 정보, 16 비트의 비트 맵 정보 및 62 비트의 에러 정정 정보를 포함할 수 있다. 참고로 압축 모드 3에 의한 압축 비트 스트림은 2 비트의 모드 선택 정보, 8 비트의 비트 맵 정보, 8 비트의 보간 인덱스 집합 및 62 비트의 에러 정정 정보를 포함할 수 있다.
한 실시 예로 제안된 압축 모드 4에서는 하나의 데이터 블록을 구성하는 16개의 픽셀들 (8개의 상위 픽셀들과 8개의 하위 픽셀들)을 4개의 묶음으로 분류하기 위해 두 가지의 군집 방법을 사용할 수 있다. 예컨대 제안된 압축 모드 4에서는 픽셀들의 군집을 위해, K-평균 군집 기법 (K-means clustering scheme)과, 주요 성분 분석 기법 (principal component analysis scheme, 이하 ‘PCA 기법’이라 칭함)을 변형하여 사용할 수 있다.
도 22는 다양한 실시 예에 따른, 인코더 600에서 압축 모드 4에 따른 서브루틴을 도시한 도면이다.
도 22를 참조하면, 하나의 데이터 블록은 8개의 상위 픽셀들과 8개의 하위 픽셀들에 의한 16 (
Figure pat00031
) 개의 픽셀들로 구성될 수 있다. 상기 하나의 데이터 블록은 4:1의 압축 율에 의해 인코딩될 수 있다.
한 실시 예에 따르면, 인코더 600은 데이터 블록을 구성하는 각 픽셀과 인접한 주변 픽셀들 간의 연결을 검출할 수 있다 (2210 단계). 상기 인코더 600은 상기 연결을 검출함으로써, 데이터 블록을 구성하는 픽셀들 (상위 픽셀들과 하위 픽셀들)과 재 구성된 주변 픽셀들의 유사성을 고려하여 초기 시드의 값들을 선택할 수 있게 된다. 상기 재 구성된 픽셀들은 해당 데이터 블록에 앞서 인코딩이 이루어진 데이터 블록을 구성하는 픽셀들일 수 있다. 상기 재 구성된 주변 픽셀들은 재 구성된 픽셀들 중 인코딩을 수행할 데이터 블록을 구성하는 각 픽셀에 인접한 픽셀들 일 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 다수의 상위 픽셀들과 다수의 하위 픽셀들로 구성되는 하나의 데이터 블록에서 발생할 수 있는 중복을 고려하여 초기 시드들을 구성할 수 있다 (2212 단계). 예컨대, 인코더 600은 초기 시드들을 데이터 블록을 구성하는 각 픽셀에 대응하여 검출한 주변 픽셀들과의 연결을 기반으로 구성할 수 있다. 상기 주변 픽셀들과의 연결을 기반으로 초기 시드들을 구성할 경우, 상기 인코더 600은 데이터 블록의 픽셀들과 재 구성된 주변 픽셀들의 유사성을 고려한 초기 시드 값들을 얻을 수 있다.
한 실시 예에 따르면, 상기 주변 픽셀들과의 연결을 고려하여 초기 시드 값을 구성하는 것은 데이터 블록을 구성하는 픽셀들을 분류할 시의 복잡도와 시간을 줄이기 위해 사용되는 단순화된 하나의 방안이 될 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 주변 픽셀들과의 연결 등의 다른 조건을 고려하지 않고, 무작위로 초기 시드 값들을 선택할 수도 있다. 이 방법은 픽셀들을 분류할 시의 복잡도와 시간을 줄이기 위해 사용되는 단순화된 하나의 방안이라 할 수는 있으나, 주변 픽셀들과의 유사성을 고려할 수는 없다.
예컨대 초기 시드들은 하나의 데이터 블록을 구성하는 8개의 상위 픽셀들과 8개의 하위 픽셀들 각각을 분류하는 네 개의 묶음에 대응할 수 있다. 상기 초기 시드들, 즉 네 개의 묶음 각각에는 초기 시드 값이 부여될 것이다.
한 실시 예에 따르면, 상기 인코더 600은 표준 K-평균 알고리즘을 이용하여 시드들을 구성할 수 있다 (2214 단계). 예를 들면, 4개의 초기 시드들로 분류된 픽셀들은 변형된 표준 K-평균 알고리즘을 위한 초기 시드로 선택될 것이다. 상기 초기 시드를 사용하면, 상기 인코더 600은 묶음 별로 완벽한 대표 값을 획득하기 위해, 표준 K-평균 알고리즘을 무한정 반복하는 최악의 상황이 발생하는 것을 방지할 수 있다.
한 실시 예에 따른, 변형된 표준 K-평균 알고리즘은 상위 픽셀들과 하위 픽셀들 각각에 대응하여 4개의 묶음들 각각을 표현하는 최선의 대표 값들을 확정할 수 있다, 이를 위해 상기 인코더 600은 변형된 표준 K-평균 알고리즘을 초기 시드들을 사용하여 상위 또는 하위 픽셀들에 대응하여 4회 반복하여 수행할 수 있다. 상기 인코더 600은 변형된 표준 K-평균 알고리즘을 한번 수행할 때마다, 하나의 묶음을 표현하는 최선의 대표 값을 확정할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 표준 K-평균 알고리즘이 아닌 PCA 기법을 변형하여 4개의 묶음들 각각에 대한 대표 값을 확정할 수도 있다. 예컨대, 상기 PCA 기법은 압축 모드 3에서 픽셀들의 휘도 채널에 대한 평균을 산출하는 단순한 방안이 될 수 있다. 이를 위해 변형된 PCA 기법에서는 하나의 데이터 블록을 구성하는 픽셀들의 휘도 계수를 표준 YCbCr 컬러 변환을 이용하여 산출할 수 있다.
예를 들면, 8개의 상위 픽셀들과 8개의 하위 픽셀들로 이루어진 16개의 픽셀들을 인코딩할 경우, 인코더 600은 8개의 상위 픽셀들과 8개의 하위 픽셀들 각각을 4개의 픽셀들로 구성된 2개의 묶음으로 분류할 수 있다. 상기 인코더 600은 상기 2개의 묶음 각각을 다시 2개의 픽셀들로 구성된 2개의 서브 묶음으로 분류할 수 있다. 예컨대 상기 인코더 600은 8개의 상위 픽셀들을 2개의 상위 픽셀들로 구성된 4개의 서브 묶음으로 분류하고, 8개의 하위 픽셀들을 2개의 하위 픽셀들로 구성된 4개의 서브 묶음으로 분류할 수 있다.
보다 구체적으로, 인코더 600은 8개의 상위 픽셀들을 픽셀 값들의 평균에 의한 임계 치를 기준으로 두 개의 묶음으로 분류할 수 있다. 상기 인코더 600은 상기 두 개의 묶음 각각으로 분류된 상위 픽셀들을 그 묶음에서의 픽셀 값들의 평균에 의한 임계 치를 기준으로 다시 두 개의 서브 묶음으로 분류할 수 있다. 이런 경우, 상기 인코더 600은 8개의 상위 픽셀들을 2개의 상위 픽셀들로 이루어진 4개의 서브 묶음으로 분류할 수 있다.
상기 인코더 600은 8개의 하위 픽셀들을 픽셀 값들의 평균에 의한 임계 치를 기준으로 두 개의 묶음으로 분류할 수 있다. 상기 인코더 600은 상기 두 개의 묶음 각각으로 분류된 하위 픽셀들을 그 묶음에서의 픽셀 값들의 평균에 의한 임계 치를 기준으로 다시 두 개의 서브 묶음으로 분류할 수 있다. 이런 경우, 상기 인코더 600은 8개의 하위 픽셀들을 2개의 하위 픽셀들로 이루어진 4개의 서브 묶음으로 분류할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 상위 픽셀들을 분류하는 4개의 서브 묶음들과, 하위 픽셀들을 분류하는 4개의 서브 묶음들에 의한 시드들을 구성할 수 있다.
예컨대 상기 인코더 600은 상위 픽셀들을 분류한 4개의 서브 묶음 각각에 대해 “00”, “01”, “10” 및 “11” 또는 “HH”, “HL”, “LH” 및 “LL”을 이용하여 시드를 부여할 수 있다. 상기 인코더 600은 하위 픽셀들을 분류한 4개의 서브 묶음 각각에 대해서도 “00”, “01”, “10” 및 “11” 또는 “HH”, “HL”, “LH” 및 “LL”을 이용하여 시드를 부여할 수 있다.
상기 “00” 또는 “HH”는 두 번에 걸친 분류에서 픽셀 값이 모두 평균 값 이상인 것으로 판단되었음을 의미할 수 있다. 상기 “01” 또는 “HL”는 픽셀 값이 첫 번째 분류에서 평균 값 이상인 것으로 판단되었으나 두 번째 분류에서 평균 값 미만인 것으로 판단되었음을 의미할 수 있다. 상기 “10” 또는 “LH”는 픽셀 값이 첫 번째 분류에서 평균 값 미만인 것으로 판단되었으나 두 번째 분류에서 평균 값 이상인 것으로 판단되었음을 의미할 수 있다. 상기 “11” 또는 “LL”은 두 번에 걸친 분류에서 픽셀 값이 모두 평균 값 미만인 것으로 판단되었음을 의미할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 상위 픽셀들과 하위 픽셀들 각각에 대응하여 분류된 4개의 묶음들에 대한 대표 값들을 획득할 수 있다. 상기 인코더 600은 상기 획득한 4개의 대표 값들을 두 개의 쌍 (pair)으로 그룹핑할 수 있다. 상기 인코더 600은 상기 그룹핑에 의해 쌍을 이루는 두 개의 대표 값들 간의 중심 값에 의해 해당 쌍의 대표 값을 산출할 수 있다 (2216 단계).
예를 들면, 상기 인코더 600은 상위 픽셀들에 대응하여 두 개의 쌍과 해당 쌍에 대응한 대표 값을 획득하고, 하위 픽셀들에 대응하여 두 개의 쌍과 해당 쌍에 대응한 대표 값을 획득할 수 있다. 예컨대, 상기 중심 값은 각 쌍에 대해 산출하므로, 인코더 600은 상위 픽셀들에 대응한 두 개의 중심 값과 하위 픽셀들에 대응한 두 개의 중심 값을 얻을 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 각 쌍에 대응하여 얻어진 중심 값에서 원래의 대표 값으로 형성되는 벡터를 검출할 수 있다 (2218 단계).
한 실시 예에 따라, 상기 인코더 600은 앞서 구성한 시드들을 기반으로 비트 맵을 구성하고, 앞서 검출한 벡터들에 의해 에러 정정 정보를 구성할 수 있다.
예컨대 상기 인코더 600은 각 그룹에 대해 부여된 시드, 즉 “00”, “01”, “10” 및 “11” 또는 “HH”, “HL”, “LH” 및 “LL”에 의해, 하나의 데이터 블록에 대응한 비트 맵을 구성할 수 있다. 상기 구성되는 비트 맵은 상위 픽셀들에 대한 8비트의 비트 맵과, 하위 픽셀들에 대한 8비트의 비트 맵을 포함할 수 있다. 상기 비트 맵을 구성하는 정보 량을 최소화하기 위해서는 각 그룹에 대해 “00”, “01”, “10” 및 “11”을 이용하여 시드를 부여할 수 있다.
한 실시 예에 따르면, 상기 인코더 600은 대표 값 (RV)과 벡터에 관한 정보를 포함하는 에러 정정 정보를 구성할 수 있다. 상기 벡터에 관한 정보는 방향 정보 (direction)와 길이 정보 (length)를 포함할 수 있다.
한 실시 예에 따르면, 4:1이라는 압축 율을 만족시키기 위해, 에러 정정 정보를 62 비트가 넘지 않도록 구성할 수 있다.
이를 위해서는 두 가지의 방안을 생각해 볼 수 있다. 예를 들어, 벡터 양자화를 이용하는 방안과 스칼라 양자화를 이용하는 방안이 있을 수 있다. 이에 대한 설명은 이미 압축 모드 3에 관한 설명에서 충분히 이루어졌으므로, 여기서는 그 설명을 생략하도록 한다.
한 실시 예에 따르면, 상기 인코더 600은 앞서 구성한 비트 맵과 시드 값 또는 RV 값에 의해 압축 비트 스트림을 구성할 수 있다. 상기 인코더 600은 압축 비트 스트림을 기반으로 데이터 블록을 구성하는 상위 픽셀들과 하위 픽셀들을 재 구성할 수 있다 (2222 단계). 상기 인코더 600은 재 구성된 하위 및 상위 픽셀들과 원래의 데이터 블록을 구성하는 픽셀들에 따른 에러 율 (MAE)을 계산할 수 있다 (2224 단계).
도 23은 다양한 실시 예에 따른, 압축 모드 4에 의한 인코딩을 수행하여 획득되는 압축 비트 스트림의 일 예를 도시한 도면이다.
도 23을 참조하면, 압축 비트 스트림은 압축모드 선택 정보 (Mode selection) 2310, 비트 맵 2320 및 에러 정정 정보 2330, 2340을 포함할 수 있다.
상기 압축모드 선택 정보 2310은 데이터 블록이 압축 모드 4에 의해 인코딩되었음을 나타내기 위한 2 비트의 정보가 될 수 있다. 상기 비트 맵 2320은 상위 픽셀들과 하위 픽셀들 각각에 부여된 시드를 식별하기 위한 32 비트의 정보가 될 수 있다. 상기 에러 정정 정보 2330, 2340은 그룹 별로 획득되며, 62 비트를 넘지 않는다.
예컨대 8개의 하위 픽셀들에 의해 구성한 4개의 그룹들을 두 개의 쌍으로 그룹핑하는 경우, 인코더는 상기 그룹핑된 각 쌍에 대응하여 31 비트의 에러 정정 정보를 구성할 수 있다. 상기 31 비트의 에러 정정 정보는 18 비트의 대표 값 2332, 2342와, 6 비트의 방향 정보 2334, 2344 및 7 비트의 길이 정보 2336, 2346을 포함할 수 있다.
한편 본 개시의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 개시의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 개시의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허 청구의 범위뿐만 아니라 이 특허 청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (28)

  1. 지정된(specified) 복수의 압축 모드들 각각을 기반으로 적어도 하나의 데이터 블록을 부호화하기 위한 부호화 모듈;
    상기 복수의 압축 모드들 각각에 적어도 일부 기반하여 상기 복수의 압축 모드들 각각에 대응하는 적어도 하나의 데이터 블록을 재 구성하기 위한 재구성 모듈;
    상기 적어도 하나의 데이터 블록 및 상기 적어도 하나의 데이터 블록을 재 구성한 데이터 블록을 이용하여 상기 복수의 압축 모드들 각각에 대응하는 데이터 간의 차이를 결정하기 위한 결정 모듈; 및
    상기 데이터 간의 차이에 적어도 일부 기반하여 상기 복수의 압축 모드들로부터 적어도 하나의 압축 모드를 선택하기 위한 선택 모듈을 포함하는 장치.
  2. 제 1항에 있어서, 상기 부호화 모듈은,
    상기 적어도 하나의 데이터 블록을 하나의 영상 프레임을 소정 크기로의 분할에 의해 획득함을 특징으로 하는 장치.
  3. 제 2항에 있어서, 상기 부호화 모듈은,
    상기 적어도 하나의 데이터 블록과, 상기 적어도 하나의 데이터 블록의 주변에 위치하는 인접 픽셀들의 인코딩에 의해 획득한 주변 값 및 대표 값을 입력으로 하고, 상기 주변 값과 상기 대표 값을 사용하여 상기 적어도 하나의 데이터 블록을 미리 설정된 복수의 압축 모드들 각각을 기반으로 인코딩하도록 설정된 장치.
  4. 제 3항에 있어서, 상기 재구성 모듈은,
    상기 복수의 압축 모드들 각각에 적어도 일부를 기반으로 상기 복수의 압축 모드들 각각에 대응하는 적어도 하나의 데이터 블록을 상기 부호화 모듈에 의해 출력되는 압축 모드 별 압축 비트 스트림들을 사용하여 재 구성하도록 설정된 장치.
  5. 제 4항에 있어서, 상기 결정 모듈은,
    상기 적어도 하나의 데이터 블록과 상기 복수의 압축 모드들 각각에 대응하여 재 구성된 데이터 블록에 의해, 상기 복수의 압축 모드들 각각에 대응하는 에러 율을 계산하며, 상기 복수의 압축 모드들 각각에 대응하여 계산한 에러 율들 중 최소 에러 율을 갖는 압축 모드의 선택 신호를 출력하도록 설정된 장치.
  6. 제 5항에 있어서, 상기 선택 모듈은,
    상기 부호화 모듈로부터 출력되는 상기 복수의 압축 모드들 각각에 대응한 압축 비트 스트림들 중에서 상기 결정 모듈에 의해 출력되는 선택 신호에 의해 하나의 압축 비트 스트림을 선택하도록 설정된 장치.
  7. 제 6항에 있어서,
    소정 개수의 대표 값들이 기록되며, 상기 기록된 대표 값들을 상기 선택 모듈에 의해 선택되는 압축 비트 스트림에 의해 갱신하는 대표 값 테이블을 더 포함하는 장치.
  8. 제 1항에 있어서,
    상기 복수의 압축 모드들은, 공간적 예측 (spatial prediction) 기법, 코드북 인덱싱 (codebook indexing) 기법, 보간을 이용한 4-레벨 VQ-BTC (4-level VQ-BTC with interpolation) 기법, 및 변형 4-레벨 VQ-BTC (modified 4-level VQ-BTC) 기법을 포함하는 장치.
  9. 제 8항에 있어서,
    상기 복수의 압축 모드 별로 생성된 압축 비트 스트림은 해당 압축 모드를 식별하는 모드 식별 정보를 포함하는 장치.
  10. 제 8항에 있어서, 상기 공간적 예측 기법은,
    복수의 서브 데이터 블록들로부터 하나의 서브 데이터 블록을 순차적으로 선택하고, 미리 설정된 복수의 예측 방향들 중 상기 선택한 하나의 서브 데이터 블록에 대한 최적 예측 방향을 결정하고, 상기 복수의 서브 데이터 블록들 중 에러를 가지는 에러 서브 데이터 블록의 개수를 확인하고, 상기 확인된 서브 데이터 블록의 개수에 대응한 에러 정정 부호화 정보와 상기 서브 데이터 블록 별로 결정한 최적 예측 방향에 대한 정보를 포함하도록 압축 비트 스트림을 생성하는 동작을 포함하는 장치.
  11. 제 8항에 있어서, 상기 코드북 인덱싱 기법은,
    상기 대표 값 테이블을 포함하는 예측 테이블을 기반으로 상기 적어도 하나의 데이터 블록을 구성하는 픽셀 값들 각각에 대한 인덱싱을 수행하여 대표 값 테이블 인덱스 정보를 구성하고, 상기 적어도 하나의 데이터 블록을 구성하는 픽셀들 중 최대 에러 값을 가지는 픽셀의 픽셀 값을 목표 픽셀 값으로 조정하는 벡터를 정의하는 방향 정보와 길이 정보에 의해 에러 정정 정보를 구성하며, 상기 대표 값 테이블 인덱스 정보와 상기 에러 정정 정보를 포함하도록 압축 비트 스트림을 생성하는 동작을 포함하는 장치.
  12. 제 8항에 있어서, 상기 보간을 이용한 4-레벨 VQ-BTC 기법은,
    상기 적어도 하나의 데이터 블록을 구성하는 소정 개수의 하위 픽셀들을 고유한 임계 값을 기준으로 소정 개수의 묶음으로 분류하고, 상기 하위 픽셀들 각각이 분류된 시드를 고려한 비트 맵을 구성하고, 상기 소정 개수의 묶음들을 복수의 그룹으로 구성한 후 상기 그룹 별로 하위 픽셀들에 대한 에러 정정 정보를 구성하며, 상기 하위 픽셀들과 상기 하나의 데이터 블록의 이전 라인을 구성하는 픽셀들을 이용한 보간에 의해 상기 하나의 데이터 블록을 구성하는 소정 개수의 상위 픽셀들을 재 구성하기 위한 보간 정보를 구성하며, 상기 구성한 비트 맵, 에러 정정 정보 및 보간 정보를 포함하도록 압축 비트 스트림을 생성하는 동작을 포함하는 장치.
  13. 제 8항에 있어서, 상기 변형 4-레벨 VQ-BTC 기법은,
    상기 적어도 하나의 데이터 블록을 구성하는 소정 개수의 상위 픽셀들과 소정 개수의 하위 픽셀들을 고유한 임계 값을 기준으로 소정 개수의 묶음으로 분류하고, 상기 상위 및 하위 픽셀들 각각이 분류된 시드를 고려한 비트 맵을 구성하고, 상기 소정 개수의 묶음들을 복수의 그룹으로 구성한 후 상기 그룹 별로 픽셀들에 대한 에러 정정 정보를 구성하며, 상기 구성한 비트 맵 및 에러 정정 정보를 포함하도록 압축 비트 스트림을 생성하는 동작을 포함하는 장치.
  14. 제 7항에 있어서,
    상기 대표 값 테이블 외에 주변 픽셀 값들과 일정한 컬러 값들을 포함하는 예측 테이블을 더 포함하는 장치.
  15. 지정된 복수의 압축 모드들 각각을 기반으로 적어도 하나의 데이터 블록을 부호화 하는 동작;
    상기 복수의 압축 모드들 각각에 의해 생성된 압축 비트 스트림들을 사용하여 상기 복수의 압축 모드들 각각에 대응한 적어도 하나의 데이터 블록을 재 구성하는 동작;
    상기 적어도 하나의 데이터 블록과 상기 복수의 압축 모드들 각각에 대응하여 재 구성한 데이터 블록을 사용하여 상기 복수의 압축 모드들 각각에 대응하는 데이터 간의 차이를 계산하는 동작; 및
    상기 복수의 압축 모드들 각각에 대응하여 계산한 차이들 중에서 최소 차이를 갖는 압축 모드를 선택하는 동작을 포함하는 방법.
  16. 제 15항에 있어서,
    상기 적어도 하나의 데이터 블록은 소정 크기로의 분할에 의해 하나의 영상 프레임으로부터 획득하는 동작을 포함하는 방법.
  17. 제 16항에 있어서, 상기 부호화하는 동작은,
    상기 적어도 하나의 데이터 블록과, 상기 적어도 하나의 데이터 블록의 주변에 위치하는 인접 픽셀들의 인코딩에 의해 획득한 주변 값 및 대표 값을 제공 받는 동작;
    상기 주변 값과 상기 대표 값을 사용하여 상기 적어도 하나의 데이터 블록을 상기 지정된 복수의 압축 모드들 각각을 기반으로 인코딩을 수행하는 동작을 포함하는 방법.
  18. 제 17항에 있어서, 상기 재 구성하는 동작은,
    상기 복수의 압축 모드들 각각에 적어도 일부를 기반으로 상기 복수의 압축 모드들 각각에 대응하는 적어도 하나의 데이터 블록을 상기 부호화 모듈에 의해 출력되는 압축 모드 별 압축 비트 스트림들을 사용하여 재 구성하는 동작을 포함하는 방법.
  19. 제 18항에 있어서, 상기 계산하는 동작은,
    상기 적어도 하나의 데이터 블록과 상기 복수의 압축 모드들 각각에 대응하여 재 구성된 데이터 블록에 의해, 상기 복수의 압축 모드들 각각에 대응하는 에러 율을 계산하는 동작을 포함하는 방법.
  20. 제 19항에 있어서, 상기 선택하는 동작은,
    상기 복수의 압축 모드들 각각에 대응하여 계산된 에러 율들 중에서 최소 에러 율을 가지는 압축 모드를 결정하고, 상기 부호화에 의해 출력되는 상기 복수의 압축 모드들 각각에 대응한 압축 비트 스트림들 중에서 상기 결정된 압축 모드에 대응한 압축 비트 스트림을 선택하는 동작을 포함하는 방법.
  21. 제 20항에 있어서,
    대표 값 테이블에 기록된 소정 개수의 대표 값들을 상기 선택된 압축 비트 스트림에 의해 갱신하는 동작을 더 포함하는 방법.
  22. 제 15항에 있어서,
    상기 복수의 압축 모드들은, 공간적 예측 (spatial prediction) 기법, 코드북 인덱싱 (codebook indexing) 기법, 보간을 이용한 4-레벨 VQ-BTC (4-level VQ-BTC with interpolation) 기법, 및 변형 4-레벨 VQ-BTC (modified 4-level VQ-BTC) 기법을 포함하는 방법.
  23. 제 22항에 있어서,
    상기 복수의 압축 모드 별로 생성된 압축 비트 스트림은 해당 압축 모드를 식별하는 모드 식별 정보를 포함하는 방법.
  24. 제 22항에 있어서, 상기 공간적 예측 기법은,
    복수의 서브 데이터 블록들로부터 하나의 서브 데이터 블록을 순차적으로 선택하고, 미리 설정된 복수의 예측 방향들 중 상기 선택한 하나의 서브 데이터 블록에 대한 최적 예측 방향을 결정하고, 상기 복수의 서브 데이터 블록들 중 에러를 가지는 에러 서브 데이터 블록의 개수를 확인하고, 상기 확인된 서브 데이터 블록의 개수에 대응한 에러 정정 부호화 정보와 상기 서브 데이터 블록 별로 결정한 최적 예측 방향에 대한 정보를 포함하도록 압축 비트 스트림을 생성하는 압축하는 동작을 포함하는 방법.
  25. 제 22항에 있어서, 상기 코드북 인덱싱 기법은,
    상기 대표 값 테이블을 포함하는 예측 테이블을 기반으로 상기 적어도 하나의 데이터 블록을 구성하는 픽셀 값들 각각에 대한 인덱싱을 수행하여 대표 값 테이블 인덱스 정보를 구성하고, 상기 적어도 하나의 데이터 블록을 구성하는 픽셀들 중 최대 에러 값을 가지는 픽셀의 픽셀 값을 목표 픽셀 값으로 조정하는 벡터를 정의하는 방향 정보와 길이 정보에 의해 에러 정정 정보를 구성하며, 상기 대표 값 테이블 인덱스 정보와 상기 에러 정정 정보를 포함하도록 압축 비트 스트림을 생성하는 동작을 포함하는 방법.
  26. 제 22항에 있어서, 상기 보간을 이용한 4-레벨 VQ-BTC 기법은,
    상기 적어도 하나의 데이터 블록을 구성하는 소정 개수의 하위 픽셀들을 고유한 임계 값을 기준으로 소정 개수의 묶음으로 분류하고, 상기 하위 픽셀들 각각이 분류된 시드를 고려한 비트 맵을 구성하고, 상기 소정 개수의 묶음들을 복수의 그룹으로 구성한 후 상기 그룹 별로 하위 픽셀들에 대한 에러 정정 정보를 구성하며, 상기 하위 픽셀들과 상기 하나의 데이터 블록의 이전 라인을 구성하는 픽셀들을 이용한 보간에 의해 상기 하나의 데이터 블록을 구성하는 소정 개수의 상위 픽셀들을 재 구성하기 위한 보간 정보를 구성하며, 상기 구성한 비트 맵, 에러 정정 정보 및 보간 정보를 포함하도록 압축 비트 스트림을 생성하는 동작을 포함하는 방법.
  27. 제 22항에 있어서, 상기 변형 4-레벨 VQ-BTC 기법은,
    상기 적어도 하나의 데이터 블록을 구성하는 소정 개수의 상위 픽셀들과 소정 개수의 하위 픽셀들을 고유한 임계 값을 기준으로 소정 개수의 묶음으로 분류하고, 상기 상위 및 하위 픽셀들 각각이 분류된 시드를 고려한 비트 맵을 구성하고, 상기 소정 개수의 묶음들을 복수의 그룹으로 구성한 후 상기 그룹 별로 픽셀들에 대한 에러 정정 정보를 구성하며, 상기 구성한 비트 맵 및 에러 정정 정보를 포함하도록 압축 비트 스트림을 생성하는 동작을 포함하는 방법.
  28. 제 21항에 있어서,
    상기 대표 값 테이블 외에 주변 픽셀 값들과 일정한 컬러 값들을 포함하는 예측 테이블을 생성하는 동작을 더 포함하는 방법.
KR1020140093296A 2014-07-23 2014-07-23 영상 처리 디바이스 및 방법 KR20160011951A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020140093296A KR20160011951A (ko) 2014-07-23 2014-07-23 영상 처리 디바이스 및 방법
US14/807,443 US20160029027A1 (en) 2014-07-23 2015-07-23 Device and method for processing image
PCT/KR2015/007690 WO2016013892A1 (en) 2014-07-23 2015-07-23 Device and method for processing image

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140093296A KR20160011951A (ko) 2014-07-23 2014-07-23 영상 처리 디바이스 및 방법

Publications (1)

Publication Number Publication Date
KR20160011951A true KR20160011951A (ko) 2016-02-02

Family

ID=55163349

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140093296A KR20160011951A (ko) 2014-07-23 2014-07-23 영상 처리 디바이스 및 방법

Country Status (3)

Country Link
US (1) US20160029027A1 (ko)
KR (1) KR20160011951A (ko)
WO (1) WO2016013892A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10361808B2 (en) * 2015-11-13 2019-07-23 Avago Technologies International Sales Pte. Limited System, device, and method for multi-mode communications
US10771786B2 (en) * 2016-04-06 2020-09-08 Intel Corporation Method and system of video coding using an image data correction mask
US11044466B2 (en) 2018-01-26 2021-06-22 Samsung Electronics Co., Ltd. Image processing device
US10931954B2 (en) * 2018-11-20 2021-02-23 Sony Corporation Image coding modes selection for an embedded codec circuitry
US11216184B2 (en) 2019-12-06 2022-01-04 Western Digital Technologies, Inc. Non-volatile memory with on-chip principal component analysis for generating low dimensional outputs for machine learning

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE0401850D0 (sv) * 2003-12-19 2004-07-08 Ericsson Telefon Ab L M Image processing
US7751633B1 (en) * 2006-08-31 2010-07-06 Hewlett-Packard Development Company, L.P. Method for compressing an image
JP4989416B2 (ja) * 2007-10-26 2012-08-01 Kddi株式会社 動画像圧縮符号化装置
WO2013111126A2 (en) * 2012-01-23 2013-08-01 I.C.V.T Ltd. Method and system for controlling video frame encoding
US9100652B2 (en) * 2012-12-03 2015-08-04 Avago Technologies General Ip (Singapore) Pte. Ltd. Performance control in video encoding

Also Published As

Publication number Publication date
WO2016013892A1 (en) 2016-01-28
US20160029027A1 (en) 2016-01-28

Similar Documents

Publication Publication Date Title
US10366669B2 (en) Electronic device and method for driving display thereof
CN107257954B (zh) 用于提供屏幕镜像服务的设备和方法
US11303882B2 (en) Image data compression considering visual characteristic
US9690618B2 (en) Method for task scheduling and electronic device using the same
US20160055082A1 (en) Memory allocating method and electronic device supporting the same
US9804661B2 (en) Apparatus and method for controlling power of electronic device
KR20160097974A (ko) 영상의 컬러 변환 방법 및 전자 장치
US10650596B2 (en) Electronic device for providing VR image based on polyhedron and image providing method thereof
US20170208334A1 (en) Method and apparatus for processing image data
KR20160011951A (ko) 영상 처리 디바이스 및 방법
US10747489B2 (en) Method for displaying content and electronic device therefor
US11051042B2 (en) Image processing device and method
KR20170062038A (ko) 전자 장치 및 그의 동작 방법
US9854256B2 (en) Apparatus and method of processing images in an electronic device
US10032260B2 (en) Inverse distortion rendering method based on a predicted number of surfaces in image data
US10319341B2 (en) Electronic device and method for displaying content thereof
US20170118401A1 (en) Electronic device and method for processing image
KR20170106022A (ko) 영상 신호의 처리를 위한 전자 장치
KR102337966B1 (ko) 데이터를 압축하는 전자 장치 및 그 동작 방법
KR20160095762A (ko) 전자장치 및 전자장치의 영상데이터 처리 방법
US10275494B2 (en) Electronic device and method for providing data
US9407938B2 (en) Method for processing image and electronic device for the method

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application