KR20120014910A - 계층적 무손실 압축 - Google Patents

계층적 무손실 압축 Download PDF

Info

Publication number
KR20120014910A
KR20120014910A KR1020117028246A KR20117028246A KR20120014910A KR 20120014910 A KR20120014910 A KR 20120014910A KR 1020117028246 A KR1020117028246 A KR 1020117028246A KR 20117028246 A KR20117028246 A KR 20117028246A KR 20120014910 A KR20120014910 A KR 20120014910A
Authority
KR
South Korea
Prior art keywords
data
tile
delta
component
compression method
Prior art date
Application number
KR1020117028246A
Other languages
English (en)
Other versions
KR101650115B1 (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 KR20120014910A publication Critical patent/KR20120014910A/ko
Application granted granted Critical
Publication of KR101650115B1 publication Critical patent/KR101650115B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Abstract

데이터 압축 방법이 제공된다. 상기 데이터 압축 방법은 스퀘어 데이터를 타일 데이터로 변환한다. 그런 다음, 타일 데이터는 쿼드 데이터들로 분할되며 쿼드 데이터는 대표 성분, 제1 델타 성분, 제2 델타 성분, 제3 델타 성분, 및 제어 워드로 전환된다. 그런 다음, 상기 대표 성분들로 새로운 타일 데이터가 형성되고, 단일 대표 성분이 남을 때까지 상기 프로세스가 반복된다. 그런 다음, 단일 대표 성분이 제어 워드들 및 해당 델타 성분들과 함께 출력 스트림으로 내장된다. 데이터의 압축해제는 일단 비트 스트림이 파싱되었다면 인코딩과 대칭적이다.

Description

계층적 무손실 압축{HIERARCHICAL LOSSLESS COMPRESSION}
본 발명은 데이터 압축에 관한 것이다. 더욱 상세하게는, 본 발명은 하드웨어 구현에 적합한 무손실 데이터 압축에 관한 것이다.
데이터 압축은 보다 적은 비트들을 사용하여 저장되도록 데이터를 변환하는 프로세스이다. 데이터 압축의 두 유형은 손실(lossy)과 무손실(lossless)이다. 손실 데이터 압축은 데이터를 보다 많이 압축하지만, 그 과정에서 데이터가 손실된다. 따라서, 압축해제(decompression) 동안에, 데이터는 정확한 사본이 아니라 원래의 형태를 근사화한 것이다. 무손실 데이터 압축은 데이터를 보다 적게 압축하지만, 그 과정에서 데이터가 손실되지 않는다. 따라서, 압축해제 동안에, 데이터는 정확히 압축 전과 같이 복원된다. 데이터 압축의 목적은 전송에 필요한 대역폭 및/또는 저장에 필요한 메모리 양을 줄이는 것이다.
통상의 무손실 압축 기법의 한 예는 허프만 코딩(Huffman coding)이다. 허프만 코딩은 데이터 아이템(data item)의 발생 빈도를 기반으로 한다. 상기 기법은 보다 자주 발생하는 데이터를 인코딩하는 데 더 적은 개수의 비트들을 사용한다. 불행히도, 허프만 코딩의 한계는 그것이 고정 시퀀스 길이의 절차라는 점과 시퀀스 길이를 초과하는 데이터의 리던던시(redundancy)를 압축할 수 없다는 점이다. 결과적으로, 허프만 코딩은 복잡하며 사실상 많은 양의 메모리를 필요로 한다. 허프만 코딩은 파일의 일부가 추출될 수 있기 전에 전체 파일의 분석을 수행하는 것을 수반한다. 또한, 허프만 기법은 성질상 비대칭이며, 이는 디코딩 프로세스가 인코딩 프로세스보다 훨씬 느리다는 것을 의미한다. 일반적으로 컴퓨터가 단일 클록 사이클에 대략 동일한 양의 데이터를 읽고 쓰도록 설계되기 때문에 이러한 특성은 특정 하드웨어 구현들의 경우 받아들일 수 없다.
다른 통상의 무손실 기법은 LZW(Lempel-Ziv-Welch 방법)이다. LZW는 압축되는 데이터 파일에서 이전에 만난 스트링들의 사전(dictionary)을 자동으로 만든다. 사전은 각각의 가능한 문자(character)마다 하나의 엔트리를 가지며 256개의 엔트리들로 시작된다. 사전에 이미 들어있지 않은 스트링을 만날 때마다, 그 스트링으로 구성된 더 긴 스트링이 첨부된다. 출력은 사전에 대한 정수 인덱스들로 구성된다. 불행히도, LZW는 그에 의해 발생되는 스트링 테이블 때문에 문제가 있다. 사전은 짧은 양의 시간에 매우 커질 수 있다. 게다가, 필요한 메모리 양이 모든 스트링들의 총 길이에 따라 달라지기 때문에, 저장에 필요한 양이 불확실하다. 또한, 허프만 코딩의 경우와 같이, 파일의 일부가 압축 및/또는 압축해제되기 전에 전체 파일이 인코딩 및/또는 디코딩되어야 한다. 또한, 전체 프로세스가 성질상 비대칭이며 압축해제할 때보다 압축할 때 상당한 양만큼 더욱 긴 시간이 걸린다.
상기 압축 기법들에 의해 주어지는 제한들 외에도, 또 다른 주요 문제점은 서로 다른 데이터 포맷들에 대하여 획일적인 압축 방법이 없다는 것이다. 예를 들면, 픽셀들로 구성된 컴퓨터 그래픽은 Z-버퍼링(Z-buffering)을 사용하여 표현될 수 있다. Z-버퍼링은 픽셀 깊이(pixel depth)를 테스트하여 Z-버퍼에 저장된 데이터와 Z 좌표의 현재 위치를 비교함으로써 동작한다. Z-버퍼는 각각의 픽셀의 마지막 위치에 대한 정보를 저장한다. 관찰자에 더 가까운 위치에 있는 픽셀이 디스플레이될 픽셀이다. 픽셀들로 구성된 그래픽을 표현하는 데 사용되는 다른 통상의 데이터 포맷들은 컬러 버퍼링(color buffering)과 노말 맵(normal map)이다. 현재, 노말 맵 데이터에 대한 무손실 압축 기법은 없으며, 컬러 버퍼링 데이터는 소프트웨어 지향적인 별개의 압축 방법을 필요로 한다.
필요한 것은 성질상 대칭적이어서 하드웨어 구현에 적합한 데이터 압축/압축해제 방법이다. 또한, 필요한 것은 노말 맵 데이터를 포함하여 여러 서로 다른 데이터 포맷들을 압축 및 압축해제할 수 있는 데이터 압축/압축해제 방법이다. 게다가, 필요한 것은 다양한 그래픽 하드웨어 디바이스들에 맞게 조정가능한 데이터 압축/압축해제 방법이다.
본 발명의 한 양상에서, 계층적 데이터 압축 방법이 제공되며, 상기 방법은 데이터를 일차 어레이로 배열하는 단계; 일차 어레이를 복수의 일차 서브어레이들로 분할하는 단계; 복수의 압축된 서브어레이들이 형성되도록 각각의 일차 서브어레이를 압축된 서브어레이로 압축하는 단계; 압축된 서브어레이들을 이차 어레이로 배열하는 단계; 및 단일 서브어레이가 남을 때까지 분할, 압축 및 배열하는 단계들을 반복하는 단계를 포함하며, 이차 어레이는 이들 단계들을 반복하는 경우 일차 어레이가 되고, 상기 단계들은 컴퓨터에 의해 수행된다. 압축된 서브어레이들로부터의 데이터가 출력 스트림으로 내장될 수 있다.
본 발명의 다른 양상에서, 데이터 압축 방법이 제공되며, 상기 방법은 스퀘어 데이터를 제공하는 단계; 스퀘어 데이터를 타일 데이터로 변환하는 단계; 타일 데이터를 그 각각이 왼쪽 상위 픽셀, 오른쪽 상위 픽셀, 왼쪽 하위 픽셀, 및 오른쪽 하위 픽셀을 가지는 쿼드 데이터들로 분할하는 단계; 각각의 쿼드 데이터를 대표 성분, 제1 델타 성분, 제2 델타 성분, 제3 델타 성분, 및 제어 워드로 전환하는 단계; 대표 성분들로 새로운 타일 데이터를 형성하는 단계; 단일 대표 성분이 남을 때까지 상기 분할, 상기 전환, 및 상기 형성을 반복하는 단계, 새로운 타일 데이터는 상기 분할, 상기 전환 및 상기 형성 단계들을 반복하는 경우 타일 데이터가 되며; 및 단일 대표 성분, 제어 워드들 및 델타 성분들을 출력 스트림으로 내장하는 단계를 포함하며, 상기 단계들은 컴퓨터에 의해 수행된다.
본 발명의 또 다른 양상에서, 기계에 의해 판독가능한 프로그램 저장 디바이스가 제공된다. 상기 디바이스는 데이터 압축 방법을 수행하도록 기계에 의해 실행가능한 프로그램 명령어들을 기록한 유형의 디바이스이며, 상기 방법은 스퀘어 데이터를 제공하는 단계; 스퀘어 데이터를 타일 데이터로 변환하는 단계와; 타일 데이터를 그 각각이 왼쪽 상위 픽셀, 오른쪽 상위 픽셀, 왼쪽 하위 픽셀, 및 오른쪽 하위 픽셀을 가지는 쿼드 데이터들로 분할하는 단계; 각각의 쿼드 데이터를 대표 성분, 제1 델타 성분, 제2 델타 성분, 제3 델타 성분, 및 제어 워드로 전환하는 단계; 대표 성분들로 새로운 타일 데이터를 형성하는 단계; 단일 대표 성분이 남을 때까지 상기 분할, 상기 전환, 및 상기 형성을 반복하는 단계와, 새로운 타일 데이터는 상기 분할, 상기 전환 및 상기 형성 단계들을 반복하는 경우 타일 데이터가 되며; 및 단일 대표 성분, 제어 워드들 및 델타 성분들을 출력 스트림으로 내장하는 단계를 포함한다.
본 발명은 위에서 및 아래에서 제시된 바와 같이 구성된 실시예들 뿐만 아니라 다른 특징들 및 대안들을 갖는 다른 실시예들도 포함한다.
본 발명은 첨부된 도면들과 함께 다음의 상세한 설명에 의해 쉽게 이해될 것이다. 설명을 용이하게 하기 위해, 유사한 참조 번호들은 유사한 요소들을 가리킨다.
도 1a 내지 도 1c는 본 발명의 한 실시예에 따른 픽셀 비트들을 포함하는 2차원 표면 데이터를 도시한 것이다.
도 2a 내지 도 2b는 본 발명의 한 실시예에 따른 스퀘어-타일 변환(sqaure-to-tile transform)을 도시한 것이다.
도 3a 내지 도 3d는 본 발명의 한 실시예에 따른 타일의 분할, 쿼드(quad)의 전환, 새로운 타일들의 형성을 도시한 것이다.
도 4는 본 발명의 한 실시예에 따른 타일 데이터들의 계층(hierarchy)을 도시한 것이다.
도 5는 본 발명의 한 실시예에 따른 데이터 압축 방법을 도표로 도시한 것이다.
도 6은 본 발명의 한 실시예에 따른, 바람직하게는 계층적 데이터를 출력 스트림으로 인코딩하고 내장하는 데 사용되는 서브-타일 패턴(sub-tile pattern)을 도시한 것이다.
도 7은 본 발명의 한 실시예에 따른 계층적 데이터의 비트 할당된 출력 스트림을 도시한 것이다.
도 8은 본 발명의 한 실시예에 따른 비트 할당을 도표로 도시한 것이다.
계층적 무손실 데이터 압축 방법에 대한 발명이 개시된다. 본 발명의 실시예들에 대한 철저한 이해를 제공하기 위해 많은 구체적 세부사항들이 제시된다. 하지만, 당해 기술 분야의 통상의 기술자들은 본 발명의 실시예들이 다른 구체적 세부사항들로도 실시될 수 있다는 것을 이해할 것이다.
한 실시예에서, 2차원 표면 데이터가 개념적으로 스퀘어(square) 데이터들로 분할된다. 물리적인 스퀘어가 존재하지 않는다는 것은 이해할 것이다. 하지만, 스퀘어를 크기(길이와 폭) 및 표면을 가진 물리적 개체로서 고려하는 것은 본 발명의 개념을 이해하는 데 도움을 줄 수 있다. 2차원 표면 데이터는 그래픽 이미지를 표현하는 픽셀 비트들을 포함한다. 2차원 표면 데이터는 크기에 있어서 16×16 스퀘어인 스퀘어 데이터들로 분할된다. 대체가능한 실시예들에서, 2차원 표면 데이터는 원하는 압축 또는 기본 데이터 포맷에 따라 임의의 개수의 더 크거나 더 작은 스퀘어 데이터들로 분할될 수 있다. 예를 들면, 2차원 표면 데이터는 8×8 스퀘어 픽셀 데이터들로 분할될 수 있다.
그런 다음, 각각의 스퀘어 데이터는 타일(tile) 데이터로 변환된다. 변환은 하드웨어 구현에 적합한 정수 가산(add) 또는 감산(subtract) 연산들을 사용하여 수행된다. 스퀘어 데이터를 타일 데이터로 변환하는 데 사용되는 기법은 그래픽 이미지를 표현하는 데 사용되는 데이터 포맷에 따라 달라질 수 있다. 예를 들면, 만일 데이터 포맷이 Z 버퍼링(Z buffering)이면, 타일 데이터의 제2 열은 스퀘어 데이터의 제2 열을 제1 열로 감산한 것과 동일하도록 설정되고, 타일 데이터의 제3 열은 스퀘어 데이터의 제3 열을 스퀘어 데이터의 제2 열로 감산한 것과 동일하도록 설정되고, 타일 데이터의 제4 열은 스퀘어 데이터의 제4 열을 스퀘어 데이터의 제3 열로 감산한 것과 동일하도록 설정되며, 그리고 상기 패턴은 각각의 데이터 값을 인접한 데이터 값으로 감산하고 그 차이가 타일 데이터에 저장될 때까지 반복된다.
대체가능한 실시예들에서, 서로 다른 데이터 포맷들은 서로 다른 기법들을 사용하여 타일들로 변환될 수 있다. 예를 들면, 컬러 버퍼(color buffer) 데이터의 스퀘어 데이터를 변환하기 위해, 각각의 픽셀에 대하여, 스퀘어 데이터의 제1 채널을 스퀘어 데이터의 제2 채널로 감산한다. 결과 값은 타일 데이터의 제1 채널에 저장된다. 스퀘어 데이터의 제2 채널은 타일 데이터의 제2 채널에 저장된다. 스퀘어 데이터의 제3 채널을 스퀘어 데이터의 제1 채널로 감산하고 그 값은 타일 데이터의 제3 채널에 저장된다. 상기 패턴은 역상관 변환(decorrelation transform)이 각각의 픽셀에 대하여 수행될 때까지 반복된다.
또 다른 실시예에서, 노말 맵(normal map) 데이터를 변환하기 위해, 각각의 픽셀에 대하여, 스퀘어 데이터에서 제1 채널을 빼버리고 그 부호를 나타내는 비트가 타일 데이터의 제1 채널에 저장된다. 스퀘어 데이터의 제2 채널 및 제3 채널은 각각 타일 데이터의 제2 채널 및 제3 채널에 저장된다.
스퀘어 데이터가 타일 데이터로 변환된 후에, 타일은 쿼드(quad)들로 분할된다. 쿼드는 바람직하게는 2×2이며 왼쪽 상위 픽셀, 오른쪽 상위 픽셀, 왼쪽 하위 픽셀, 및 오른쪽 하위 픽셀을 가진다. 일단 타일이 쿼드들로 분할되면, 쿼드들은 대표 성분, 3개의 델타 성분들, 및 제어 워드로 전환된다. 전환은 바람직하게는 하드웨어 구현에 적합한 정수 가산 또는 감산 연산을 포함한다. 데이터 포맷에 따라, 서로 다른 기법들이 쿼드 데이터를 대표 성분, 3개의 델타 성분들, 및 제어 워드로 전환하는 데 사용될 수 있다. 서로 다른 전환 기법들의 예들은 나중에 더욱 상세히 논의될 것이다.
쿼드들이 전환된 후에, 새로운 타일이 결과적인 대표 성분들로 형성된다. 그런 다음, 새로운 타일은 쿼드들로 분할되고, 그 쿼드들은 대표 성분, 3개의 델타들 및 제어 워드로 전환된다. 다시, 결과적인 대표 성분들은 또 다른 새로운 타일을 형성하고, 그 타일은 쿼드들로 분할되며, 이들은 대표 성분, 3개의 델타 성분들 및 제어 워드로 전환된다. 상기 패턴은 단일 대표 성분이 남을 때까지 반복된다. 그 결과는 그 상단(top)에 단일 대표 성분이 있고 그 하단(bottom)에 변환된 스퀘어 데이터를 나타내는 전환된 쿼드 데이터들이 있는 데이터의 계층이다. 하단에서 상단으로 이동할 때, 계층의 각각의 레벨은 4배 더 적은 쿼드들을 가진다. 주목해야할 점은 만일 복수의 스퀘어 데이터들이 그래픽 이미지를 표현한다면 이런 설계에 의해 전체 프로세스가 용이하게 병렬화될 수 있다는 것이다.
일단 단일 대표 성분이 남으면, 픽셀들을 조밀하게 압축된 데이터의 정렬된 픽셀 스트림으로 내장(embed)하는 프로세스가 시작된다. 바람직하게는 제어 정보가 먼저 스트림으로 내장되며, 이는 데이터 포맷에 따라 약간씩 바뀔 수 있다. 예를 들면, 만일 Z-버퍼나 노말 맵 데이터가 사용된다면, 제어 정보는 각각의 픽셀에 대한 부호들의 256 픽셀맵(pixelmap)을 포함할 수 있다. 그런 다음, 단일 대표 성분이 적절한 개수의 픽셀들과 함께 출력 스트림으로 내장된다.
계층에서 각각의 타일 데이터를 4개의 동일한 스퀘어들로 분할하면 4개의 서브-타일(sub-tile) 데이터들이 생성된다. 예를 들면, 타일 데이터는 왼쪽 상위 서브-타일이 서브-타일 0, 오른쪽 상위 서브-타일이 서브-타일 1, 왼쪽 하위 서브-타일이 서브-타일 2, 오른쪽 하위 서브-타일이 서브-타일 3이 되도록 분할될 것이다. 예를 들면, 만일 타일이 16×16이라면, 각각의 서브-타일은 8×8일 것이다. 단일 대표 성분을 내장한 다음에, 바람직하게는 서브-타일들의 디렉토리(directory)가 내장되며 옵셋(offset)들을 포함한다. 예를 들면, 만일 타일 데이터가 16×16이라면, 서브-타일 1에 대한 옵셋은 서브-타일 0 ([0,7] [0,7])으로부터 ([8,15] [0,7])일 것이고, 서브-타일 2에 대한 옵셋은 서브-타일 1의 시작으로부터 ([0,7] [8,15])일 것이며, 서브-타일 3은 서브-타일 2의 시작으로부터 ([8,15] [8,15])일 것이다.
서브-타일들의 단일 대표 성분과 바람직하게는 디렉토리가 출력 스트림으로 내장된 후에, 각각의 쿼드들로부터 델타 성분들이 인코딩된다. 인코딩은 계층의 상단에서 시작하여 하단으로 아래로 진행된다. 쿼드들은 그들의 해당 제어 워드들에 따라 인코딩된다. 인코딩은 바람직하게는 서브-타일 패턴을 따른다. 예를 들면, 상단에서 하단으로 서브-타일 0에 대한 모든 델타들이 먼저 인코딩될 것이고 그 뒤에 상단에서 하단으로 서브-타일 1의 델타들이 인코딩될 것이다. 그런 다음, 서브-타일 2의 델타들이 상단에서 하단으로 인코딩될 것이고, 그 다음에 서브-타일 3의 델타들이 인코딩될 것이다. 주목해야할 점은 만일 계층의 하위 레벨들이 상위 레벨들로부터 완전히 디코딩될 수 있다면, 하위 레벨들의 인코딩을 모면하여 압축이 증가된다는 것이다.
서브-타일 패턴 다음에, 바람직하게는 인코딩된 픽셀들이 출력 스트림으로 내장된다. 인코딩된 픽셀들의 내장은 바람직하게는 서브-타일 0의 상단 쿼드를 나타내는 픽셀들로 시작할 것이다. 다음으로, 서브-타일 0에 대한 계층의 하위 레벨들에 있는 인코딩된 픽셀들이 상단에서 하단으로 출력 스트림으로 내장된다. 그런 다음, 서브-타일 1에 대한 상단 쿼드를 나타내는 픽셀들이 내장될 것이다. 다음으로, 바람직하게는 서브-타일 1에 대한 디렉토리가 출력 스트림으로 내장된다. 예를 들면, 만일 스퀘어 데이터가 16×16이라면, 서브-타일 1에 대한 디렉토리는 옵셋([4,7] [0,3])일 것이다. 디렉토리 다음에, 서브-타일 1에 대한 계층의 하위 레벨들에 있는 인코딩된 픽셀들이 상단에서 하단으로 출력 스트림으로 내장될 것이다. 다음으로, 서브-타일 2에 대한 상단 쿼드를 나타내는 픽셀들이 내장될 것이다. 그런 다음, 바람직하게는 서브-타일 2에 대한 디렉토리가 출력 스트림으로 내장된다. 예를 들면, 만일 스퀘어 데이터가 16×16이라면, 서브-타일 2에 대한 디렉토리는 옵셋([0,3] [4,7])일 것이다. 디렉토리 다음에, 서브-타일 2에 대한 계층의 하위 레벨들에 있는 인코딩된 픽셀들이 상단에서 하단으로 출력 스트림으로 내장될 것이다. 다음으로, 서브-타일 3에 대한 상단 쿼드를 나타내는 픽셀들이 내장될 것이다. 그런 다음, 서브-타일 3에 대한 디렉토리가 출력 스트림으로 내장된다. 예를 들면, 만일 스퀘어 데이터가 16×16이라면, 서브-타일 3에 대한 디렉토리는 옵셋 ([4,7] [4,7])일 것이다. 디렉토리 다음에, 서브-타일 3에 대한 계층의 하위 레벨들에 있는 인코딩된 픽셀들이 상단에서 하단으로 출력 스트림으로 내장될 것이다.
앞서 언급된 바와 같이, 데이터 포맷에 따라, 쿼드 데이터를 대표 성분, 3개의 델타 성분들, 및 제어 워드로 전환하는 데 서로 다른 기법들이 사용될 수 있다. 예를 들면, 컬러 버퍼 또는 노말 맵 데이터를 전환하기 위해, 대표 성분은 쿼드의 왼쪽 상위 픽셀과 동일하게 설정된다. 제1 델타 성분은 오른쪽 상위 픽셀을 왼쪽 상위 픽셀로 감산한 것과 동일하다. 제2 델타 성분은 왼쪽 하위 픽셀을 왼쪽 상위 픽셀로 감산한 것과 동일하다. 제3 델타 성분은 오른쪽 하위 픽셀을 왼쪽 상위 픽셀로 감산한 것과 동일하다. 제어 워드는 델타 성분들 사이의 상관도(correlation)에 따라 설정된다. 만일 모든 델타 성분들이 0이라면, 제어 워드는 0으로 설정된다. 이것은 픽셀 할당 동안에 픽셀 할당기(pixel allocator)가 쿼드에 대하여 어떠한 픽셀들의 추가 할당도 중단하라는 신호이다. 만일 델타 성분들이 0이 아니라면, 제어 워드는 3개의 델타들 중 최대 절대값에 따라 설정된다. 만일 델타들 중 최대 절대값이 1 이하이면, 제어 워드는 1로 설정된다. 만일 델타들 중 최대 절대값이 3 이하이면, 제어 워드는 2로 설정된다. 만일 델타들 중 최대 절대값이 7 이하이면, 제어 워드는 3으로 설정된다. 만일 델타들 중 최대 절대값이 7 초과이면, 다른 전략이 이용된다. 델타들 중 최대 절대값이 7을 초과한다고 가정하면, 왼쪽 상위 픽셀, 오른쪽 상위 픽셀, 왼쪽 하위 픽셀 및 오른쪽 하위 픽셀의 평균이 계산된다. 대표 성분은 쿼드 픽셀들의 평균과 동일하도록 재설정된다. 제1 델타 성분은 왼쪽 상위 성분을 평균으로 감산한 것과 동일하도록 재설정된다. 제2 델타 성분은 오른쪽 상위 성분을 평균으로 감산한 것과 동일하도록 재설정된다. 제3 델타 성분은 왼쪽 하위 성분을 평균으로 감산한 것과 동일하도록 재설정된다. 만일 재설정된 델타 성분들 중 최대 절대값이 7 이하이면 제어 워드는 4로 설정된다. 만일 재설정된 델타 성분들 중 최대 절대값이 15 이하이면 제어 워드는 5로 설정된다.
만일 재설정된 델타 성분들 중 최대 절대값이 15를 초과하면, 제어 워드는 6으로 설정되고 대표 성분과 델타 성분들은 원래의 쿼드 픽셀들로 설정된다. 그러므로, 재설정된 델타 성분들 중 최대 절대값이 15를 초과한다고 가정하면, 대표 성분은 왼쪽 상위 픽셀과 동일하고, 제1 델타 성분은 오른쪽 상위 픽셀과 동일하고, 제2 델타 성분은 왼쪽 하위 픽셀과 동일하고, 제3 델타 성분은 오른쪽 하위 픽셀과 동일하다.
델타들의 인코딩 및 내장은 데이터 포맷에 따라 서로 다를 수 있다. 바람직한 실시예에 따르면, 데이터가 어떻게 인코딩되는지를 정의하는 6 비트 프리픽스(prefix)가 존재한다. 각각의 버퍼에 대하여 2 비트들이 존재한다. 각각의 2 비트 제어 워드는 00, 01, 10 또는 11일 수 있다.
Figure pct00001
한 예에서, Z-버퍼 데이터가 사용되고 제어 워드는 2 비트이다. 만일 제어 워드가 '00'이라면, 오직 제어 워드만이 출력 스트림으로 내장되고 다른 데이터는 내장되지 않는다. 이는 상당한 압축을 가능하게 하며 데이터에서 아무런 변화가 없는 경우이다. 만일 제어 워드가 '01'이라면, 제어 워드가 내장되고 델타들이 그 해당 픽셀 값들과 함께 내장된다. 마지막으로, 만일 제어 워드가 '11'이라면, 제어 워드들을 나타내는 비트들이 내장되고 델타들은 관련된 경우에 따라 인코딩된다(다음 표를 참조).
Figure pct00002
코딩은 비트들의 개수를 정의하는 5 비트 프리픽스와 더불어 부호 비트를 포함한다. 만일 0, 1, 또는 2의 경우라면, 단일 값이 프리픽스와 함께 출력 스트림으로 내장되며 비트들의 최대 개수가 1임을 명시한다. 만일 3, 4, 또는 5의 경우라면, 2개의 값들이 프리픽스와 함께 출력 스트림으로 내장되고 그 중 비트들의 최대 개수가 2임을 명시한다. 만일 6의 경우라면, 3개의 값들이 프리픽스와 함께 내장되며 그 중 비트들의 최대 개수는 3임을 명시한다. 대체가능한 실시예에서, 델타 성분들은 서로 다른 기법을 사용하여 인코딩되고 내장될 수 있다.
예를 들면, 만일 컬러 버퍼 또는 노말 맵 데이터가 사용되고 제어 워드가 0이라면, 제어 워드를 나타내는 3 비트가 출력 스트림으로 내장되고 다른 데이터는 내장되지 않는다. 컬러의 경우, 3 비트의 제어 워드들이 사용된다.
만일 제어 워드가 1이라면, 제어 워드를 나타내는 3 비트가 출력 스트림으로 내장된다. 그런 다음, 제1 델타 성분을 나타내는 하나의 비트가 내장되고, 그 뒤에 제1 델타 성분의 부호를 나타내는 비트가 내장된다. 다음으로, 제2 델타 성분을 나타내는 하나의 비트가 내장되고, 그 뒤에 제2 델타 성분의 부호를 나타내는 비트가 내장된다. 그런 다음, 제3 델타 성분을 나타내는 하나의 비트가 내장되고, 그 뒤에 제3 델타 성분의 부호를 나타내는 비트가 내장된다.
만일 제어 워드가 2라면, 제어 워드를 나타내는 3 비트가 출력 스트림으로 내장된다. 그런 다음, 제1 델타 성분을 나타내는 2 비트가 내장되고, 그 뒤에 제1 델타 성분의 부호를 나타내는 비트가 내장된다. 다음으로, 제2 델타 성분을 나타내는 2 비트가 내장되고, 그 뒤에 제2 델타 성분의 부호를 나타내는 비트가 내장된다. 그런 다음, 제3 델타 성분을 나타내는 2 비트가 내장되고, 그 뒤에 제3 델타 성분의 부호를 나타내는 비트가 내장된다.
만일 제어 워드가 3이라면, 제어 워드를 나타내는 3 비트가 출력 스트림으로 내장된다. 그런 다음, 제1 델타 성분을 나타내는 3 비트가 내장되고, 그 뒤에 제1 델타 성분의 부호를 나타내는 비트가 내장된다. 다음으로, 제2 델타 성분을 나타내는 3 비트가 내장되고, 그 뒤에 제2 델타 성분의 부호를 나타내는 비트가 내장된다. 그런 다음, 제3 델타 성분을 나타내는 3 비트가 내장되고, 그 뒤에 제3 델타 성분의 부호를 나타내는 비트가 내장된다.
만일 제어 워드가 4라면, 제어 워드를 나타내는 3 비트가 출력 스트림으로 내장된다. 그런 다음, 쿼드의 평균을 나타내는 2 비트가 내장되고, 그 뒤에 평균의 부호를 나타내는 비트가 내장된다. 다음으로, 제1 델타 성분을 나타내는 3 비트가 내장되고, 그 뒤에 제1 델타 성분의 부호를 나타내는 비트가 내장된다. 그런 다음, 제2 델타 성분을 나타내는 3 비트가 내장되고, 그 뒤에 제2 델타 성분의 부호를 나타내는 비트가 내장된다. 다음으로, 제3 델타 성분을 나타내는 3 비트가 내장되고, 그 뒤에 제3 델타 성분의 부호를 나타내는 비트가 내장된다.
만일 제어 워드가 5라면, 제어 워드를 나타내는 3 비트가 출력 스트림으로 내장된다. 그런 다음, 쿼드의 평균을 나타내는 2 비트가 내장되고, 그 뒤에 평균의 부호를 나타내는 비트가 내장된다. 다음으로, 제1 델타 성분을 나타내는 4 비트가 내장되고, 그 뒤에 제1 델타 성분의 부호를 나타내는 비트가 내장된다. 그런 다음, 제2 델타 성분을 나타내는 4 비트가 내장되고, 그 뒤에 제2 델타 성분의 부호를 나타내는 비트가 내장된다. 다음으로, 제3 델타 성분을 나타내는 4 비트가 내장되고, 그 뒤에 제3 델타 성분의 부호를 나타내는 비트가 내장된다.
만일 제어 워드가 6이라면, 제어 워드를 나타내는 3 비트가 출력 스트림으로 내장된다. 그런 다음, 제1 델타 성분을 나타내는 8 비트가 내장되고, 그 뒤에 제1 델타 성분의 부호를 나타내는 비트가 내장된다. 다음으로, 제2 델타 성분을 나타내는 8 비트가 내장되고, 그 뒤에 제2 델타 성분의 부호를 나타내는 비트가 내장된다. 그런 다음, 제3 델타 성분을 나타내는 8 비트가 내장되고, 그 뒤에 제3 델타 성분의 부호를 나타내는 비트가 내장된다.
만일 제어 워드가 7이라면, 데이터는 모두 0으로 채워진다.
출력 스트림을 복원하기 위해, 디코딩 프로세스는 비트 정렬된 스트림을 파싱(parse)함으로써 시작된다. 일단 비트 정렬된 스트림이 파싱되었다면, 데이터를 복원하기 위해 역전환 및 역변환이 수행된다. 디코딩 프로세스는 인코딩 프로세스와 전적으로 대칭적이다. 일단 데이터 계층의 상단 레벨이 디코딩되면, 만일 비트 스트림 내에서 하위 레벨들 각각에 대한 시작점이 제공된다면 하위 레벨들은 병렬적으로 디코딩될 수 있다. 바람직하게는 서브-타일들에 대한 적절한 옵셋들의 디렉토리들이 병렬적 비트 스트림 디코딩을 감안하여 출력 스트림 내에 내장된다.
상기 단계들은 동일한 결과들을 달성하는 일련의 조합들로 다양한 데이터 포맷들에 대해 수행될 수 있다. 특히, 데이터 포맷은 2차원 표면 데이터로서 표현될 수 있는 임의의 편리한 및/또는 주지의 데이터 포맷일 수 있다. 예를 들면, 데이터 포맷은 정지 영상(still picture), 동영상(moving video), 텍스쳐(texture)들을 나타낼 수 있고 float32 포맷 및/또는 fixed24 포맷일 수 있다. 또한, 스퀘어 데이터 및/또는 쿼드 데이터에 대해 수행되는 변환 및/또는 전환들은 동일한 결과들을 달성하도록 임의의 편리한 및/또는 주지의 방식으로 수행될 수 있다. 예를 들면, 스퀘어 데이터들과 쿼드 데이터들은 동일한 결과를 달성하도록 가산, 감산, 승산(multiply), 제산(divide) 및/또는 임의의 다른 방법으로 다루어질 수 있다. 게다가, 비트 할당은 임의의 편리한 및/또는 주지의 방식으로 수행될 수 있다. 예시적인 부가 제어 정보가 부가될 수 있으며 또는 제어 정보가 출력 스트림으로 내장되지 않을 수 있다. 또한, 델타들은 프로세스 동안에 임의의 편리한 및/또는 주지의 시간에 인코딩될 수 있다. 델타들은 해당 쿼드가 전환된 후나 계층의 유사한 레벨에 있는 쿼드들이 전환되자마자, 및/또는 비트 할당 전에 임의의 다른 시간에 인코딩될 수 있다. 또한, 추가 디렉토리들이 비트 스트림에 포함될 수 있으며, 또는 압축 증가를 위해 디렉토리들은 제거될 수 있다.
도 1a 내지 도 1c는 본 발명의 한 실시예에 따른 픽셀들을 보유한 2차원 표면 데이터에 의해 표현되는 그래픽 이미지를 도시한 것이다. 도 1a에서, 그래픽 이미지(101)가 스크린(102) 상에 디스플레이되어 있다.
도 1b에서, 그래픽 이미지(101)가 2차원 표면 데이터(103) 상에 일련의 픽셀들(104)로 표현되어 있다. 그래픽 이미지(101)가 존재하는 부분은 일련의 1들로 표현되는 반면 그래픽 이미지(101)가 없는 부분은 0으로 표현되어 있다.
도 1c에서, 16×16 스퀘어 데이터(105)가 계층적 압축을 사용하여 압축될 수 있는 2차원 표면 데이터(103)로부터 분할되었다. 스퀘어 데이터(105)는 그래픽 이미지(101)의 왼쪽 상위 부분을 나타낸다.
대체가능한 실시예들에서, 2차원 표면 데이터는 임의의 픽셀 개수의 폭과 임의의 픽셀 개수의 높이를 가질 수 있다. 예를 들면, 2차원 표면 데이터는 4×4 또는 1280×1024일 수 있으며, 또는 임의의 다른 편리한 또는 주지의 폭×높이 픽셀의 디스플레이일 수 있다. 게다가, 스퀘어 데이터(105)는 더 크거나 더 작을 수 있다. 예를 들면, 스퀘어 데이터(105)는 2차원 표면 데이터의 8×8 분할일 수 있다. 또한, 대체가능한 실시예들에서, 추가 스퀘어 데이터들이 2차원 표면 데이터로부터 분할될 수 있고 병렬적으로 압축될 수 있다.
도 2a 내지 도 2b는 본 발명의 한 실시예에 따른 스퀘어-타일 변환(square to tile transform)을 도시한 것이다. 도 2a에서, 8×8 스퀘어 데이터(201)는 A1 내지 H8의 값들을 보유하고 있다. 데이터(203)는 Z 버퍼 포맷으로 있다.
도 2b에서, 모든 픽셀들을 이웃하는 픽셀들 사이의 값의 차이로 대체함으로써 스퀘어 데이터(201)가 타일 데이터(202)로 변환된다. Z-버퍼 데이터에 대한 변환은 다음 공식을 따를 수 있으며, T[i][j]는 타일에서 (j,i) 좌표의 픽셀을 나타내고, S[i][j]는 스퀘어에서 (j,i) 좌표의 픽셀을 나타내고, H는 타일 높이를 나타내고, W는 타일 폭을 나타내며, 각각의 행을 따라 왼쪽에서 오른쪽으로 수평 이동한다.
for(i = 0..H-1)
for(j = 0..W-1)
T[i][j] = S[i][j] - S[i][j-1]
또한, 0번째 열을 따라 상단에서 하단으로 수직 이동하며,
for(i = 1..H-1)
T[i][0] = S[i][0] - S[i-1][0]
S[0][0]은 변하지 않고 유지되지만, T[0][0]은 T[0][1](즉, 가장 가까이 있는 오른쪽 이웃)로 대체된다. 따라서, 픽셀 A2는 A2-A1으로 대체된다. 픽셀 A3는 A3-A2로 대체된다. 프로세스는 전체 스퀘어 데이터(201)가 이웃하는 픽셀들 사이의 값의 차이를 가지는 타일 데이터(202)로 변환될 때까지 계속된다.
대체가능한 실시예들에서, 스퀘어 데이터는 데이터 포맷에 따라 서로 다른 기법들을 사용하여 변환된다. 예를 들면, 만일 스퀘어 데이터가 컬러 버퍼 포맷이라면, 변환은 다음 공식을 따를 수 있으며, T[i][j][c]는 타일에서 (j,i) 좌표와 채널 c의 픽셀을 나타내고, S[i][j][c]는 스퀘어에서 (j,i) 좌표와 채널 c의 픽셀을 나타내고, H는 타일 높이를 나타내고, W는 타일 폭을 나타낸다.
for(i = 0..H-1)
for(j = 0..W-1)
T[i][j][0] = S[i][j][0] - S[i][j][1]
T[i][j][1] = S[i][j][1]
T[i][j][2] = S[i][j][2] - S[i][j][1]
따라서, 매 0번 채널의 타일 픽셀은 0번 채널의 해당 스퀘어 픽셀을 1번 채널의 해당 스퀘어 픽셀로 감산한 것과 동일하다. 매 1번 채널의 타일 픽셀은 1번 채널의 해당 스퀘어 픽셀과 동일하다. 매 2번 채널의 타일 픽셀은 2번 채널의 해당 스퀘어 픽셀을 1번 채널의 해당 스퀘어 픽셀로 감산한 것과 동일하다. 각각의 픽셀에 대하여 역상관 변환을 수행함으로써, 컬러 버퍼 스퀘어 데이터가 타일 데이터로 변환된다.
대체가능한 실시예의 또 다른 예에서, 만일 스퀘어 데이터가 노말 맵 포맷이라면, 변환은 다음 공식을 따를 수 있으며, T[i][j][c]는 타일에서 (j,i) 좌표와 채널 c의 픽셀을 나타내고, S[i][j][c]는 스퀘어에서 (j,i) 좌표와 채널 c의 픽셀을 나타내고, H는 타일 높이를 나타내고, W는 타일 폭을 나타낸다.
for(i = 0..H-1)
for(j = 0..W-1)
if S[i][j][0]>0 then T[i][j][0]=1; otherwise T[i][j][0]=0
T[i][j][1] = S[i][j][1]
T[i][j][2] = S[i][j][2]
따라서, 매 0번 채널의 타일 픽셀은 만일 해당 스퀘어 픽셀의 0번 채널에 저장된 값이 양이면 1이다. 그렇지 않으면, 0번 채널의 타일 픽셀은 0이다. 1번 채널 및 2번 채널의 매 타일 픽셀은 각각 1번 채널 및 2번 채널의 해당 스퀘어 픽셀과 동일하다. 한 컴포넌트(component) 값을 빼버리고 그 부호를 저장함으로써, 노말 맵 스퀘어 데이터는 타일 데이터로 변환된다.
도 3a 내지 도 3d는 본 발명의 한 실시예에 따른 데이터의 계층을 생성하는 일련의 타일 분할들 및 쿼드 전환들을 도시한 것이다. 도 3a에서, 16×16 타일 데이터(301)가 쿼드 데이터들(302)로 분할된다. 각각의 쿼드 데이터는 대표 성분(303), 제1 델타 성분(304), 제2 델타 성분(305), 제3 델타 성분(306) 및 제어 워드(307)로 전환된다. 16×16 타일(301)의 분할은 64개의 쿼드들(302)을 만든다. 쿼드 데이터들(302)의 전환 후에, 64개의 대표 성분들(303), 64개의 제1 델타 성분들(304), 64개의 제2 델타 성분들(305), 64개의 제3 델타 성분들(306), 및 64개의 제어 워드들(307)이 만들어진다.
도 3b에서, 64개의 대표 성분들(303)은 새로운 타일(308)을 형성한다. 대표성분들(303)의 8×8 타일(308)은 쿼드 데이터들(309)로 분할된다. 각각의 쿼드 데이터는 대표 성분(310), 제1 델타 성분(311), 제2 델타 성분(312), 제3 델타 성분(313) 및 제어 워드(314)로 전환된다. 8×8 타일(308)의 분할은 16개의 쿼드들(309)을 만든다. 쿼드 데이터들(309)의 전환 후에, 16개의 대표 성분들(310), 16개의 제1 델타 성분들(312), 16개의 제2 델타 성분들(313), 16개의 제3 델타 성분들(313), 및 16개의 제어 워드들(314)이 만들어진다.
도 3c에서, 16개의 대표 성분들(310)은 새로운 타일(315)을 형성한다. 대표성분들(310)의 4×4 타일(315)은 쿼드 데이터들(316)로 분할된다. 각각의 쿼드 데이터는 대표 성분(317), 제1 델타 성분(318), 제2 델타 성분(319), 제3 델타 성분(320) 및 제어 워드(321)로 전환된다. 4×4 타일(315)의 분할은 4개의 쿼드들(316)을 만든다. 쿼드 데이터들(316)의 전환 후에, 4개의 대표 성분들(317), 4개의 제1 델타 성분들(318), 4개의 제2 델타 성분들(319), 4개의 제3 델타 성분들(320), 및 4개의 제어 워드들(321)이 만들어진다.
도 3d에서, 4개의 대표 성분들(317)은 새로운 타일(322)을 형성한다. 대표성분들(317)의 2×2 타일(322)은 더 이상의 쿼드 데이터들로 분할될 수 없다. 따라서, 타일 데이터(322)는 상단 쿼드 데이터(322)이다. 쿼드 데이터(322)는 단일 대표 성분(323), 제1 델타 성분(324), 제2 델타 성분(325), 제3 델타 성분(326) 및 제어 워드(327)로 전환된다. 단일 대표 성분(323)은 데이터 계층의 상단이다. 계층의 그 다음 레벨은 2×2 타일 데이터(322)로부터 전환된 델타 성분들(324, 325, 326) 및 제어 워드(327)이다. 계층의 그 다음 레벨은 4×4 타일 데이터(315)로부터 전환된 델타 성분들(318, 319, 320) 및 제어 워드들(321)이다. 계층의 그 다음 레벨은 8×8 타일 데이터(308)로부터 전환된 델타 성분들(311, 312, 313) 및 제어 워드들(314)이다. 계층의 그 다음 레벨은 16×16 타일 데이터(301)로부터 전환된 델타 성분들(304, 305, 306) 및 제어 워드들(307)이다.
대체가능한 실시예들에서, 타일 데이터들은 유사한 결과들을 만드는 임의의 편리한 및/또는 주지의 방식으로 분할될 수 있다. 또한, 대체가능한 실시예들에서, 쿼드들은 유사한 결과들을 만드는 다양한 기법들을 사용하여 임의의 편리한 및/또는 주지의 방식으로 전환될 수 있다. 나아가, 대체가능한 실시예들에서, 쿼드의 전환들은 서로 다를 수 있고 및/또는 데이터 포맷에 따라 달라질 수 있다.
도 4는 본 발명의 한 실시예에 따른 타일 데이터들의 계층을 도시한 것이다. 계층의 상단은 계층의 2번째 레벨로부터의 단일 대표 성분(323)이다. 계층의 2번째 레벨은 계층의 3번째 레벨로부터의 대표 성분들의 타일(317)이다. 계층의 3번째 레벨은 계층의 4번째 레벨로부터의 대표 성분들의 타일(310)이다. 계층의 4번째 레벨은 계층의 5번째 레벨로부터의 대표 성분들의 타일(303)이다. 계층의 5번째 레벨은 변환된 스퀘어 데이터의 타일(301)이다.
도 5는 본 발명의 한 실시예에 따른 데이터 압축 방법을 도표로 도시한 것이다. 단계(501)에서, 2차원 표면 데이터는 스퀘어 데이터들로 분할된다. 바람직하게는, 각각의 스퀘어 데이터는 독립적으로 압축되고 병렬적으로 수행된다. 스퀘어 데이터들은 바람직하게는 16×16 스퀘어 데이터이지만, 임의의 편리한 및/또는 주지의 크기의 스퀘어 데이터일 수 있다. 단계(502)에서, 각각의 스퀘어 데이터는 타일 데이터로 변환된다. 바람직하게는, 변환은 사용되는 데이터 유형에 따라 달라진다. 단계(503)에서, 타일 데이터는 쿼드 데이터들로 분할된다. 바람직하게는, 쿼드 데이터는 2×2이다. 단계(504)에서, 각각의 쿼드 데이터는 대표 성분, 제1 델타 성분, 제2 델타 성분, 제3 델타 성분, 및 제어 워드로 전환된다. 단계(505)에서, 전환으로부터 발생되는 대표 성분들로 새로운 타일 데이터가 형성된다.
판별 연산(506)에서, 새로운 타일이 쿼드들로 분할될 수 있는지 여부가 판별된다. 만일 새로운 타일 데이터가 쿼드들로 분할될 수 있다면, 프로세스는 단계(503)로 되돌아가며 타일은 쿼드 데이터들로 분할된다. 상기 방법은 거기서부터 계속된다.
하지만, 만일 새로운 타일 데이터가 쿼드들로 분할될 수 없다면, 단계(507)에서, 데이터 계층의 비트들이 인코딩되고 출력 스트림으로 할당된다. 그런 다음, 상기 방법은 완료된다.
도 6은 본 발명의 한 실시예에 따른, 바람직하게는 계층적 데이터를 출력 스트림으로 인코딩하고 내장하는 데 사용되는 서브-타일 패턴을 도시한 것이다. 데이터 계층에서 각각의 타일은 4개의 서브-타일들로 분할된다. 계층의 상단에서 시작하여, 상단 타일(601), 즉 상단 쿼드 데이터는 서브-타일 0(602), 서브-타일 1(603), 서브-타일 2(604), 서브-타일 3(605)으로 분할된다. 계층의 그 다음 레벨(606), 즉 4×4 타일 데이터는 또한 서브-타일 0(607), 서브-타일 1(608), 서브-타일 2(609), 서브-타일 3(610)으로 분할된다. 계층의 그 다음 레벨(611), 즉 8×8 타일 데이터는 또한 서브-타일 0(612), 서브-타일 1(613), 서브-타일 2(614), 서브-타일 3(615)으로 분할된다. 계층의 그 다음인 하단 레벨(616), 즉 16×16 변환된 스퀘어 데이터는 또한 서브-타일 0(617), 서브-타일 1(618), 서브-타일 2(619), 및 서브-타일 3(620)으로 분할된다. 바람직하게는, 인코딩 및/또는 내장 프로세스는 상단에서 서브-타일 0(602)에 대한 델타 성분들로 시작되고 서브-타일 0 계층(607, 612, 617)으로 아래로 진행된다. 다음으로, 인코딩 및/또는 내장 프로세스는 상단에서 서브-타일 1(603)에 대한 델타 성분들로 시작되고 서브-타일 1 계층(608, 613, 618)으로 아래로 진행된다. 그런 다음, 인코딩 및/또는 내장 프로세스는 상단에서 서브-타일 2(604)에 대한 델타 성분들로 시작되고 서브-타일 2 계층(609, 614, 619)으로 아래로 진행된다. 마지막으로, 인코딩 및/또는 내장 프로세스는 상단에서 서브-타일 3(605)에 대한 델타 성분들로 시작되고 서브-타일 3 계층(610, 615, 620)으로 아래로 진행된다. 서브-타일 패턴은 병렬적 비트 스트림 디코딩 및 만일 아래에 있는 모든 서브-타일의 델타들이 0이라면 비트 할당을 중단하는 능력을 감안한 것이다.
도 7은 본 발명의 한 실시예에 따른 계층적 데이터의 비트 할당된 출력 스트림을 도시한 것이다. 제어 정보(701)를 나타내는 비트들이 출력 스트림(715)으로 내장된다. 제어 정보는 바람직하게는 데이터 유형에 따라 달라진다. 예를 들면, 만일 사용되는 포맷이 노말 맵 및/또는 Z 버퍼라면 데이터 부호들의 256 비트맵을 나타내는 제어 비트들이 내장될 수 있다. 제어 정보(701) 다음에, 데이터 계층의 상단으로부터의 단일 대표 성분(702)을 나타내는 비트들이 출력 스트림(715)으로 내장된다. 단일 대표 성분(702) 다음에, 서브-타일들의 디렉토리(703)를 나타내는 비트들이 출력 스트림(715)으로 내장된다. 디렉토리는 바람직하게는 3개의 옵셋들을 포함한다. 서브-타일들의 디렉토리(703) 다음에, 델타 성분들이 해당 제어 워드에 따라 인코딩된다. 예를 들어, 만일 데이터 포맷이 Z 버퍼 데이터라면, 인코딩은 다음 공식을 따를 수 있으며, PUT(성분, 개수)은 특정한 델타 성분으로부터 그 개수의 비트들을 보내는 함수이고, D0는 제어 워드를 나타내고, D1은 델타 1을 나타내고, D2는 델타 2를 나타내고, D3은 델타 3을 나타낸다.
PUT(D0, 6)
if D0 == 2
그 계층에 대하여 다른 데이터는 스트림으로 내장되지 않음
if D0 == 3
if D1=Y, D2=N, D3=N or
D1=N, D2=Y, D3=N or
D1=N, D2=N, D3=Y
then 5 비트 프리픽스, 부호 비트 및 1개의 값이 인코딩됨
if D1=N, D2=Y, D3=Y or
D1=Y, D2=N, D3=Y or
D1=Y, D2=Y, D3=N
then 5 비트 프리픽스, 부호 비트 및 2개의 값들이 인코딩됨
if D1=Y, D2=Y, D3=Y
then 5 비트 프리픽스, 부호 비트 및 3개의 값들이 인코딩됨
예를 들어, 만일 데이터 포맷이 컬러 또는 노말 맵 데이터라면, 인코딩은 다음 공식을 따를 수 있으며, PUT(성분, 개수)은 특정한 델타 성분으로부터 그 개수의 비트들을 보내는 함수이고, PUT_SIGN(값)은 값이 0이 아니면 그 값의 부호를 보내는 함수이고, D0는 제어 워드를 나타내고, D1은 델타 1을 나타내고, D2는 델타 2를 나타내고, D3은 델타 3을 나타내고, LSB는 델타 성분들의 평균을 나타낸다.
PUT(D0, 3)
if D0 == 0
그 계층에 대하여 다른 데이터는 스트림으로 내장되지 않음
if D0 == 7
다른 데이터는 스트림으로 내장되지 않음
if D0 == 1
PUT(D1, 1);
PUT_SIGN(D1);
PUT(D2, 1);
PUT_SIGN(D2);
PUT(D3, 1);
PUT_SIGN(D3);
if D0 == 2
PUT(D1, 2);
PUT_SIGN(D1);
PUT(D2, 2);
PUT_SIGN(D2);
PUT(D3, 2);
PUT_SIGN(D3);
if D0 == 3
PUT(D1, 3);
PUT_SIGN(D1);
PUT(D2, 3);
PUT_SIGN(D2);
PUT(D3, 3);
PUT_SIGN(D3);
if D0 == 4
PUT(LBS, 2);
if LSB가 명시적인 부호를 가짐 then PUT(LBS_SIGN, 1);
PUT(D1, 3);
PUT_SIGN(D1);
PUT(D2, 3);
PUT_SIGN(D2);
PUT(D3, 3);
PUT_SIGN(D3);
if D0 == 5
PUT(LBS, 2);
if LSB가 명시적인 부호를 가짐 then PUT(LBS_SIGN, 1);
PUT(D1, 4);
PUT_SIGN(D1);
PUT(D2, 4);
PUT_SIGN(D2);
PUT(D3, 4);
PUT_SIGN(D3);
if D0 == 6
PUT(D1, 8);
PUT_SIGN(D1);
PUT(D2, 8);
PUT_SIGN(D2);
PUT(D3, 8);
PUT_SIGN(D3);
일단 델타 성분들이 해당 제어 워드에 따라 인코딩되면, 서브-타일 0에 대한 상단 쿼드를 나타내는 비트들(704)이 출력 스트림(715)으로 내장된다. 그런 다음, 서브-타일 0에 대한 계층의 하위 레벨들에 있는 쿼드들을 나타내는 비트들(705)이 내장된다. 다음으로, 서브-타일 1에 대한 상단 쿼드를 나타내는 비트들(706)이 내장된다. 그런 다음, 서브-타일 1에 대한 서브-타일 디렉토리(707)를 나타내는 비트들이 내장된다. 다음으로, 서브-타일 1에 대한 계층의 하위 레벨들에 있는 쿼드들을 나타내는 비트들(708)이 내장된다. 그런 다음, 서브-타일 2에 대한 상단 쿼드를 나타내는 비트들(709)이 내장된다. 다음으로, 서브-타일 2에 대한 서브-타일 디렉토리(710)를 나타내는 비트들이 내장된다. 그런 다음, 서브-타일 2에 대한 계층의 하위 레벨들에 있는 쿼드들을 나타내는 비트들(711)이 내장된다. 다음으로, 서브-타일 3에 대한 상단 쿼드를 나타내는 비트들(712)이 내장된다. 그런 다음, 서브-타일 3에 대한 서브-타일 디렉토리(713)를 나타내는 비트들이 내장된다. 다음으로, 서브-타일 3에 대한 계층의 하위 레벨들에 있는 쿼드들을 나타내는 비트들(714)이 내장된다.
대체가능한 실시예들에서, 델타 성분들은 임의의 편리한 및/또는 주지의 방식으로 인코딩될 수 있다. 예를 들면, 데이터 포맷에 따라, 유사한 인코딩 결과들을 달성하기 위해 다양한 공식들이 사용될 수 있다. 게다가, 델타 성분들은 임의의 편리한 및/또는 주지의 방식으로 내장될 수 있다. 예를 들면, 델타 성분들은 서브-타일 패턴이 아니라 타일 패턴으로 내장될 수 있다. 또한, 추가 데이터가 출력 스트림으로 내장될 수 있다. 예를 들면, 데이터 포맷에 따라 추가 제어 정보가 출력 스트림 전반을 통해 부가될 수 있다. 또한, 추가 압축을 위해 데이터가 출력 스트림에서 제거될 수 있다. 예를 들면, 디렉토리들을 나타내는 비트들은 제거될 수 있으며 이는 더 높은 압축을 제공한다.
도 8은 본 발명의 한 실시예에 따른 비트 할당을 도표로 도시한 것이다. 제어 정보(801)가 출력 스트림으로 내장된다. 대체가능한 실시예들에서, 제어 정보는 추가 압축을 위해 제거될 수 있다. 다음으로, 단일 대표 성분(802)이 스트림으로 내장된다. 단일 대표 성분(802) 다음에, 서브-타일들의 디렉토리(803)가 출력 스트림으로 내장된다. 대체가능한 실시예들에서, 서브-타일들의 디렉토리(803)는 추가 압축을 위해 제거될 수 있다. 다음으로, 델타 성분들이 하나 이상의 해당 제어 워드들에 따라 인코딩된다(804). 인코딩은 바람직하게는 서브-타일 패턴을 따른다. 대체가능한 실시예들에서, 델타들은 프로세스 동안의 임의의 편리한 시간에 인코딩될 수 있다. 그런 다음, 서브-타일 0에 대한 상단 쿼드를 나타내는 비트들(805)이 출력 스트림으로 내장되고, 그 뒤에 서브-타일 0에 대한 나머지 쿼드들을 나타내는 비트들(806)이 내장된다. 그런 다음, 서브-타일 1에 대한 상단 쿼드를 나타내는 비트들(807)이 내장되고, 그 뒤에 서브-타일 1에 대한 디렉토리(808)가 내장된다. 대체가능한 실시예들에서, 디렉토리는 추가의 압축을 위해 제거될 수 있다. 그런 다음, 서브-타일 1에 대한 쿼드들을 나타내는 나머지 비트들(809)이 출력 스트림으로 내장된다. 다음으로, 서브-타일 2에 대한 상단 쿼드를 나타내는 비트들(810)이 출력 스트림으로 내장된다. 서브-타일 2에 대한 상단 쿼드를 나타내는 비트들(810) 다음에, 서브-타일 2에 대한 디렉토리(811)를 나타내는 비트들이 내장된다. 대체가능한 실시예들에서, 디렉토리는 추가 압축을 제공하기 위해 제거될 수 있다. 그런 다음, 서브-타일 2에 대한 쿼드들을 나타내는 나머지 비트들(812)이 내장된다. 그런 다음, 서브-타일 3에 대한 상단 쿼드를 나타내는 비트들(813)이 내장되고, 그 뒤에 서브-타일 3에 대한 디렉토리(814)가 내장된다. 대체가능한 실시예들에서, 디렉토리는 추가 압축을 제공하기 위해 제거될 수 있다. 그런 다음, 서브-타일 3에 대한 쿼드들을 나타내는 나머지 비트들(815)이 출력 스트림으로 내장된다.
본 발명의 실시예들의 데이터 압축 방법은 스퀘어 데이터를 타일 데이터로 변환한다. 그런 다음, 타일 데이터는 쿼드 데이터들로 분할되며, 쿼드 데이터는 대표 성분, 제1 델타 성분, 제2 델타 성분, 제3 델타 성분 및 제어 워드로 전환된다. 그런 다음, 대표 성분들로 새로운 타일 데이터가 형성되고 프로세스는 단일 대표 성분이 남을 때까지 반복된다. 그런 다음, 단일 대표 성분은 제어 워드들 및 해당 델타 성분들과 함께 출력 스트림으로 내장된다.
데이터 압축 시스템 및 방법의 구현
본 발명의 실시예들의 부분들은 본 개시의 가르침에 따라 프로그램된 종래의 범용 또는 전문 디지털 컴퓨터 또는 마이크로프로세서를 사용하여 편리하게 구현될 수 있으며, 이는 컴퓨터 기술 분야의 통상의 기술자들에게 자명할 것이다.
본 개시의 가르침을 기반으로 숙련된 프로그래머들에 의해 적절한 소프트웨어 코딩이 쉽게 구비될 수 있으며, 이는 소프트웨어 기술 분야의 통상의 기술자들에게 자명할 것이다. 본 발명은 또한 주문형 반도체(application specific integrated circuits)를 구비함으로써 또는 종래의 컴포넌트 회로들의 적절한 네트워크를 상호 연결함으로써 구현될 수 있으며, 이는 당해 기술 분야의 통상의 기술자들에게 자명할 것이다. 집적 회로들에 있어서의 구현은 소프트웨어 코드들(예컨대, 하드웨어 기술 언어(hardware description language)로 된 코드)이 합성되고 처리되었을 때 본 발명의 양상들을 실시할 수 있는 반도체 집적 회로들을 제조하는 제조 공정(반도체 파운드리의 공정들과 같은)을 구성하도록 배치되는 소프트웨어 코드들의 생성을 통해 이루어질 수 있다.
본 발명의 실시예들은 그 상에/안에 명령어들(예컨대, 하드웨어 기술 언어 코드를 포함하여 소프트웨어, 펌웨어 및/또는 하드웨어 명령어들)이 저장된 저장 매체(들)인 컴퓨터 프로그램 제품을 포함하며, 상기 명령어들은 컴퓨터가 본 발명의 실시예들의 임의의 프로세스를 수행하도록 제어하거나 시키는 데 사용될 수 있다. 저장 매체는 플로피 디스크, 미니 디스크(mini disk: MD), 광학 디스크, DVD, CD-ROM, 마이크로-드라이브(micro-drive), 및 자기-광학 디스크(magneto-optical disk)를 포함하여 임의의 유형의 디스크, ROM, RAM, EPROM, EEPROM, DRAM, VRAM, 플래쉬 메모리 디바이스(플래쉬 카드 포함), 자기적 또는 광학적 카드, 나노시스템(nanosystem)(분자(molecular) 메모리 IC를 포함), RAID 디바이스, 원격 데이터 저장/아카이브(archive)/웨어하우징(warehousing), 또는 명령어 및/또는 데이터를 저장하기에 적합한 임의의 유형의 매체 또는 디바이스를 포함할 수 있지만, 이들로만 제한되는 것은 아니다.
임의의 컴퓨터 판독가능한 매체(들) 상에 저장될 때, 본 발명의 실시예들은 범용/전문 컴퓨터 또는 마이크로프로세서의 하드웨어를 제어하기 위한 소프트웨어, 및 컴퓨터 또는 마이크로프로세서가 본 발명의 실시예들의 결과들을 활용하는 인간 사용자 또는 다른 메카니즘과 상호 작용할 수 있게 하기 위한 소프트웨어 모두를 포함한다. 이러한 소프트웨어는 디바이스 드라이버, 운영 체제, 및 사용자 애플리케이션들을 포함할 수 있지만, 이들로만 제한되는 것은 아니다. 결국, 전술된 바와 같이, 이러한 컴퓨터 판독가능한 매체는 본 발명의 실시예들을 수행하기 위한 소프트웨어를 더 포함한다.
범용/전문 컴퓨터 또는 마이크로프로세서의 프로그래밍(소프트웨어)에 포함되는 것은 본 발명의 실시예들의 가르침을 구현하기 위한 소프트웨어 모듈들이며, 이는 본 발명의 실시예들의 프로세스에 따라, 스퀘어 데이터를 제공하고, 스퀘어 데이터를 타일 데이터로 변환하고, 타일 데이터를 쿼드 데이터들로 분할하고, 각각의 쿼드를 대표 성분으로 전환하고, 대표 성분들로 새로운 타일 데이터를 형성하고, 단일 대표 성분이 남을 때까지 반복하며, 그리고 단일 대표 성분, 제어 워드들 및 델타 성분들을 출력 스트림으로 내장하는 것을 포함하지만, 이들로만 제한되는 것은 아니다.
본 발명의 실시예들은 본 발명의 구성 및 동작 원리들의 이해를 용이하게 하는 세부사항들을 포함하는 특정 실시예들의 측면에서 서술되었다. 이러한 특정 실시예들 및 그 세부사항들에 대한 참조는 첨부된 특허청구범위의 범위를 제한하고자 의도된 것이 아니다. 예시를 위해 선택된 실시예에서 본 발명의 사상과 범위를 벗어남이 없이 수정들이 가해질 수 있다는 것은 당해 기술 분야의 통상의 기술자들에게 자명할 것이다. 예를 들면, 인코딩 및/또는 내장을 위한 서로 다른 공식들 및/또는 다양한 데이터 및/또는 데이터 포맷들은 예시된 실시예들의 기능들을 수행하도록 부가 및/또는 제거될 수 있다.

Claims (24)

  1. 복수의 압축된 서브어레이(subarray)들이 형성되도록, 일차 어레이를 형성하는 복수의 일차 서브어레이들을 압축된 서브어레이들로 압축하는 단계와;
    상기 압축된 서브어레이들을 이차 어레이로 배열하는 단계와; 그리고
    단일 서브어레이가 남을 때까지 상기 압축과 상기 배열을 반복하는 단계를 포함하며, 상기 이차 어레이는 상기 압축과 상기 배열을 반복하는 경우 상기 일차 어레이가 되며, 상기 단계들은 컴퓨터에 의해 수행되는
    계층적 데이터 압축 방법.
  2. 제1항에 있어서,
    상기 압축된 서브어레이들로부터의 데이터를 출력 스트림으로 내장(embed)하는 단계를 더 포함하는
    계층적 데이터 압축 방법.
  3. 스퀘어(square) 데이터를 제공하는 단계와;
    상기 스퀘어 데이터를 타일(tile) 데이터로 변환하는 단계와;
    상기 타일 데이터를 그 각각이 왼쪽 상위 픽셀, 오른쪽 상위 픽셀, 왼쪽 하위 픽셀, 및 오른쪽 하위 픽셀을 가지는 쿼드(quad) 데이터들로 분할하는 단계와;
    상기 쿼드 데이터 각각을 대표 성분(representative element), 제1 델타 성분(delta element), 제2 델타 성분, 제3 델타 성분, 및 제어 워드(control word)로 전환하는 단계와;
    상기 대표 성분들로 새로운 타일 데이터를 형성하는 단계와;
    단일 대표 성분이 남을 때까지 상기 분할, 상기 전환, 및 상기 형성을 반복하는 단계와, 상기 새로운 타일 데이터는 상기 분할, 상기 전환 및 상기 형성 단계들을 반복하는 경우 상기 타일 데이터가 되며; 그리고
    상기 단일 대표 성분, 상기 제어 워드들 및 상기 델타 성분들을 출력 스트림으로 내장하는 단계를 포함하며, 상기 단계들은 컴퓨터에 의해 수행되는
    데이터 압축 방법.
  4. 제3항에 있어서,
    상기 스퀘어 데이터는 2차원 표면(two-dimensional surface) 데이터를 분할한 것인
    데이터 압축 방법.
  5. 제3항에 있어서,
    상기 데이터는 Z-버퍼(Z-buffer) 데이터, 컬러 버퍼(color buffer) 데이터 및 노말 맵(normal map) 데이터 중 적어도 하나인
    데이터 압축 방법.
  6. 제5항에 있어서,
    상기 스퀘어 데이터를 타일 데이터로 변환하는 단계는 각각의 데이터 값을 새로운 데이터 값으로 대체하는 것을 포함하고, 상기 새로운 데이터 값은 상기 데이터 값을 인접한 데이터 값으로 감산(subtract)한 것과 동일한
    데이터 압축 방법.
  7. 제3항에 있어서,
    상기 스퀘어 데이터를 타일 데이터로 변환하는 단계는 각각의 데이터 값을 역상관된(decorrelated) 데이터 값으로 대체하는 것을 포함하는
    데이터 압축 방법.
  8. 제3항에 있어서,
    상기 스퀘어 데이터를 타일 데이터로 변환하는 단계는 각각의 데이터 값을 컴포넌트 개수가 하나 적은 새로운 데이터 값으로 대체하는 것을 포함하는
    데이터 압축 방법.
  9. 제3항에 있어서,
    상기 쿼드 데이터 각각을 전환하는 단계는
    상기 왼쪽 상위 픽셀을 상기 대표 성분으로 설정하는 것과,
    상기 오른쪽 상위 픽셀을 상기 왼쪽 상위 픽셀로 감산하여 상기 제1 델타 성분을 형성하는 것과,
    상기 왼쪽 하위 픽셀을 상기 왼쪽 상위 픽셀로 감산하여 상기 제2 델타 성분을 형성하는 것과,
    상기 오른쪽 하위 픽셀을 상기 왼쪽 하위 픽셀로 감산하여 상기 제3 델타 성분을 형성하는 것과, 그리고
    상기 델타 성분들 사이의 상관도에 따라 상기 제어 워드를 설정하는 것을 포함하는
    데이터 압축 방법.
  10. 제3항에 있어서,
    제어 정보(control information)가 상기 출력 스트림으로 내장되는
    데이터 압축 방법.
  11. 제3항에 있어서,
    서브-타일(sub-tile)들의 디렉토리(directory)가 상기 출력 스트림으로 내장되고, 상기 서브-타일들의 디렉토리는 상기 분할, 상기 전환 및 상기 형성 단계들의 결과들로부터 형성되는
    데이터 압축 방법.
  12. 제3항에 있어서,
    상기 내장하는 단계는 서브-타일 패턴을 따르는
    데이터 압축 방법.
  13. 제3항에 있어서,
    상기 델타 성분들을 그들과 관련된 제어 워드들에 따라 인코딩하는 단계를 더 포함하는
    데이터 압축 방법.
  14. 스퀘어 데이터를 제공하는 단계와;
    상기 스퀘어 데이터를 타일 데이터로 변환하는 단계와;
    상기 타일 데이터를 그 각각이 왼쪽 상위 픽셀, 오른쪽 상위 픽셀, 왼쪽 하위 픽셀, 및 오른쪽 하위 픽셀을 가지는 쿼드 데이터들로 분할하는 단계와;
    상기 쿼드 데이터 각각을 대표 성분, 제1 델타 성분, 제2 델타 성분, 제3 델타 성분, 및 제어 워드로 전환하는 단계와;
    상기 대표 성분들로 새로운 타일 데이터를 형성하는 단계와;
    단일 대표 성분이 남을 때까지 상기 분할, 상기 전환, 및 상기 형성을 반복하는 단계와, 상기 새로운 타일 데이터는 상기 분할, 상기 전환 및 상기 형성 단계들을 반복하는 경우 상기 타일 데이터가 되며; 그리고
    상기 단일 대표 성분, 상기 제어 워드들 및 상기 델타 성분들을 출력 스트림으로 내장하는 단계를 포함하는 데이터 압축 방법을 수행하는 실행가능한 프로그램 명령어들을 기록한 유형의 기계 판독가능한 프로그램 저장 디바이스.
  15. 제14항에 있어서,
    상기 스퀘어 데이터는 2차원 표면 데이터를 분할한 것인
    데이터 압축 방법.
  16. 제14항에 있어서,
    상기 데이터는 Z-버퍼 데이터, 컬러 버퍼 데이터 및 노말 맵 데이터 중 적어도 하나인
    데이터 압축 방법.
  17. 제16항에 있어서,
    상기 스퀘어 데이터를 타일 데이터로 변환하는 단계는 각각의 데이터 값을 새로운 데이터 값으로 대체하는 것을 포함하고, 상기 새로운 데이터 값은 상기 데이터 값을 인접한 데이터 값으로 감산한 것과 동일한
    데이터 압축 방법.
  18. 제14항에 있어서,
    상기 스퀘어 데이터를 타일 데이터로 변환하는 단계는 각각의 데이터 값을 역상관된 데이터 값으로 대체하는 것을 포함하는
    데이터 압축 방법.
  19. 제14항에 있어서,
    상기 스퀘어 데이터를 타일 데이터로 변환하는 단계는 각각의 데이터 값을 컴포넌트 개수가 하나 적은 새로운 데이터 값으로 대체하는 것을 포함하는
    데이터 압축 방법.
  20. 제14항에 있어서,
    상기 쿼드 데이터 각각을 전환하는 단계는
    상기 왼쪽 상위 픽셀을 상기 대표 성분으로 설정하는 것과,
    상기 오른쪽 상위 픽셀을 상기 왼쪽 상위 픽셀로 감산하여 상기 제1 델타 성분을 형성하는 것과,
    상기 왼쪽 하위 픽셀을 상기 왼쪽 상위 픽셀로 감산하여 상기 제2 델타 성분을 형성하는 것과,
    상기 오른쪽 하위 픽셀을 상기 왼쪽 하위 픽셀로 감산하여 상기 제3 델타 성분을 형성하는 것과, 그리고
    상기 델타 성분들 사이의 상관도에 따라 상기 제어 워드를 설정하는 것을 포함하는
    데이터 압축 방법.
  21. 제14항에 있어서,
    제어 정보가 상기 출력 스트림으로 내장되는
    데이터 압축 방법.
  22. 제14항에 있어서,
    서브-타일들의 디렉토리가 상기 출력 스트림으로 내장되고, 상기 서브-타일들의 디렉토리는 상기 분할, 상기 전환 및 상기 형성 단계들의 결과들로부터 형성되는
    데이터 압축 방법.
  23. 제14항에 있어서,
    상기 내장하는 단계는 서브-타일 패턴을 따르는
    데이터 압축 방법.
  24. 제14항에 있어서,
    상기 델타 성분들을 그들과 관련된 제어 워드들에 따라 인코딩하는 단계를 더 포함하는
    데이터 압축 방법.
KR1020117028246A 2009-05-19 2010-05-18 계층적 무손실 압축 KR101650115B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/468,757 2009-05-19
US12/468,757 US8810562B2 (en) 2009-05-19 2009-05-19 Hierarchical lossless compression

Publications (2)

Publication Number Publication Date
KR20120014910A true KR20120014910A (ko) 2012-02-20
KR101650115B1 KR101650115B1 (ko) 2016-08-22

Family

ID=43016694

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117028246A KR101650115B1 (ko) 2009-05-19 2010-05-18 계층적 무손실 압축

Country Status (6)

Country Link
US (1) US8810562B2 (ko)
EP (1) EP2433264B1 (ko)
JP (1) JP5651170B2 (ko)
KR (1) KR101650115B1 (ko)
CN (1) CN102428499B (ko)
WO (1) WO2010135307A2 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160130460A (ko) * 2014-05-06 2016-11-11 인텔 코포레이션 컬러 압축을 위한 클러스터링 및 인코딩
KR20190019062A (ko) 2016-04-28 2019-02-26 닛뽕 케미파 가부시키가이샤 다발성 경화증의 치료를 위한 의약
KR20200131230A (ko) 2018-03-14 2020-11-23 닛뽕 케미파 가부시키가이샤 해수 (咳嗽) 의 치료를 위한 의약
KR20230041005A (ko) 2020-08-03 2023-03-23 닛뽕 케미파 가부시키가이샤 알레르기 반응에 수반하는 증상의 예방 혹은 억제 또는 치료용의 의약 조성물
KR20230041650A (ko) 2020-03-30 2023-03-24 유니베르시타' 디 피사 과민성 장 증후군 또는 염증성 장 질환의 예방 또는 치료를 위한 의약

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106454376B (zh) 2010-04-13 2019-10-01 Ge视频压缩有限责任公司 解码器、重建数组的方法、编码器、编码方法及数据流
BR122020007923B1 (pt) 2010-04-13 2021-08-03 Ge Video Compression, Llc Predição interplano
DK2559246T3 (en) 2010-04-13 2016-09-19 Ge Video Compression Llc Fusion of sample areas
PL3621306T3 (pl) 2010-04-13 2022-04-04 Ge Video Compression, Llc Kodowanie wideo przy wykorzystaniu podpodziałów obrazów multidrzewa
JP6066557B2 (ja) * 2011-12-26 2017-01-25 株式会社メガチップス データ記憶制御装置、データ記憶装置、データ記憶方法、圧縮回路、および圧縮方法
US9686560B2 (en) * 2015-02-23 2017-06-20 Teledyne Dalsa, Inc. Lossless data compression and decompression apparatus, system, and method
CN106534874B (zh) 2016-11-18 2019-11-29 上海兆芯集成电路有限公司 纹理砖压缩及解压缩方法以及使用该方法的装置
US11044474B2 (en) * 2019-02-18 2021-06-22 Glenfly Technology Co., Ltd. Image compression method and image processing system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070183675A1 (en) * 2004-02-23 2007-08-09 Toa Corporation Image compression method, image compression device, image transmission system, data compression pre-processing apparatus, and computer program

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPN399395A0 (en) 1995-07-05 1995-07-27 Commonwealth Scientific And Industrial Research Organisation Method for representation and compression of data
GB9703441D0 (en) * 1997-02-19 1997-04-09 British Tech Group Progressive block-based coding for image compression
JP3937418B2 (ja) * 1997-07-03 2007-06-27 ソニー株式会社 記憶装置および記憶読み出し制御方法
US6356665B1 (en) * 1998-12-09 2002-03-12 Sharp Laboratories Of America, Inc. Quad-tree embedded image compression and decompression method and apparatus
US6630933B1 (en) * 2000-09-01 2003-10-07 Ati Technologies Inc. Method and apparatus for compression and decompression of Z data
US6898323B2 (en) * 2001-02-15 2005-05-24 Ricoh Company, Ltd. Memory usage scheme for performing wavelet processing
JP2004140667A (ja) * 2002-10-18 2004-05-13 Canon Inc 情報処理方法
JP4323178B2 (ja) * 2003-01-31 2009-09-02 株式会社リコー 検索対象制限装置、画像処理装置、プログラム、記憶媒体及び検索対象制限方法
CN101360242B (zh) * 2008-09-22 2010-06-02 西安电子科技大学 基于JPEG2000的Tag-tree编码方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070183675A1 (en) * 2004-02-23 2007-08-09 Toa Corporation Image compression method, image compression device, image transmission system, data compression pre-processing apparatus, and computer program

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160130460A (ko) * 2014-05-06 2016-11-11 인텔 코포레이션 컬러 압축을 위한 클러스터링 및 인코딩
KR20190019062A (ko) 2016-04-28 2019-02-26 닛뽕 케미파 가부시키가이샤 다발성 경화증의 치료를 위한 의약
KR20200131230A (ko) 2018-03-14 2020-11-23 닛뽕 케미파 가부시키가이샤 해수 (咳嗽) 의 치료를 위한 의약
KR20230041650A (ko) 2020-03-30 2023-03-24 유니베르시타' 디 피사 과민성 장 증후군 또는 염증성 장 질환의 예방 또는 치료를 위한 의약
KR20230041005A (ko) 2020-08-03 2023-03-23 닛뽕 케미파 가부시키가이샤 알레르기 반응에 수반하는 증상의 예방 혹은 억제 또는 치료용의 의약 조성물

Also Published As

Publication number Publication date
US20100299454A1 (en) 2010-11-25
JP5651170B2 (ja) 2015-01-07
KR101650115B1 (ko) 2016-08-22
EP2433264B1 (en) 2017-03-15
US8810562B2 (en) 2014-08-19
EP2433264A2 (en) 2012-03-28
CN102428499B (zh) 2016-08-17
JP2012527836A (ja) 2012-11-08
CN102428499A (zh) 2012-04-25
WO2010135307A2 (en) 2010-11-25
WO2010135307A3 (en) 2011-01-20

Similar Documents

Publication Publication Date Title
KR101650115B1 (ko) 계층적 무손실 압축
CN112383780B (zh) 点匹配参考集和索引来回扫描串匹配的编解码方法和装置
CN111800641B (zh) 同模式采用不同种类重构像素的图像编码解码方法和装置
JP5258664B2 (ja) 画像符号化装置、方法およびプログラム、並びに、画像復号装置、方法およびプログラム
KR20130143678A (ko) 2d 매트릭스들에 인코딩 파라미터들을 저장하는 이미지 압축을 위한 방법 및 장치
CN104704825B (zh) 分段图像数据的无损压缩
JP4768728B2 (ja) 値のブロックをエンコードする方法および装置
KR101946598B1 (ko) 이미지 코딩, 디코딩 방법 및 장치
CN105491376A (zh) 图像编码、解码方法及装置
KR20120124058A (ko) 텍스처 패턴 적응형 파티션 블록 변환
CN104754362B (zh) 使用精细划分块匹配的图像压缩方法
GB2496209A (en) Entropy encoder with first and second, bypass encoding systems
WO2006083801A2 (en) Optimized lossless data compression methods
KR100717002B1 (ko) 영상 부호화 및 복호화 장치와, 그 방법, 및 이를 수행하기위한 프로그램이 기록된 기록 매체
CN104093027A (zh) 用于彩色图像的联合标量嵌入式图形编码
CN104935945A (zh) 扩展参考像素样值集的图像压缩方法
CN1692626A (zh) 图像编码设备及其方法,编码图像解码设备及其方法
CN110312129B (zh) 最可能模式列表的构建、帧内预测、编码的方法及设备
CN100379251C (zh) 一种静态图像压缩的编码方法
CN101516008A (zh) 单一位平面的编码系统及方法
CN107770543B (zh) 多类匹配参数中按顺序递增截断值的数据压缩方法和装置
JPH0723238A (ja) 画像データ圧縮及び復元装置
JP4331992B2 (ja) 画像符号化方法,画像復号方法,画像符号化装置,画像復号装置,それらのプログラムおよびそれらのプログラム記録媒体
JP3857820B2 (ja) 画像圧縮装置および画像伸張装置
KR20120038355A (ko) 계층 구조의 영상 처리를 위한 엔트로피 인코딩/디코딩 방법 및 장치와 이를 위한 심볼 인코딩/디코딩 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190718

Year of fee payment: 4