KR101687863B1 - 인코더 및 방법 - Google Patents

인코더 및 방법 Download PDF

Info

Publication number
KR101687863B1
KR101687863B1 KR1020130095364A KR20130095364A KR101687863B1 KR 101687863 B1 KR101687863 B1 KR 101687863B1 KR 1020130095364 A KR1020130095364 A KR 1020130095364A KR 20130095364 A KR20130095364 A KR 20130095364A KR 101687863 B1 KR101687863 B1 KR 101687863B1
Authority
KR
South Korea
Prior art keywords
data
block
packet
blocks
encoded
Prior art date
Application number
KR1020130095364A
Other languages
English (en)
Other versions
KR20150129096A (ko
Inventor
오씨 칼레보
투오마스 케르크케이넨
Original Assignee
구루로직 마이크로시스템스 오이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구루로직 마이크로시스템스 오이 filed Critical 구루로직 마이크로시스템스 오이
Publication of KR20150129096A publication Critical patent/KR20150129096A/ko
Application granted granted Critical
Publication of KR101687863B1 publication Critical patent/KR101687863B1/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/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/192Methods 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 the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • 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
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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
    • H04N19/136Incoming video signal characteristics or properties
    • 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
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • 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/172Methods 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 picture, frame or field
    • 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/18Methods 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 a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/24Systems for the transmission of television signals using pulse code modulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/007Transform coding, e.g. discrete cosine transform
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Error Detection And Correction (AREA)

Abstract

인코더(10)는 대응하는 인코딩된 출력 데이터(30)를 생성하기 위해 입력 데이터(20)를 인코딩하는 동작을 한다. 인코더(10)는
(a) 입력 데이터(20)를 복수의 블록 또는 패킷 - 상기 블록 또는 패킷은 상기 블록 또는 패킷의 콘텐츠의 성질에 의존하는 크기를 가지며, 상기 블록 또는 패킷은 하나 이상의 크기를 가짐 - 으로 세분하고;
(b) 대응하는 변환된 데이터를 생성하기 위해 상기 블록 또는 패킷의 콘텐츠에 적어도 하나의 변환을 적용하며;
(c) 상기 변환된 데이터의 표현의 품질이 하나 이상의 품질 기준을 만족시키는지 여부를 결정하기 위해, 상기 변환을 적용하기 전의 상기 블록 또는 패킷의 콘텐츠와 비교하여 상기 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질을 검사하고;
(d) 상기 하나 이상의 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질이 상기 하나 이상의 품질 기준을 만족시키지 않는 경우, 상기 하나 이상의 블록 또는 패킷을 추가로 세분 및/또는 결합하고, 상기 (b)를 반복하며;
(e) 상기 하나 이상의 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질이 상기 하나 이상의 품질 기준을 만족시키는 경우, 인코딩될 상기 입력 데이터(20)를 나타내는 상기 인코딩된 출력 데이터(30)를 제공하기 위해 상기 변환된 데이터를 출력하도록,
동작가능한, 데이터 프로세싱 하드웨어를 포함한다.
인코더(10)는, 인코딩된 출력 데이터(30)가 인코딩될 입력 데이터(20)보다 크기가 더 작도록, 변환을 사용하여 블록 또는 패킷과 연관되어 있는 콘텐츠를 압축하는 동작을 한다.

Description

인코더 및 방법{ENCODER AND METHOD}
본 개시 내용은 입력 데이터를 수신하고 입력 데이터를 인코딩하여 대응하는 인코딩된 출력 데이터를 생성하는 인코더에 관한 것이다. 더욱이, 본 개시 내용은 또한 입력 데이터를 인코딩하여 대응하는 인코딩된 출력 데이터를 생성하는 방법에 관한 것이다. 게다가, 본 개시 내용은 비일시적 기계 판독가능 데이터 저장 매체 상에 기록되는 소프트웨어 제품을 관한 것이며, 소프트웨어 제품은 상기 방법을 구현하는 컴퓨팅 하드웨어 상에서 실행가능하다.
현대의 사람들은 점점 더 데이터 콘텐츠, 예를 들어, 멀티미디어 콘텐츠를 저장하고 인터넷 및 무선 통신 네트워크를 통해 전달되고; 이러한 멀티미디어 콘텐츠는 종종, 예를 들어, 이미지, 비디오 및 오디오를 포함하지만, 이들로 제한되지 않는다. 데이터 콘텐츠는 저장되고 장치, 소프트웨어 애플리케이션, 미디어 시스템 및 데이터 서비스 사이에서 전달된다. 이러한 저장 및 전달 동안, 이미지 및 비디오가 포착되고, 스캔되며, 전송되고, 공유되며, 시청되고, 인쇄되는 상황이 생성한다. 그렇지만, 이러한 이미지 및 비디오는 이용되는 데이터 메모리 용량 및 통신 시스템 대역폭의 점에서 부담이 크다. 통신 시스템 대역폭이 제한되어 있을 때, 이러한 이미지 및 비디오는 전달하는 데 상당한 시간이 걸린다. 이러한 저장 요건을 해결하기 위해, 어느 정도의 데이터 압축도 제공하는 이미지 및 비디오 인코딩 방법을 이용하는 것이 관행이었다. 이미지 및 비디오에 대한 몇몇 최근의 인코딩 표준이 표 1에 제공되어 있다.
최근의 인코딩 표준
JPEG MPEG-1 H.261 WebP Lucid
JPEG2000 MPEG-2 H.263 WebM GIF
JPEG XR MPEG-4 H.264 PNG
MPEG-4 AVC HEVC TIFF
MPEG-4 MVC BMP
MP3 VC-1
Theora
AAC
FLAC
Ogg Vorbis
Speex
예를 들어, HD(high definition, 고선명) 표준 및 HDR(high dynamic range, 고 다이나믹 레인지)의 채택에 의해 이미지 품질이 계속하여 향상됨에 따라 이미지 및 오디오 파일이 점점 더 커지고 있다. 그렇지만, 3차원(3D) 이미지, 비디오 및 오디오는 점점 더 인기를 얻고 있으며, 이는 전달되고 저장될 관련 데이터 양의 증가에 대처하기 위해 그에 대응하여 인코더 및 디코더, 즉 "코덱"에서 보다 효율적인 인코딩 및 디코딩 방법을 요구한다. 그렇지만, 압축된 데이터를 생성할 때 정보 콘텐츠와 관련하여 어느 정도의 데이터 압축을 제공하는 인코딩 방법이 실질적으로 무손실이어야만 하는 것이 아주 바람직하다.
종래의 코덱은, 예를 들어, 표 2에 제공되어 있는 이전에 공개된 특허 출원 및 등록된 특허에 기술되어 있다.
코덱을 기술하는 이전의 문헌
이전의 특허 또는 특허 출원 상세
US5832130
US7379496
GB2274754A1 Samsung Electronics Co. Ltd.
US6529634A1 Thyagarajan
US7676101
US2006/0204115A1 Berazerovic: 인코딩된 블록에 대한 가변 파라미터를갖는 단일 유형의 인코딩을 이용함
일반적으로, 많은 공지된 비디오 코덱은, 이미지의 아주 공간적으로 상세한 영역을 동시에 인코딩할 수 있으면서, 실질적으로 일정한 파라미터로 이미지의 넓은 영역을 효율적으로 코딩할 수 없다. 변환, 예를 들어, DCT(discrete cosine transform, 이산 코사인 변환) 및 웨이블릿(wavelet) 변환의 사용에 기초한 예측 및 예측 오차 코딩 방법의 형태의 움직임 보상을 이용하는 것이 관행이다. 이들 변환은 주어진 이미지, 예를 들어, 정지 이미지 또는 비디오 시퀀스의 일부를 형성하는 이미지의 일부분이 블록들로 나누어지고 그 블록들이 이어서 인코딩 프로세스를 거치는 프로세스를 이용한다. 블록들은, 예를 들어, 8 x 8 이미지 요소(image element), 4 x 4 이미지 요소 또는 유사한 이미지 요소이다. 이러한 비교적 보다 작은 블록이 이용되는 이유는 블록의 크기가 더 크면 인코딩 프로세스가 비효율적이기 때문이지만, 16x16 이미지 요소 블록이 때때로 이용된다. 이미지 인코딩에 대한 최근 공지된 방식에 따르면, 인코딩을 위해 다수의 상이한 블록 크기가 사용될 때, 블록 크기의 작은 변동을 이용하는 것이 관행이고, 블록 크기가 연관된 블록 영역에서 움직임이 얼마나 잘 보상될 수 있는지에 기초하여 또는 인코딩 품질 파라미터, 예를 들어, 목표 품질 파라미터에 기초하여 선택된다. 일반적으로, 보다 높은 인코딩된 이미지 품질은 보다 작은 블록을 필요로 하며, 그 결과 데이터 압축이 보다 적다. 패리티 코드 및 오류 정정 코드 등의 오류 정정 특징이 포함될 때, 특정 유형의 최근의 인코딩에 의하면, 심지어 데이터 크기가 증가할 수 있다.
이상으로부터, 이미지 품질을 유지하면서 이미지 및 비디오의 데이터 압축을 제공하는 것이, 최근 수십년 동안 아주 다양한 코덱이 개발되었음에도 불구하고, 공지된 인코더 및 디코더에 의해 적절히 해결되지 않는 최근의 문제임을 잘 알 것이다.
본 발명은 적어도 하나의 데이터 콘텐츠 항목을 나타내는 입력 데이터를 인코딩하고 적어도 하나의 데이터 콘텐츠 항목을 나타내는 대응하는 인코딩된 출력 데이터를 생성하는 인코더를 제공하기 위한 것이고, 인코딩된 출력 데이터는 인코딩 동안 어떤 실질적인 품질 손실도 일어남이 없이 입력 데이터에 대해 압축되며; 데이터는 선택적으로, 임의의 유형의 데이터, 예를 들어, 이미지 데이터, 비디오 데이터, 오디오 데이터, 경제 데이터, 마스크 데이터, 지진계 데이터, 아날로그-디지털(ADC) 변환된 데이터, 생체 신호 데이터, 텍스트 데이터, 일정 데이터, 수학 데이터, 이진 데이터(이들로 제한되지 않음) 중 적어도 하나이다.
본 발명은 또한 적어도 하나의 데이터 콘텐츠 항목을 나타내는 입력 데이터를 인코딩하고 적어도 하나의 데이터 콘텐츠 항목을 나타내는 대응하는 인코딩된 출력 데이터를 생성하는 방법을 제공하기 위한 것이고, 인코딩된 출력 데이터는 인코딩 동안 어떤 실질적인 품질 손실도 일어남이 없이 입력 데이터에 대해 압축된다.
제1 측면에 따르면, 첨부된 청구항 1에 한정된, 대응하는 인코딩된 출력 데이터를 생성하기 위해 입력 데이터를 인코딩하는 방법이 제공되고, 대응하는 인코딩된 출력 데이터를 생성하기 위해 입력 데이터를 인코딩하는 방법은,
(a) 상기 입력 데이터(20)를 복수의 블록 또는 패킷 - 상기 블록 또는 패킷은 상기 블록 또는 패킷의 콘텐츠의 성질에 의존하는 크기를 가지며, 상기 블록 또는 패킷은 하나 이상의 크기를 가짐 - 으로 세분하는 단계;
(b) 대응하는 변환된 데이터를 생성하기 위해 상기 블록 또는 패킷의 콘텐츠에 복수의 변환을 적용하는 단계;
(c) 상기 변환된 데이터의 표현의 품질이 하나 이상의 품질 기준을 만족시키는지 여부를 결정하기 위해, 상기 변환을 적용하기 전의 상기 블록 또는 패킷의 콘텐츠와 비교하여 상기 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질을 검사하는 단계;
(d) 상기 하나 이상의 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질이 상기 하나 이상의 품질 기준을 만족시키지 않는 경우, 상기 하나 이상의 블록 또는 패킷을 추가로 세분 및/또는 결합하고, 단계 (b)를 반복하는 단계; 및
(e) 상기 하나 이상의 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질이 상기 하나 이상의 품질 기준을 만족시키는 경우, 인코딩될 상기 입력 데이터(20)를 나타내는 상기 인코딩된 출력 데이터(30)를 제공하기 위해 상기 변환된 데이터를 출력하는 단계를 포함한다.
본 발명은 이 방법이 인코딩될 입력 데이터에 대한 인코딩된 출력 데이터의 실질적으로 무손실인 데이터 압축을 제공할 수 있으면서 대응하는 인코딩된 출력 데이터를 제공하기 위해 입력 데이터의 효율적인 인코딩을 제공할 수 있다는 점에서 이점이 있다.
선택적으로, 이 방법은, 인코딩된 출력 데이터가 인코딩될 입력 데이터보다 크기가 더 작도록, 변환을 사용하여 블록 또는 패킷과 연관되어 있는 콘텐츠를 압축하는 단계를 포함한다.
선택적으로, 이 방법은 하나 이상의 품질 기준이 만족되도록 하기 위해 상이한 유형의 변환 중에서 선택하는 단계를 포함한다.
선택적으로, 이 방법은 블록 또는 패킷 내에 포함된 콘텐츠의 성질에 따라 블록 또는 패킷의 인코딩 동안 하나 이상의 품질 기준이 동적으로 변할 수 있도록 하는 단계를 포함한다.
선택적으로, 이 방법은 블록 또는 패킷의 콘텐츠를 기술하는 그의 대표적인 파라미터들 중 적어도 하나가 그의 세분된 및/또는 결합된 블록 또는 패킷 내에서 변동이 없도록 블록 또는 패킷이 세분 및/또는 결합되도록 구현된다. 적어도 하나의 대표적인 파라미터는, 예를 들어, 색, 진폭, 세기, 수 또는 코드이다.
선택적으로, 이 방법은 블록 또는 패킷이 일련의 데이터에 대응하도록 구현되고, 복수의 대응하는 블록을 형성하기 위해 주어진 정보에 대응하는 입력 데이터를 세분하는 것은 데이터의 시간 시퀀스 내에서 주어진 정보에 선행하는 하나 이상의 데이터에 존재하는 콘텐츠에 의존하여 행해진다.
선택적으로, 이 방법은 단계 (e)에서 변환된 데이터에 헤더 정보를 추가하여 인코딩된 출력 데이터를 생성하는 단계를 포함하고, 여기서 헤더 정보는 단계 (b)에서 이용된 변환을 나타내는 정보를 포함하고 있다.
선택적으로, 이 방법은 단계 (b)가 변환을 실행할 때 사용하기 위해 데이터베이스 장치로부터 보충 정보를 가져오는 단계를 포함하도록 구현되고, 보충 정보는 알고리즘, 규칙, 하나 이상의 변환 파라미터 중 적어도 하나를 포함한다. 또한 선택적으로, 이 방법은, 인코딩된 출력 데이터의 차후의 디코딩이 인코딩된 출력 데이터를 디코딩할 때 보충 정보에 액세스할 수 있게 해주기 위해, 데이터베이스 장치를 나타내는 헤더 정보를 인코딩된 출력 데이터에 추가하는 단계를 추가로 포함한다.
선택적으로, 이 방법은 변환을 위해 데이터베이스 참조, DC 값, 슬라이드, 스케일, 라인, 다중 레벨, 보간, 외삽, DCT, 펄스 코드 변조(PCM), DPCM, RLE, SRLE, EM, LZO, VLC, 허프만 코딩, 산술 코딩, 범위 코딩, 변환 코딩, 델타 코딩, ODelta 코딩, bzip2-specific RLE 중 하나 이상을 이용하는 단계를 포함한다. 이 방법에 대해 다른 유형의 변환을 이용하는 것도 가능하다.
선택적으로, 이 방법은 입력 데이터에 존재하는 비디오, 이미지, 오디오, 그래픽, 텍스트, ECG, 사이즈믹(seismic), ASCII, 유니코드, 및 이진 정보 중 적어도 하나를 인코딩하는 단계를 포함한다.
선택적으로, 이 방법은 대화형 비디오, 상업 광고, 스포츠 경기 중계 동안의 복수의 뷰포인트, 대화형 워터마크, 대화형 패턴 인식, 애니메이션화된 2D/3D 사용자 인터페이스 버튼 중 적어도 하나를 제공하기 위해 인코딩된 출력 데이터에 다수의 채널 및/또는 계층을 인코딩하는 단계를 포함한다.
선택적으로, 이 방법은 데이터 메모리 장치, 통신 네트워크, 메모리 카드, 데이터 메모리 디스크, 근거리 통신 네트워크(LAN), 디코더로 곧바로 중 적어도 하나의 목적지로 인코딩된 데이터를 전송하는 단계를 포함한다.
선택적으로, 이 방법의 단계 (a)는 먼저
(a) 이미지 해상도;
(b) 데이터의 양; 및
(c) 최대 블록 또는 패킷 크기 중 적어도 하나에 기초하여 입력 데이터(20)를 하나 이상의 블록으로 분할하는 단계를 포함한다.
제2 측면에 따르면, 비일시적 기계 판독가능 데이터 저장 매체 상에 기록되어 있는 소프트웨어 제품이 제공되고, 여기서 소프트웨어 제품은 본 발명의 제1 측면에 다른 방법을 실행하기 위해 컴퓨팅 하드웨어 상에서 실행가능하다.
제3 측면에 따르면, 이동 무선 통신 장치에 대한 소프트웨어 애플리케이션이 제공되고, 여기서 소프트웨어 애플리케이션은 본 발명의 제2 측면에 따른 소프트웨어 제품을 포함한다.
제4 측면에 따르면, 대응하는 인코딩된 출력 데이터를 생성하기 위해 입력 데이터를 인코딩하도록 동작가능한 인코더가 제공되고, 이 인코더는
(a) 입력 데이터(20)를 복수의 블록 또는 패킷 - 상기 블록 또는 패킷은 상기 블록 또는 패킷의 콘텐츠의 성질에 의존하는 크기를 가지며, 상기 블록 또는 패킷은 하나 이상의 크기를 가짐 - 으로 세분하고;
(b) 대응하는 변환된 데이터를 생성하기 위해 상기 블록 또는 패킷의 콘텐츠에 적어도 하나의 변환을 적용하며;
(c) 상기 변환된 데이터의 표현의 품질이 하나 이상의 품질 기준을 만족시키는지 여부를 결정하기 위해, 상기 변환을 적용하기 전의 상기 블록 또는 패킷의 콘텐츠와 비교하여 상기 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질을 검사하고;
(d) 상기 하나 이상의 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질이 상기 하나 이상의 품질 기준을 만족시키지 않는 경우, 상기 하나 이상의 블록 또는 패킷을 추가로 세분 및/또는 결합하고, 상기 (b)를 반복하며;
(e) 상기 하나 이상의 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질이 상기 하나 이상의 품질 기준을 만족시키는 경우, 인코딩될 상기 입력 데이터(20)를 나타내는 상기 인코딩된 출력 데이터(30)를 제공하기 위해 상기 변환된 데이터를 출력하도록,
동작가능한, 데이터 프로세싱 하드웨어를 포함한다.
선택적으로, 이 인코더는 데이터 프로세싱 하드웨어가 소프트웨어 제품을 실행하는 동작을 하는 컴퓨팅 하드웨어를 사용하여 구현되도록 구현된다. 또한 선택적으로, 데이터 프로세싱 하드웨어는 데이터를 병렬로 처리하는 동작을 하는 복수의 프로세서를 포함하고, 인코더는 인코딩된 출력 데이터에 포함될 데이터로 인코딩하기 위해 블록 및/또는 패킷 데이터를 복수의 프로세서로 동시에 보내는 동작을 한다.
선택적으로, 이 인코더는하나 이상의 품질 기준이 만족되도록 하기 위해 상이한 유형의 변환 중에서 선택하는 동작을 한다.
선택적으로, 이 인코더는, 인코딩된 출력 데이터는 인코딩될 입력 데이터보다 크기가 더 작도록, 변환을 사용하여 블록 또는 패킷과 연관되어 있는 콘텐츠를 압축하는 동작을 한다.
선택적으로, 이 인코더는 블록 또는 패킷 내에 포함된 콘텐츠의 성질에 따라 블록 또는 패킷의 인코딩 동안 하나 이상의 품질 기준이 동적으로 변할 수 있도록 하는 동작을 한다.
선택적으로, 이 인코더는 블록 또는 패킷의 콘텐츠를 기술하는 그의 대표적인 파라미터들 중 적어도 하나가 그의 세분된 블록 또는 패킷 내에서 변동이 없도록 블록 또는 패킷을 세분하는 동작을 한다. 또한 선택적으로, 이 인코더는 적어도 하나의 파라미터가 세분된 블록의 색, 진폭, 세기, 수 또는 코드에 대응하도록 구현되어 있다.
선택적으로, 이 인코더는 블록 또는 패킷이 일련의 데이터에 대응하도록 구현되고, 복수의 대응하는 블록을 형성하기 위해 주어진 정보에 대응하는 입력 데이터를 세분하는 것은 데이터의 시간 시퀀스 내에서 주어진 정보에 선행하는 하나 이상의 데이터에 존재하는 콘텐츠에 의존하여 행해진다.
선택적으로, 이 인코더는 변환된 데이터에 헤더 정보를 추가하여 인코딩된 출력 데이터를 생성하는 동작을 하고, 여기서 헤더 정보는 인코더에 의해 이용된 변환을 나타내는 정보를 포함하고 있다.
선택적으로, 이 인코더는 변환을 실행할 때 사용하기 위해 데이터베이스 장치로부터 보충 정보를 가져오는 동작을 하고, 보충 정보는 알고리즘, 규칙, 하나 이상의 변환 파라미터 중 적어도 하나를 포함한다. 또한 선택적으로, 이 인코더는, 인코딩된 출력 데이터의 차후의 디코딩이 인코딩된 출력 데이터를 디코딩할 때 보충 정보에 액세스할 수 있게 해주기 위해, 데이터베이스 장치를 나타내는 방식으로 헤더 정보를 인코딩된 출력 데이터에 추가하는 동작을 한다.
선택적으로, 이 인코더는 변환을 위해 데이터베이스 참조, DC 값, 슬라이드, 스케일, 라인, 다중 레벨, 불변, 보간, 외삽, DCT, 펄스 코드 변조(PCM), DPCM, RLE, SRLE, EM, LZO, VLC, 허프만 코딩, 산술 코딩, 범위 코딩, 변환 코딩, ODelta 코딩 중 하나 이상을 이용하는 동작을 한다. 다른 유형의 변환이 인코더에 의해 선택적으로 이용된다.
선택적으로, 이 인코더는 인코딩될 입력 데이터에 존재하는 비디오, 이미지, 오디오, 그래픽, 텍스트, ECG, 사이즈믹, ASCII, 유니코드, 및 이진 정보 중 적어도 하나를 인코딩하는 동작을 한다.
선택적으로, 이 인코더는 데이터 메모리 장치, 통신 네트워크, 메모리 카드, 데이터 메모리 디스크, 근거리 통신 네트워크(LAN), 디코더로 곧바로 중 적어도 하나의 목적지로 인코딩된 데이터를 전송하도록 구현되어 있다.
제5 측면에 따르면, 입력 데이터를 전송 및/또는 저장하는 동작을 하는 가전 제품이 제공되고, 이 가전 제품은 입력 데이터를 인코딩하는 제4 측면에 따른 인코더를 포함한다.
선택적으로, 가전 제품은 이동 전화, 휴대폰, 태블릿 컴퓨터, 개인 컴퓨터, 텔레비전, 휴대용 미디어 재생 장치, 카메라, 편집기, 트랜스코더, 스캐너, 팩스, 복사기, 마이크, 오디오 카드, 레코드 플레이어, DVD 플레이어 등 중 적어도 하나이다.
본 발명의 특징들이 첨부된 특허청구범위에 의해 한정된 본 발명의 범위를 벗어나지 않고 다양한 조합으로 결합될 수 있다는 것을 잘 알 것이다.
이제부터, 단지 예로서, 이하의 도면을 참조하여 본 개시 내용의 실시예에 대해 기술할 것이다.
도 1은 인코더의 실시예를 개략적으로 나타낸 도면.
도 2는 적어도 하나의 데이터 콘텐츠 항목을 나타내는 입력 데이터를 인코딩하여 대응하는 인코딩된 출력 데이터를 생성하는 방법의 단계들의 플로우차트로서, 여기서 인코딩된 출력 데이터는 인코딩 동안 품질 손실이 그다지 일어나지 않고 입력 데이터에 대해 압축되고; 데이터 콘텐츠 항목은 유익하게도 이미지 데이터, 비디오 데이터, 오디오 데이터, 경제 데이터, 마스크 데이터, 지진계 데이터, 아날로그-디지털(ADC) 변환된 데이터, 생체 신호 데이터, 텍스트 데이터, 일정 데이터, 수학 데이터, 이진 데이터(이들로 제한되지 않음) 중 적어도 하나를 포함함.
도 3은 도 2에 예시된 단계들을 갖는 방법을 사용하여 인코딩하기 위해 이미지를 블록들에 대응하는 영역들로 분할하는 것의 한 예를 나타낸 도면.
도 4는 실시예에 따라 사용될 예시적인 이미지 및 예시적인 초기 이미지 분할을 나타낸 도면.
도 5는 도 4의 예시적인 이미지의 예시적인 블록을 나타낸 도면.
도 6은 인코딩이 구현되는 휴대용 장치의 블록을 나타낸 도면.
첨부 도면에서, 밑줄친 번호는 밑줄친 번호가 위치되어 있는 항목 또는 밑줄친 번호가 인접해 있는 항목을 나타내기 위해 이용된다. 밑줄이 없는 번호는 밑줄이 없는 번호를 항목에 연결시키는 라인에 의해 식별되는 항목에 관한 것이다. 번호가 밑줄이 그어져 있지 않고 연관된 화살표를 수반할 때, 밑줄이 없는 번호는 화살표가 가리키는 일반 항목을 식별하는 데 사용된다.
요약하면, 본 발명은 입력 데이터를 인코딩하여 대응하는 인코딩된 출력 데이터를 생성하는 인코더 및 관련 방법에 관한 것이다. 이 방법은 하나 이상의 이미지 및/또는 하나 이상의 오디오 신호를 나타내는 입력 데이터를 수신하고 이어서
(a) 각각의 이미지를 가변 크기일 수 있는 블록들로 분할하는 것;
(b) 하나 이상의 오디오 신호를 가변 크기일 수 있는 패킷으로 분할하는 것;
(c) 이미지의 블록들을 결합하여, 인코딩하는 데 보다 유리한 가변 크기일 수 있는 보다 큰 블록을 형성하는 것; 및
(d) 하나 이상의 오디오 신호의 패킷들을 결합하여, 인코딩하는 데 보다 유리한 결합된 패킷을 형성하는 것 중 적어도 하나에 대응하는 방식으로 입력 데이터를 처리하는 것에 관한 것이다.
더욱이, 이 방법은 블록들 및/또는 패킷들을 처리하여, 하나 이상의 이미지 및/또는 하나 이상의 오디오 신호를 나타내는 압축된 인코딩된 출력 데이터를 생성하는 것을 포함한다.
이 방법은 유익하게도, 데이터의 블록을 기술하는 데이터를 코딩 및 압축할 때, 다수의 코딩 및 엔트로피 수정 방법, 즉 변환을 이용한다. 예를 들어, 상이한 블록의 정보 콘텐츠에 따라, 유리한 코딩 및 압축 성능이 그에 의해 달성될 때, 주어진 이미지의 상이한 블록에 대해 상이한 변환이 사용된다. 유익하게도, 데이터의 블록을 처리할 때 RD 최적화가 품질 기준으로서 이용된다. 블록들을 코딩할 때 이용되는 복수의 변환을 기술하는 정보가 인코딩된 출력 데이터로 전달되고; 이 정보는 인코딩된 출력 데이터에 내재적으로 포함되어 있거나, 출력 데이터는 이용된 변환을 기술하는 정보가 획득될 수 있는 하나 이상의 데이터베이스에 대한 참조를 포함한다. RD 최적화에 대해서는 나중에 더 상세히 기술될 것이다. 유익하게 이용되는 코딩 방법은, 나중에 더 상세히 설명될 것인 바와 같이, 다중 레벨, 라인, 스케일, 슬라이드, 보간, 외삽, 불변, 움직임 추정, SRLE, EM, Odelta 및 범위 코딩 중 하나 이상을 포함한다. 초기 블록의 분할이 또한 선택적으로 유익하게 이용된다.
블록의 선택 및/또는 블록들의 결합은 블록에 대응하는 영역이 인코딩될 수 있는 용이성에 의해 결정되고; 예를 들어, 실질적으로 일정한 관련 파라미터 값을 가지는 하나 이상의 이미지의 영역에 대해서는 보다 큰 블록이 이용되고, 영역에 대한 관련 파라미터 값에서의 비교적 급격한 공간적 변화로 인해 인코딩하기 어려운 하나 이상의 이미지의 영역에 대해서는 보다 작은 블록이 이용된다. 파라미터는 선택적으로 색, 조명, 슬라이딩 파라미터 값, 반복 패턴(이들로 제한되지 않음) 중 하나 이상에 관한 것이다. 용이한 인코딩은, 예를 들어, 주어진 영역 내에서 실질적으로 일정한 주어진 영역과 연관되어 있는 적어도 하나의 파라미터에 대응한다. 더욱이, 이 방법은 또한 비디오 이미지 시퀀스에서의 정지된 영역에 대해 또는 유사하게 움직이고 있는 비디오 이미지 시퀀스에서의 영역들의 그룹, 즉 고정된 물체에 대응하는 블록에 대해 보다 큰 블록을 이용한다. 블록은 선택적으로 블록이 표현하는 하나 이상의 이미지의 영역, 예를 들어, 64 x 64 요소, 32 x 16 요소, 4 x 20 요소, 10 x 4 요소, 1 x 4 요소, 3 x 1 요소, 8 x 8 요소, 1 x 1 요소 등과 관련하여 직선(rectilinear)이고; 선택적으로, 이 요소는 하나 이상의 이미지에 존재하는 픽셀에 대응하지만, 인코딩 동안 스케일링 동작을 거칠 수 있다(즉, 각각의 요소는 대응하는 복수의 픽셀에 대응함). 그렇지만, 다른 형상의 블록, 예를 들어, 타원형 블록, 원형 블록 등이 선택적으로 이용된다. 더욱이, 유추에 의해, 이 방법은 또한 하나 이상의 오디오 신호를 인코딩하는 데 적용될 수 있고, 여기서 하나 이상의 오디오 신호는, 그에 대응하는 오디오 신호의 성질에 따라, 가변 시간 길이의 패킷으로 세분되고 및/또는 패킷으로 결합되고, 패킷은 이어서 인코딩되어, 인코딩된 압축된 출력 데이터를 생성하며; 패킷은 상기한 블록과 동의어이지만, 이미지보다는 오디오 정보에 관한 것이다. 본 발명에 따른 인코더는 오디오 정보 및 이미지 정보 둘 다를 동시에 인코딩할 수 있다.
하나 이상의 이미지의 영역을 대응하는 블록으로 처리하는 동안, 이 방법은 하나 이상의 이미지에서의 대응하는 상세에 대해 블록에 의해 제공되는 정보의 표현의 품질을 검사하여, 대응하는 품질 인덱스를 계산하는 단계를 포함하고; 계산된 품질 인덱스가, 참조 품질 임계값과 비교할 때, 블록에 의해 제공되는 데이터의 표현의 품질이 불충분하도록 일련의 블록 크기가 이용된다는 것을 나타내는 경우, 이 방법은 다시 반복되고, 품질 인덱스가 표현의 품질이 참조 품질 임계값에 의해 정의된 바와 같이 만족된다는 것을 나타낼 때까지, 점진적으로 보다 작은 블록을 사용하고, 및/또는 다양한 블록들을 서로 결합한다(압축 효율을 향상시키고 재구성을 그다지 열화시키지 않는 경우). 이러한 방식에 의해, 본 발명에 따르면, 정보의 표현의 품질에 대한 임계값의 선택에 따라, 실질적으로 무손실인 인코딩 동안 데이터 압축을 달성하는 것이 가능하다. 선택적으로, 참조 품질 임계값은 하나 이상의 이미지에 존재하는 콘텐츠에 따라 동적으로 가변될 수 있고; 예를 들어, 하나 이상의 이미지가 빠른 카오스적 활동(chaotic activity)이 있는 비디오 시퀀스의 일부일 때, 향상된 정도의 데이터 압축이 달성될 수 있게 해주기 위해 카오스적 활동 동안 참조 품질 임계값이 완화될 수 있다. 카오스적 활동은, 예를 들어, 격렬한 물 흐름, 불꽃, 내리는 눈, 피어오르는 연기, 파랑(ocean wave) 등의 랜덤한 특징일 수 있고, 이 경우 인코딩된 데이터가 차후에 디코더에서 디코딩될 때 정보의 손실이 용이하게 분간되지 않는다.
상기한 인코더에서의 블록의 결정은 선택적으로 표 3에 열거된 하나 이상의 기준에 기초할 수 있다.
이미지 인코딩 동안 일련의 블록의 분할 및/또는 결합
기준 번호 기준
1 입력 이미지의 대응하는 영역으로부터 도출되는 블록 데이터의 분산 또는 표준 편차
2 주어진 블록에 의해 표현되는 데이터와 그의 값의 예측 사이의 절대차의 평균 또는 합
3 주어진 블록에 의해 표현되는 데이터와 그의 값의 예측 사이의 절대차의 분산 또는 표준 편차
선택적으로, 표 3에서의 예측은 하나 이상의 이지미를 인코딩할 때 이용되는 공지된 규칙에 기초하고 있다. 다른 대안으로서, 표 3에서의 예측은 제공된, 예를 들어, 선택된 데이터베이스 참조로부터, 예측 방향으로부터, 하나 이상의 이미지 내에서의 블록 좌표의 이동으로부터, 기타로부터 제공된 구성 정보에 기초하고 있다. 분산 또는 표준 편차의 사용은 주어진 대응하는 블록 내에 포함된 요소들의 상호 관계를 기술함으로써 정보의 압축을 제공하기 위해 본 발명에 따라 이용되는 방식이다. 많은 상황에서, 본 발명에 따른 인코딩을 수행할 때 관련 인코딩에서의 블록 데이터의 예측 자체로 충분하지만, 예측의 정확도를 향상시키기 위해 예측 내에 코드 예측 오차 데이터를 포함시키는 것이 선택적으로 바람직하다. 본 발명의 간단한 실시예에서, 간단한 데이터 예측 방법, 예를 들어, 인코딩된 출력 데이터에서 전달될 주어진 블록 내의 픽셀 또는 요소의 평균값, 즉 "DC" 값이 이용된다.
상기한 방법을 구현하는 인코더에 입력 데이터로서 제공되는 하나 이상의 이미지의 영역들을 분할하는 것 또는, 다른 대안으로서, 영역들을 결합하는 것은 선택적으로 압축을 제공하기도 하고 이미지 품질을 실질적으로 유지하기도 하는(즉, 인코딩 동안 실질적으로 무손실임) 임의의 방식에 따라 구현된다. 이 방법은 영역들의 이러한 분할 및/또는 결합에 다양한 전략을 적용한다. 예를 들어, 주어진 블록이 상당한 정보를 포함하는 경우, 이는 선택적으로 비교적 "변동이 없는" 복수의 대응하는 보다 작은 블록으로 분할되거나, 다른 대안으로서, 개별적으로 비교적 정보를 거의 포함하지 않도록 그의 콘텐츠와 관련하여 비교적 "변동이 없는"(즉, 실질적으로 일정한) 보다 큰 블록으로 선택적으로 결합된다. 본 발명에 따른 인코딩 방법이 적어도 하나 이상의 이미지 및/또는 하나 이상의 오디오 신호에 적용될 때, 인코딩된 출력 데이터에서의 인코딩 품질 및 인코딩 잡음은 입력 이미지 및 오디오 입력 신호를, 각각, 블록 및 패킷으로 분할하는 것이 행해지는 방식을 제어하는 데 선택적으로 이용된다. 그렇지만, 다른 유형의 데이터 콘텐츠 항목, 예를 들어, 이미지 데이터, 비디오 데이터, 오디오 데이터, 경제 데이터, 마스크 데이터, 지진계 데이터, 아날로그-디지털(ADC) 변환된 데이터, 생체 신호 데이터, 텍스트 데이터, 일정 데이터, 수학 데이터, 이진 데이터(이들로 제한되지 않음) 중 적어도 하나가 유사한 방식으로 처리될 수 있다는 것을 잘 알 것이다.
선택적으로, 인코딩된 출력 데이터에서의 잡음은 다음과 같은 것들 중 적어도 하나에 기초하고 있다.
(i) 현재 블록 또는 패킷에 존재하는 잡음;
(ii) 이 방법에 의해 생성되는 하나 이상의 이전 블록 또는 패킷에 존재하는 잡음; 및
(iii) 이전 이미지.
선택적으로, 주어진 입력 이미지가 영역들 및 대응하는 블록들로 분할될 때, 이 방법은 그에 의해 생성된 블록들을 분석하여, 블록들 중 임의의 것이 인코딩된 출력 데이터에서 보다 큰 정도의 데이터 압축을 달성하기 위해, 전술한 바와 같이, 상기한 품질 기준에 따라 서로 결합될 수 있는지 여부를 결정한다. 이상에서, 인코딩된 출력 데이터는 인코딩될 입력 데이터 내의 그의 원래의 이미지에서의 그의 대응하는 영역의 위치를 정의하는 블록과 연관되어 있는 정보를 포함하고 있다.
이 방법을 사용하여 인코딩될 입력 데이터에 존재하는 하나 이상의 이미지를 인코딩할 때, 입력 이미지와 연관되어 있는 데이터는 유익하게 상기한 인코딩 방법을 거치기 전에 다운샘플링되거나(예를 들어, 2 x 1: 1, 2 x 2 : 1, 1 x 2 : 1, 4 x 1 : 1의 비율로 다운샘플링됨), 이와 유사하게 양자화된다. 선택적으로, 본 발명에 따른 방법을 적용하는 것으로부터 생성되는 압축된 인코딩된 출력 데이터에서 요망되는 원하는 인코딩의 품질에 응답하여 이러한 다운샘플링이 수행된다. 선택적으로, 이 방법에 의해 처리되는 보다 큰 블록은 보다 작은 블록보다 덜 양자화되고; 환언하면, 이용되는 양자화의 정도는 블록 크기가 증가됨에 따라 선택적으로 감소된다. 선택적으로, 인코딩 동안, 이용되는 다운샘플링을 위한 스케일링 인자는 동적으로, , 예를 들어, 인코딩될 이미지(예를 들어, 비디오) 시퀀스에서의 콘텐츠의 성질에 응답하여 가변될 수 있다.
이 방법에 따른 블록의 디코딩 동안, 각각의 블록은 그의 콘텐츠를 기술하는 다양한 파라미터를 가진다. 이들 파라미터는 인코딩할 때 다양한 "채널"을 통해 전달된다. 예를 들어, 이미지의 블록을 기술하는 색 채널은 흑색/백색(B/W), Y, U, V, 적색(R), 녹색(G), 청색(B), 시안(C), 마젠타(M), Y 및 K 중 하나 이상을 포함할 수 있다. 더욱이, 인코딩을 위한 입력 이미지 및 블록은 각종의 가능한 색 또는 픽셀 형식, 예를 들어, Y, YUV420, YUV422, YUV444, RGB444, G 및 CMYK의 최근의 표준 및 형식을 사용하여 이 방법을 실행할 때 선택적으로 처리될 수 있다. 더욱이, 이 형식은 선택적으로 평면(planar), 인터리빙된 라인 평면(interleaved line planar) 등이다. 더욱이, 본 발명의 방법은 유익하게도 인코딩 동작을 수행할 때 이미지 및/또는 블록의 형상을 변경하는 동작을 하고; 예를 들어, 원래의 이미지가 인터리빙된 RGB 형식이고, 본 발명에 따른 방법을 사용하여 인코딩되어, YUV420 형식으로 된 인코딩된 출력 데이터를 생성하거나, 그 반대도 마찬가지이다.
상기한 인코딩 방법을 구현할 때 비트 깊이, 즉 픽셀의 동적 범위는 유익하게도 1 비트 내지 64 비트 분해능의 범위에 있다. 선택적으로, 인코딩 방법의 인코딩 품질 기준 및 압축 성능이 만족되기만 한다면, 상이한 픽셀 색 또는 오디오 채널이 상호 상이한 분해능으로 인코딩될 수 있다.
본 발명에 따른 인코딩 방법은 데이터베이스에 저장되어 있고 인코딩 동작을 수행할 때 액세스되는 인코딩 파라미터 및 인코딩 규칙 및/또는 테이블을 사용하여 선택적으로 구현된다. 선택적으로, 데이터베이스는 인코딩 프로세스 동안 생성되고 인코더를 통해 이 방법을 구현할 때 사용하기 위해 전달된다. 예를 들어, 인코딩 동안의 움직임 보상은 유익하게도 인코더로 전달된 데이터베이스 정보를 사용하여 구현된다. 유익하게도, 인코더는 입력 데이터에 존재하는 원래의 픽셀 정보를 인코딩하고 및/또는 예측 오차 정보를 인코딩하는 동작을 한다. 입력 데이터를 인코딩하여 대응하는 인코딩된 출력 데이터를 생성할 때 데이터베이스 정보를 사용하는 것은 인코더가 인코딩을 위해 이용되는 파라미터, 테이블 등의 인코딩 표준의 수정에 적응할 수 있게 해준다. 본 발명에 따른 인코딩 방법을 구현할 때 채택될 수 있는 코딩 방식은 데이터베이스 참조, DC 값, 슬라이드, 스케일, 라인, 다중 레벨, 불변, 보간, 외삽, DCT, 펄스 코드 변조(PCM), DPCM, RLE, SRLE, EM, LZO, VLC, 허프만 코딩, 산술 코딩, 범위 코딩, 변환 코딩, 델타 코딩, ODelta 코딩, bzip2-specific RLE 중 하나 이상을 선택적으로 포함한다. 선택적으로, 블록 및/또는 패킷의 정보 콘텐츠에 따라, 블록 및/또는 패킷에 대해 상기한 코딩 예(즉, 복수의 인코딩 변환)의 임의의 조합을 포함하는 코딩 방식은 물론 복수의 파라미터가 유익하게도 이용된다. 허프만 코딩 등의 코딩 방식이 이용될 때, 이러한 코딩은 유익하게도 고정된 인코딩 파라미터 테이블 또는 전달된 코딩 파라미터 테이블을 사용한다. 인코더는 유익하게도 데이터 저장 장치를 가지는 컴퓨팅 하드웨어를 사용하여 구현되고, 여기서 최적화된 인코딩 파라미터 테이블이 인코딩 동작을 수행할 때의 장래의 사용을 위해 데이터 저장 장치에 저장될 수 있다. 유익하게도, 디코더가 인코더로부터의 인코딩된 출력 데이터를 디코딩하기에 적당한 파라미터를 획득하기 위해 데이터베이스에 액세스할 수 있게 해주는 참조 주소는 인코딩된 출력 데이터에 포함되어 있다. 선택적으로, 데이터베이스는 통신 네트워크를 통해(예를 들어, 인터넷을 통해) 액세스가능하다. 선택적으로, 데이터베이스는 클라우드 컴퓨팅 장치를 통해 지원된다. 인코더에 구현되어 있는 방법이 수학적으로 생성된 데이터베이스를 이용할 때, 데이터베이스는 선택적으로 DC 값, 1D/2D 선형 전환, 1D/2D 곡선 전환, 1D/2D 변환 함수 또는 어떤 공지된 이미지 블록 또는 오디오 패킷 구조일 수 있다.
본 발명에 따른 인코딩 방법은, 인코더에서 실행될 때, 입력 데이터를 인코딩하여 인코딩된 출력 데이터를 생성하는 동작을 하고, 여기서 인코딩된 출력 데이터는 비트 스트림으로서 출력될 수 있거나, 다른 대안으로서, 데이터 저장 매체에, 예를 들어, 데이터 파일로서 저장된다. 더욱이, 본 발명의 방법은 일정 범위의 가능한 응용에서 이용될 수 있고; 유익하게도, 비디오, 이미지, 이미지 블록, 오디오 또는 오디오 패킷에 대한 헤더가 유익하게도 버전 번호, 비디오, 이미지 또는 패킷에대한 데이터의 크기, 인코딩할 때 이용되는 품질 인자 임계값, 최대 블록 또는 패킷 크기, 적용되는 인코딩 방식(즉, 이용되는 변환의 유형), 인코딩 파라미터 테이블, 및 차후의 디코딩 프로세스를 돕는 임의의 다른 정보 등의 보충 정보를 포함한다. 선택적으로, 블록들 간에 변하지 않는 정보는 인코딩된 출력 데이터에서의 향상된 정도의 데이터 압축을 달성하기 위해 포함되지 않거나, 상위 레벨에서(예컨대, 헤더 또는 서브 헤더 레벨에서) 인코딩된 출력 데이터에 포함된다. 표 4는 인코더에 의해 생성된 인코딩된 출력 데이터에서 유익하게도 이용되는 계층적 레벨 순서를 제공한다.
인코딩된 출력 데이터에서의 레벨 순서(높은 것부터 낮은 것으로)
레벨 순서 레벨과 연관된 정보
상위 비디오
이미지의 그룹
이미지
매크로블록의 그룹
중간 매크로블록
블록의 그룹
블록
마이크로블록의 그룹
하위 마이크로블록
선택적으로, 본 발명에 따른 인코딩 방법은, 실행될 때, 예를 들어, 이 방법의 응용 분야[예를 들어, 소비자 비디오 제품, 조사용의 전문 이미지 압축 장치, X-선 이미지 장치, MRI(magnetic resonance imaging, 자기 공명 이미지) 장치]에 따라 인코딩된 출력 데이터에서의 하나 이상의 레벨에 관한 정보를 선택하고 전달하는 동작을 한다. 유사한 고려사항은 오디오 데이터를 인코딩하기 위해 본 발명에 따른 방법이 이용될 때의 인코딩된 출력 데이터에서의 레벨의 순서에 관한 것이며; 오디오, 패킷의 그룹, 패킷, 서브패킷, 파형 세그먼트의 그룹, 및 파형 세그먼트에 대해 헤더가 이용될 수 있다.
도 1을 참조하면, 본 발명에 따른 인코더의 예시가 도시되어 있다. 인코더는 10으로 표시되어 있고, 입력 데이터(20)를 수신하고 본 발명에 따른 인코딩 방법을 이용해 입력 데이터(20)를 인코딩하여 대응하는 인코딩된 압축된 출력 데이터(30)를 생성하는 동작을 한다. 출력 데이터(30)는 유익하게도 상기한 바와 같이 실질적으로 무손실인 방식으로 인코딩된다. 선택적으로, 인코더(10)는, 통신 네트워크(40)를 통해, 입력 데이터(20)를 인코딩하기 위한 하나 이상의 파라미터, 테이블 및/또는 규칙이 저장되어 있는 데이터베이스 장치(50)에 연결되어 있다.
동작을 설명하면, 인코더(10)는 입력 데이터(20)를 수신하고, 선택적으로 통신 네트워크(40)를 통해 데이터베이스 장치(50)로부터 인코딩 정보를 도출하며, 이어서 계속하여 입력 데이터(20)를 인코딩하여 인코딩된 압축된 출력 데이터(30)를 생성한다. 선택적으로, 입력 데이터(20)는 오디오, 하나 이상의 이미지, 비디오, 그래픽, 텍스트, ECG, 사이즈믹, ASCII, 유니코드, 및 이진 데이터(이들로 제한되지 않음) 중 적어도 하나를 포함한다. 선택적으로, 인코딩된 출력 데이터(30)는 헤더, 인코딩 정보는 물론, 인코딩된 데이터도 포함하고 있다. 출력 데이터(30)는 인코더(10)로부터, 예를 들어, 통신을 위해 통신 네트워크 장치를 통해, 하나 이상의 데이터 저장 장치 또는 디코더로 스트리밍되거나, 기계 판독가능 데이터 저장 매체(예를 들어, 하드 드라이브 디스크 저장 장치, 휴대용 고상 메모리 장치 등)에 직접 저장될 수 있다.
인코더(10)는 유익하게도 하드웨어로서, 예를 들어, 하나 이상의 PGLA(Programmable Gate Logic Array)를 통해, 컴퓨팅 하드웨어 상에서 실행가능한 하나 이상의 소프트웨어 애플리케이션을 통해, 또는 하드웨어와 소프트웨어의 임의의 혼합(예를 들어, 병렬 처리 엔진)을 통해 구현된다. 인코더(10)는 멀티미디어 제품, 컴퓨터, 이동 전화("휴대폰"), 인터넷 서비스, 비디오 레코더, 비디오 플레이어, 통신 장치 등에서 이용될 수 있다. 인코더(10)는 선택적으로 대량의 이미지 데이터를 생성하는 이미지 포착 시스템(예를 들어, 감시 카메라, 병원 X-선 시스템, 병원 MRI 스캐너, 병원 초음파 스캐너, 공중 감시 시스템 및 유사한 장치)과 관련하여 이용되고, 여기서 데이터 저장을 위해 이미지 데이터의 양을 관리가능하게 하면서 이미지에서의 미세한 정보를 유지하기 위해 무손실 압축이 요망된다.
인코더(10)는 유익하게도 공지된 이미지 처리 장치에서, 예를 들어, 공개된 미국 특허 출원 제US2007/280355호(참조 문헌으로서 본 명세서에 포함됨)에 기술되어 있는 이미지/비디오 처리기와 관련하여, 예를 들어, 공개된 미국 특허 제US2010/0322301호(참조 문헌으로서 본 명세서에 포함됨)에 기술되어 있는 이미지 생성기와 관련하여, 그리고 예를 들어, 공개된 미국 특허 출원 제US2011/007971호(참조 문헌으로서 본 명세서에 포함됨)에 기술되어 있는 패턴 인식기와 관련하여 사용가능하다.
이제부터, 도 1의 인코더(10)를 사용하여 입력 데이터를 인코딩하는 방법에 대해 도 2를 참조하여 기술할 것이다. 도 2에서, 입력 데이터(20)를 인코딩하는 방법의 단계들이 100 내지 200으로 표시되어 있다. 제1 단계(100)에서, 이 방법은, 예를 들어, 상기한 입력 데이터(20)를 수신하기 위해, 블록, 이미지, 비디오 및/또는 오디오(이들로 제한되지 않음)에 대한 입력 데이터를 수신하는 단계를 포함하고; 이미지/블록 유형, 이미지/블록 형식 정보가 인코딩된 출력 데이터(30)에 포함시키기 위해 제1 단계에서 도출된다. 제1 단계(100)는 헤더 정보(예를 들어, 이미지 크기 정보)를 인코딩된 압축된 데이터에 기입하는 것을 제공할 수 있다.
제1 단계(100) 후에 실행되는 제2 단계(110)에서, 이 방법은, 필요한 경우, 초기 블록 또는 패킷을 생성하는 단계를 포함한다. 제2 단계(110) 후에 실행되는 제3 단계(120)에서, 이 방법은 제2 단계(110)에 의해 생성된 블록 및/또는 패킷 정보의 분석을 수행하는 단계를 포함한다. 제3 단계(120) 후에 실행되는 제4 단계(130)에서, 이 방법은, 예를 들어, 정의된 인코딩 품질 및/또는 정의된 압축비(예컨대, 실질적으로 무손실인 인코딩)를 달성하기 위해, 제3 단계(120)에서 식별된 하나 이상의 블록 및/또는 패킷이 분할 및/또는 결합될 필요가 있는지 여부를 결정하는 단계를 포함하고; 제4 단계(130)에서 하나 이상의 블록 또는 패킷이 분할 및/또는 결합을 필요로 하는 것으로 판명되는 경우, 이 방법은 하나 이상의 식별된 블록 또는 패킷이 보다 작은 블록 또는 패킷으로 분할되고 및/또는 보다 큰 블록 또는 패킷으로 결합되고, 그로써 부가의 새로운 블록 또는 새로운 패킷을 생성하는 제5 단계(140)로 진행하고; 제4 단계(130)에서 하나 이상의 블록 또는 패킷이 분할 및/또는 결합될 필요가 없는 경우, 이 방법은 제6 단계(150)로 진행한다. 제5 단계(140)를 완료할 시에, 적절할 때, 이 방법은 제6 단계(150)로 진행한다.
제6 단계(150)에서, 제2 단계(120)에서 실행되는 분석에 기초하는 변환에 의해 재구성되는 블록의 데이터는, 이 방법이 제7 단계(160)로 더 진행한 후에, 데이터 스트림으로 출력된다.
제7 단계(160)에서, 이 방법은 인코딩되어야 하는 마지막 블록 또는 패킷에 도달되었는지 여부를 결정하는 단계를 포함하고; 인코딩될 블록 또는 패킷이 남아 있는 경우에, 이 방법은 블록 또는 패킷 정보의 분석을 수행하는 제3 단계(120)로 다시 되돌아가는 단계를 포함하고; 모든 블록 또는 패킷이 인코딩된 경우에, 이 방법은 제8 단계(170)로 진행하는 단계를 포함한다. 이 방법의 제8 단계(170)는, 예를 들어, RLE, 허프만, DCT 또는 유사한 변환을 사용하여 데이터(예를 들어, 픽셀값, 파라미터 및 분할 정보)를 압축 및 인코딩하고 상기한 바와 같이 헤더 정보를 기입하는 단계를 포함하고; 예를 들어, 블록의 DC값이 송신되는 경우, 이들은 먼저 선택적으로 델타 인코딩되고, 그 후에 대응하는 델타 인코딩된 값이 RLE로서 인코딩되며, 이어서 이들이 허프만 인코딩을 사용하여 인코딩된다. 제8 단계(170)에서의 압축 및 인코딩 동작이 완료될 때, 이 방법은 마지막 초기 블록, 패킷 또는 프레임에 도달되었는지 여부를 검사하는 것에 관한 제9 단계(180)로 진행하는 단계를 포함하고; 마지막 초기 블록, 패킷 또는 프레임에 도달되지 않은 경우, 이 방법은 제3 단계(120)로 되돌아가는 단계를 포함하고; 마지막 초기 블록, 패킷 또는 프레임에 도달된 경우, 이 방법은 제10 단계(190)로 진행하는 단계를 포함한다. 제10 단계(190)에서, 이 방법은 이미지/블록이, 예를 들어, 이전의 이미지/블록과 유사한지 또는, 예를 들어, 흑색인지 여부의 하나 이상의 분석을 수행하는 단계를 포함한다. 이러한 분석은 선택적으로 또한 이전의 단계들 중 하나 이상의 단계로부터 획득될 수 있는 어떤 정보를 필요로 한다. 이 단계는 인코딩된 출력 데이터의 이미지/블록이 더 압축될 수 있게 해준다. 이전의 단계들 중 하나 이상의 단계로부터의 어떤 정보도 필요로 하지 않는 유사한 분석이 또한 제3 단계(120)에서 이미 수행되고, 그러면 불필요한 처리가 프로세서에서 실행되는 것을 피할 수 있다. 제10 단계(190)를 완료한 후에, 이 방법은 제11 단계(200)로 진행하는 단계를 포함하고, 여기서 이 방법은 블록, 패킷, 이미지 또는 비디오의 최종 인코딩을 적용하여 인코딩된 압축된 출력 데이터(30)를 완성하는 단계를 포함한다. 선택적으로, 이 방법은, 적용가능한 경우, 예를 들어, 이미지에서의 하나의 블록만 인코딩되면 되고 이 블록이 흑색이거나 이전의 이미지에서의 이전의 블록과 유사한 경우, 제7 단계(160)로부터 곧바로 제11 단계(200)로 진행하는 단계를 포함한다. 파일에 기입되거나 스트리밍될 수 있는 모든 인코딩된 데이터가 유익하게도 이 방법을 구현할 때 추가의 버퍼링을 피하기 위해 가능한 한 빨리 생성된다.
그 다음에 도 3을 참조하면, 이상으로부터, 본 발명에 따른 인코딩 방법이, 적절한 경우, 인코딩된 출력 데이터(30)에서의 데이터 압축과 실질적으로 무손실인(즉, 실질적으로 분간가능한 손실이 없음) 압축 사이의 최적의 해결책을 제공하기 위해 가변 블록 또는 패킷 크기를 이용한다는 것을 잘 알 것이다. 도 3에서, 주어진 이미지의 좌측 상부 코너에 대해서는 큰 코딩 블록(300)이 이용되는 반면, 이미지의 우측 하부 가장자리 영역를 따라서는 이들 영역의 인코딩을 보다 정확하게 제공하기 위해 보다 작은 블록(310, 320, 330)이 필요하다. 인코딩된 출력 데이터(30)에서, 블록(300, 310, 320, 330)의 이미지 콘텐츠 및 이미지 내에서의 블록의 위치를 기술하는 파라미터는 인코딩된 출력 데이터(30)에 포함되어 있다. 유익하게도, 블록(300, 310, 320, 330)을 인코딩하는 데 이용되는 인코딩 방법이 또한 인코딩된 출력 데이터(30)에 정의되어 있다 - 예를 들어, 상이한 블록(300, 310, 320, 330)에 대해 상이한 방법임 -. 블록(300, 310, 320, 330)의 분포는 인코딩될 이미지 내에서의 콘텐츠의 공간 분포에 따라 달라질 것이다. 도 3은 제2 단계(110)에서 생성되는 이미지에서의 블록들의 초기 분할의 예를 나타낸 것이다. 블록들의 이 초기 분할은, 예를 들어, 이미지의 크기에 기초할 수 있기 때문에, 인코더와 디코더 사이에서 어떤 정보도 송신될 것을 필요로 하지 않는다. 일 실시예에 따르면, 제5 단계(140)에서 실제의 블록 분할이 실행될 때, 그 정보는 인코더로부터 디코더로 전달될 수 있다. 이미지를 인코딩하는 것에 관한 실제 예에 대해서는 나중에 기술한다.
이상에서, 표 5에 주어진 바와 같은 하기의 약어가 사용되었다. 이들 다양한 인코딩 형식 모두는, 인코더(10)의 원하는 성능에 따라, 인코더(10)을 구현할 때 사용하는 데 어쩌면 관련이 있다.
다시 도 2를 참조하면, 인코딩 방법이 선택적으로 이미지, 비디오 및 오디오 중 적어도 하나의 인코딩을 완료하고 이어서 그 후에 인코딩된 출력 데이터(30)를 출력한다는 것을 잘 알 것이다. 다른 대안으로서, 도 2에서의 단계(200) 이후 다시 단계(100 또는 120)로의 링크는 인코딩된 출력 데이터(30)가 이미지, 비디오 및 오디오 중 적어도 하나에 대한 인코딩 실행 방법 단계와 동시에 출력(예를 들어, 스트리밍)될 수 있게 해준다. 이러한 동작은 고객들로 스트리밍하기 위해, 예를 들어, 인터넷으로 배포되는 멀티미디어 서비스를 위해 서버 사이트에서 실시간으로 소스 데이터를 인코딩하기 위해 본 발명의 방법이 이용될 때 유익하다. 이 방법은 그에 의해 어쩌면 이용가능한 작은 데이터 저장 용량으로 기능할 수 있고, 예를 들어, 사용자가 대안을 선택하는 것에 의한 스트리밍되는 인코딩된 데이터의 사용자 중단은 사용자가 필요로 하지 않을 때 전체 비디오 파일이 인코딩되는 것을 방지하며, 그로써 컴퓨팅 처리 자원을 절감한다. 이러한 고려사항은, 예를 들어, 인터넷을 통해 동작하는 최근의 멀티미디어 스트리밍 서비스에 아주 중요하다.
예를 들어, 상기한 바와 같은 동시 인코딩/스트리밍 상황에서 인코딩된 출력 데이터(30)를 송신할 때, 예를 들어, 최고 레벨 헤더가 먼저 송신되고 그 후에 계층구조의 최고 레벨에 관련된 인코딩된 데이터가 송신되며, 그 후에 계층구조의 하위 레벨에 관련된 인코딩된 데이터가 송신되는 것이 유익하다. 예를 들어, 인코딩된 출력 데이터(30)에서, 이미지 크기 데이터 및 이미지/비디오 관련 데이터가 인코딩된 출력 데이터(30)에서 먼저 송신되고, 그 후에 블록의 분할에 관한 데이터가 송신되며, 그 후에 블록 인코딩에서 이용된 알고리즘 및 인코딩된 블록 데이터가 송신된다.
인코더(10)는 유익하게도 데이터를 병렬로 처리하도록 구성되어 있는 복수의 프로세서를 포함하는 병렬 프로세서 아키텍처를 포함하는 컴퓨팅 하드웨어를 사용하여 구현된다. 예를 들어, 분할된 블록(300, 310, 320, 330)을 제공하기 위한 초기 블록 분할로 인해, 분할된 블록(300, 310, 320, 330)이 복수의 프로세서로 분배될 수 있고, 예를 들어, 제1 프로세서는 블록(300, 310, 320)을 인코딩하고, 제2 프로세서는 블록(330)을 인코딩한다.
인코딩 동안, 이미지, 비디오 및/또는 오디오를 인코딩하기 위해 인코더(10)에 의해 이용되는 채널의 수는 인코딩된 출력 데이터(30)에서의 보다 큰 정도의 데이터 압축을 획득하기 위해 동적으로 변할 수 있다. 예를 들어, 최대 4개의 채널을 이용하는 것이 편리하지만, 이미지는 함께 제시될 수 있는 다수의 계층을 포함할 수 있다. 계층들은 선택적으로 자막, 로고, 멀티뷰 이미지, 깊이 중 하나 이상에 관한 것이다. 더욱이, 계층들은 선택적으로 서로 상이한 양의 데이터를 전달한다. 모든 연관된 계층 데이터는 인코딩된 출력 데이터(30)에서 개별적인 채널로서 인코딩되고, 채널들이 어떻게 결합되고 사용되어야만 하는지에 관한 연관된 설명이 또한 인코딩된 출력 데이터(30)에 포함된 하나 이상의 헤더에 포함되어 있다.
본 발명의 실시예를 구현할 때 사용가능한 인코딩 변환에 대한 약어
1D 1차원(예컨대, 신호 또는 패킷의 경우) MAD Mean Absolute Difference
2D 2차원(예컨대, 블록, 이미지, 스테레오 또는 다채널 오디오의 경우) MP3 MPEG-1 audio layer 3
3D 3차원(예컨대,비디오, 입체 이미지, 다채널 이미지의 경우) MPEG Motion Picture Experts Group
AAC Advanced Audio Coding MSD Mean Square Difference
AVC Advanced Video Coding MVC Multiview Video Encoding
BMP Bitmap - 파일 형식 PCM Pulse Code Modulation
DC Direct Current PNG Portable Network Graphics
DCT Discrete Cosine Transform RLE Run-Length Encoding
DPCM Differential Pulse Code Modulation SAD Sum of Absolute Differences
FLAC Free Lossless Audio Codec SSD Sum of Square Differences
GIF Graphic Interchange Format TIFF Tagged Image File Format
JPEG Joint Photographic Experts Group VLC Variable Length Coding
JPEG XR JPEG eXtended Range VQ Vector Quantization
LZO Lempel-Ziv transform 기반 코딩 방법 EM Entropy Modifier
도 3에 예시된 블록의 분할이 한 예에 불과하다는 것을 잘 알 것이다. 이미지의 시간 시퀀스(예를 들어, 비디오 시퀀스)에서, 잘 정의된 가장자리를 갖는 이미지에 표시된 물체는 종종 이미지의 주어진 시야 내에서 움직이는 것으로 발견되고, 그 결과 물체의 움직임 후에 블록의 분할이 있게 된다. 정지 이미지에서, 블록의 분할은 통상적으로 공간 이미지에서의 가장자리를 따라가는 결과를 생성한다. 블록의 분할이 정지 이미지으로부터 예시되어 있지만, 물체가 종종 그로부터 검출될 수 있다.
본 발명에 따른 인코딩 방법은, 예를 들어, 도 2에 도시된 바와 같이, 인코더(10)에서 실행되는 계층 및 채널 인코딩을 통해, 새로운 유형의 콘텐츠 배달 서비스(예를 들어, 대화형 상업 광고, 포뮬라 1 등의 생중계 스포츠 경기를 스트리밍할 때의 상이한 시점, 및 영화)를 제공하는 대화형 비디오 제시를 지원할 수 있다. 예를 들어, 인코더(10)는 국소화된 자막 계층을 갖는 영화, 대화형 워터마크, 대화형 패턴 인식, 애니메이션화된 2D/3D 사용자 인터페이스(UI) 버튼 등을 가능하게 해준다.
인코딩의 실시예의 간략화된 예가 도 4에 도시되어 있다. 인코딩될 이미지(400)은 명확함을 위해 도 4에서 백색으로 도시된 변동이 없는 청색 영역(414), 명확함을 위해 도 4에서 점이 찍혀 있는 것으로 도시되어 있는 녹색 영역(412), 및 명확함을 위해 도 4에서 점이 찍혀 있는 경사진 음영으로 도시되어 있는 경사진 적색 영역(410)을 가진다. 이미지(400)의 크기는 임의적(예를 들어, 12 x 8 요소 또는 픽셀, 또는 24 x 16 요소 또는 픽셀, 또는 120 x 80 요소 또는 픽셀 등)일 수 있다. 이미지(400)의 초기 블록 크기(402)는 상이한 이미지 크기에 대해, 각각, 4 x 4 요소 또는 픽셀, 또는 8 x 8 요소 또는 픽셀, 또는 40 x 40 요소 또는 픽셀로서 선택된다. 이 실시예에서, 예시된 바와 같이, 6개의 요소 또는 픽셀 블록 A, B, C, D, E 및 F가 있다. 이 실시예에 따르면, 제1 블록 A가 분석된다. 블록 A는 이 분석으로부터 균일하고 숫자 10으로 표현되는 색상값을 갖는 청색만으로 이루어져 있는 것으로 결정된다. 블록 A는 하나의 영역으로서 간주된다. 이어서, 블록 B가 분석된다. 블록 B는 청색만으로 이루어져 있고, 따라서 하나의 영역으로서 간주된다. 이어서, 블록 C가 분석된다. 블록 C는 균일하지 않고, 따라서 C1, C2, C3 및 C4로 표시된 4개의 서브블록으로 분할된다. 제1 서브블록 C1이 분석된다. 이는 경사진 적색 영역으로 이루어져 있고, 그의 좌측 하부 코너에서 색상값이 15이고, 서브블록 C1의 좌측 상부 및 우측 하부 코너에서 값이 20이며, 서브블록 C1의 우측 상부 코너에서 값이 25이다. 서브블록 C1은 하나의 영역으로서 간주된다. 서브블록 C2, C3 및 C4가 각각 분석된다. 서브블록 C2, C3 및 C4는 변동이 없는 청색으로 이루어져 있고, 각각 변동이 없는 청색 영역으로 표시되어 있다. 이어서, 블록 D가 분석된다. 블록 D는 단 하나의 색상(즉, 변동이 없는 청색)을 가지며, 하나의 영역으로서 간주된다. 이어서, 블록 E가 분석된다. 블록 E는 균일하지 않고, 따라서 4개의 서브블록 E1, E2, E3 및 E4로 분할된다. 서브블록 E1 및 E2 둘 다는 균일하고 변동이 없는 청색의 색상을 가진다. 서브블록 E3는 균일하지 않고 4개의 서브블록 E31, E32, E33 및 E34으로 추가로 분할된다. 각각의 서브블록 E31, E32, E33 및 E34가 분석된다. 서브블록 E31은 균일한 청색으로 이루어져 있는 것으로 분석되고, 변동이 없는 청색 영역으로서 표시된다. 서브블록 E32, E33 및 E34는, 예로서, 5의 색상값을 갖는 녹색인 것으로 분석되고, 녹색인 것으로 지정된다. 서브블록 E4가 분석되고, 균일한 것으로 결정되며, 녹색으로서 지정된다. 블록 F가 분석되고, 균일하지 않은 것으로 결정된다. 블록 F는 4개의 서브블록 F1, F2, F3 및 F4로 분할된다. 서브블록 F1이 분석되고, 균일하지 않은 것으로 결정된다. 서브블록 F1이 서브블록 F11, F12, F13 및 F14로 추가로 분할된다. 각각의 서브블록 F11, F12, F13 및 F14가 분석된다. 서브블록 F11이 청색으로 균일한 것으로 결정된다. 서브블록 F12, F13 및 F14는 녹색으로 균일한 것으로 결정된다. 값은 블록 및 서브블록과 각각 연관되어 있다. 서브블록 F2, F3 및 F4가 추가로 분석되고, 녹색으로 균일한 것으로 결정된다. 값은 블록 및 서브블록과 각각 연관되어 있다.
상기한 인코딩 프로세스에 대한 코드를 구현하는 한 예는 분할되지 않은 블록에 대해 값 "0"을 부여하고, 분할될 필요가 있는 블록에 대해 값 "1"을 부여하는 것이다. 이러한 논리를 사용하여, 상기 예는 유익하게도 다음과 같은 분할 비트(Split Bit)로서 코딩되고:
0 0 1 0000 0 1 0010 0000 1 1000 0000,
여기서 처음 2개의 논리값 "0"은 2개의 초기 블록 A, B가 분할되어 있지 않다는 것을 나타내고, 제3 블록 C는 분할되어 있으며 상기한 바와 같이 논리값 "1"에 의해 정의되어 있지만 서브블록들은 분할되어 있지 않고, 제4 블록 D는 분할되어 있지 않으며, 제5 블록 E는 분할되어 있고, 처음 2개의 서브블록 E1, E2는 분할되어 있지 않지만 서브블록 E3는 분할되어 있으며, 이하 마찬가지이다. 비트 스트링(Bit String)은 또한, 예를 들어, 런 길이 코딩(run length coded)될 수 있다.
각각의 블록에 대한 추가의 "채움(fill)" 방법이, 예를 들어, 블록에 대한 변동이 없는 색상을 할당하기 위한 논리값 "0" 및 블록에 대한 경사진 색상을 할당하기 위한 논리값 "1"[방법 비트(Method Bit)라고 함]로 코딩될 수 있다:
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
이 코드에서, 처음 2개의 A, B는 변동이 없는 색상이고, 그 다음 블록 C1은 경사져 있으며, 나머지는 변동이 없는 색상이다. 방법 비트는 또한, 예를 들어, 런 길이 코딩될 수 있다.
블록에 대한 색상값은, 각각, 다음과 같은 값으로서 참조되고:
10 10 20 25 15 20 10 10 10 10 10 10 5 10 5 5 5 5 5 5 10 5 5 5
여기서 세트 “20, 25, 15, 20”는 블록 C1의 각각의 코너의 색상값을 나타낸다. 값들의 스트링은, 예를 들어, 데이터 크기를 줄이기 위해 허프만 코딩될 수 있다. 더욱이, 서브블록 E31, E32, E33 및 E34의 그룹 및 서브블록 F11, F12, F13 및 F14의 그룹이 동일한 색상값 조합 및 순서[즉, (10, 5, 5, 5)]를 가지기 때문에, 이는 하나의 요소로서 간주되고, 조합값(Combination Value)이라고 하는 그 자신의 값을 지정받을 수 있다. 조합값은, 예를 들어, 인코더 또는 대응하는 디코더의 데이터베이스에 저장될 수 있고, 필요에 따라 참조 식별 번호(Reference Identification number)라고 할 수 있다. 종종, 예를 들어, DC값 및 슬라이드 값이 개별적인 스트림으로 설정될 수 있는 이상에서 기술한 예에서 상이한 방법에 대한 값에 대해 개별적인 스트림을 사용하는 것이 유익하다. 어떤 방법은 선택적으로 또한, 예를 들어, 방법을 구현할 때 사용되는 상위 및 하위 레벨이 개별적인 스트림을 처리하도록 설정될 수 있는 다중 레벨 방법을 사용하여 엔트로피 코딩 방법 내에서 보다 나은 압축 효율을 가능하게 해주는 각각의 스트림에 대해 보다 작은 엔트로피를 가능하게 해주기 위해, 그 자체적으로 다수의 스트림을 생성하는데, 그 이유는 종종 하위 값이 서로에 더 가까운 것과 유사하게, 상위값이 서로에 더 가까우며, 그리고 델타 코딩된 상위 또는 하위 값을 사용하는 범위 코딩이 효율적으로 동작하기 때문이다.
실시예에 따르면, 분할 비트, 방법 비트, 값 및 조합값이, 예를 들어, 차후에 디코딩을 위해 다른 하드웨어에 제공하기 위해, 인코더 하드웨어에 저장될 수 있다.
일 실시예에서, 인코딩이 스마트폰, 디지털 카메라 또는 비디오 카메라 등의 도 6의 휴대용 장치(600)에서 구현될 수 있다. 휴대용 장치(600)는 선택적으로 하나 이상의 이미지를 포착하는 카메라(KAM)(604), 하나 이상의 이미지를 보여주는 디스플레이(DISP), 셀룰러 무선 네트워크 또는 근거리 통신망을 사용한 통신을 가능하게 해주는 수신기/송신기(RX/TX)(606), 및 USB(Universal Serial Bus) 또는 이더넷 등의 기타 입/출력(I/O)(612), 인코더 관련 알고리즘 및 명령어를 실행하는 중앙 처리 장치(CPU)(608), 및 카메라(604)로부터의 하나 이상의 이미지, 인코더용 소프트웨어 및 인코딩된 이미지 콘텐츠를 저장하는 메모리(MEM)(610)를 포함하고 있다. 휴대용 장치(600)는 유익하게도 하나 이상의 인코딩된 이미지를 그의 로컬 메모리(610)에 저장하도록 구성가능하고 및/또는 인코딩된 이미지를 수신기/송신기(RX/TX)(606)를 통해 또는 입/출력(I/O)(612)을 통해 외부 시스템으로 주기적으로, 요청 시에, 사용자 행위 시에, 실시간으로 또는 실질적으로 실시간으로 송신하도록 구성될 수 있다.
이하에서, 다음과 같이 수학식 1로부터 도출되는 RD 값을 최소화하기 위해 RD 최적화가 이용된다.
[ 수학식 1]
RD = (E) + (λ(BC))
여기서
E = 오차;
λ = 오차 E의 함수로서 비트 카운트(bit count)의 비용(cost)을 정의하는 계수;
BC = 비트 카운트이다
오차 E는, 예를 들어, MAE, MSE, MAX 또는 이러한 파라미터들의 어떤 가중된 조합(예를 들어, MAE + MAX)일 수 있다. 파라미터 λ는 비트 카운트 BC의 비용이 오차 E와 관련하여 비슷하게 만들어질 수 있는 상기한 계수를 말하고; 파라미터 λ는 인코딩에 보다 적은 비트가 사용될 때 보다 크게 되며, 즉 보다 작은 품질 기준 값에 대응하는 큰 데이터 압축이 일어나는 상황에서 보다 많은 오차가 허용된다. 그에 대응하여, 파라미터 λ는 인코딩에 보다 많은 비트가 사용될 때 보다 작게 되고, 즉 보다 큰 품질 기준 값에 대응하는 작은 데이터 압축이 일어나는 상황에서 보다 적은 오차가 허용된다.
인코딩 품질 기준과 관련하여, 이는, 예를 들어, 변동의 척도 등의 균등성(evenness)과 연관되어 있을 수 있다. RD 값의 추정치를 이용하는 것이 종종 유익한데, 그 이유는 인코딩 품질을 결정할 때 요구되는 처리량을 감소시키기 때문이다. RD 값 계산에서 사용되는 비트 카운트의 값이 종종 추정되는데, 그 이유는 실제값을 계산하는 것이, 다른 데이터 값 및 선택된 엔트로피 코딩 방법에 의존하는 것으로 인해, 종종 아주 어렵기 때문이다. 비트는 값 전달에 필요한 비트의 양과 데이터 스트림에 대해 사전 정의되어 있을 수 있는 추정된 압축 인자를 곱한 것에 기초하여 추정될 수 있거나, 이전의 압축된 및 전달된 데이터에 기초하여 적응적으로 수정될 수 있다.
상기한 실시예를 구현할 때, 이용되는 데이터 압축은 2가지 상이한 측면을 포함한다. 유익하게도, 선택 정보를 생성하는 데이터 압축 방법이 선택되고, 여기서 선택 정보는 방법 및 방법에 의해 생성되는 양자화된 데이터의 유형을 정의한다. 유익하게도, 선택 정보는, 예를 들어, 출력 데이터(30)에 포함시키기 위해, 엔트로피 코딩된다. 출력 데이터(30)를 생성할 때, 선택적으로, 예를 들어, 전체 이미지에 대해 또는 초기 블록에 대해 다수의 스트림을 이용하는 것이 또한 유익하다. 이러한 다수의 스트림을 이용하는 것은 압축된 출력 데이터(30)에서 엔트로피를 감소시키는 데 유익하다.
첨부된 특허청구범위에 의해 한정된 본 발명의 범위를 벗어나지 않고 이상에서 기술된 본 발명의 실시예에 대한 수정이 가능하다. "포함하는", "구비하는", "내포하는", "~로 이루어져 있는", "가지는", "~인" 등의 표현은 본 발명이 비배타적 방식으로 해석되어야만 한다(즉, 명시적으로 기술되어 있지 않은 항목, 구성요소 또는 요소가 또한 존재할 수 있다)는 것을 기술하고 청구하기 위해 사용된다. 단수를 언급하는 것이 또한 복수에 관련되어 있는 것으로 해석되어야 한다. 첨부된 청구항들에서 괄호 안에 포함된 숫자는 청구항의 이해를 돕기 위한 것이며, 이들 청구항에 의해 청구되는 발명 요지를 결코 제한하는 것으로 해석되어서는 안된다.

Claims (24)

  1. 대응하는 인코딩된 출력 데이터(30)를 생성하기 위해 입력 데이터(20)를 인코딩하는 방법에 있어서,
    (a) 상기 입력 데이터(20)를 복수의 블록 또는 패킷 - 상기 블록 또는 패킷은 상기 블록 또는 패킷의 콘텐츠의 성질에 의존하는 크기를 가지며, 상기 블록 또는 패킷은 하나 이상의 크기를 가짐 - 으로 세분(sub-divide)하는 단계;
    (b) 대응하는 변환된 데이터를 생성하기 위해 상기 블록 또는 패킷의 콘텐츠에 복수의 상이한 변환을 적용하는 단계;
    (c) 상기 변환된 데이터의 표현의 품질이 하나 이상의 품질 기준을 만족시키는지 여부를 결정하기 위해, 상기 변환을 적용하기 전의 상기 블록 또는 패킷의 콘텐츠와 비교하여 상기 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질을 검사하는 단계;
    (d) 상기 하나 이상의 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질이 상기 하나 이상의 품질 기준을 만족시키지 않는 경우, 상기 하나 이상의 블록 또는 패킷을 추가로 세분하거나 결합하고, 단계 (b)를 반복하는 단계; 및
    (e) 상기 하나 이상의 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질이 상기 하나 이상의 품질 기준을 만족시키는 경우, 인코딩될 상기 입력 데이터(20)를 나타내는 상기 인코딩된 출력 데이터(30)를 제공하기 위해 상기 변환된 데이터를 출력하는 단계
    를 포함하는, 입력 데이터 인코딩 방법.
  2. 제1항에 있어서,
    상기 인코딩된 출력 데이터가 인코딩될 상기 입력 데이터보다 크기가 더 작도록, 상기 블록 또는 패킷과 연관되어 있는 콘텐츠를 압축하기 위해, 상기 변환을 사용하는 단계를 포함하는, 입력 데이터 인코딩 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 블록 또는 패킷 내에 포함된 콘텐츠의 성질에 따라 상기 블록 또는 패킷의 인코딩 동안 상기 하나 이상의 품질 기준이 동적으로 변할 수 있도록 어레인징(arranging)하는 단계를 포함하는, 입력 데이터 인코딩 방법.
  4. 제1항에 있어서,
    상기 블록 또는 패킷의 콘텐츠를 기술하는 상기 블록 또는 패킷의 대표적인 파라미터들 중 적어도 하나가 상기 블록 또는 패킷의 세분된 블록 또는 패킷 내에서 실질적으로 변동이 없도록(flat) 상기 블록 또는 패킷이 세분되거나 결합되는 것인, 입력 데이터 인코딩 방법.
  5. 제1항에 있어서,
    상기 블록 또는 패킷이 일련의 데이터에 대응하고, 복수의 대응하는 블록을 형성하기 위해 주어진 정보에 대응하는 상기 입력 데이터를 세분하는 것이 데이터의 시간 시퀀스 내에서 상기 주어진 정보에 선행하는 하나 이상의 데이터에 존재하는 콘텐츠에 의존하여 행해지는 것인, 입력 데이터 인코딩 방법.
  6. 제1항에 있어서,
    상기 인코딩된 출력 데이터를 생성하기 위해 단계 (e)에서 상기 변환된 데이터에 헤더 정보를 추가하는 단계를 포함하고,
    상기 헤더 정보는 단계 (b)에서 이용된 상기 변환을 나타내는 정보를 포함하는 것인, 입력 데이터 인코딩 방법.
  7. 제1항에 있어서,
    단계 (b)는 상기 적어도 하나의 변환을 실행할 때 사용하기 위해 데이터베이스 장치(database arrangement)로부터 보충 정보를 가져오는(fetching) 단계를 포함하고,
    상기 보충 정보는 알고리즘, 규칙, 하나 이상의 변환 파라미터 중 적어도 하나를 포함하는 것인, 입력 데이터 인코딩 방법.
  8. 제7항에 있어서,
    상기 인코딩된 출력 데이터를 디코딩할 때 상기 인코딩된 출력 데이터의 차후의 디코딩이 상기 보충 정보에 액세스할 수 있게 하기 위해, 상기 데이터베이스 장치를 나타내는 헤더 정보를 상기 인코딩된 출력 데이터에 추가하는 단계를 추가로 포함하는, 입력 데이터 인코딩 방법.
  9. 제1항에 있어서,
    상기 변환을 위해 데이터베이스 참조, DC 값, 슬라이드, 스케일, 라인, 다중 레벨, 불변(unchanged), 보간(interpolation), 외삽(extrapolatiion), DCT, 펄스 코드 변조(PCM: pulse code modulation), DPCM, RLE, SRLE, EM, LZO, VLC, 허프만 코딩, 산술 코딩, 범위 코딩(range coding), 변환 코딩, 델타 코딩, ODelta 코딩, bzip2-specific RLE 중 하나 이상을 이용하는 단계를 포함하는, 입력 데이터 인코딩 방법.
  10. 제1항에 있어서,
    상기 입력 데이터에 존재하는 비디오, 이미지, 오디오, 그래픽, 텍스트, ECG, 사이즈믹(seismic), ASCII, 유니코드, 및 이진 정보 중 적어도 하나를 인코딩하는 단계를 포함하는, 입력 데이터 인코딩 방법.
  11. 제1항에 있어서,
    대화형 비디오, 상업 광고, 스포츠 경기 중계 동안의 복수의 뷰포인트, 대화형 워터마크, 대화형 패턴 인식, 애니메이션화된 2D/3D 사용자 인터페이스 버튼 중 적어도 하나를 제공하기 위해 상기 인코딩된 출력 데이터에 다수의 채널 또는 계층을 인코딩하는 단계를 포함하는, 입력 데이터 인코딩 방법.
  12. 제1항에 있어서,
    데이터 메모리 장치, 통신 네트워크, 메모리 카드, 데이터 메모리 디스크, 근거리 통신 네트워크(LAN), 디코더로 곧바로 중 적어도 하나의 목적지로 상기 인코딩된 데이터를 제공하는 단계를 포함하는, 입력 데이터 인코딩 방법.
  13. 제1항에 있어서,
    상기 방법의 단계 (a)는,
    (a) 이미지 해상도;
    (b) 데이터의 양; 및
    (c) 최대 블록 또는 패킷 크기
    중 적어도 하나에 기초하여 상기 입력 데이터(20)를 하나 이상의 블록으로 먼저 분할하는 단계를 포함하는 것인, 입력 데이터 인코딩 방법.
  14. 제1항에 청구된 방법을 실행하기 위해 컴퓨팅 하드웨어 상에서 실행가능한 소프트웨어 제품이 기록되어 있는 비일시적 기계 판독가능 데이터 저장 매체.
  15. 삭제
  16. 대응하는 인코딩된 출력 데이터(30)를 생성하기 위해 입력 데이터(20)를 인코딩하도록 동작가능한 인코더(10)에 있어서,
    (a) 입력 데이터(20)를 복수의 블록 또는 패킷 - 상기 블록 또는 패킷은 상기 블록 또는 패킷의 콘텐츠의 성질에 의존하는 크기를 가지며, 상기 블록 또는 패킷은 하나 이상의 크기를 가짐 - 으로 세분(sub-divide)하고;
    (b) 대응하는 변환된 데이터를 생성하기 위해 상기 블록 또는 패킷의 콘텐츠에 적어도 하나의 변환을 적용하며;
    (c) 상기 변환된 데이터의 표현의 품질이 하나 이상의 품질 기준을 만족시키는지 여부를 결정하기 위해, 상기 변환을 적용하기 전의 상기 블록 또는 패킷의 콘텐츠와 비교하여 상기 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질을 검사하고;
    (d) 상기 하나 이상의 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질이 상기 하나 이상의 품질 기준을 만족시키지 않는 경우, 상기 하나 이상의 블록 또는 패킷을 추가로 세분하거나 결합하고, 상기 (b)를 반복하며;
    (e) 상기 하나 이상의 블록 또는 패킷의 상기 변환된 데이터의 표현의 품질이 상기 하나 이상의 품질 기준을 만족시키는 경우, 인코딩될 상기 입력 데이터(20)를 나타내는 상기 인코딩된 출력 데이터(30)를 제공하기 위해 상기 변환된 데이터를 출력하도록,
    동작가능한, 데이터 프로세싱 하드웨어를 포함하는, 인코더.
  17. 제16항에 있어서,
    상기 인코딩된 출력 데이터(30)가 인코딩될 상기 입력 데이터(20)보다 크기가 더 작도록, 상기 블록 또는 패킷과 연관되어 있는 콘텐츠를 압축하기 위해 상기 적어도 하나의 변환을 사용하는 동작이 가능한, 인코더.
  18. 제16항 또는 제17항에 있어서,
    상기 블록 또는 패킷 내에 포함된 콘텐츠의 성질에 따라 상기 블록 또는 패킷의 인코딩 동안 상기 하나 이상의 품질 기준이 동적으로 변할 수 있도록 어레인징(arranging)하는 동작이 가능한, 인코더.
  19. 제16항에 있어서,
    상기 블록 또는 패킷의 콘텐츠를 기술하는 상기 블록 또는 패킷의 대표적인 파라미터들 중 적어도 하나가 상기 블록 또는 패킷의 세분되거나 결합된 블록 또는 패킷 내에서 실질적으로 변동이 없도록(flat) 상기 블록 또는 패킷이 세분되거나 결합되는 것인, 인코더.
  20. 제16항에 있어서,
    상기 블록 또는 패킷이 일련의 데이터에 대응하고, 복수의 대응하는 블록을 형성하기 위해 주어진 정보에 대응하는 상기 입력 데이터(20)를 세분하는 것이 데이터의 시간 시퀀스 내에서 상기 주어진 정보에 선행하는 하나 이상의 데이터에 존재하는 콘텐츠에 의존하여 행해지는 것인, 인코더.
  21. 제16항에 있어서,
    상기 인코딩된 출력 데이터(30)를 생성하기 위해 상기 변환된 데이터에 헤더 정보를 추가하도록 동작가능하고, 상기 헤더 정보는 상기 인코더(10)에 의해 이용된 상기 변환을 나타내는 정보를 포함하는 것인, 인코더.
  22. 제16항에 있어서,
    상기 변환을 실행할 때 사용하기 위해 데이터베이스 장치(database arrangement)로부터 보충 정보를 가져오도록(fetch) 동작가능 하고, 상기 보충 정보는 알고리즘, 규칙, 하나 이상의 변환 파라미터 중 적어도 하나를 포함하는 것인, 인코더.
  23. 제22항에 있어서,
    상기 인코딩된 출력 데이터를 디코딩할 때 상기 인코딩된 출력 데이터의 차후의 디코딩이 상기 보충 정보에 액세스할 수 있게 하기 위해, 상기 데이터베이스 장치를 나타내는 방식으로 헤더 정보를 상기 인코딩된 출력 데이터에 추가하도록 동작가능한, 인코더.
  24. 제16항에 있어서,
    상기 변환을 위해 데이터베이스 참조, DC 값, 슬라이드, 스케일, 라인, 다중 레벨, 불변(unchanged), 보간(interpolation), 외삽(extrapolatiion), DCT, 펄스 코드 변조(PCM), DPCM, RLE, SRLE, EM, LZO, VLC, 허프만 코딩, 산술 코딩, 범위 코딩(range coding), 변환 코딩, 델타 코딩, ODelta 코딩, bzip2-specific RLE 중 하나 이상을 이용하도록 동작가능한, 인코더.
KR1020130095364A 2012-08-13 2013-08-12 인코더 및 방법 KR101687863B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GB1214414.3 2012-08-13
GB1214414.3A GB2503295B (en) 2012-08-13 2012-08-13 Encoder and method
EP13002521 2013-05-14
EP13002521.6A EP2698997A1 (en) 2012-08-13 2013-05-14 Encoder and method

Publications (2)

Publication Number Publication Date
KR20150129096A KR20150129096A (ko) 2015-11-19
KR101687863B1 true KR101687863B1 (ko) 2016-12-28

Family

ID=46981439

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130095364A KR101687863B1 (ko) 2012-08-13 2013-08-12 인코더 및 방법

Country Status (10)

Country Link
US (1) US8675731B2 (ko)
EP (2) EP2698997A1 (ko)
JP (2) JP6245888B2 (ko)
KR (1) KR101687863B1 (ko)
CN (1) CN103596008B (ko)
BR (1) BR102013020622B1 (ko)
GB (1) GB2503295B (ko)
IN (1) IN2013MU02340A (ko)
RU (1) RU2553103C2 (ko)
TW (1) TWI505694B (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8811758B2 (en) * 2011-12-18 2014-08-19 Numerica Corporation Lossy compression of data points using point-wise error constraints
US9277218B2 (en) * 2013-01-22 2016-03-01 Vixs Systems, Inc. Video processor with lossy and lossless frame buffer compression and methods for use therewith
GB2523347B (en) * 2014-02-20 2016-01-13 Gurulogic Microsystems Oy Encoder, decoder and method
AU2015231883B2 (en) * 2014-03-16 2019-05-16 Vid Scale, Inc. Method and apparatus for the signaling of lossless video coding
US20150379682A1 (en) * 2014-06-27 2015-12-31 Samsung Electronics Co., Ltd. Vertex attribute data compression with random access using hardware
GB2528460B (en) 2014-07-21 2018-05-30 Gurulogic Microsystems Oy Encoder, decoder and method
WO2016114788A1 (en) 2015-01-16 2016-07-21 Hewlett Packard Enterprise Development Lp Video encoder
GB2539239B (en) 2015-06-10 2017-10-04 Gurulogic Microsystems Oy Encoders, decoders and methods utilizing mode symbols
GB2539488B8 (en) 2015-06-18 2020-08-19 Gurulogic Microsystems Oy Encoder, decoder and method employing palette utilization and compression
GB2543844B (en) 2015-11-01 2018-01-03 Gurulogic Microsystems Oy Encoders, decoders and methods
RU2616178C1 (ru) * 2016-03-28 2017-04-12 Федеральное государственное бюджетное образовательное учреждение высшего образования "Тульский государственный университет" (ТулГУ) Способ кодирования-декодирования цифровых статических видеоизображений
WO2017223095A1 (en) * 2016-06-20 2017-12-28 Anacode Labs, Inc. Parallel, block-based data encoding and decoding using multiple computational units
GB2552223B (en) 2016-07-15 2020-01-01 Gurulogic Microsystems Oy Encoders, decoders and methods employing quantization
US10523244B2 (en) * 2016-08-11 2019-12-31 Zebware Ab Device and associated methodoloy for encoding and decoding of data for an erasure code
CN106534846B (zh) * 2016-11-18 2019-01-29 天津大学 一种屏幕内容与自然内容划分及快速编码方法
KR102142946B1 (ko) * 2019-11-08 2020-08-10 세종대학교산학협력단 다중 dpcm 기법을 이용한 무손실 이미지 데이터 압축 장치 및 방법
CN113055017A (zh) * 2019-12-28 2021-06-29 华为技术有限公司 数据压缩方法及计算设备

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100276427B1 (ko) 1993-01-30 2000-12-15 윤종용 화상데이타의 압축 및 복원장치
KR100188934B1 (ko) 1995-08-28 1999-06-01 윤종용 영상 신호 부호화 장치 및 방법
US6633611B2 (en) * 1997-04-24 2003-10-14 Mitsubishi Denki Kabushiki Kaisha Method and apparatus for region-based moving image encoding and decoding
DE59803369D1 (de) * 1997-10-28 2002-04-18 Siemens Ag Verfahren und vorrichtung zur verarbeitung eines digitalisierten bildes
US6529634B1 (en) 1999-11-08 2003-03-04 Qualcomm, Inc. Contrast sensitive variance based adaptive block size DCT image compression
JP3887178B2 (ja) * 2001-04-09 2007-02-28 株式会社エヌ・ティ・ティ・ドコモ 信号符号化方法及び装置並びに復号方法及び装置
US7483581B2 (en) * 2001-07-02 2009-01-27 Qualcomm Incorporated Apparatus and method for encoding digital image data in a lossless manner
CN101448162B (zh) * 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
JP4447197B2 (ja) * 2002-01-07 2010-04-07 三菱電機株式会社 動画像符号化装置および動画像復号装置
US7379496B2 (en) 2002-09-04 2008-05-27 Microsoft Corporation Multi-resolution video coding and decoding
US6795584B2 (en) * 2002-10-03 2004-09-21 Nokia Corporation Context-based adaptive variable length coding for adaptive block transforms
JP4841101B2 (ja) 2002-12-02 2011-12-21 ソニー株式会社 動き予測補償方法及び動き予測補償装置
CN1757240A (zh) * 2003-03-03 2006-04-05 皇家飞利浦电子股份有限公司 视频编码
US7995849B2 (en) * 2003-03-17 2011-08-09 Qualcomm, Incorporated Method and apparatus for improving video quality of low bit-rate video
HUP0301368A3 (en) * 2003-05-20 2005-09-28 Amt Advanced Multimedia Techno Method and equipment for compressing motion picture data
GB2415335B (en) * 2004-06-15 2007-09-26 Toshiba Res Europ Ltd Wireless terminal dynamically programmable proxies
CN1809161B (zh) * 2004-06-27 2010-11-17 苹果公司 对编码视频数据选择编码类型和预测模式
US7792188B2 (en) * 2004-06-27 2010-09-07 Apple Inc. Selecting encoding types and predictive modes for encoding video data
JP2006157481A (ja) * 2004-11-30 2006-06-15 Canon Inc 画像符号化装置及びその方法
CN103118254B (zh) * 2005-09-26 2016-01-20 三菱电机株式会社 运动图像编码装置以及运动图像译码装置
JP2007243427A (ja) * 2006-03-07 2007-09-20 Nippon Hoso Kyokai <Nhk> 符号化装置及び復号化装置
US20070233477A1 (en) * 2006-03-30 2007-10-04 Infima Ltd. Lossless Data Compression Using Adaptive Context Modeling
WO2008008150A2 (en) * 2006-07-10 2008-01-17 Thomson Licensing Methods and apparatus for enhanced performance in a multi-pass video encoder
JP2009194474A (ja) * 2008-02-12 2009-08-27 Toshiba Corp 動画像符号化装置
JP2012516627A (ja) * 2009-01-27 2012-07-19 トムソン ライセンシング ビデオ符号化およびビデオ復号における変換の選択のための方法および装置
EP2237557A1 (en) * 2009-04-03 2010-10-06 Panasonic Corporation Coding for filter coefficients
US8451896B2 (en) * 2009-10-19 2013-05-28 Hong Kong Applied Science and Technology Research Institute Company Limited Method and apparatus for adaptive quantization in digital video coding
CN102495878B (zh) * 2011-12-05 2013-04-10 深圳市中钞科信金融科技有限公司 一种机器视觉检测结果的存储文件及方法

Also Published As

Publication number Publication date
US20140044190A1 (en) 2014-02-13
JP2014039256A (ja) 2014-02-27
RU2013137368A (ru) 2015-02-20
CN103596008B (zh) 2018-04-13
US8675731B2 (en) 2014-03-18
GB2503295A (en) 2013-12-25
EP3082337A1 (en) 2016-10-19
TW201412130A (zh) 2014-03-16
BR102013020622A2 (pt) 2018-02-27
IN2013MU02340A (ko) 2015-07-10
JP2016220216A (ja) 2016-12-22
EP2698997A1 (en) 2014-02-19
GB2503295B (en) 2014-08-06
RU2553103C2 (ru) 2015-06-10
TWI505694B (zh) 2015-10-21
BR102013020622B1 (pt) 2022-12-06
CN103596008A (zh) 2014-02-19
KR20150129096A (ko) 2015-11-19
JP6245888B2 (ja) 2017-12-13
GB201214414D0 (en) 2012-09-26

Similar Documents

Publication Publication Date Title
KR101687863B1 (ko) 인코더 및 방법
US9258389B2 (en) Encoder and method
KR101758954B1 (ko) 디코더 및 방법
US10333547B2 (en) Encoder and method for encoding input data using a plurality of different transformations or combinations of transformations
US10412414B2 (en) Decoder and method for decoding encoded input data containing a plurality of blocks or packets
CN111373753B (zh) 变换因子级别编码方法及其装置
US11245904B2 (en) Method for coding transform coefficient and device therefor
CN112956205A (zh) 变换系数编码方法及其装置
CN112019845B (zh) 对点云进行编码的方法、装置以及存储介质
US10244260B2 (en) Encoder and decoder, and method of operation
CN114930848A (zh) 基于变换的图像编码方法及其设备
CN114762336A (zh) 基于变换跳过和调色板编码相关信息的信令的图像或视频编码
US20220377345A1 (en) Method and apparatus for deriving rice parameter in video/image coding system
CN114762339A (zh) 基于变换跳过和调色板编码相关高级语法元素的图像或视频编码
CN115442608A (zh) 图像编码/解码方法及发送数据的方法
US20210321135A1 (en) Image coding method and apparatus using transform skip flag
EP2698996A2 (en) Decoder and method
KR20220059929A (ko) 다시점 영상 처리 방법 및 장치
KR20230027156A (ko) 서브레이어 레벨 정보에 기반한 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장하는 기록 매체
CN114762335A (zh) 基于变换跳过和调色板编码相关数据的图像或视频编码

Legal Events

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

Payment date: 20191126

Year of fee payment: 4