[go: up one dir, main page]

KR101139563B1 - 스토리지 및 버스 대역폭 요건들을 최소화하기 위한 효율적인 이미지 압축 방식 - Google Patents

스토리지 및 버스 대역폭 요건들을 최소화하기 위한 효율적인 이미지 압축 방식 Download PDF

Info

Publication number
KR101139563B1
KR101139563B1 KR1020107002058A KR20107002058A KR101139563B1 KR 101139563 B1 KR101139563 B1 KR 101139563B1 KR 1020107002058 A KR1020107002058 A KR 1020107002058A KR 20107002058 A KR20107002058 A KR 20107002058A KR 101139563 B1 KR101139563 B1 KR 101139563B1
Authority
KR
South Korea
Prior art keywords
tile
color
stream
bits
values
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020107002058A
Other languages
English (en)
Other versions
KR20100030660A (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 KR20100030660A publication Critical patent/KR20100030660A/ko
Application granted granted Critical
Publication of KR101139563B1 publication Critical patent/KR101139563B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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/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/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/184Methods 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 bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • H04N19/426Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

인코딩 방법은 이미지를 수신하고 타일들의 세트로 이미지를 타일링한다. 각각의 타일은 픽셀들의 세트를 포함한다. 방법은 제 1 타일을 선택하고 제 1 타일의 픽셀들에 대한 값들의 제 1 세트를 결정한다. 방법은 제 1 타일의 각각의 픽셀의 결정된 값들을 복수의 스트림들로 분리한다. 제 1 스트림에 대해, 방법은 바이어스 값을 결정하고, 스트림 내의 각각의 값으로부터 바이어스 값을 감산하고, 따라서 감산된 값들의 세트를 생성한다. 일반적으로, 감산된 값들은 하나 이상의 리딩 제로들을 가지고, 방법은 바람직하게 적어도 하나의 리딩 제로들을 제거하며, 따라서 제 1 스트림 내에서 감산된 값들을 나타내기 위해 요구되는 비트들의 수를 감소시킨다. 따라서, 제 1 스트림 내의 하나 이상의 값들은 더 적은 비트들을 이용하여 유리하게 나타낸다. 추가적인 실시예들은 전송, 수신, 디스플레이, 저장 및/또는 검색을 위해 감소된 수의 비트들, 시스템 및 디코더를 이용하여 데이터를 인코딩하기 위한 인코더를 포함한다.

Description

스토리지 및 버스 대역폭 요건들을 최소화하기 위한 효율적인 이미지 압축 방식{AN EFFICIENT IMAGE COMPRESSION SCHEME TO MINIMIZE STORAGE AND BUS BANDWIDTH REQUIREMENTS}
본 출원은 2007년 6월 28에 출원된 미국 가출원 번호 60/946,972의 이익을 주장하며, 그 출원의 전체 콘텐츠는 여기에 참조된다.
본 발명은 디지털 비디오 분야에 관련되고, 더 구체적으로 스토리지 및 대역폭 요건들을 최소화하기 위한 효율적인 인코딩 방식에 관련된다.
많은 새로운 디지털 무선 통신 프로토콜들의 빠른 발전 및 도입으로 인해 최근 몇 년간 무선 전자 혁명이 일어났다. 예를 들어, 코드 분할 다중 액세스(CDMA) 및 GSM(Global System for Mobile communication)은 디지털 셀룰러 전화의 인기를 크게 증가시켰으며, 802.11b, 802.11g, 802.11a 등과 같은 Wi-Fi 로컬 영역 네트워크 프로토콜들은 혁명적인 무선 컴퓨터 네트워크들이 있으며, 블루투스(Bluetooth)는 많은 다양한 디지털 장치들에 대해 매우 유용한 단거리 무선 디지털 프로토콜을 제공했다.
무선 프로콜들의 발전은 증가하는 많은 양의 데이터를 다운로드, 디스플레이, 스토리지 그리고/또는 검색할 수 있는 휴대형 전자 장치들의 분야를 초래했다. 따라서, 현대의 모바일 장치들은 일반적으로 다양한 멀티미디어 애플리케이션들 및 데이터를 사용한다. 현대의 휴대용 및/또는 이동 장치들은 시스템-온-어-침(system-on-a-chip) 또는 시스템 온 칩(SoC 또는 SOC) 기술들을 사용하며, 이는 컴퓨터의 많은 컴포넌트들 또는 다른 전기 시스템을 단일 집적 회로 또는 IC 칩에 유리하게 집적(intergrate)한다. 단일 칩은 종종 디지털, 아날로그, 혼합된-신호 및 종종 무선-주파수(RF) 기능들을 포함하며, 이들 모두는 하나의 칩에 존재한다. 임베디드 시스템들은 종종 시스템-온-칩 기술을 활용한다. 그러나, 이러한 시스템은 일반적으로 특히 스토리지 및/또는 버스 대역폭의 영역에서 제한된 성능들을 가진다.
한편, 멀티미디어 애플리케이션들은 상당한 양의 대역폭 및 스토리지 자원들을 사용할 수 있다. 예를 들어, 디지털 비디오 프레임들의 전송 및/또는 디스플레이는 큰 볼륨의 비트들을 지원할 수 있는 메모리, 버퍼들, 채널들 및 버스들을 요구한다. 일반적으로, 이미지 데이터는 많은 픽셀들을 포함하는 프레임들로 나타난다. 일반적으로 더 높은 해상도의 이미지들은 더 큰 수의 픽셀들을 사용한다. 또한, 각각의 픽셀은 예를 들어, 컬러, 휘도(luminance), 색차(chrominance)와 같은 픽셀의 특징들을 묘사하는 계수들의 세트를 사용함으로써 나타난다. 컬러 이미지의 경우, 각각 8개의 비트들의 세 개의 계수들이 일반적으로 단일 픽셀에 대해 사용한다. RGB(red-green-blue) 시스템 및 그들의 변형에서, 24 개의 비트들이 각각의 컬러를 나타내기 위해 사용되며, 이는 종종 24-비트 픽셀 뎁스(depth)로 지칭될 수 있다. 해상도, 디스플레이 크기, 또는 방송의 다른 품질을 증가시키는 것은 디스플레이 프레임 크기 또는 다른 요건들을 추가적으로 증가시킨다. 특히 현대의 장치들 및 방송들은 일반적인 QVGA, VGA 대 XGA 포맷들을 초과하는 멀티미디어 정보를 다룰 수 있다.
더 높은 데이터 레이트 광대역 전송 플레이스들은 임의의 시스템에 오히려 더 의존한다. 예를 들어, 대역폭 상황은 LCD 컨트롤러가 100Hz에 근접한 리프레쉬(refresh) 레이트들에서 프레임 버퍼들을 판독하는 것을 지원하여야만 하는 경우 더 나빠진다. 또한, 멀티미디어 애플리케이션들에 의해 사용되는 멀티미디어 데이터의 저장 및/또는 검색은 유사한 문제를 나타낸다. 전술한 이슈들을 다루려는 이전의 시도들은 RLE(run length encoding) 및 RLE의 변형과 같은 압축 기술들을 사용했었다. 그러나, 이러한 이전의 시도들은 다양한 약점들로부터 취약하다.
효율적인 프레임 버퍼 압축 방식이 스토리지, 버스 대역폭 및/또는 모바일 시스템 특히 시스템(들)-온-어-칩을 사용하는 시스템에 대한 전력 소모 요건들을 최소화한다. 일부 실시예들은 특히 효율적인 손실없는 이미지 압축 방식을 사용하고, 일부 실시예들은 추가적인 손실 인코딩 단계를 사용한다. 손실 없는 알고리즘 및 선택적인 손실 단계는 이미지에 대한 총 스토리지 공간을 감소시키고 따라서 시스템 버스상의 판독 및 기록 대역폭 로드들을 감소시킨다. 손실없는 그리고 손실 있는 단계 모두 이미지 및/또는 비디오 데이터 표현을 크게 저하시키지 않는다. 인코딩된 이미지 데이터는 타이트한 스페이스 절약 포맷으로 또는 선택적으로, 예를 들어 타일 기반 또는 스트라이프 기반 포맷과 같은 랜덤하게 어드레스되고 그리고/또는 액세스 되는 포맷으로 프레임 버퍼에 선택적으로 패킹된다.
따라서, 데이터 압축 방법은 이미지를 수신하고 이미지를 타일들의 세트로 타일링한다. 각각의 타일은 픽셀들의 세트를 포함한다. 방법은 제 1 타일을 선택하고 제 1 타일의 픽셀들에 대한 값들의 제 1 세트를 결정한다. 방법은 제 1 타일의 각각의 픽셀의 결정된 값들을 복수의 스트림들로 분리한다. 제 1 스트림에 대해, 방법은 바이어스 값을 결정하고, 스트림 내의 각각의 값으로부터 바이어스 값을 감산하고, 따라서 감산된 값들의 세트를 생성한다. 일반적으로, 감산된 값들은 하나 이상의 리딩 제로들을 가지고, 방법은 바람직하게 적어도 하나의 리딩 제로들을 제거하며, 따라서 제 1 스트림 내에서 감산된 값들을 나타내기 위해 요구되는 비트들의 수를 감소시킨다. 따라서, 제 1 스트림 내의 하나 이상의 값들은 더 적은 비트들을 이용하여 유리하게 나타낸다.
특정한 실시예에서, 방법은 스트림의 값들에 대한 최소값을 결정하고, 바이어스 값은 값들의 스트림에서 최소 값이다. 값들의 스트림은 일반적으로 타일의 픽셀들과 관련된다. 이러한 값들은 일반적으로 픽셀의 특성에 대한 계수를 포함한다. 예를 들어, 값들은 RGB(red-green-blue) 컬러 시스템을 위한 컬러 값이거나, 또는 선택적으로, 휘도, 색차 또는 다른 샘플링되거나 스케일링된 시스템(YCrCb) 값과 같은 다른 타입의 값일 수 있다.
임의의 실시예들의 방법은 인코딩 및/또는 압축의 다수의 레벨들을 포함한다. 더 구체적으로, 이러한 실시예들의 일부는 감산된 값들을 라운딩하고 그리고 또는 절삭(truncate)하고 따라서 라운딩되거나 절삭된 값들의 세트를 생성하고, 인자에 의해 라운딩된 값들을 나눈다. 특정한 실시예에서, 값들은 가장 가까운 짝수와 같은 짝수로 라운딩되고, 2로 나뉜다. 바람직하게, 나누는 연산은 비트들을 시프트하여 수행된다. 인코딩되면, 이미지 데이터는 다양한 수단을 이용하여 프레임 버퍼로 패킹된다. 프레임 버퍼를 타이트하게 패킹하여, 이미지 타일 데이터를 프레임 버퍼에 순차적으로 위치시키고, 이는 스토리지 공간 및 버스 사용을 보존한다. 선택적으로, 타일 데이터를 느슨하게 패킹하는 것은 이미지(픽셀) 데이터의 각각의 타일에 랜덤 액세스를 허용한다. 추가적인 대안으로서, 이미지 데이터는 느슨하게 패킹되나, 랜덤하게 액세스되고 그리고/또는 어드레스가능한 포맷으로 스트라이핑된다.
제 1 스트림은 바람직하게 제 1 타일의 픽셀들에 대해 제 1 컬러를 표시하기 위한 계수들의 세트를 포함한다. 따라서, 제 1 스트림에 대해, 임의의 실시예들은 바이어스 값이 제 1 컬러를 재구성하기 위해 충분한 계수 정보를 포함하는지 여부를 유리하게 결정한다. 바이어스 값이 제 1 컬러를 재구성하기 위해 충분한 계수 값들을 포함하면, 이러한 실시예들은 바이어스 값을 이용하여 제 1 컬러를 패킷 헤더로 인코딩하나, 패킷 바디 내의 제 1 컬러에 대한 계수들의 인코딩을 중지한다. 또한, 인코딩 타입은 헤더가 제 1 타일의 제 1 컬러를 신뢰성있게 재구성하기 위해 충분한 픽셀 정보를 포함하고 있는지 여부를 표시하기 위해 선택된다. 따라서, 디코더는 패킷 헤더를 펫치하고, 따라서 인코딩 타입을 수신하며, 인코딩 타입을 이용하여 제 1 컬러를 디코딩한다. 디코딩 타입이 패킷 데이터가 제 1 컬러를 재구성하기 위해 충분한 정보를 포함한다고 표시하면, 방법은 패킷 바디로부터 제 1 컬러에 대한 정보를 펫칭하는 단계로 진행한다.
전술한 관점에서, 특정한 실시예들의 인코딩 타입은 다음의 하나 이상을 포함한다: 상기 제 1 타일에 대한 컬러 정보가 상기 패킷 바디에 인코딩되지 않은 조건을 위한 제 1 선택; 하나의 컬러에 대한 상기 정보가 상기 패킷 바디에 인코딩된 조건을 위한 제 2 선택; 두 개의 컬러에 대한 상기 정보가 상기 패킷 바디에 인코딩된 조건을 위한 제 3 선택; 및/또는 세 개의 컬러에 대한 상기 정보가 상기 패킷 바디에 인코딩된 조건을 위한 제 4 선택. 특정한 경우에서, 컬러 정보는, 예를 들어, 휘도 값 및/또는 색차 값을 포함한다.
추가적인 실시예들에서, 인코더는 메모리 및 통계 블록을 포함하는 제 1 단계를 포함한다. 메모리 및 통계 블록 각각은 입력 데이터의 세트를 수신한다. 입력 데이터는, 일 실시예에서, 예를 들어 타일로부터의 스트림에 대응하는 픽셀 값들의 세트를 포함한다. 통계 블록은 예를 들어, 낮은 것에서 높은 것으로와 같이 입력 데이터를 정렬하도록 구성된다. 인코더는 상기 메모리의 출력 및 상기 통계 블록의 출력에 연결되는 제 1 감산기를 포함한다. 상기 제 1 감산기는 상기 메모리의 출력 및 상기 통계 블록의 출력의 산술적(arithmetic) 동작을 수행하기 위한 것이다. 예를 들어, 특정 경우에, 통계 블록은 최소값을 출력하고, 감산기는 메모리로부터의 값들의 스트림으로부터 최소 값을 감산한다. 바람직하게, 최소 값, 또는 바이어스 값은, 통계 블록에 의해 수행된 정렬 기능에 의해 결정된 스트림 내의 최소 값이다.
인코더는 감산기와 연결된 제 1 로직 유닛을 더 포함한다. 상기 제 1 로직 유닛은 상기 감산기의 출력을 수신하고 복수의 비트들을 출력하기 위한 것이다. 따라서, 인코더는 선택된 포맷에서 비트들의 세트를 수신하기 위한, 로직 유닛에 연결되는 패커를 가진다. 패커는 데이터 패킷을 형성하기 위해 비트들의 선택된 세트를 사용한다. 바람직하게는 제 1 논리 유닛은 특정 데이터 스트림에 기반하여 감소된 수의 비트들을 출력하도록 구성된다. 예를 들어, 일부 실시예들에서, 제 1 로직 유닛은 예를 들어, 제어 신호를 이용하여 리딩 제로 없는 감소된 수의 비트들을 출력하는 디코드 유닛을 포함한다. 이러한 실시예들에서 제어 신호는 바람직하게 통계 블록에 의해 제공된다. 추가적인 실시예들은 전송, 수신, 디스플레이, 저장 및/또는 검색을 위해 감소된 수의 비트들, 시스템 및 디코더를 이용하여 데이터를 인코딩하기 위한 인코더를 포함한다.
본 발명의 신규한 특성들이 첨부된 청구항에 설명된다. 그러나, 설명을 위해 본 발명의 몇몇 실시예들이 다음의 도면들에 설명된다.
도 1은 본 발명의 임의의 실시예들에 따른 프로세스(100)를 도시한다.
도 2는 타일링된 이미지를 도시한다.
도 3은 특정한 타일에서 각각의 픽셀에 대해 3 개의 컬러 컴포넌트들로 나뉘는 도 2의 타일링된 이미지를 도시한다.
도 4는 바이어스가 제거된 후, 각각의 픽셀에 대한 세 개의 컬러 컴포넌트들을 도시한다.
도 5는 임의의 실시예들에 다른 인코더를 도시한다.
도 6은 도 4의 데이터 스트림들에 대한 패킷을 도시한다.
도 7은 다중 단계 인코더를 도시한다.
도 8은 도 7의 인코더에 대한 패킷을 도시한다.
도 9는 본 발명의 실시예들에 따른 디코더를 도시한다.
도 10은 디코딩 프로세스를 도시한다.
도 11은 프레임 버퍼에서 타이트하게 패킹된 타일들을 도시한다.
도 12는 프레임 버퍼에서 느슨하게 패킹된 타일들을 도시한다.
도 13은 프레임 버퍼에서 스트라이프들을 도시한다.
도 14는 본 발명의 실시예들에 따른 몇몇 테스트 이미지들을 도시한다.
도 15은 일부 실시예들에 따른 선택적인 인코딩 시스템을 도시한다.
도 16은 도 15의 인코딩을 위한 예시적인 패킷을 도시한다.
도 17은 도 15의 인코딩을 위한 예시적인 헤더 및/또는 도 16의 패킷이다.
도 18은 임의의 실시예들의 인코딩 시스템을 도시한다.
도 19는 도 18의 인코딩을 위한 예시적인 패킷이다.
도 20은 도 18의 인코딩을 위한 예시적인 헤더 및/또는 도 19의 패킷을 도시한다.
도 21은 임의의 실시예들의 디코딩 시스템을 도시한다.
도 22는 예시적인 인코딩된 포맷을 도시한다.
다음 명세서에서, 다양한 세부내용들 및 변형들이 설명을 위해 논의된다. 그러나, 당업자는 본 발명이 이러한 특정한 세부내용들을 이용하지 않고도 실시될 수 있음을 알 것이다. 다른 인스턴스들에서, 잘-알려진 구조들 및 장치들이 불필요한 세부내용을 이용하여 본 발명의 설명을 모호하게 하지 않기 위해 블록 다이어그램의 형태로 도시될 수 있다.
I. 방법 및 인코더
본 발명의 일부 실시예들은 스토리지 및 버스 대역폭 요건들을 최소화하는 효율적인 손실없는(loseless) 이미지 압축 방식을 포함한다. 이러한 실시예들은 모바일 시스템에 대한 하나 이상의 시스템 온 어 칩(SOC)을 이용하여 사용하기 위해 특히 적합하다. 예를 들어, 특정 구현들은 이미지에 대한 총 스토리지 공간을 감소시키는 간단한 손실 없는 알고리즘을 포함한다. 이미지에 대해 요구되는 감소된 스토리지 공간은 예를 들어, 버스 상의 판독 및/또는 기록 대역폭 로드를 감소시키고, 이로서 시스템의 총 성능을 유리하게 개선하는 것과 같은 추가적인 이점들을 가진다. 또한 설명된 것은 그 알고리즘을 이용하는 특정 프레임 버퍼 구현들이다.
일반적으로, 처리되고 메모리에 저장되는 이미지들은 완전히 샘플링된 타입이고 컬러 픽셀을 나타내기 위해 전체 8 비트를 차지한다. 그러나, 이미지 내의 모든 픽셀들이 컬러를 신뢰성 있게 나타내기 위해 8 비트들 모두를 필요로 하는 것은 아니다. 일반적으로, 유사한 컬러들을 가진 또는 더 작은 레인지의 계수 값들 내에 존재하는 픽셀들을 가지는 이미지의 부분들이 존재한다. 일부 실시예들은 더 작은 레인지의 컬러를(따라서, 계수값들을) 가지는, 이미지의 영역들을 이용한다. 이러한 실시예들은 바람직하게는 감소된 수의 비트들을 이용함으로써 컬러 계수들을 재-양자화한다.
컬러를 저장하기 위해 사용되는 비트들의 수를 낮추는 것을 돕는 이 방법에서 하나의 중요한 특성은 이미지의 일 영역에서 다른 영역으로 픽셀 값들의 더 큰 전이(transition)을 바운딩하거나 제한하는 타일(tile)링 프로세스이다. 본 발명의 실시예들은 로 패스(low pass) 필터된 이미지들 및/또는 유사한 컬러를 가지는 많은 영역들을 가지는 이미지에 대해 더 높은 압축 비를 바람직하게 달성한다. 또한, 이러한 실시예들은 예를 들어, YCbCr 또는 RGB와 같은 다양한 데이터 포맷들에 적용가능하다.
도 1은 이미지를 압축하기 위한 프로세스(100)를 포함하는 특정한 실시예를 도시한다. 본 도면에 도시된 바와 같이, 프로세스(100)는 스텝(110)에서 시작하며, 여기서, 이미지는 수신되고 타일링된다. 바람직하게, 이미지를 타일링하는 것은 이미지 픽셀들을 이산(discrete) 세트들로 나누는 것을 포함한다. 그리고 나서, 프로세스(100)는 스텝(120)으로 전이하며, 여기서, 타일의 각각의 픽셀들의 컬러들이 분리된다. 바람직하게, 타일들은 3 개의 컬러 프레임들(예를 들어, 적색, 녹색, 청색이 되도록)로 분리된다.
특정한 실시예에서, 각각의 픽셀의 컬러 값은 8 비트를 이용하여 나타내며, 타일에 대한 컬러는 (각각의 컬러에 대해 하나의 스트림을 갖는) 8-비트 값들의 세 개의 스트림들로서 취급된다. 따라서, 각각의 타일이 M x M 크기인 경우, M^2 개의 8-비트 값의 3개의 스트림들이 존재한다. 바람직하게, (예를 들어, 적색, 녹색, 및 청색에 대한) 각각의 스트림은 압축을 위해 독립적으로 취급된다.
타일에 대한 컬러들 및 스트림들이 스텝(120)에서 결정되면, 프로세스(100)는 스텝(130)으로 전이하며, 여기서 컬러 스트림들 각각에 대한 최소 값(바이어스)이 결정되고 각각의 스트림들로부터 감산(subtracted)된다. 감산된 값들의 결과 스트림들, 즉 감산으로부터의 나머지 값들은, 일반적으로 원래 스트림보다 더 작은 값들을 포함한다.
그리고 나서, 프로세스(100)는 스텝(140)으로 전이하며, 여기서 리딩(leading) 제로들이 각각의 컬러 스트림 값으로부터 제거된다. 바람직하게, 감산 이후의 스트림들의 각각의 더 작은 레인지의 값들이, 리딩 제로를 제거하여 최대 값이 여전히 감산의 나머지 값들로 나타나도록 함으로써 감소된 수의 비트들을 이용하여 나타날 수 있다. 스텝(140)이후에, 프로세스(100)는 종료한다.
예를 들어, 타일이 4 픽셀 바이 4 픽셀을 포함하는 경우, 그 타일에 대한 단일 컬러 스트림은 16 개의 픽셀들에 대한 컬러 값들을 포함한다. 예를 들어, 빨간 스트림의 최대 값은 단지 6이고, 이 경우 리딩 제로들을 제거함으써, 그 스트림의 각각의 값을 나타내기 위해 단지 3 비트들만이 필요한데, 이는 스트림 내의 최대 값이 대응하는 이진 코드 값이, 이 예에서, "110"이기 때문이다.
II. 그래픽적인 예시
도 2는 하나의 예시적인 이미지(200) 상의 동작에서 전술한 방법 및/또는 인코더를 도시한다. 본 도면에서 도시된 바와 같이, 이미지는 바람직하게 예시적인 제 1 타일(201)과 같은, 타일들로 나뉜다. 전술한 바와 같이, 타일링 스텝은 일반적으로 스트림에 대한 픽셀 값들의 변동을 감소시킨다. 또한, 도 2로부터 이미지의 영역들이 픽셀 값에서 큰 변동을 가지지 않음으로써, 타일 내의 모든 컬러들을 나타내기 위해 총 8 비트 픽셀 뎁스(depth)의 모든 값들이 필요하지는 않다는 것을 알 수 있다.
도 3 및 4는 이미지(300)의 리던던트 정보가 바이어스 및/또는 리딩 제로들의 제거를 통해 감소되는 방법을 그래픽적으로 도시한다. 도 3에 도시된 바와 같이, 타일에 대한 컬러 컴포넌트들은 3 개의 스트림들(명확하게, 적색(302), 녹색(304) 및 청색(306) 컬러에 대한 스트림들)로 나뉜다. 각각의 컬러 스트림에 대한 계수들은 차트 포맷에서 다이어그램적으로 도시된다. 차트의 x-축에서 추가적으로 도시된 바와 같이, 4-바이-4 타일은 16개의 픽셀들을 가지며, y-축은 각각의 픽셀에 대한 크기에 대응하는 계수 값들을 포함한다. 도 3에서, 로우(raw) 이미지 데이터는 일반적으로 8 비트 포맷이며, 따라서, 계수 값들은 약 0에서 255까지 범위를 가진다.
도 4는 각각의 스트림에 대한 바이어스 값이 결정되고 스트림으로부터 감산된 이후에 각각의 스트림(402, 404, 및 406)의 컬러 컴포넌트들을 도시한다. 바람직하게, 차이 정보는 타일의 각각의 픽셀에 대해 유지된다. 따라서, 픽셀 계수 값들 사이의 차이는 도 4에서 더 명확하게 도시된다. 또한, 본 도면에 도시된 바와 같이, 세 개의 스트림들(적색, 녹색 및 청색) 내의 가장 큰 값은 6보다 크지 않으며, 따라서, 8 비트 모두 보다는 단지 3개의 비트들이 픽셀 값을 나타내는 감산의 나머지들을 전체적으로 나타내기 위해 필요하다. 도 1에 관련하여 전술한 바와 같이, 바이어스 값이 각각의 컬러 컴포넌트의 계수로부터 감산되면, 최소 필요 비트 폭은 바람직하게, 감산의 나머지를 신뢰성 있게 나타내기 위해 계산된다. 또한, 임의의 과도한(excess) 리딩 제로들이 도 5내지 8과 관련하여 아래에 설명될 바와 같이, 바람직하게 제거되거나 연접(concatenate)된다.
도 5는 일부 실시예들의 인코더(500)에 대한 블록 다이어그램을 도시한다. 인코더(500)는 인코딩된 컬러 정보 및 헤더를 타일로 패킹(pack)한다. 헤더는 타일을 디코딩하는 방법을 기술한다. 전술한 내용을 달성하기 위해, 인코더(500)는 메모리(502) 및 통계 블록(504)을 포함하며, 이는 각각 입력 데이터 스트림을 수신한다. 메모리(502)는 일반적으로 타일에 대한 스트림 값들을 저장하기 위해 충분한 디멘션들을 가지는 랜덤 액세스 메모리(RAM) 타입을 포함하며, 통계 블록(504)은 타일의 값들을 예를 들어, 낮은 것에서 높은 것으로 정렬하기 위한 것이다.
메모리(502)는 통계 블록(504)으로부터 바이어스 입력을 수신하는 감산기(506)로 출력한다. 일반적으로, 바이어스는 통계 블록(504)에 의해 결정된 바와 같이 타일의 가장 낮은 값을 포함한다. 감산기(506)는 메모리(502)로부터의 스트림 값들로부터 바이어스를 감산하고, 디코더(508)로 출력한다. 디코더(508)는 바람직하게 감산기(506)의 결과를 나타내기 위해 요구되는 최소의 비트 수를 출력하고, 패커(510)로 비트들을 출력한다. 도시된 실시예는 1-대-8 디코더(508)를 포함하며, 이는 통계 블록(504)으로부터 수신된 스토리지_크기(storage_size)에 기반하여 필요한 비트들의 최소 수를 출력한다. 그러나, 당업자는 버스 폭(width) 및 비트들의 수의 변동을 포함하는, 디코더(508) 및 시스템(500)의 다른 컴포넌트들에 대한 상이한 실시예를 알 수 있을 것이다.
패커(510)는 타일_시작_어드레스(tile_start_address), 바이어스, 스토리지_크기, 및 타일_크기(tile_size)를 (통계 블록(504)으로부터) 수신하고, 특정한 타일에 대한 압축된 데이터 스트림을 출력한다. 바람직하게, 패커(510)의 출력은 하나 이상의 패킷들의 형태를 가진다. 이러한 실시예들의 패킷들은 도 6과 관련하여 추가적으로 설명된다.
도 6은 도 4의 스트림에 대한 패킷(600)을 도시한다. 도 6에 도시된 바와 같이, 패킷(600)은 패킷(600)의 헤더를 형성하는 타일_크기(602), 바이어스(604), 스토리지_크기(606)에 대한 필드 및 픽셀 데이터(608)에 대한 필드를 포함한다. 구체적으로 도시된 예에서, 타일_크기 및 스토리지_크기 각각을 나타내기 위해 단지 3 개의 비트들만이 필요하며, 바이어스에 대해서는 8개의 비트들이 필요하다. 나머지를 나타내기 위해 필요한 바이어스 및 비트들은 헤더 내에 패킹되고 각각의 스트림(적색, 녹색 및 청색)에 대한 나머지 값들과 연관(concatenate)된다.
이 예에서, 총 180개의 비트들이 타일마다, 스토리지, 검색 및/또는 디스플레이를 위해 필요하다. 이러한 180개의 비트들은 헤더에 대한 36 비트들을 포함하며, 각각의 스트림의 픽셀 데이터에 대한 48 비트들을 포함한다. 180 개의 비트 = [36 개의 헤더 비트 + 3 개의 스트림들 * (3비트/픽셀 * 16픽셀/타일)] 더 구체적으로, 이 예의 헤더는 세 개의 파라미터들(즉, 바이어스, 스토리지_크기, 타일_크기에 대한 아래의 포맷을 이용한다: 24개의 바이어스 비트들 = (각각의 스트림의 바이어스 값에 대한 8 개의 비트들 * 3개의 스트림들) 9개의 스토리지_크기 비트들 = (각각의 스트림에 대한 3 개의 스토리지_크기 비트들 * 3 스트림들) 3개의 타일_크기 비트들, 이 예의 각각의 스트림이 동일한 타일_크기를 사용하기 때문에, 3 개의 스트림들 모두에 대해 단 하나의 필드만이 필요하다. 따라서, 이 예시의 3개의 스트림들에 대한 총 헤더 비트들은 36 개의 비트들 = (24 개의 바이어스 비트들 + 9 개의 스토리지_크기 비트들 + 3개의 타일_크기 비트들)이다. 압축 없이, 동일한 이미지 데이터를 저장하기 위해 총 384개의 비트들이 필요하다. 384개의 비트들 = (16 픽셀/타일 * 24비트/타일) 따라서, 압축 비는 46.6%(180 비트/384 비트)이다. 당업자는 다양한 대안들을 알 것이다. 예를 들어, 특정한 실시예의 실험 동안, 4x4 타일 크기가 프로세싱 속도 및 압축 비와 같은 품질 및 성능 사이의 특히 양호한 균형을 가진다고 결정될 수 있다. 따라서, 일부 실시예들은 타일 크기를 4x4로서 고정하고, 헤더의 오버헤드에서 타일_크기 파라미터들 인코딩 및/또는 패싱(pass)할 수 있다. 이러한 실시예들은 모든 패킷 헤더 마다 3개의 비트들을 절약하며, 압축 비 및 속도의 개선을 가져온다.
III. 손실 단계 인코딩
인코딩의 제 2 단계는 압축 비를 추가적으로 증가시키기 위해 남은 값들에 대해 선택적으로 수행된다. 압축의 이러한 두 번째 레벨은 감산된 값들을 라운딩하고 값들을 인자에 의해 나눔으로써 컬러 스트림에서 각각의 값들의 비트 폭을 감소시킨다. 예를 들어, 특정한 실시예에서 값들은 가장 근접한 짝수로 라운딩되거나, 그리고/또는 2에 의해 나뉜다. 따라서, 제 2 압축은 손실이 있으며(lossy), 이는 홀수 값을 가진 나머지 값들이, 오리지널 타일에서 픽셀 계수 값들로부터 바이어스를 감산한 후에, 인코딩 및 디코딩 프로세스 동안(인코더에 의해 2로 나뉘고, 디코더에 의해 2로 곱하면서) 하나의 양자화 레벨 또는 하나의 최하위 비트(LSB)를 잃을 것이기 때문이다. 그러나, 이 실시예 하에서 홀수 계수들을 가지는 픽셀들만이 작은 정도의 손실을 경험할 것이며, 짝수 계수들은 어떠한 손실도 가지지 않을 것이다.
또한, 아래에 설명될 바와 같이, 본 실시예를 테스트하는 실험들은 정보의 손실이 시각적으로 인지가능한 효과를 유발하지 않음을 나타낸다. 그러나, 제 2 압축 단계는 바람직하게 압축 비에서 12.5% 이상의 개선을 야기한다. 또한, 제 2 압축은 예를 들어, 요구되는 이미지 품질 및/또는 요구되는 압축비에 따라 선택적으로 소프트웨어에 의해 인에이블 되거나, 디스에이블된다. 또한, 나누는 인자는 바람직하게 예를 들어 4, 8, 16과 같은, 2의 배수 이다. 더 큰 인자들은 더 높은 손실 단계 압축을 야기하고, 대응하는 품질의 손실을 가져온다. 그러나, 감소된 픽셀 정보의 더 낮은 해상도는, 프리뷰, 저전력 및/또는 스탠바이 모드에서 때때로 바람직하다. 비트 쉬프터는 디지털 로직에서 선택가능한 N-비트 손실(lossy) 인코더를 구현하기 위해 나누기 기능을 간편하게 제공하며, 쉬프터는 1-비트 손실 인코더에 대해, 하나의 최하위 비트를 시프트한다.
도 7은 제 1 레벨 (손실 없는) 및 제 2 레벨(손실) 인코더(700)를 포함하는 실시예를 도시한다. 이 도면에서 도시된 바와 같이, 인코더(700)는 메모리(702), 통계 블록(704), 감산기(706), 디코드 유닛(708) 및 패커(710)를 포함한다. 이러한 컴포넌트들은 바람직하게 도 5와 관련하여 전술한 바와 같이 연결되고 동작한다.
2 단계 인코더(700)는 추가적으로 시프트 모듈(712), 감산기(714) 및 두 개의 멀티플렉서들(716 및 718)을 포함하는 추가적인 단계를 포함한다. 두 개의 멀티플렉서들은 인코딩을 위해 제 1 (손실없는) 단계 인코딩 만을 사용할지, 또는 제 1 (손실없는) 및 제 2 (손실) 단계들 모두 사용할지 여부를 선택하는 손실_인에이블(lossy_enable) 신호를 수신한다. 시프트 모듈(712)은 일반적으로, 라운딩, 그리고/또는 2-로-나누는 또는 절삭하는(truncate) 동작을 제공하도록 구성된다. 당업자에게 인식되는 바와 같이, 나누는 것은 선택적으로 비트들을 시프트함으로써 쉽게 제공된다. 예를 들어, 1 비트의 우측 시프트는 바람직하게 레지스터의 비트들에 대한 동작의 2로 인한 나누기를 초래하며, 두 비트의 시프트는 4에 의한 나누기를 초래한다.
시프트 모듈(712) 및 멀티플렉서(716)은 감산기(706) 및 디코더(708) 사이에 연결되며, 멀티플렉서(716)가 감산기(706)의 출력 및 시프트 모듈(712)의 출력을 수신하고, 손실_인에이블 신호에 따라 디코더(708)에 하나 또는 다른 출력을 제공하도록 한다.
감산기(714) 및 멀티플렉서(718)는 통계 블록(704) 및 패커(710) 사이에 연결되며, 멀티플렉서(718)가 통계 블록(704)의 출력 및 감산기(714)의 출력을 선택하고, 스토리지_크기(storage_size)로서 패커(710)의 선택된 출력을 제공하도록 한다. 손실 단계가 인에이블되는 경우 감산기(714)는 선택적으로 1만큼 스토리지_크기를 감소(decrement)시킨다.
도 8은 도 7의 인코더에 대한 예시적인 패킷(800)을 도시한다. 패킷(800)은 타일_크기(tile_size)(802), 바이어스(804) 및 스토리지_크기(806)에 대한 필드 및 픽셀 데이터(808)에 대한 필드를 가지는 헤더를 포함한다. 본 도면에 도시된 바와 같이, 타일_크기는 4 픽셀 바이 4픽셀의 경우 바람직하게 2 비트만큼만 감소된다. 또한, 손실없는 그리고 손실 단계 둘 다의 동작 이후에 각각의 스트림에 대한 스토리지_크기는 단 3개의 비트이다. 전술한 바와 같이, 타일_크기 필드는 인코딩, 전송, 프로세싱 및/또는 저장의 추가적인 오버헤드 절약을 위해 고정된 그리고/또는 미리결정된 타일 크기들을 가지는 실시예에서 생략된다.
III. 디코더
도 9는 임의의 실시예들에 따른 디코더(900)를 도시한다. 본 도면에 도시된 바와 같이, 디코더(900)는 입력 데이터를 수신하고, 언패커(unpakcer; 904) 및 헤더 디코드 모듈(906)로 출력하는 데이터 펫치(fetch)(902)를 포함한다. 언패커(904)는 수신된 입력 데이터에서 각각의 픽셀에 대한 8 비트 너비(wide)의 포맷을 형성하기 위해 생략된 리딩 제로들을 확장하고, 8비트 너비 데이터를 가산기(908)로 출력한다.
가산기(908)는 헤더 디코더(906)로부터 바이어스를 수신하며, 이는 헤더 필드에 포함된 정보를 추출(extract)한다. 가산기(908)는 각각의 픽셀에 대한 수신된 값에 바이어스(8비트 포맷)를 가산하며, 가산된 값들을 메모리(910)로 출력한다. 전술한 바와 같이, 수신된 데이터는 픽셀들의 타일에 대한 스트림을 종종 포함하며, 따라서, 이러한 실시예들의 메모리(910)는 헤더 디코드 모듈(906)로부터 수신된 바와 같이, 또는 선택적으로 시스템(900) 내에서 미리결정된 그리고/또는 고정된 바와 같이, 픽셀 타일_크기의 디멘션들을 가진다. 메모리(910)의 출력은 특정한 타일의 특정한 스트림에 대해 디코딩된 픽셀 값들이다. 따라서, 디코더(900)의 도시된 실시예는 전술한 인코더들의 반대 스텝들을 수행한다.
도 10은 도 9의 디코더의 스텝들을 요약하는 프로세스(1000)를 도시한다. 프로세스(1000)는 스텝(101)에서 시작하며, 여기서 유입(incoming) 비트들의 세트가 수신된다. 그리고나서, 프로세스(1000) 스텝(1020)으로 전이하며, 여기서 유입 비트들은 헤더를 추출하기 위해 파싱(parse)된다. 헤더가 추출되면, 프로세스(1000)는 스텝(1030)으로 전이하며, 여기서 헤더의 비트들은 시스템에 대한 파라미터들의 세트에 관한 정보(예를 들어, 타일_크기, 바이어스, 및/또는 인코딩된 스트림 마다 사용되는 비트들의 수)를 결정한다. 다음으로, 스텝(1040)에서, 픽셀 비트들은 언패킹되고 유입 비트들의 세트에서 전송되는 특정 타일의, 특정 스트림에 대한 디코딩된 픽셀 값을 야기하기 위해 바이어스에 가산된다. 그리고나서, 프로세스(1000)는 종료한다.
IV. 프레임 버퍼 실시예
두 개의 선택적인 실시예들이 전술한 인코더들 및/또는 압축 방식들을 이용하기 위해 본 섹션에서 나타난다. 이러한 실시예들은 타이트하게 패킹된 실시예들 및 느슨하게 패킹된 실시예들을 포함한다.
A. 프레임 버퍼에서 타이트하게 패킹된 타일들
제 1 실시예는 비트들의 하나의 긴 스트림에서 함께 타이트하게 패킹되는 압축된 타일들을 요구한다. 타이트하게 패킹된 타일들은 차례로 프레임 버퍼에 타이트하게 저장된다. 프레임 버퍼에서 타일들의 타이트하게 패킹된 스토리지는 효율적으로 스토리지 자원들을 사용하며, 또한, 버스의 가장 효율적인 사용을 인에이블한다. 예를 들어, 타이트하게 패킹된 프레임 버퍼를 이용하여, 디코더의 데이터 펫치 유닛은 버스의 모든 트랜잭션(transaction)에 대해 최대 버스트(burst) 크기를 사용할 수 있다. 이러한 타이트하게 패킹된 실시예는 또한 효율적으로 메모리를 사용하며, 랜덤하게 프레임 버퍼에서 타일들을 액세스하는 것을 필요로 하지 않는 애플리케이션들에 특히 유용하다. 액정 크리스털 디스플레이(LCD) 컨트롤러는 타이트하게 패킹된 프레임 버퍼를 사용할 수 있는 일 프로세싱 블록이다.
도 11은 프레임 버퍼(1100)에서 타이트하게 패킹된 타일들을 도시한다. 본 도면에서 도시된 바와 같이, 타이트하게 패킹된 타일들은 타일1, 타일2, 타일3, ..., 타일N으로 라벨링되고, 오리지널 프레임 버퍼 경계(boundary)(1102)와 상이한 경계(1104)를 가진다. 바람직하게, 패킹된 타일은 감소된 스토리지 요구조건들을 가진다.
그러나, 타이트하게 패킹된 프레임 버퍼를 가지는 것에 단점이 존재한다. 랜덤하게 타일들을 액세스하는 것이 필요한 애플리케이션들은 프레임 버퍼의 시작으로부터 타이트하게 패킹된 프레임 버퍼 내에서 요구되는 타일을 찾기 위해 탐색하는 펫치 엔진을 요구한다. 이는 버스의 비효율적인 사용 및 상당한 지연들을 초래한다.
따라서, 임의의 실시예들은, 느슨하게 패킹된 포맷에서 압축된 타일들을 저장하여, 개별 타일들의 어드레스들이 예를 들어, 폭, 높이 및/또는 y-스트라이드(stride)를 이용함으로써 특정 파라미터에 의해 계산될 수 있다.
B. 프레임 버퍼에서 느슨하게 패킹된 타일들
제 2 실시예 방식은 미리-할당된 포맷을 사용함으로써 메모리의 압축된 타일들을 위치시킨다. 예를 들어, 이러한 실시예들의 일부는 인접한 타일들 또는 타일들의 스트라이프(stripe)들로부터 바이트들의 상수 오프셋인 메모리의 포인트로부터 시작하는 각각의 타일을 위치시키거나 어드레스한다. 각각의 미리-할당된 어드레스의 타일들은 압축되고 미리-할당된 공간보다 저장을 위한 메모리의 적은 공간을 요구한다.
이 실시예의 이점은 프레임 버퍼의 타일들의 스트라이프 또는 타일들 각각에 대한 시작점이 예를 들어, y-스트라이드, 타일 크기 및/또는 스트라이프 크기와 같은 특정 특성을 이용한 어드레스 연산을 통해 편리하게 결정될 수 있다는 것이다. 따라서, 애플리케이션들은 랜덤 액세스 방식으로 프레임 버퍼의 개별 타일들에 액세스를 가진다.
도 12는 프레임 경계(1202)를 가지는 프레임 버퍼(1200)의 느슨하게 패킹된 타일들을 도시한다. 본 도면에 도시된 바와 같이, 프레임 버퍼(1200)는 압축된 타일들(1 내지 N)을 포함하며, 이는 가변적인 크기를 가지는 고정된 크기의 어드레스 가능한 위치에 위치한다. 각각의 어드레스가능한 위치는 미리결정된 고정된 tile_w의 폭 및 tile_h의 높이를 가진다. 바람직하게, 각각의 어드레스가능한 위치의 사용되지 않은 공간은 각각의 위치가 랜덤하게 액세스가능하도록 블랭크(blank)로 남겨진다. 도 12의 설명을 위해, y_stride 파라미터는 프레임 버퍼의 폭으로서 정의되며, 미리-할당된 어드레스 위치들은 프레임 버퍼의 폭 또는 y_stride의 폭의 고정된 배수를 점유한다.
도 13은 압축된 그리고/또는 인코딩된 픽셀 데이터가 선택적으로 스트라이프 포맷으로 프레임 버퍼(1300)에 패킹되는 것을 도시한다. 본 도면에서 도시된 바와 같이, 각각의 스트라이프(스트라이프1 내지 스트라이프N)에 대한 어드레스가능한 위치들은 고정된 디멘션들(높이 및 폭)을 가진다. 도 13의 설명을 위해 스트라이프는 프레임 버퍼의 타일_높이(tile_height) x 프레임_폭(frame_width)으로 정의되며, y_stride는 프레임 버퍼(1300)의 폭이다.
도 12에 도시된 바와 같이, 패킹 방식에 기반하여 타일 경계에서 타일을 액세스하기 위해, 단 하나의 타일이 액세스된다. 그러나, 도 13에서 도시된 바와 같이, 패킹 방식에 기반하여 스트라이프 경계에서 타일을 액세스하기 위해, 전체 스트라이프는 타일에서 동작하기 전에 판독되고 압축해제되어야만 한다. 도 13의 스트라이핑 구성은 특정 이점을 지닌다. 예를 들어, y_stride 또는 이미지 폭이 약 1024 픽셀인 경우, 단일 스트라이프는 4 바이 4 픽셀들의 타일_크기에 대하여 바람직하게 256 개의 타일들을 포함한다. 이 구성에서, 예를 들어, SDRAM의 페이지 로드는 바람직하게 모든 256개의 타일들을 로딩하고, 이는 버스, 메모리, 및 페이지 로드들의 더 효율적인 사용이다. 효율성은 이미지 로딩의 속도 및 전력 효율성의 측면에서 존재하며, 이는 페이지 메모리의 각각의 로드 및/또는 리프레쉬가 전력 및/또는 레이턴시로 인한 지연을 요구하기 때문이다.
V. 결과들
RGB888의 몇몇 상이한 이미지들이 MATLAB으로 기록된 코드를 이용하여 압축되었으며, 압축 비들은 다른 손실 없는 압축 방식(즉, 일반적인 런 길이 인코딩(run length encoding))에 의해 생산된 결과들과 비교되었다. 몇몇 상이한 타일 사이즈들이 시뮬레이션 중에 사용되었으며, 전술한 예시들과 유사한 4x4 타일 크기는 양호한 결과들을 산출했다. 아래의 테이블1은 일반적인 RLE23 인코딩 및 본 발명의 실시예 사이의 비교를 보여주며, 전술한 레벨1(손실 없음) 및 레벨2(손실 있음) 인코딩 방식들을 포함한다.
테이블1에 도시된 바와 같이, 타일 압축 방식을 평가하기 위해 사용되는 테스트 이미지들의 일부는, roost, mobile, qc, vplayer, friends, wanted, starcraft, diablo2, Adobe text, ocons, hp, hp1 및 hp2 를 포함한다. 이러한 이미지들은 도 14의 언패킹되고 디코딩된 그룹(1400)으로서 시각적으로 나타나며, 이는 시각적 품질의 감지가능한 손실을 거의 표시하지 않거나, 표시하지 않는다.
아래의 테이블 1은 일반적인 RLE23 인코딩 대 임의의 실시예의 타일 인코딩 방법을 이용하여 획득된 예시적인 결과를 나타낸다. 당업자는 대안적인 실시예들에 대한 압축 비들의 변동을 인지할 것이다. 예를 들어, 본 발명의 일부 실시예들은 더 큰 압축 비를 보여주었다.
이미지들 제 1 레벨 타일 압축
(4 x 4 타일)
제 2 레벨 타일 압축
(4 x 4 타일)
RLE24
(라인 기반 압축)
roost 49.7% 41.2% 67.9%
mobile 85.8% 74.2% 99.6%
qc 71.1% 60.5% 87.3%
vplayer 66.6% 56.1% 83.2%
friends 23.0% 19.2% 8.0%
wanted 63.4% 53.7% 89.2%
starcradt 65.7% 55.7% 89.8%
diablo2 66.8% 56.0% 96.0%
Adobe text 45.0% 38.8% 19.9%
icons 73.7% 62.4% 78.0%
hp 62.6% 52.0%
hp1 58.3% 48.3%
hp2 49.4% 30.6%
레벨1 및 레벨2(손실) 실시예들은 추가적으로 모션 픽쳐 이미지들 또는 비디오에 유용하게 적용된다. 테이블2는 YCbCr420 영화 클립들에 전술한 실시예들을 적용한 것을 나타낸다. 테이블2에 나타난 바와 같이, 테스트 영화 클립들은 좌측 컬럼에 리스팅되어 있으며, 각각의 클립에 대한 압축 비는 오른쪽 컬럼에 보고되어 있으며, 이는 100프레임들에 대해 평균된 것이다.
이미지들 손실 있는 타일 압축(4 x 4 타일)
(100 프레임들에 대한 평균)
italianjob_qvga.yuv 50.3%
coastquard_qvga.yuv 61.7%
mobile_qvga.yuv 69.7%
Stefan_qvga.yuv 64.4%
Football_qvga.yuv 54.2%
Foreman_qvga.yuv 54.2%
mother_daughter_qvga.yuv 48.3%
singer_qvga.yuv 56.9%
전술한 실시예들의 손실있는 압축 방식으로 인코딩(및 디코딩)되었던 테이블2의 압축해제된 영화 클립들은 일반적으로 인터넷 또는 다른 소스를 통해 얻을 수 있다.
테이블들 1 및 2에서, 컬러의 최대 오차는 바이어스의 감산의 결과로서 홀수로 값이 매겨진 남아있는 값들을 가지는 픽셀 계수 값들을 가지는 컬러에 대하여 하나의 최하위 비트(LSB) 또는 하나의 양자화 레벨이다. 바이어스의 감산 이후의 짝수로 값이 매겨진 남아있는 값들을 가지는 픽셀들을 가지는 컬러에 대해서는 오차가 존재하지 않는다. 또한, 레벨2(손실있는) 압축에 대해 이미지의 눈에 띄는 조작(artifact)이 존재하지 않는다. 따라서, 본 발명의 실시예들은 품질에서의 큰 트레이드 오프 없이 압축을 제공한다. 임의의 실시예들에 의해 유리하게 달성되는 압축 비는 아래에 주어진다.
Figure 112011076826746-pct00001
임의의 실시예들은 데이터 패킷의 헤더 부분에서 리던던트 정보를 제거함으로써 위에 주어진 압축 비를 추가적으로 개선하며, 임의의 실시예들은 예를 들어, 선택적인 타일_크기(tile_size) 파라미터들과 같은 고정된 파라미터들의 포함하는 것을 중지(forego)한다. 또한, 본 발명의 실시예들은 멀티레벨 인핸스드(multilevel enhanced) 인코딩 및/또는 압축의 측면의 기술에서 특정한 이점들을 가진다. 예를 들어, 테이블들에 나타난 바와 같이, YCrCb 예시들은 RGB 예시들보다 더 큰 압축을 보여주었다. 이는 YCrCb 포맷이 인코딩된 포맷이며, 전술한 실시예들이 기존의 인코딩된 포맷보다 상당히 추가적인 멀티레벨 인코딩 개선들을 허용하기 때문이다.
추가적인 실시예들이 여기에 추가적으로 설명된다. 예를 들어, 도 15는 임의의 실시예들의 선택적인 인코딩 시스템(1500)을 도시한다. 본 도면에 도시된 바와 같이, 인코딩 시스템(1500)은 메모리(1504) 및 통계 블록(1504)을 포함하고, 이들은 각각 입력 데이터 스트림을 수신한다. 이 실시예에서, 데이터는 24개의 비트들을 포함하거나, 세 개의 컬러들(RGB, YCrCb 등) 각각에 대해 8개의 비트들을 포함한다. 메모리(1502)는 일반적으로 타일에 대한 스트림 값들을 저장하기에 충분한 디멘션들을 가지는 랜덤 액세스 메모리(RAM)의 타입을 포함하며, 통계 블록(1504)은 예를 들어, 타일의 값들을 낮은 것으로부터 높은 것으로 정렬한다. 특정한 실시예에서, 메모리(1502)는 4x4 타일들을 수신하기 위한 것이다.
통계 블록(1504)은 다양한 유용한 값들을 유리하게 결정한다. 예를 들어, 통계 블록(1504)은 유입되는 트라이-크로마틱(tri-chromatic) 데이터 값들을 정렬하고, 바람직하게 각각의 컬러에 대한 최소 계수를 그 컬러에 대한 바이어스 값으로서 사용한다. 바이어스 값들은 24 개의 비트들을 이용함으로써 출력되거나 각각의 컬러에 대해 8 비트들을 이용하여 출력된다. 통계 블록(1504)은 나머지에 대해 스토리지 크기를 결정하며, 이는 패커로 9 개의 비트들을 이용하여 출력한다. 통계 블록(1504)은 인코드_타입(encode_type) 및 압축된 타일의 총 바이트들을 결정하고, 이들을 헤더 모듈(1520)로 출력한다. 헤더 모듈(1520)은 통계 블록(1504)으로부터 바이어스 값들을 수신하고 헤더를 생성하며, 이는 도 17에 도시되어있다.
메모리(1502)는 통계 블록(1504)으로부터 바이어스 입력을 수신하는 감산기(1506)로 출력한다. 일반적으로, 바이어스는 통계 블록(1504)에 의해 결정된 바와 같이 타일의 가장 낮은 값을 포함한다. 감산기(1506)는 메모리(1502)로부터의 값들로부터 바이어스를 감산하고, 패커(1510)로 출력한다. 패커(1510)는 타일_시작_어드레스(tile_start_address), 바이어스, 스토리지_크기 및 타일_크기를 (통계 블록(1504)으로부터) 수신하며, 특정한 타일에 대한 압축된 데이터 스트림을 출력한다. 출력은 바람직하게 통계 블록(1504)으로부터 수신된 스토리지_크기에 기반하여 필요한 비트들의 최소 수를 포함한다. 당업자는 버스 폭 및 비트들의 수의 변동을 포함하는, 패커(1510) 및 시스템(1500)의 다른 컴포넌트들에 대한 상이한 실시예를 알 수 있을 것이다.
바람직하게, 패커(1510)의 출력은 하나 이상의 패킷들의 형태이다. 이러한 실시예들의 패킷들은 도 16과 관련하여 추가적으로 설명되며, 헤더는 도 17에 도시되어있다.
도 16은 도 15의 인코딩에 대한 예시적인 패킷(1600)을 도시한 것이다. 패킷(1600)은 바람직하게 9개의 비트들의 프리앰블을 가지거나, 예를 들어, r_size, g_size 및 b_size와 같은 각각의 컬러에 대한 3개의 비트들을 가지는 바디를 포함한다. 본 도면에 도시된 바와 같이, 각각의 컬러에 대해 필요한 크기는 3-비트 코드 포맷을 이용하여 유리하게 인코딩된다. 더 구체적으로, 각각의 컬러를 인코딩하기 위한 비트들의 수는 코드에 따라(예를 들어, 1비트에 대해 000, 8비트에 대해 111) 1에서 8 개의 비트들로 가변한다. 바디는 예를 들어, RGB 인터리빙된 포맷과 같은, 추가적으로 압축된 타일에 대한 데이터를 포함한다.
도 17은 도 15의 인코딩 및/또는 도 16의 패킷에 대한 예시적인 헤더(1700)를 도시한다. 본 도면에 도시된 바와 같이, 헤더(1700)는 인코드_타입, 바이트들의 수(number-of-bytes), 및 트라이-크로마틱 바이어스 값들을 포함한다. 이 실시예에서, 헤더(1700)는, 예를 들어, 인코드_타입에 대한 4개의 비트들 플러스 바이트들의 수에 대한 네 개의 비트들, 플러스 세 개의 컬러들 각각의 바이어스에 대한 24개의 비트들 또는 8개의 비트들을 사용한다. 당업자는, 그러나, 상이한 구현들의 헤더에 대한 대안들을 인지할 것이다. 본 도면에 도시된 바와 같이, 바이트들의 수 필드는 8-바이트들(0001)로부터 56바이트(0111)까지인 8의 배수들의 크기들을 나타낸다. 유사하게, 인코드_타입 필드는 본 도면에 도시된 바와 같이 다수의 인코딩 방식들을 허용한다.
도 18은 임의의 실시예들에 대한 인코딩 시스템(1800)을 도시한다. 더 구체적으로, 도 18은 제 1 레벨(손실 없는) 및 제 2 레벨 (손실 있는) 인코더(1800)를 포함하는 실시예를 도시한다. 본 도면에 도시된 바와 같이, 인코더(1800)는 메모리(1802), 통계 블록(1804), 감산기(1806) 및 패커(1810)를 포함한다. 이러한 컴포넌트들은 바람직하게 도 15와 관련하여 전술한 것과 같이 연결되고 동작한다.
예를 들어, 메모리(1802) 및 통계 블록(1804)은 각각 입력 데이터 스트림을 수신한다. 일부 실시예들에서, 데이터는 세 개의 트라이-크로마틱 컬러들, RGB, YCrCb 등 각각에 대해 24개의 비트들 또는 8 비트들을 포함한다. 메모리(1802)는 일반적으로 타일에 대한 스트림 값들을 저장하기 위해 충분한 디멘션들을 가지는 랜덤 액세스 메모리(RAM) 타입을 포함하며, 통계 블록(1804)은 타일의 값들을 예를 들어, 낮은 것에서 높은 것으로 정렬하기 위한 것이다. 특정한 실시예에서, 메모리(1802)는 4x4 타일들을 수신하기 위한 것이다.
통계 블록(1804)은 다양한 유용한 값들을 유리하게 결정한다. 예를 들어, 통계 블록(1804)은 유입되는 트라이-크로마틱(tri-chromatic) 데이터 값들을 정렬하고, 바람직하게 각각의 컬러에 대한 최소 계수를 그 컬러에 대한 바이어스 값으로서 사용한다. 통계 블록(1804)은 바람직하게 각각의 컬러에 대해 24개의 비트들 또는 8 비트들을 이용함으로써 바이어스 값들을 출력한다. 통계 블록(1804)은 나머지에 대해 스토리지 크기를 결정하며, 이는 감산기(1814) 및 멀티플렉서(1818)로 9 개의 비트들을 이용하여 출력하며, 이들은 아래에서 추가로 설명된다. 통계 블록(1804)은 인코드_타입(encode_type) 및 압축된 타일의 총 바이트들을 결정하고, 이들을 헤더 모듈(1820)로 출력한다. 헤더 모듈(1820)은 통계 블록(1804)으로부터 바이어스 값들을 수신하고 헤더를 생성하며, 이는 도 20에 도시되어있다.
메모리(1802)는 통계 블록(1804)으로부터 바이어스 입력을 수신하는 감산기(1806)로 출력한다. 일반적으로, 바이어스는 통계 블록(1804)에 의해 결정된 바와 같이 타일의 가장 낮은 값을 포함한다. 감산기(1806)는 메모리(1802)로부터의 값들로부터 (통계 블록(1804)을 통해 수신된) 바이어스를 감산하고, 멀티플렉서(1816) 및 쉬프터(1812)로 출력한다. 멀티플렉서(1816)는 손실 압축 인에이블 신호(lossy_comp_enable)에 기반하여 쉬프터(1812)의 출력 또는 감산기(1806)의 출력을 선택하고, 패커(1810)로 출력한다. 패커(1810)는 타일_시작_어드레스(Tile_start_address), 타일_크기 및 스토리지_크기를 (통계 블록(1804)을 통해) 수신하며, 통계 블록(1804)으로부터 수신된 스토리지_크기에 기반하여 필요한 비트들의 최소 수를 출력한다. 그러나, 당업자는 버스 폭 및 비트들의 수의 변동을 포함하는, 패커(1810) 및 시스템(1800)의 다른 컴포넌트들에 대한 상이한 실시예를 알 수 있을 것이다.
전술한 바와 같이, 패커(1810)는 특정한 타일에 대한 압축된 데이터를 출력한다. 바람직하게, 패커(1810)의 출력은 하나 이상의 패킷들의 형태이다. 이러한 실시예들의 패킷들은 도 19와 관련하여 추가적으로 설명되며, 헤더는 도 20에 의해 도시된다.
따라서, 2 단계 인코더(1800)는 시프트 모듈(1812), 감산기(1814) 및 두 개의 멀티플렉서들(1816 및 1818)을 포함하는 추가적인 단계를 포함한다. 두 개의 멀티플렉서들은 인코딩을 위해 제 1 (손실없는) 단계 인코딩 만을 사용할지, 또는 제 1 (손실없는) 및 제 2 (손실) 단계들 모두 사용할지 여부를 선택하는 손실_압축_인에이블(lossy_comp_enable) 신호를 수신한다. 시프트 모듈(1812)은 일반적으로, 라운딩, 그리고/또는 2-로-나누는 또는 자르는(truncate) 동작을 제공하도록 구성된다. 당업자에게 인식되는 바와 같이, 나누는 것은 선택적으로 비트들을 시프트함으로써 쉽게 제공된다. 예를 들어, 1 비트의 우측 시프트는 바람직하게 레지스터의 비트들에 대한 동작의 2로 인한 나누기를 초래하며, 두 비트의 시프트는 4에 의한 나누기를 초래한다.
시프트 모듈(1812) 및 멀티플렉서(1816)은 감산기(1806) 및 패커(1810) 사이에 연결되며, 멀티플렉서(1816)가 감산기(1806)의 출력 및 시프트 모듈(1812)의 출력을 수신하고, 손실_압축_인에이블 신호에 따라 패커(1810)에 하나 또는 다른 출력을 제공하도록 한다.
감산기(1814) 및 멀티플렉서(1818)는 통계 블록(1804) 및 패커(1810) 사이에 연결되며, 멀티플렉서(1818)가 통계 블록(1804)의 출력 및 감산기(1814)의 출력을 선택하고, 스토리지_크기(storage_size)로서 패커(1810)의 선택된 출력을 제공하도록 한다. 도면에 추가로 도시된 바와 같이, 감산기(1814)는 손실 단계가 인에이블되면, 스토리지_크기를 1만큼 선택적으로 감소시킨다. 당업자는 선택적인 실시예들이 예를 들어, 1, 2, 3, 4 또는 다른 수 N만큼과 같은 상이한 양만큼 스토리지 크기를 감소시키는 것을 이해할 것이다.
도 19는 도 18의 인코딩에 대한 예시적인 패킷(1900)을 도시한다. 패킷(1900)은 바람직하게 9개의 비트들의 프리앰블을 가지거나, 예를 들어, r_size, g_size 및 b_size와 같은 각각의 컬러에 대한 3개의 비트들을 가지는 바디를 포함한다. 본 도면에 도시된 바와 같이, 각각의 컬러에 대해 필요한 크기는 3-비트 코드 포맷을 이용하여 유리하게 인코딩된다. 더 구체적으로, 각각의 컬러를 인코딩하기 위한 비트들의 수는 코드에 따라(예를 들어, 1비트에 대해 000, 8비트에 대해 111) 1에서 8 개의 비트들로 가변한다. 바디는 예를 들어, RGB 인터리빙된 포맷과 같은, 추가적으로 압축된 타일에 대한 데이터를 포함한다.
도 20은 도 18의 인코딩 및/또는 도 19의 패킷에 대한 예시적인 헤더를 도시한다. 본 도면에 도시된 바와 같이, 헤더(2000)는 인코드_타입, 바이트들의 수(number-of-bytes), 및 트라이-크로마틱 바이어스 값들을 포함한다. 이 실시예에서, 헤더(2000)는, 예를 들어, 인코드_타입에 대한 4개의 비트들 플러스 바이트들의 수에 대한 네 개의 비트들, 플러스 세 개의 컬러들 각각의 바이어스에 대한 24개의 비트들 또는 8개의 비트들을 사용한다. 당업자는, 그러나, 상이한 구현들의 헤더에 대한 대안들을 인지할 것이다. 본 도면에 도시된 바와 같이, 바이트들의 수 필드는 8-바이트들(0001)로부터 56바이트(0111)까지인 8의 배수들의 크기들을 나타낸다. 유사하게, 인코드_타입 필드는 본 도면에 도시된 바와 같이 다수의 인코딩 방식들을 허용한다. 따라서, 상이한 실시예들의 헤더들 및/또는 패킷들은 단일 단계 및/또는 예를 들어, 손실 및/또는 손실없는 인코딩 단계들과 같은 다중 단계 인코딩들의 출력들을 제어하기 위한 필드들 및 유연성들을 포함한다. 특정 실시예들의 디코딩 시스템들은 다양한 인코딩들을 제어하기 위해 유사하게 구성된다.
예를 들어, 도 21은 임의의 실시예들의 디코딩 시스템(2100)을 도시한다. 본 도면에 도시된 바와 같이, 디코더(2100)는 입력 데이터를 일반적으로 패킷 형태로 수신하고, 언패커(unpakcer; 2104) 및 프리앰블 디코드 모듈(2107)의 바디로 출력하는 바디 펫치(fetch)(2102)를 포함한다. 헤더 펫치(2105)는 입력데이터를 수신하고, 바람직하게 헤더들을 파싱하는 헤더 디코드 모듈(2106)로 출력한다. 예를 들어, 특정 헤더 디코드 모듈(2106)은 인코드_타입의 4 개의 비트들을 프리앰블 디코드 모듈(2017)로 출력하고, 바이어스의 24개의 비트들(세 개의 트리-크로마틱 컬러들 각각에 대한 8개의 비트들)을 가산기(2108)로 출력한다.
프리앰블 디코드 모듈은 언패커(2104)로 9개의 비트들을 출력한다. 9개의 비트들은 바람직하게, 예를 들어, 적색, 녹색, 청색을 사용하는 시스템들에 대한 rgb_size와 같은 3-비트 코드 포맷에서 세 개의 트리-크로마틱 컬러들 각각에 대한 크기를 나타낸다. 언패커는 수신된 입력 데이터에서 각각의 픽셀에 대한 8 비트 너비의 포맷을 형성하기 위해 손실된 리딩 제로들을 확장하고, 8비트 너비 데이터를 전술한 바와 같이 가산기(2108)에 출력한다.
가산기(2108)는 헤더 디코더(2106)로부터 바이어스를 수신하고, 이는 헤더 필드에 포함된 정보를 추출한다. 가산기(2108)는 각각의 픽셀에 대한 수신된 값에 (8 비트 포맷으로) 바이어스를 가산하고, 메모리(2110)에 가산된 값들을 출력한다. 전술한 바와 같이, 수신된 데이터는 종종 픽셀들의 타일에 대한 스트림을 포함하고, 따라서 이러한 실시예들의 메모리(2110)는 헤더 디코드 모듈(2106)로부터 수신된 바와 같이, 또는 선택적으로 시스템(2100)내에서 미리결정되고 그리고/또는 고정된 바와 같이 바람직하게 픽셀들의 타일 또는 타일_크기의 디멘션들 가지고, 따라서 이러한 고정된 크기들을 전송할 필요를 유리하게 감소시킨다.
메모리(2110)의 출력은 특정한 타일의 특정한 스트림에 대한 디코딩된 픽셀 값들이다. 예를 들어, 임의의 실시예들은 세개의 컬러들 각각에 대해 8 개의 비트들을 포함하는 24 개의 비트들을 출력한다. 메모리(2110)는 바람직하게, 예를 들어, 멀티플렉서(2112)로 출력하는 멀티플라이-바이-N 쉬프터와 같은 쉬프터(2114) 및 멀티플렉서(2112)로 출력한다. 멀티플렉서(2112)는 손실 압축 인에이블 신호(lossy_comp_enable)에 기반하여 메모리(2110)의 출력 도는 시프트된 출력을 (멀티플렉서(2114)를 통해 선택한다. 따라서, 디코더(2100)의 도시된 실시예는 도 15 및 18과 관련하여 전술한 인코더들(1500 및 1800)에 반대 단계들을 수행하고, 손실없는 그리고/또는 손실 인코딩의 디코딩을 선택적으로 제공한다.
도 22는 예시적인 인코딩된 포맷(2200)을 도시한다. 본 도면에서 도시된 바와 같이, 압축되지 않은 타일들은 예를 들어, 전술한 실시예들의 일부를 이용함으로써 더 작은 포맷들로 유리하게 압축된다. 특정한 구현은 16x16 압축되지않은 타일을 4x4 압축된 타일로 압축한다. 각각의 타일은 바람직하게는 예를 들어, 4바이트의 헤더를 포함한다. 일 실시예에서, 헤더는 세 개의 트리-크로마틱 컬러들 각각에 대한 바이어스를 위한 3 개의 바이트들 또는 blue_bias, green_bias 및 red_bias 각각에 대한 8 개의 비트들을 사용한다. 1 바이트는 인코드_타입 및 바이트들의-수 필드들에 대한 것이다. 이 경우에, 이러한 필드들 각각은 두 개의 필드들에 대한 바이트의 4비트를 이용한다.
도시된 예시에서, 48 개의 타일들이 유리하게 압축되고 프레임 버퍼로 패킹된다. 더 구체적으로, 도시된 실시예(2200)는 느슨하게 패킹된 포맷을 사용하고, 이는 전술한 바와 같이 속도 및 랜덤 액세스의 이점을 포함한다. 또한, 느슨하게 패킹된 실시예에서, 각각의 타일이 할당된 사용되지 않은 공간은 의도적으로 블랭크로 남겨진다. 도시된 특정한 프레임 버퍼는 12 타일 너비이고 4 타일 높이이다. 타일들이 4x4 픽셀들을 가지고 있기 때문에, 프레임 버퍼는 16 픽셀 너비 곱하기 3배, 또는 48 픽셀 너비이며, 16 픽셀 높이이다.
당업자는 정보 및 신호들이 다양한 타입의 상이한 기술들을 사용하여 표현될 수 있음을 잘 이해할 것이다. 예를 들어, 본 명세서상에 제시된 데이터, 지령, 명령, 정보, 신호, 비트, 심벌, 및 칩은 전압, 전류, 전자기파, 자기장 또는 입자, 광 필드 또는 입자, 또는 이들의 임의의 조합으로 표현될 수 있다.
당업자는 상술한 다양한 예시적인 논리블록, 모듈, 회로, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합으로서 구현될 수 있음을 잘 이해할 것이다. 하드웨어 및 소프트웨어의 상호 호환성을 명확히 하기 위해, 다양한 예시적인 소자들, 블록, 모듈, 회로, 및 단계들이 그들의 기능적 관점에서 기술되었다. 이러한 기능이 하드웨어로 구현되는지, 또는 소프트웨어로 구현되는지는 특정 애플리케이션 및 전체 시스템에 대해 부가된 설계 제한들에 의존한다. 당업자는 이러한 기능들을 각각의 특정 애플리케이션에 대해 다양한 방식으로 구현할 수 있지만, 이러한 구현 결정이 본 발명의 영역을 벗어나는 것은 아니다.
다양한 예시적인 논리 블록들, 모듈들, 및 회로들이 범용 프로세서; 디지털 신호 처리기, DSP; 주문형 집적회로, ASIC; 필드 프로그램어블 게이트 어레이, FPGA; 또는 다른 프로그램어블 논리 장치; 이산 게이트 또는 트랜지스터 논리; 이산 하드웨어 컴포넌트들; 또는 이러한 기능들을 구현하도록 설계된 것들의 조합을 통해 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로 프로세서 일 수 있지만; 대안적 실시예에서, 이러한 프로세서는 기존 프로세서, 제어기, 마이크로 제어기, 또는 상태 머신일 수 있다. 프로세서는 예를 들어, DSP 및 마이크로프로세서, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로 프로세서, 또는 이러한 구성들의 조합과 같이 계산 장치들의 조합으로서 구현될 수 있다.
상술한 방법의 단계들 및 알고리즘은 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이들의 조합에 의해 직접 구현될 수 있다. 소프트웨어 모듈들은 랜덤 액세스 메모리(RAM); 플래쉬 메모리; 판독 전용 메모리(ROM); 전기적 프로그램어블 ROM(EPROM); 전기적 삭제가능한 프로그램어블 ROM(EEPROM); 레지스터; 하드디스크; 휴대용 디스크; 콤팩트 디스크 ROM(CD-ROM); 또는 공지된 저장 매체의 임의의 형태로서 존재한다. 예시적인 저장매체는 프로세서와 결합되어, 프로세서는 저장매체로부터 정보를 판독하여 저장매체에 정보를 기록한다. 대안적으로, 저장 매체는 프로세서의 구성요소일 수 있다. 이러한 프로세서 및 저장매체는 ASIC 에 위치한다. ASIC 는 사용자 단말, 개인용 컴퓨터, 또는 모바일 컴퓨팅 및/또는 텔레커뮤니케이션 장치에 위치할 수 있다. 대안적으로, 프로세서 및 저장 매체는 사용자 단말에서 이산 컴포넌트로서 존재할 수 있다.
제시된 실시예들에 대한 설명은 임의의 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 발명의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 예를 들어, 다양한 실시예들이 모바일 장치들에 대해 이미지 및/또는 비디오 데이터와 관련하여 설명되었다. 그러나, 다업자는 다른 데이터 타입들 및 다른 플랫폼들 또한 인지할 것이다. 그리하여, 본 발명은 여기에 제시된 실시예들로 한정되는 것이 아니라, 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.

Claims (25)

  1. 인코딩하는 방법으로서,
    프로세서에서 이미지를 수신하는 단계;
    상기 프로세서를 통해, 상기 이미지를 타일들의 세트로 타일링(tile)하는 단계 ? 각각의 타일은 픽셀들의 세트를 포함함 ?;
    상기 프로세서를 통해, 제 1 타일을 선택하는 단계;
    상기 프로세서를 통해, 상기 제 1 타일의 상기 픽셀들에 대한 값들의 제 1 세트를 결정하는 단계;
    상기 프로세서를 통해, 상기 제 1 타일의 각각의 픽셀의 상기 결정된 값을 복수의 스트림들로 분리(separate)하는 단계;
    상기 프로세서를 통해, 상기 복수의 스트림들 중 제 1 스트림에 대해, 바이어스(bias) 값을 결정하는 단계; 및
    상기 프로세서를 통해, 상기 제 1 스트림 내의 각각의 값으로부터 상기 바이어스 값을 감산(subtract)하고, 이에 따라 감산된 값들의 세트를 생성하는 단계
    를 포함하고, 상기 제 1 스트림은 상기 제 1 타일의 상기 픽셀들에 대한 제 1 컬러를 표시하는 계수들의 세트를 포함하며, 상기 방법은,
    상기 프로세서를 통해, 상기 제 1 스트림에 대해, 상기 바이어스 값이 상기 제 1 컬러를 재구성(reconstruct)하기 위한 충분한 계수 정보를 포함하는지 여부를 결정하는 단계; 및
    상기 바이어스 값이 상기 제 1 컬러를 재구성하기 위한 충분한 계수 정보를 포함하는 경우,
    상기 프로세서를 통해, 상기 바이어스 값을 사용함으로써 상기 제 1 컬러를 패킷 헤더(packet header) 내에 인코딩하는 단계;
    패킷 바디(packet body) 내의 상기 제 1 컬러에 대한 상기 계수들의 인코딩을 중지하는(foregoing) 단계; 및
    상기 프로세서를 통해, 헤더가 상기 제 1 타일의 상기 제 1 컬러를 신뢰성있게(faithfully) 재구성하기 위한 충분한 픽셀 정보를 포함하는지 여부를 표시하는 인코딩 타입을 선택하는 단계
    를 더 포함하는, 인코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 감산된 값들은 하나 이상의 리딩(leading) 제로들을 포함하고, 상기 방법은,
    상기 프로세서를 통해, 상기 리딩 제로들 중 하나를 제거(remove)하고, 이에 따라 상기 제 1 스트림 내의 상기 감산된 값들을 나타내기 위해 요구되는 비트들의 수를 감소시키는 단계; 및
    상기 프로세서를 통해, 보다 적은 비트들로 상기 제 1 스트림 내에 값을 나타내는 단계를 더 포함하는,
    인코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 프로세서를 통해, 상기 제 1 스트림의 상기 값들에 대하여, 최소값을 결정하는 단계를 더 포함하고, 상기 바이어스 값은 상기 최소값을 포함하는,
    인코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 프로세서를 통해, 상기 감산된 값들을 라운딩(rounding)하고, 이에 따라 라운딩된 값들의 세트를 생성하는 단계; 및
    상기 프로세서를 통해, 인자(factor)에 의해 상기 라운딩된 값들을 나누는(divide) 단계를 더 포함하는,
    인코딩하는 방법.
  5. 제 4 항에 있어서,
    상기 인자는 2의 배수(multiple of two)를 포함하고, 상기 나누는 단계는 N-비트 손실(lossy) 인코더가 상기 프로세서를 통해 구현되도록 시프트(shift) 연산을 이용함으로써 수행되며, 여기서 N은 시프트된 최하위 비트(least significant bit)들의 수인,
    인코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 복수의 스트림들은 적색, 녹색, 청색 각각에 대한 스트림을 포함하는,
    인코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 복수의 스트림들은 Y, Cr, Cb를 포함하는,
    인코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 프로세서를 통해, 프레임 버퍼 내에 인코딩된 상기 타일들의 세트를 패킹(packing)하는 단계를 더 포함하는,
    인코딩하는 방법.
  9. 제 8 항에 있어서,
    상기 타일들은 각각의 타일에 의해 점유(occupy)되는 공간이 가변적(variable)이도록 타이트하게(tightly) 패킹되는,
    인코딩하는 방법.
  10. 제 8 항에 있어서,
    상기 타일들은 미리결정된 어드레스가능한 위치들에서 패킹되는,
    인코딩하는 방법.
  11. 삭제
  12. 삭제
  13. 제 1 항에 있어서,
    상기 프로세서를 통해, 상기 패킷 헤더를 패치(fetch)하는 단계;
    상기 프로세서에서 상기 인코딩 타입을 수신하는 단계;
    상기 프로세서를 통해, 상기 인코딩 타입을 이용함으로써 상기 제 1 컬러를 디코딩하는 단계를 더 포함하고, 상기 인코딩 타입이 상기 패킷 헤더가 상기 제 1 컬러를 재구성하기 위한 충분한 정보를 포함한다고 표시하는 경우, 상기 방법은 상기 패킷 바디로부터 상기 제 1 컬러에 대한 정보를 패치하는 단계를 중지하는,
    인코딩하는 방법.
  14. 제 1 항에 있어서,
    상기 인코딩 타입은,
    상기 제 1 타일에 대한 컬러 정보가 상기 패킷 바디 내에 인코딩되지 않는 조건을 위한 제 1 선택;
    하나의 컬러에 대한 상기 정보가 상기 패킷 바디 내에 인코딩되는 조건을 위한 제 2 선택;
    두 개의 컬러들에 대한 상기 정보가 상기 패킷 바디 내에 인코딩되는 조건을 위한 제 3 선택; 및
    세 개의 컬러들에 대한 상기 정보가 상기 패킷 바디 내에 인코딩되는 조건을 위한 제 4 선택 중 적어도 하나를 포함하는,
    인코딩하는 방법.
  15. 제 1 항에 있어서,
    상기 계수 정보는 휘도(luminance) 값 및 색차(chrominance) 값 중 하나를 포함하는,
    인코딩하는 방법.
  16. 인코딩을 위한 프로그램을 저장하는 컴퓨터 판독가능한 매체로서,
    상기 프로그램은,
    이미지를 수신하기 위한 명령들;
    상기 이미지를 타일들의 세트로 타일링하기 위한 명령들 ? 각각의 타일은 픽셀들의 세트를 포함함 ?;
    제 1 타일을 선택하기 위한 명령들;
    상기 제 1 타일의 상기 픽셀들에 대한 값들의 제 1 세트를 결정하기 위한 명령들;
    상기 제 1 타일의 각각의 픽셀의 상기 결정된 값을 복수의 스트림들로 분리하기 위한 명령들;
    상기 복수의 스트림들 중 제 1 스트림에 대해, 바이어스 값을 결정하기 위한 명령들; 및
    상기 제 1 스트림 내의 각각의 값으로부터 상기 바이어스 값을 감산하고, 이에 따라 감산된 값들의 세트를 생성하기 위한 명령들을 포함하며,
    상기 제 1 스트림은 상기 제 1 타일의 상기 픽셀들에 대한 제 1 컬러를 표시하는 계수들의 세트를 포함하고, 상기 프로그램은,
    상기 제 1 스트림에 대해, 상기 바이어스 값이 상기 제 1 컬러를 재구성하기 위한 충분한 계수 정보를 포함하는지 여부를 결정하기 위한 명령들; 및
    상기 바이어스 값이 상기 제 1 컬러를 재구성하기 위한 충분한 계수 정보를 포함하는 경우,
    상기 바이어스 값을 사용함으로써 상기 제 1 컬러를 패킷 헤더 내에 인코딩하기 위한 명령들;
    패킷 바디 내의 상기 제 1 컬러에 대한 상기 계수들의 인코딩을 중지하기 위한 명령들; 및
    헤더가 상기 제 1 타일의 상기 제 1 컬러를 신뢰성있게 재구성하기 위한 충분한 픽셀 정보를 포함하는지 여부를 표시하는 인코딩 타입을 선택하기 위한 명령들을 더 포함하는,
    컴퓨터 판독가능한 매체.
  17. 이미지 압축 시스템으로서,
    이미지를 수신하기 위한 수단;
    상기 이미지를 타일들의 세트로 타일링하기 위한 수단 ? 각각의 타일은 픽셀들의 세트를 포함함 ?;
    제 1 타일을 선택하기 위한 수단;
    상기 제 1 타일의 상기 픽셀들에 대한 값들의 제 1 세트를 결정하기 위한 수단;
    상기 제 1 타일의 각각의 픽셀의 상기 결정된 값을 복수의 스트림들로 분리하기 위한 수단;
    상기 복수의 스트림들 중 제 1 스트림에 대해, 바이어스 값을 결정하기 위한 수단;
    상기 제 1 스트림 내의 각각의 값으로부터 상기 바이어스 값을 감산하고, 이에 따라 감산된 값들의 세트를 생성하기 위한 수단 ? 상기 제 1 스트림은 상기 제 1 타일의 상기 픽셀들에 대한 제 1 컬러를 표시하는 계수들의 세트를 포함함 ?;
    상기 제 1 스트림에 대해, 상기 바이어스 값이 상기 제 1 컬러를 재구성하기 위한 충분한 계수 정보를 포함하는지 여부를 결정하기 위한 수단; 및
    상기 바이어스 값이 상기 제 1 컬러를 재구성하기 위한 충분한 계수 정보를 포함하는 경우,
    상기 바이어스 값을 사용함으로써 상기 제 1 컬러를 패킷 헤더 내에 인코딩하기 위한 수단;
    패킷 바디 내의 상기 제 1 컬러에 대한 상기 계수들의 인코딩을 중지하기 위한 수단; 및
    헤더가 상기 제 1 타일의 상기 제 1 컬러를 신뢰성있게 재구성하기 위한 충분한 픽셀 정보를 포함하는지 여부를 표시하는 인코딩 타입을 선택하기 위한 수단
    을 포함하는, 이미지 압축 시스템.
  18. 제 1 스테이지를 포함하는 인코더로서,
    상기 제 1 스테이지는,
    입력 데이터의 세트를 수신하는 메모리;
    상기 입력 데이터의 세트를 수신하는 통계(stats) 블록 ? 상기 통계 블록은 상기 입력 데이터를 정렬(sort)하도록 구성됨 ?;
    상기 메모리의 출력 및 상기 통계 블록의 출력에 연결되는 제 1 감산기 ? 상기 제 1 감산기는 상기 메모리의 출력 및 상기 통계 블록의 출력에 대한 산술(arithmetic) 연산을 수행함 ?;
    상기 감산기에 연결된 제 1 로직 유닛 ? 상기 제 1 로직 유닛은 상기 감산기의 출력을 수신하고 복수의 비트들을 출력함 ?; 및
    상기 로직 유닛에 연결되며, 상기 복수의 비트들을 수신하고 데이터 패킷을 형성하는 패커(packer)
    를 포함하며, 상기 제 1 로직 유닛은 특정한 데이터 스트림에 기반하여 감소된 수의 비트들을 출력하도록 구성되고, 상기 인코더는 제 2 스테이지를 더 포함하며, 상기 제 2 스테이지는,
    상기 제 1 감산기의 출력에 연결된 제 2 로직 유닛 ? 상기 제 2 로직 유닛은 라운딩 기능 및 나누기(divide) 기능을 수행함 ?;
    상기 제 1 감산기 및 상기 제 2 로직 유닛에 연결되는 제 1 멀티플렉서 ? 상기 제 1 멀티플렉서는 상기 제 2 로직 유닛 및 상기 제 1 감산기의 출력을 선택적으로 제공함 ?;
    상기 통계 블록의 출력에 연결되는 제 2 감산기 ? 상기 제 2 감산기는 1 만큼 감산(decrement)시킴 ?;
    상기 통계 블록 및 상기 제 2 감산기에 연결되는 제 2 멀티플렉서 ? 상기 제 2 멀티플렉서는 상기 통계 블록 및 상기 제 2 감산기의 출력을 선택적으로 제공함 ?;
    상기 제 1 및 제 2 멀티플렉서 각각에 연결된 손실_인에이블(lossy_enable) 라인을 포함하고,
    상기 손실_인에이블 라인이 하나의 상태를 가질 때, 상기 제 1 멀티플렉서는 상기 제 1 감산기의 출력을 제공하며, 상기 제 2 멀티플렉서는 상기 통계 블록의 출력을 제공하고,
    상기 손실_인에이블 라인이 다른 상태를 가질 때, 상기 제 1 멀티플렉서는 상기 제 2 로직 유닛의 출력을 제공하고, 상기 제 2 멀티플렉서는 상기 제 2 감산기의 출력을 제공하는,
    인코더.
  19. 제 18 항에 있어서,
    상기 메모리는 타일로부터 데이터 스트림을 수신하고, 상기 타일은 하나 이상의 데이터 스트림들을 포함하며, 상기 메모리는 상기 타일로부터의 상기 데이터 스트림에 기반하여 사이징(size)되는,
    인코더.
  20. 제 18 항에 있어서,
    상기 산술 연산은 상기 메모리의 출력으로부터 상기 통계 블록의 출력을 감산하고, 이에 따라 감산된 값들의 세트를 생성하는 것을 포함하며, 상기 감산된 값들은 하나 이상의 리딩 제로들을 포함하고, 상기 인코더는,
    리딩 제로를 제거하고, 이에 따라 상기 제 1 스트림 내에 상기 감산된 값들을 나타내기 위해 요구되는 비트들의 수를 감소시키며; 그리고
    더 적은 비트들로 상기 제 1 스트림 내의 값을 나타내는,
    인코더.
  21. 제 18 항에 있어서,
    디코드(decode) 유닛에 의해 출력되는 비트들의 수가 상기 디코드 유닛에 대한 제어 입력에 의해 결정되도록, 상기 제 1 로직 유닛은 상기 디코드 유닛을 포함하고, 상기 제어 입력은 상기 통계 블록에 의해 제공되는,
    인코더.
  22. 제 18 항에 있어서,
    상기 통계 블록은 상기 입력 데이터의 값들을 이용함으로써 바이어스 값을 결정하고, 상기 통계 블록은 상기 제 1 감산기에 의해 감산을 위한 바이어스 값을 추가적으로 제공하는,
    인코더.
  23. 제 18 항에 있어서,
    프레임 버퍼를 더 포함하고, 상기 인코더는 상기 프레임 버퍼 내에 인코딩되는 타일들의 세트를 패킹하는,
    인코더.
  24. 삭제
  25. 삭제
KR1020107002058A 2007-06-28 2008-06-24 스토리지 및 버스 대역폭 요건들을 최소화하기 위한 효율적인 이미지 압축 방식 Expired - Fee Related KR101139563B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US94697207P 2007-06-28 2007-06-28
US60/946,972 2007-06-28
US11/855,578 US8331663B2 (en) 2007-06-28 2007-09-14 Efficient image compression scheme to minimize storage and bus bandwidth requirements
US11/855,578 2007-09-14
PCT/US2008/068010 WO2009006099A2 (en) 2007-06-28 2008-06-24 An efficient image compression scheme to minimize storage and bus bandwidth requirements

Publications (2)

Publication Number Publication Date
KR20100030660A KR20100030660A (ko) 2010-03-18
KR101139563B1 true KR101139563B1 (ko) 2012-04-27

Family

ID=40011156

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107002058A Expired - Fee Related KR101139563B1 (ko) 2007-06-28 2008-06-24 스토리지 및 버스 대역폭 요건들을 최소화하기 위한 효율적인 이미지 압축 방식

Country Status (7)

Country Link
US (1) US8331663B2 (ko)
EP (1) EP2012544A3 (ko)
JP (1) JP5069349B2 (ko)
KR (1) KR101139563B1 (ko)
CN (1) CN101796842B (ko)
TW (1) TW200910974A (ko)
WO (1) WO2009006099A2 (ko)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8699808B2 (en) * 2007-10-15 2014-04-15 Chih-Ta Star Sung Method and apparatus of temporary image frame compression
US20110249959A1 (en) * 2010-04-09 2011-10-13 Korea Electronics Technology Institute Video storing method and device based on variable bit allocation and related video encoding and decoding apparatuses
US8989275B2 (en) * 2010-11-10 2015-03-24 Qualcomm Incorporated Video processing architecture
ES2989833T3 (es) 2011-06-23 2024-11-27 Huawei Tech Co Ltd Dispositivo de decodificación de desplazamiento, dispositivo de codificación de desplazamiento, dispositivo de filtro de imagen y estructura de datos
US8861877B2 (en) * 2012-07-19 2014-10-14 Omnivision Technologies, Inc. System and method for improving decoder performance by using multiple decoding channels
US20140029864A1 (en) * 2012-07-30 2014-01-30 Dror Reif Compression encoding and decoding method and apparatus
US9754560B2 (en) * 2012-08-20 2017-09-05 Open Invention Network, Llc Pooling and tiling data images from memory to draw windows on a display device
US9584792B2 (en) * 2013-01-04 2017-02-28 Qualcomm Incorporated Indication of current view dependency on reference view in multiview coding file format
US9087410B2 (en) * 2013-01-17 2015-07-21 Qualcomm Incorporated Rendering graphics data using visibility information
CN104956318B (zh) * 2013-02-01 2018-05-18 日立数据系统工程英国有限公司 用于在数据存储系统中实现存储的细粒度、可伸缩分配的方法和装置
US9332258B2 (en) 2013-03-01 2016-05-03 intoPIX SA Method and device for display stream compression
EP2773122A1 (en) * 2013-03-01 2014-09-03 intoPIX s.a. Method and device for display stream compression
KR20140109128A (ko) * 2013-03-05 2014-09-15 삼성전자주식회사 데이터 리드 방법과 상기 방법을 수행할 수 있는 장치들
US9135727B2 (en) 2013-05-07 2015-09-15 Adobe Systems Incorporated Method and apparatus for reconstructing indexed color spaces
US11425395B2 (en) * 2013-08-20 2022-08-23 Google Llc Encoding and decoding using tiling
CN103796018B (zh) * 2014-01-14 2017-09-15 齐齐哈尔大学 一种遥感影像实时压缩及渐进传输系统
WO2015109598A1 (en) * 2014-01-27 2015-07-30 Mediatek Singapore Pte. Ltd. Methods for motion parameter hole filling
GB2530312B (en) * 2014-09-19 2016-09-14 Imagination Tech Ltd Data compression
EP3320683B1 (en) * 2015-07-30 2024-09-18 Zhejiang Dahua Technology Co., Ltd. Methods and systems for image compression
US9794574B2 (en) * 2016-01-11 2017-10-17 Google Inc. Adaptive tile data size coding for video and image compression
CN105959503A (zh) * 2016-05-25 2016-09-21 西北工业大学 远程图像预览传输方法及装置
US10511858B2 (en) * 2016-07-13 2019-12-17 Ati Technologies Ulc Bit packing for delta color compression
KR102646906B1 (ko) 2016-11-17 2024-03-12 삼성전자주식회사 타일 기반 렌더링 방법 및 장치
US10438597B2 (en) * 2017-08-31 2019-10-08 Dolby International Ab Decoder-provided time domain aliasing cancellation during lossy/lossless transitions
GB2569645B (en) * 2017-12-22 2022-02-23 Displaylink Uk Ltd Managing data for transportation
CN115052139B (zh) 2018-01-19 2023-09-08 交互数字Vc控股公司 一种用于显示视频的方法和显示设备
US11477434B2 (en) 2018-03-23 2022-10-18 Pcms Holdings, Inc. Multifocal plane based method to produce stereoscopic viewpoints in a DIBR system (MFP-DIBR)
US10812828B2 (en) * 2018-04-10 2020-10-20 At&T Intellectual Property I, L.P. System and method for segmenting immersive video
EP3818694B1 (en) * 2018-07-05 2024-09-18 InterDigital VC Holdings, Inc. Method and system for near-eye focal plane overlays for 3d perception of content on 2d displays
CN110769253A (zh) * 2018-07-26 2020-02-07 晨星半导体股份有限公司 影像压缩电路及方法
KR102167360B1 (ko) * 2019-05-24 2020-10-19 서울과학기술대학교 산학협력단 화면 전송 방법 및 장치
CN116648918A (zh) 2020-12-23 2023-08-25 抖音视界有限公司 视频解码器初始化信息
US11663730B2 (en) * 2021-02-19 2023-05-30 Toyota Motor Engineering & Manufacturing North America, Inc. Systems and methods for an improved camera system using a graded lens and filters to estimate depth
CN114465826B (zh) * 2022-04-11 2022-07-15 深圳市天兴诚科技有限公司 编码技术的数据加密方法、系统及储存介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993000635A1 (en) * 1991-06-21 1993-01-07 Anamartic Limited Data storage management systems
US5793314A (en) 1996-07-03 1998-08-11 Motorola, Inc. Method and apparatus for bound-based adaptive entropy encoding/decoding

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0793724B2 (ja) 1984-12-21 1995-10-09 ソニー株式会社 テレビジョン信号の高能率符号化装置及び符号化方法
JPS6370682A (ja) 1986-09-12 1988-03-30 Sony Corp コンポ−ネント信号の高能率符号化装置
US5166987A (en) * 1990-04-04 1992-11-24 Sony Corporation Encoding apparatus with two stages of data compression
JP2844861B2 (ja) 1990-06-29 1999-01-13 ソニー株式会社 画像信号の高能率符号化装置及び符号化方法
JP3162792B2 (ja) * 1992-04-17 2001-05-08 キヤノン株式会社 画像処理装置
JP3874544B2 (ja) * 1998-07-10 2007-01-31 三菱電機株式会社 色変換装置および色変換方法
JPH07274021A (ja) * 1994-03-31 1995-10-20 Canon Inc 画像処理装置
US5878168A (en) * 1995-06-05 1999-03-02 Sony Corporation Method and apparatus for picture encoding and decoding
JP3687080B2 (ja) * 1996-07-17 2005-08-24 ソニー株式会社 画像符号化装置および画像符号化方法、画像復号化装置および画像復号化方法、並びに記録媒体
JP3748088B2 (ja) * 1996-07-17 2006-02-22 ソニー株式会社 画像処理装置および方法、並びに学習装置および方法
JPH1032495A (ja) 1996-07-18 1998-02-03 Sony Corp データ処理装置および方法
JP3342380B2 (ja) 1997-12-24 2002-11-05 キヤノン株式会社 符号化及び復号装置とそれを適用した画像処理装置
AUPP686598A0 (en) 1998-10-30 1998-11-26 Canon Kabushiki Kaisha A method and apparatus for representing a digital image to provide a coded representation
US20040136600A1 (en) * 1999-08-24 2004-07-15 Yfantis Evangelos A. Visually lossless still image compression for RGB, YUV, YIQ, YCrCb, K1K2K3 formats
KR100344900B1 (ko) * 2000-05-15 2002-07-20 주식회사 이시티 영상 압축/복원 장치 및 그 방법
JP2003189109A (ja) 2001-10-09 2003-07-04 Canon Inc 画像処理装置及び方法、並びにコンピュータ・プログラム
JP4061917B2 (ja) 2002-02-12 2008-03-19 ソニー株式会社 符号化処理装置、復号処理装置、および方法、並びにコンピュータ・プログラム
JP2003259393A (ja) 2002-03-01 2003-09-12 Sony Corp 符号化処理装置、復号処理装置、および方法、並びにコンピュータ・プログラム
US7764832B2 (en) * 2003-12-16 2010-07-27 Seiko Epson Corporation System and method for processing image data for color space conversion
KR100679027B1 (ko) * 2005-01-19 2007-02-05 삼성전자주식회사 Dc 성분의 손실 없이 영상을 코딩하는 방법 및 장치
JP4321496B2 (ja) * 2005-06-16 2009-08-26 ソニー株式会社 画像データ処理装置、画像データ処理方法およびプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993000635A1 (en) * 1991-06-21 1993-01-07 Anamartic Limited Data storage management systems
US5793314A (en) 1996-07-03 1998-08-11 Motorola, Inc. Method and apparatus for bound-based adaptive entropy encoding/decoding

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Richardson, 'H.264 & MPEG-4 차세대 영상압축기술', WILEY, 2004.09.6 발행 Page(s): 55-58 *
Richardson, 'H.264 & MPEG-4 차세대 영상압축기술', WILEY, 2004.09.6 발행 Page(s): 55-58*

Also Published As

Publication number Publication date
EP2012544A2 (en) 2009-01-07
CN101796842B (zh) 2012-11-14
CN101796842A (zh) 2010-08-04
WO2009006099A2 (en) 2009-01-08
TW200910974A (en) 2009-03-01
EP2012544A3 (en) 2009-03-11
JP2010533396A (ja) 2010-10-21
WO2009006099A3 (en) 2009-02-19
US20090003714A1 (en) 2009-01-01
JP5069349B2 (ja) 2012-11-07
KR20100030660A (ko) 2010-03-18
US8331663B2 (en) 2012-12-11

Similar Documents

Publication Publication Date Title
KR101139563B1 (ko) 스토리지 및 버스 대역폭 요건들을 최소화하기 위한 효율적인 이미지 압축 방식
US7158679B2 (en) Image compression with tile alignment
CN110662061B (zh) 有保证的数据压缩
US9232226B2 (en) Systems and methods for perceptually lossless video compression
EP2227024B1 (en) Method and apparatus for compressing and storing image data
US9373176B2 (en) Image compression method and apparatus for encoding pixel data of frame into interleaved bit-stream, and related image decompression method and apparatus
US7570819B2 (en) Method and apparatus for displaying images with compression mechanism
US8989275B2 (en) Video processing architecture
CN101099174B (zh) 图像编码方法、编码器、解码方法、解码器以及计算机程序产品
US7113645B2 (en) Image decompression apparatus and method
TW201806391A (zh) 用於顯示串流壓縮之子串流多工
US20190215519A1 (en) Method and apparatus for compressing video data
US20200007151A1 (en) Guaranteed Data Compression
TWI705693B (zh) 用於顯示串流壓縮之基於向量之熵寫碼的裝置及方法
CN102377994B (zh) 上下文自适应可变长度编码方法和系统
CN101406034B (zh) 使用限定符水印的压缩方案及使用该压缩方案在帧存储器中临时存储图像数据的装置
CN102118616A (zh) 图片解码方法及图片解码器
US8233729B2 (en) Method and apparatus for generating coded block pattern for highpass coefficients
EP4443879A1 (en) Image processing device and operating method thereof
EP4503606A1 (en) Image coding method and apparatus, image decoding method and apparatus, and electronic device and storage medium
KR20100013142A (ko) 프레임 메모리 압축방법
US11765366B2 (en) Method for processing transform coefficients
CN117750025B (zh) 一种图像数据处理方法、装置、芯片、设备及介质
EP0843483A2 (en) A method for decoding encoded video data
US9013595B1 (en) Digital video camera with internal data sample compression

Legal Events

Date Code Title Description
A201 Request for examination
PA0105 International application

St.27 status event code: A-0-1-A10-A15-nap-PA0105

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U12-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20150418

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20150418