KR20160140381A - 가변 레이트 텍스처 압축을 수행하는 방법 및 압축기 - Google Patents

가변 레이트 텍스처 압축을 수행하는 방법 및 압축기 Download PDF

Info

Publication number
KR20160140381A
KR20160140381A KR1020160057807A KR20160057807A KR20160140381A KR 20160140381 A KR20160140381 A KR 20160140381A KR 1020160057807 A KR1020160057807 A KR 1020160057807A KR 20160057807 A KR20160057807 A KR 20160057807A KR 20160140381 A KR20160140381 A KR 20160140381A
Authority
KR
South Korea
Prior art keywords
block
texture
compression
compressed
block size
Prior art date
Application number
KR1020160057807A
Other languages
English (en)
Other versions
KR102606241B1 (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 KR20160140381A publication Critical patent/KR20160140381A/ko
Application granted granted Critical
Publication of KR102606241B1 publication Critical patent/KR102606241B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • 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
    • 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
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/162User input
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Computer Graphics (AREA)

Abstract

고정 레이트 압축기를 기초로 자동적으로 선택된 가변적인 블록 크기들을 이용하여, 텍스처 이미지를 압축하는 방법 및 압축기를 제공한다.

Description

가변 레이트 텍스처 압축을 수행하는 방법 및 압축기{Compressor and Method for Variable-Rate Texture Compression}
본 개시는 가변 레이트 압축을 위해 고정 레이트 코드들을 이용하여 텍스처 압축을 수행하는 방법 및 압축기에 관한 것이다.
텍스처 압축은 그래픽스 하드웨어 구현의 일부가 될 수 있다. CPU(central processing unit) 및 GPU(graphical processing unit)간의 메모리 대역폭을 감소시키는 장점 이외에도, 압축된 텍스처는 GPU 메모리의 효율적인 사용을 제공할 수 있고, 현대 그래픽 장면에서의 증가된 복잡성을 가능하게 할 수 있다.
종래의 많은 텍스처 압축 포맷들은 픽셀 당 하나의 메모리 룩업(lookup)을 수행하는 것에 한정되었다. 메모리 접근이 현재 그래픽스 프로세서에서 가장 에너지 비효율적인 동작 중 하나임에 따라, 이러한 제한은, 배터리 수명을 보존시키고, 접근 지연 속도(access latency)을 줄이고, 일관된 수행을 위해 예측 가능한 지연 속도를 유지시키기 위해, 필수적이다.
다양한 텍스처 압축 기법들은 텍스처 압축을 위해 '고정 레이트(fixed-rate)' 기법, 다시 말해, 텍스처 내의 텍셀들 각 블록이 같은 수의 바이트들(bytes)에 따라 압축되는 기법을 사용한다. 예를 들어, ASTC(Adaptive Scalable Texture Compression)는 여러 그래픽스 표준들의 공식적 확장인 알고리즘이다. 주어진 텍스처에 있어, 단일 블록 크기(예로, 4ⅹ4 텍셀들, 6ⅹ6 텍셀들, 12ⅹ12 텍셀들 등등)와 같은 고정된 블록 영역들이 전체 텍스처에 대한 표준 블록 크기를 정의하기 위해 선택될 수 있다. 예를 들어, 12ⅹ12 영역이 선택되는 경우, 텍스처의 모든 블록들은 12ⅹ12 블록들로 압축될 수 있다. ASTC는 고정된 개수의 비트들이 블록 크기에 상관없이 사용될 수 있도록 지정할 수 있다. 즉, 텍셀 당 비트들의 개수가 텍스처에 대해 선택된 블록 크기에 의존할 수 있다.
고정 레이트 압축은, 압축 해제 과정 중에 주소 계산을 단순화할 수 있지만, 텍스처 전반에 걸친 퀄리티의 다양화를 가져올 수 있다. 특히, 공격적인 압축 방식(aggressive compression scheme)을 선택하는 것은 텍스처 내의 중요한 높은 주파수 특징들의 스무스화(smoothing)를 가져올 수 있다. 이러한 유연함의 부족은, 애플리케이션 디자이너가 압축된 텍스처의 크기와 결과물의 퀄리티 사이에 선택하는, 퀄리티 대 압축 간의 트레이드 오프(tradeoff)를 가져올 수 있다.
가변 레이트 압축을 위해 고정 레이트 코드들을 이용하여 텍스처 압축을 수행하는 방법 및 이를 위한 압축기를 제공하는 데 있다.
본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따라, 데이터 압축기는, 명령어들(instructions)을 저장하는 메모리; 및 압축을 위해 텍스처 이미지에 접근하고, 고정 레이트 압축기(fixed rate compressor)를 기초로 자동적으로 선택된(automatically-selected) 가변적인(variable) 블록 크기들(block sizes)을 이용하여, 텍스처 이미지를 압축시키기 위해, 명령어들을 실행하도록 구성된 프로세서;를 포함할 수 있다.
다른 측면에 따라, 텍스처 데이터를 압축하는 방법은, 적어도 하나의 프로세서에 의해, 텍스처 이미지에 접근하는 단계; 및 각 블록에 대해 적어도 최소한의 압축 퀄리티를 유지하기 위해, 자동적으로 선택된 가변적인 블록 크기로, 텍스처 이미지를 압축하는 단계;를 포함할 수 있다.
또 다른 측면에 따라, 가변 레이트 압축(variable rate compression)을 위해 적어도 2개의 허용 블록 크기들을 갖는 고정 레이트 압축기를 사용하여 텍스처를 압축하는 방법은, 적어도 하나의 프로세서에 의해, 압축을 위해 텍스처 이미지에 접근하는 단계; 및 압축된 텍스처 데이터를 생성하기 위해, 고정 레이트 압축기에 의해 사용되는, 텍스처 이미지에 대한, 블록 크기를 자동적으로 변화시키는 단계를 포함하고, 텍스처 이미지에 대한 블록 크기의 변화는, 텍스처 이미지에 대한 효과적인 압축 레이트를 변화시키기 위하여 선택될 수 있다.
또 다른 측면에 따라, 텍스처 이미지들을 사용하는 방법은, 적어도 하나의 프로세서에 의해, 압축된 텍스처 데이터를 생성하기 위해 고정 레이트 압축기에 의해 사용되는 블록 크기를 자동적으로 변화시키는 가변 레이트 압축을 수행하여, 텍스처 이미지의 압축을 수행하는 단계; 텍스처의 압축된 블록 데이터를, 각 압축된 블록의 블록 크기를 인식시키고 압축된 블록 데이터에 접근하기 위한 정보를 제공하는, 메타데이터와 함께 저장하는 단계; 및 그래픽스 애플리케이션의 런타임(runtime) 중에, 텍스처의 압축된 블록들을 인출하고 압축해제하기 위해, 메타데이터를 활용하는 단계;를 포함할 수 있다.
또 다른 측면에 따라, 전술한 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체가 제공된다.
도 1은 일 실시예에 따른 시스템의 블록도를 나타낸다.
도 2는 일 실시예에 따른 가변 레이트 압축 방법을 나타낸다.
도 3은 일 실시예에 따라, 퀄리티 트레이트 오프에 기초한 가변 레이트 압축 방법을 나타낸다.
도 4는 일 실시예에 따른 블록 크기의 최적 구성을 결정하는 방법을 나타낸다.
도 5는 일 실시예에 따른 블록 크기의 최적 구성을 결정하는 방법을 나타낸다.
도 6은 일 실시예에 따른 압축 해제를 수행하는 방법을 나타낸다.
도 7은 일 실시예에 따른 여러가지 가능한 블록 세분화를 도시한다.
도 8은 일 실시예에 따른 로컬 영역에서의 블록 선택을 나타낸다.
도 9는 서로 다른 블록 구성들의 예시를 나타낸다.
도 10은 일 실시예에 따른 압축 과정을 나타낸다.
도 11은 일 실시예에 따라, 서로 일치할 필요가 없는 메모리 및 디스크 내에서의 데이터 패킹을 도시하고, 디스크 상에서 얼마나 더 높은 압축이 수행될 수 있는지를 도시한다.
본 실시예들에서 사용되는 용어는 본 실시예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.
실시예들에 대한 설명들에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 실시예들에 기재된 "...부", "...모듈"의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 도는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
하기 실시예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시예들의 권리범위에 속하는 것으로 해석되어야 할 것이다.
이하 첨부된 도면들을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다.
도 1은 일 실시예에 따른 시스템(100)의 블록도를 나타낸다. 시스템(100)은 적어도 하나의 프로세서(180) 및 메모리(190)를 포함할 수 있다. 고정 레이트 압축기(fixed rate compressor)(102)는 블록 당 고정된 개수의 비트들로 텍스처들을 압축할 수 있다. 또한, 적어도 2개의 서로 다른 허용 블록 크기들(또는 블록 타입들)을 포함하는 허용 블록 크기들의 범위가 존재할 수 있다.
일 실시예에 따라, 압축된 텍스처 데이터의 기저 구조는, 2가지 구성 요소인 메타데이터(metadata) 및 데이터를 포함할 수 있다. 텍스처 데이터는, 하나의 독립체(single entities)로 압축 및 압축 해제될 수 있는, kⅹk 픽셀 블록들의 텍셀 청크들(texel chunks)로 분할될 수 있다. 압축된 블록들은 기저 구조에서의 데이터를 형성하고, 압축된 데이터의 크기에 관한 정보 및 메모리 내에서의 압축된 데이터의 주소에 관한 정보는 메타데이터를 형성한다. 고정된 개수의 비트들이 각 블록의 데이터를 압축하기 위해 제공됨에 따라, 더 커진 블록의 경우, 텍셀 당 비트들의 개수는 줄어들 수 있다. 블록 크기의 예시적인 범위는 4ⅹ4 블록 범위, 6ⅹ6 블록 범위, 8ⅹ8 블록 범위, 및 12ⅹ12 블록 범위를 포함할 수 있지만, 추가적인 하드웨어를 최소화하기 위해 고정 레이트 압축기(102)의 허용되는 크기들과 호환되는 다른 일반적인 블록 크기들이 사용될 수 있다. 추가적인 하드웨어 요건들을 줄이기 위해, ASTC(Adaptive Scalable Texture Compression)와 같은 고정 레이트 압축을 위해 사용되는 산업 규격(industry formats) 내에서의 허용 블록 크기들과 호환되기 위해, 허용 블록 크기들의 세트가 선택될 수 있다.
압축 해제기(110)는 압축된 텍스처들을 압축 해제하기 위해 제공될 수 있다.
압축 제어부(120)는 초기 텍스처 데이터(130)에 접근할 수 있다. 일 실시예에 따라, 압축 제어부(120)는 메모리에 저장되고 프로세스에 의해 실행 가능한 컴퓨터 프로그램 명령어들을 포함할 수 있다. 일 실시예에 따라, 압축 제어부(120)는 메모리에 저장된 컴퓨터 프로그램 명령어로서 실행되는 모듈(122)을 포함할 수 있다. 모듈(122)은 다른 블록 크기들 및 블록 분할 구성들(block partitioning configurations)을 테스트하는 것을 지원(support)할 수 있다. 일 구성(a given configuration)은 허용되는 크기들 중 하나의 블록들을 포함할 수 있고, 허용되는 크기들의 둘 이상의 블록들을 포함할 수 있다. 압축된 텍스처의 각 블록에 대해, 최소한의 압축 퀄리티와 일관되는 에러 임계 테스트(error threshold test)를 만족시키면서, 전체 압축된 텍스처 크기를 최소화시키는 블록 크기들을 선택하기 위해, 제한된 최적화(constrained optimization)가 수행될 수 있다. 예를 들어, 에러 임계값은 최대 허용 가능한 RMSE(root mean square error)와 관련될 수 있다. 메모리에 저장된 컴퓨터 프로그램 명령어로서 실행 가능한 모듈(124)은, 최소 퀄리티 제한 내에 효율적인 압축을 제공하고 허용 블록 크기들과 일관되는, 최적 구성을 선택하는 것을 지원할 수 있다. 일 실시예에 따라, 압축 제어부(120)는, 퀄리티를 유지하면서도 텍스처들을 압축함에 있어서 유연성(flexibility)의 증가된 정도를 허용하면서, 퀄리티 및 압축된 블록 크기 중 하나 또는 둘을 고정적 또는 가변적으로 유지시키는 선택들을 지원할 수 있다.
개별적인 텍스처 이미지는 서로 다른 텍스처 특징을 갖는 로컬 영역들을 포함할 수 있다. 압축 제어부(120)는 퀄리티 제약을 만족시키는 단일 텍스처의 로컬 영역 내의 블록 크기를 결정할 수 있다. 추가적으로, 압축 제어부(120)는 구성들을 선택하고 테스트할 수 있고, 구성들을 통해 텍스처가 분할되고 서로 다른 블록 사이즈들로 압축될 수 있다. 텍스처 내에서 블록 크기를 변화시키는 기능은, 텍스처에 대한 가변적인 레이트 압축을 제공하기 위해 블록 크기를 변화시키는 방식에, 고정 레이트 압축기(102)가 활용되도록 허용할 수 있다.
단일 텍스처는, 주어진 크기의 블록으로 로컬 영역을 압축하기 위한 압축 에러를 결정하는, 서로 다른 텍스처 특징을 갖는 로컬 영역들을 포함할 수 있다. 예를 들어, 텍스처 이미지는 주파수 성분들의 다양화에 대응되게 세밀함의 정도가 다양화될 수 있다. 일 실시예에서, 퀄리티 제약을 유지하기 위해, 텍스처의 로컬 영역들에서 필요로하는 바에 따라, 블록 크기가 적용될 수 있다. 더 높은 주파수 성분과 연관된 텍스처의 영역들에는 더 작은 블록 크기가 이용될 수 있다. 예를 들어, 더 작은 블록 크기가, 더 높은 세밀함을 갖는 텍스처의 영역들에 이용될 수 있고, 더 큰 블록 크기가 더 낮은 세밀함을 갖는 텍스처의 영역들에 이용될 수 있다.
테스트를 위해 텍스처를 다른 가능한 블록 크기들로 분할하는 것은, MⅹM 크기의 텍셀 영역들에 대한 미리 결정된 구성들의 세트를 테스트하거나, 텍스처의 로컬 영역들 내의 블록 구성을 유연하게 결정하기 위한 규칙들의 세트를 이용하는 것과 같은, 다른 방식들에서 결정될 수 있다.
텍스처 데이터(140) 및 메타데이터(150)는 메모리(160)에 저장될 수 있고, 메모리(160)는 그래픽스 시스템 또는 그래픽스 프로세싱 유닛의 메모리 서브 시스템의 일부일 수 있다. 버스 또는 버스들(170)는 시스템(100)의 다른 영역들을 통신 가능하게 연결할 수 있다. 일 실시예에 따라, 메타데이터(150)는 의도하는 압축된 블록의 위치를 정의하는 메타데이터 사전(metadata dictionary)으로 구성될 수 있다. 메타데이터(150)는 텍셀들의 특정 블록을 대상으로 주소를 지정하고(addressing) 인출하는(fetching) 것을 가능하게 한다. 추가적으로, 메타데이터(150)는 주어진 블록에 대한 압축을 설명할 수 있다. 메타데이터(150)는 의도하는 텍스처 블록을 인출하기 위해 압축된 텍스처 스페이스로의 맵(map)을 제공할 수 있다. 메타데이터(150)는 다른 방식으로 조직화될 수 있다. 일 실시예에 따라, 메타데이터(150)는, 압축된 텍스처 데이터의 블록을 인출하고 디코딩하기 전에 접근될 수 있는, 블록 타입 및 오프셋을 저장할 수 있다. 다른 실시예에 따라, 메타데이터(150)는 오프셋이 아닌 블록 타입을 저장할 수 있다. 메타데이터(150)는 리던던트 복제 압축 블록들(redundant duplicate compressed blocks)을 나타내기 위해 저장된, 압축된 블록의 고유 복사본을 허용하는 사전으로 구성될 수 있다. 즉, 메타데이터(150)는 같은 압축된 블록을 가리키는 복수의 엔트리들을 포함할 수 있다. 일 실시예에 따라, 메타데이터(150)는 특정 블록 크기의 단위(granularity)에서 정의될 수 있다.
시스템(100)은 세밀함을 구현함에 있어 온라인 압축, 오프라인 압축, 또는 온라인 및 오프라인 압축의 조합을 지원하기 위해 이용될 수 있다. 일 예에 따라, 시스템(100)은 텍스처를 압축하기 위한 오프라인 압축을 지원할 수 있다. 예를 들어, 텍스처의 오프라인 압축은 애플리케이션 개발 프로세스(application development process) 중에 생성된 텍스처들에 대해 수행될 수 있다. 이러한 텍스처들은 애플리케이션 실행 중에 수정될 수 없고, 따라서, 오프라인 압축기를 사용하여 한번 압축될 수 있다. 또한, 애플리케이션 실행 전에 오프라인 압축이 수행되기 때문에, 이러한 압축은 압축 해제만큼 빠르게 수행될 수 없다. 일 실시예에 따라, 온라인 압축은 하드웨어에서 실행될 수 있다.
도 2는 일 실시예에 따른 가변 레이트 압축 방법을 나타낸다.
도 2는 초기 퀄리티 세팅 또는 에러 세팅에 기초하여, 압축을 위한 최적 블록 크기/구성이 압축 제어부(120)에 의해 결정되는 실시예를 나타낸다. 예를 들어, 모듈(122)은, 텍스처의 로컬 영역들 내에서, 블록 크기/블록 구성의 선택을 위해 하나 이상의 단계들을 수행할 수 있다. 최적 압축된 블록 구성의 선택은 모듈(124)에 의해 수행될 수 있다. 일 실시예에 따라, 퀄리티 세팅이 제공될 수 있다.(205) 퀄리티 세팅은 개별적인 블록들에 대한 에러 임계값과 같은 압축 기준(compression criterion)에 대응될 수 있다. 에러 임계값은 단일 조건을 만족시키는 것에 대응될 수 있다. 하지만, 더욱 일반적으로, 에러 임계값은, 상대적인 에러 조건 및 절대적인 에러 조건과 같은 두가지 이상의 조건들을 만족시키는 복합적인 임계값일 수 있다. 퀄리티 세팅은 디폴트 세팅일 수 있다. 하지만, 더욱 일반적으로는, 퀄리티 세팅은 시스템(100)의 구성요소에 의해 선택 가능할 수 있고, 압축 제어부(120)에 의해 수신된 사용자 입력에 의해 선택 가능할 수 있다. 예를 들어, 사용자 입력은 에러 임계값을 선택할 수 있다. 대안적으로, 사용자 입력은, 에러 임계값이 도출되는 둘 이상의 퀄리티 레벨 세팅들(예를 들어, 높음, 중간, 및 낮음) 중 하나를 선택할 수 있다. 일 실시예에 따라, 압축 제어부(120)에 의해 수신된 사용자 입력은, 특정 이미지 서브 영역에 대한 블록 크기/블록 타입을 선택하기 위해 이용될 수 있다. 다시 말해, 블록 크기/블록 타입을 선택하는 사용자 입력은 에러 조건으로 해석될 수 있다.
다른 블록 크기들 및 블록 배열들을 테스트하기 위해 텍스처의 로컬 영역이 선택될 수 있다.(210) 허용 블록 크기들의 세트와 일관되게, 선택된 로컬 영역 내에서 블록 크기들 및 블록 구성들이 선택될 수 있다.(215) 주어진 구성 내에서 블록들의 고정 레이트 압축이 테스트될 수 있다.(220) 텍스처 내 로컬 영역들에 대한 퀄리티 세팅들을 만족시키면서 효율적인 압축을 제공하기 위한 블록 크기들/블록 구성들이 선택될 수 있다.(225) 선택된 블록 크기/블록 구성들에 대해, 대응되는 메타데이터가 출력될 수 있다. 일 측면에 따라, 텍스처의 로컬 영역들에 대해, 블록 크기 및 블록 구성이 다양화될 수 있다. 예를 들어, 큰 크기(예로, 16X16, 32X32, 또는 64X64 영역)의 전반적인 영역 내에 4X4 및 8X8 블록들의 배열을 포함할 수 있다. 따라서, 단일 구성은 싱글 블록을 포함하거나, 서로 다른 크기의 블록들을 포함할 수 있다. 텍스처의 모든 영역들에 처리되었는지 여부가 결정될 수 있다.(230) 그렇지 않다면, 텍스처의 모든 로컬 영역들에 대해 처리되고, 퀼리티 세팅/에러 세팅에 일관되는 압축에 대해 가장 효율적인 구성을 출력할 때까지, 또 다른 로컬 영역이 선택될 수 있다.
도 3은 일 실시예에 따라, 퀄리티 트레이트 오프에 기초한 가변 레이트 압축 방법을 나타낸다.
도 3은 압축 제어부(120)의 모듈들(122, 124)에 의해 수행되는 퀄리티/압축 트레이드 오프를 선택하는 데 도움이 되는, 도 2의 방법의 변화를 도시한다. 일 실시예에 따라, 초기 에러 임계값 또는 퀄리티 세팅이 미리 선택될 수 있다.(205) 텍스처 이미지를 압축하기 위해, 초기 퀄리티 세팅에 대해, 블록 크기/구성이 결정될 수 있다.(305) 압축된 데이터의 압축 해제 버전의 퀄리티를 나타내기 위해 사용자 인터페이스가 생성될 수 있다.(310) 예를 들어, 전체 압축된 이미지의 압축 해제 버전이 어떻게 나타나는지에 대한 디스플레이를 생성하거나 압축 해제된 텍스처의 크리티컬 영역들이 어떻게 나타나는지를 지시하는 디스플레이를 생성할 수 있다.
도 4는 일 실시예에 따른 블록 크기의 최적 구성을 결정하는 방법을 나타낸다.
도 4는 일 실시예에 따른, 압축 제어부(120)의 모듈(122)에 의해 블록 구성을 결정하는 방법을 나타낸다. 일 실시예에 따라, 규칙들의 세트는, 가장 작은 허용 블록 크기로부터 시작하여, 에러 임계값을 만족시키는 가장 큰 블록 크기를 찾는 시도를 함으로써, 구성을 유동적이게 결정하기 위해 활용될 수 있다. 일 실시예에 따라, 텍스처 내의 가장 작은 허용 블록에 있어서, 방법은 텍스처의 가장 작은 블록 크기 위치를 선택하는 단계를 포함할 수 있다.(405) 각 위치에서, 에러 임계값을 통과하고, 이미 선택된 블록과 겹치지 않고, 가장 작은 허용 블록을 포함하는, 가장 큰 블록 크기를 찾기 위한 시도가 수행될 수 있다.(410) 따라서, 예를 들어, 4ⅹ4 블록의 위치가 테스트되는 경우, 4ⅹ4 블록을 포함하고 퀄리티 세팅/에러 임계값을 만족시키는, 16ⅹ16 블록과 같은, 더 큰 블록을 찾는 시도가 수행될 수 있다. 단계 415에서는, 텍스처에 대해 추가적인 블록들이 선택될 필요가 있는지 여부가 판단될 수 있다. 만약 블록들을 선택하는 프로세스가 종료된다면, 프로세스는 종료된다. 그렇지 않다면, 프로세스는 새로운 가장 작은 블록 위치를 찾기 위해 수행될 수 있다. 간단한 규칙들의 세트를 사용하여, 텍스처의 모든 영역들에 대해 퀄리티 세팅 및 에러 임계값을 만족시키고 효율적인 압축을 제공하는 블록 크기 및 블록 배열들의 구성이 결정될 수 있다.
도 5는 일 실시예에 따른 블록 크기의 최적 구성을 결정하는 방법을 나타낸다.
도 5는 일 실시예에 따른 압축 제어부(120)의 모듈들(122, 124)에 의해 블록 구성을 결정하는 방법을 나타낸다. 일 실시예에 따라, 가장 큰 허용 블록 크기(a largest allowed block size) 및 적어도 하나의 더 작은 허용 블록 크기(at least one smaller allowed block size)가 선택될 수 있다.(505) 가장 큰 허용 블록 크기의 영역에 적합한 허용 블록 크기들의 서로 다른 구성들이 결정될 수 있다.(510) 가장 큰 허용 블록 크기로써 같은 영역을 갖는 정렬된 블록 각각에 대해, 에러 임계값에 일관되는 가장 최선의 압축을 갖는 구성을 결정하기 위해 다른 구성들이 테스트될 수 있다.(515) 예를 들어, 가장 큰 블록 크기가 12ⅹ12인 경우, 각 정렬된 12ⅹ12 영역 내에서, 12ⅹ12 영역에 적합한 다른 허용 블록 크기들의 가능한 구성들이 테스트될 수 있다.
도 6은 일 실시예에 따른 압축 해제를 수행하는 방법을 나타낸다.
도 6은 일 실시예에 따라, 텍스처 요청을, 압축 해제기(110)에 의해 처리될 수 있는 압축된 블록으로 전환시키는 방법을 도시한다. 방법은, 메타데이터(150) 내의 정보에 접근하는 압축 해제기(110)에 의해 수행될 수 있다. 일 실시예에 따라, 좌표-블록 전환(610)을 위해, (u,v) 텍셀 좌표(605)가 제공될 수 있다. 블록에 대한 메타데이터 인출이 수행될 수 있다.(615) 메타데이터는 분석(parse)될 수 있고,(620) 압축된 텍스처 데이터의 압축된 텍스처 블록 인출(625)을 수행하기 위해, 메타데이터는 압축된 텍스처 스페이스로의 맵을 제공하는데 이용될 수 있다.
메타데이터는, 세밀함 구현에 따라, 블록 단위(block granularity)의 다른 레벨들에서 정의될 수 있다. 메타데이터는 각 블록에 대해 블록 크기 및 다른 사항들에 대해 인식할 수 있다. 다른 블록 크기들이 허용되는 동안, 메타 데이터는 선택된 블록 크기의 단위(granularity)에서 정의될 수 있다. 예를 들어, 메타 데이터는 가장 세밀한(finest) 레벨의 단위 또는 가장 조악한(coarsest) 레벨의 단위에서 정의될 수 있다. 일 예에 따라, 가장 세밀한 단위가 4ⅹ4 블록인 경우, 메타데이터는 4ⅹ4 블록의 레벨에서 정의될 수 있다. 대안적으로, 가장 조악한 레벨의 단위가 12ⅹ12 블록인 경우, 메타데이터는 12ⅹ12 블록 레벨에서 정의될 수 있다.
본 발명은 둘 이상의 서로 다른 블록 크기들을 갖는 고정 레이트 압축 방식과 함께 이용될 수 있다. 일 실시예에 따라, 가변적인 레이트 압축은 ASTC의 블록 영역과 호환 가능한 고정 블록 크기를 활용할 수 있다.
세밀한 레벨의 단위에서의 메타데이터의 일 예에 따라, 지원 가능한 블록 크기들인 4ⅹ4, 8ⅹ8, 12ⅹ12 블록들 및 최소 허용 블록 크기인 4ⅹ4 블록들에 대한 예를 고려할 수 있다. 일 예에 따라, 허용 블록 크기들은 ASTC와 호환 가능할 수 있다.
이러한 예에서, 4ⅹ4 블록은 다음 15개 구성들 중 어느 하나에 속할 수 있다.
- 같은 값을 갖는 픽셀들이 포함된 a/flat/constant block
- 4ⅹ4 블록
- 8ⅹ8 블록 내의 4개의 서브 블록들 중 어느 하나
- 12ⅹ12 블록 내의 9개의 서브 블록들 중 어느 하나
15개 구성들은, byte aligned bit를 유지시키기 위해 20비트 블록 오프셋으로 증가된, 4비트 코드를 이용하여 표현될 수 있다. 그 결과, 4ⅹ4 블록에 대응되는 3 바이트 길이의 메타데이터가 될 수 있다. 일 예에 따라, 2개의 4비트 코드값들은 플랫 블록들을 가리킬 수 있고, 첫번째 비트는 16바이트의 압축된 블록의 첫번째 절반에서의 저장을 나타내고, 두번째 비트는 나머지 절반을 나타낼 수 있다. 압축기는, 텍스처 데이터의 캐시 메커니즘의 히트 레이트를 향상시키는 차원에서, 유사한 블록들이 동일 메모리 위치들을 가리키도록 하기 위해, 이러한 데이터 레이아웃을 활용할 수 있다.
일 실시예에 따라, 고정된 텍스처 내의 나열된 각 4ⅹ4 블록에 대해, 다음과 같은 엔트리들과 같이, 메타데이터 사전의 메타데이터 테이블 내의 행(row)이 존재할 수 있다.
1) 다음 a) 내지 d)를 포함하는 블록 타입을 나타내는 4비트들
a) 플랫/유니폼 블록. 플랫/유니폼 블록은 블록 내의 모든 픽셀들이 같은 색을 갖는 블록이다.
b) 4ⅹ4 ASTC 블록;
c) 8ⅹ8 ASTC 블록 내의 4개의 서브 블록들 중 하나
d) 12ⅹ12 ASTC 블록 내의 9개의 서브 블록들 중 하나
2) 블록 오프셋을 나타내는 20개 비트들, 블록 오프셋 내에서,
a) ASTC 블록들은 항상 16바이트의 폭(wide)이 될 수 있고,
b) 플랫 블록들: Sizeof(texel)<=20비트들인 경우, 20비트들이 오프셋 대신 색값을 나타낸다.
메타데이터의 다른 실시예는, 8비트의 스토리지(storage), 메타데이터 자체 내의 4 채널 칼라값들을 허용하는, 32비트 블록 오프셋을 포함할 수 있고, 이에 따라, 4ⅹ4 블록 당 36비트들인 메타데이터 크기가 가능해질 수 있다.
일 실시예에 따라, 압축 프로세스는 에러 임계 앱실론(epsilon)(ε)과 함께 시작할 수 있다. 원칙적으로, 디폴트 에러 임계 앱실론이 사용될 수 있다. 일 실시예에 따라, 에러 임계 앱실론은 사용자 입력에 기초하여 선택될 수 있고, 이에 따라 최대로 허용되는 평균 제곱근 에러(RMSE:Root Mean Squared Error)가 정의될 수 있다. 에러 임계는 사용자 입력에 의해 직접적으로 선택될 수 있거나, 다른 퀄리티 레벨들을 설정하는 것과 같이 간접적으로 선택될 수 있다.
일 실시예에 따라, 압축 코드는, 해당 크기의 최적 ASTC 압축 블록을 반환하는, 4ⅹ4, 8ⅹ8, 또는 12ⅹ12 크기의 블록들이 제공되는, 참조 ASTC 블록 압축 코덱을 이용할 수 있다. 일 실시예에 따라, 각 블록은 ASTC 압축 코드에 따라 압축될 수 있고, RMSE 값은 원래 픽셀 데이터와 비교되어 압축된 데이터에 대해 결정될 수 있고, 블리안 값(Boolean value)은 특정 블록 크기 및 압축된 데이터가 특정 에러 임계값 내인지 여부를 나타내기 위해, 반환될 수 있다.
압축 프로세스는, 각 개별 블록에 대해 에러 임계값을 만족시키면서 압축된 텍스처 크기를 최소화 하기 위한 제한된 최적화 문제로 제기될 수 있다. 이러한 최적화는 실제로 NP-complete이 될 수 있다.(여기서 NP는 "nondeterministic polynomial time"을 지칭한다.) 하지만, 압축 프로세스의 다양한 변화가 가능할 수 있다.
일 실시예에 따라, ASTC 호환 프로세스는, 각 허용 블록 크기에 대해, 텍스처를 해당 사이즈의 블록들로 세분화하는 과정 및 ASTC 코덱을 이용하여 각 블록을 압축하는 과정을 포함할 수 있다. 예를 들어, 4ⅹ4, 8ⅹ8, 및 12ⅹ12인 블록 크기에 대해, 다음과 같이 로컬 영역에서의 분할이 이루어질 수 있다.
- 정렬된 4ⅹ4 블록들(1가지 가능성)
- 8ⅹ8 블록들(4가지 가능성)
- 12ⅹ12 블록들(9가지 가능성)
도 7은 일 실시예에 따른 여러가지 가능한 블록 세분화를 도시한다.
도 7은 4ⅹ4 및 8ⅹ8 블록들을 이용하여 여러가지 가능한 블록 세분화를 도시한다. 다만, 12ⅹ12 구성도 가능할 수 있으나, 표현의 명료함을 위해 생략하였다. 그림(705)는 로컬 영역이 4ⅹ4 블록들을 포함하는 것을 나타낸다. 그림(710)은 로컬 영역이 8ⅹ8 블록들을 포함하는 것을 나타낸다. 그림(715,720,725)는 로컬 영역이 4ⅹ4 및 8ⅹ8 블록들의 조합을 포함하는 것을 나타낸다.
일 실시예에 따라, 규칙들의 일 세트는, 가장 작은 블록 크기(a smallest block size)의 위치로부터 그리디하게("greedily") 시작하여 에러 임계값 및 이전의 선택과 일관되는 더 큰 블록 크기(a larger block size)를 찾는 시도에 기초하여, 블록 크기를 결정하기 위해 이용될 수 있다. 일 실시예에 따라, 텍스처 내의 각 4ⅹ4 블록에 대해, 하기 사항들을 만족하는 12ⅹ12 및 8ⅹ8 블록들을 그리디하게(greedily) 찾는 시도가 수행될 수 있다.
- 문제(question)의 4ⅹ4 블록을 포함할 것
- 에러 임계값을 통과할 것
- 이미 선택된 어떤 블록과 겹치지 않을 것
도 8은 일 실시예에 따른 로컬 영역에서의 블록 선택을 나타낸다.
도 8은 조건들인 a) 문제의 4ⅹ4 블록을 포함하고, b) 에러 임계값을 통과하고, c) 이미 선택된 어떤 블록과 겹치지 않는 가장 큰 블록 크기를 찾는 그리디한 시도에 의해 결정된, 가능한 블록 선택의 예를 나타낸다. 도 8의 예에서, 프로세스는 상당히 분할된 방식에서 텍스처를 분할하는 자유도를 갖을 수 있다. 이러한 예에서, 4ⅹ4, 8ⅹ8 및 12ⅹ12 블록들이 로컬 영역에서 선택될 수 있다.
추가적으로, 압축된 블록들에서의 리던던시(redundancy)를 방지하기 위한 실시예에서, 동일한 압축된 표현을 갖는 블록들이 여러 번 저장되지 않기 위해, 리던던시-제거 구조가 이용될 수 있다. 블록 오프셋이 블록 데이터의 가장 최근 기록된 복사본을 가리키도록 하여, 블록들의 반복(recurrence)이 방지될 수 있다. 해쉬 맵(hash maps) 및 VP Trees를 비롯한, 복수의 리던던시-제거 구조들이 가능할 수 있다. (예를 들어, "Data structures and algorithms for nearest neighbor search in general metric spaces" by Peter Yianilos, Proceedings of the fourth annual ACM-SIAM Symposium on Discrete algorithms, 1993, pages 311-321)
고차원 공간에서의 포인트들의 일 세트, 및 두 포인트들 간의 간격을 정의하는 거리 메트릭(distance metric)이 주어지는 경우, 질의 포인트(query point)에 대해 일 세트 내에 가장 가까운 이웃을 찾기 위한 효율적인 방법이 제공될 수 있다. 본 발명의 경우, 거리 메트릭이 픽셀 값들간의 차이인 경우, 고차원 포인트는, 일 예에 따른 유클리디언 거리(Euclidean distance)와 같은 거리 메트릭을 이용하여 표현될 수 있는, 텍셀들의 블록이 될 수 있다. 질의는, 가장 가까운 이웃이 리던던트(redundant) 블록을 나타내는 질의 포인트로부터 거리 0에 위치하는지 여부에 대해 확인할 수 있다. 만약 거리가 0보다 크다면, 질의 포인트는 일 세트에 포함되어야 한다.
대안적인 실시예에서, 메타데이터는, 12ⅹ12 블록당 한 행과 같이, 낮은 레벨의 단위에서 유지될 수 있다. 이것은 픽셀 당 메타데이터의 양을 낮출 수 있으나 압축 중에, 블록들의 구성을 제한할 수 있다. 결과적으로, 도 9에서 도시되는 것처럼, 압축 알고리즘은 더 적은 구성들에 대해 테스트할 수 있다. 예를 들어, 도 9와 같이, 허용 블록 크기가 4ⅹ4, 6ⅹ6, 8ⅹ8 및 12ⅹ12인 경우, 12ⅹ12 영역에 대해 7가지 가능한 구성들이 있을 수 있다. 즉, 4ⅹ4 블록들로만 조합된 1가지 구성, 5개의 4ⅹ4 블록들과 1개의 8ⅹ8 블록으로 조합된 4가지 구성, 6ⅹ6 블록들로만 조합된 1가지 구성, 12ⅹ12 블록으로 조합된 1가지 구성이 있을 수 있다.
이 경우, 메타 데이터는 7가지 가능한 구성들 중 하나를 인식하는 3비트 블록 타입 및 21비트 블록 오프셋을 포함할 수 있다.
도 10은 일 실시예에 따른 압축 과정을 나타낸다.
도 10은 일 실시예에 따른, 압축 제어부(120)에 의해 수행되는 압축 순서도를 나타낸다. 12ⅹ12 크기에 대응되는 나열된 픽셀들 블록이 액세스될 수 있다. 이어서, 압축되고 에러 테스트가 수행될 수 있다. 단일 12ⅹ12 블록으로써의 압축이 에러 임계값을 만족시키는 경우, 12ⅹ12 구성이 이용될 수 있다. 그렇지 않다면, 6ⅹ6 블록들로 이루어진 구성이 압축될 수 있다. 에러 테스트를 만족하는 경우, 6ⅹ6 블록 구성이 이용될 수 있다. 그렇지 않다면, 8ⅹ8 블록들의 각 구성이 압축되고 테스트될 수 있다. 8ⅹ8 구성들 중 어느 하나가 에러 임계값을 만족시키는 경우, 어느 하나가 선택될 수 있다. 그렇지 않은 경우, 4ⅹ4 블록들이 이용될 수 있다.
도 11은 일 실시예에 따라, 서로 일치할 필요가 없는 메모리 및 디스크 내에서의 데이터 패킹을 도시하고, 얼마나 더 높은 압축이 수행될 수 있는지를 도시한다. 일 실시예에 따라, 디스크에 저장된 압축 데이터 내에서 메타데이터 오버헤드는 감소될 수 있다. 압축된 텍스처를 파일(1100)에 기록하는 경우, 압축된 파일 내에서 근접하게 저장된 압축 데이터를 갖는 12ⅹ12 블록들이 존재하는, 데이터 섹션에서 패킹이 수행될 수 있다. 이는, 각 압축된 12ⅹ12 블록에 대해 데이터 크기를 결정하기 위해 사용되는 3비트 블록 타입을 의미할 수 있고, 이러한 메타데이터는 파일 헤더에 저장될 수 있다. 일 실시예에서, 소프트웨어 또는 하드웨어 내의 메타데이터 압축해제기(1180)는 파일로부터 메모리(1150)로 12ⅹ12 블록들을 스트리밍할 수 있고, 캐시 라인 단위(cache line granularity)를 보장하면서도 적절히 스토리지 압축을 해제할 수 있다. 이러한 동작 중에, 압축 해제기(1180)는, 메모리 주소 공간 내의 압축된 블록의 위치에 의존하는 21비트 블록 오프셋을 생성할 수 있다.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. "매커니즘", "요소", "수단", "구성"과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다. 또한, 본 명세서에서 개시하는 내용 및 방법은 하드웨어 장치들, FPGAs(Field Programmable Gate Arrays), 또는 ASICs(Application Specific Integrated Circuits)를 이용하여 수행될 수 있다.
본 실시 예에서 설명하는 특정 실행들은 예시들로서, 어떠한 방법으로도 기술적 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다.
본 명세서(특히 특허청구범위에서)에서 "상기"의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 한정되는 것은 아니다. 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 기술적 사상을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.

Claims (24)

  1. 데이터 압축기(data compressor)에 있어서,
    명령어들(instructions)을 저장하는 메모리; 및
    압축을 위해 텍스처 이미지에 접근하고, 고정 레이트 압축기(fixed rate compressor)를 기초로, 자동적으로 선택된(automatically-selected) 가변적인(variable) 블록 크기들(block sizes)을 이용하여, 상기 텍스처 이미지를 압축시키기 위해, 상기 명령어들을 실행하도록 구성된 프로세서;를 포함하는, 데이터 압축기.
  2. 제 1 항에 있어서,
    상기 고정 레이트 압축기는 적어도 2개의 다른 허용 블록 크기들(allowed block sizes)을 갖고,
    상기 명령어들은, 상기 텍스처 이미지에 대한 블록 크기를 변하게 하여 상기 텍스처 이미지에 대한 효과적인 압축 레이트를 변하게 하는 명령어를 포함하는, 데이터 압축기.
  3. 제 2 항에 있어서,
    상기 명령어들은, 각 블록에서 적어도 최소한의 압축 퀄리티를 유지하기 위해, 상기 텍스처 이미지의 로컬 특징들에 기초하여, 자동적으로 상기 블록 크기를 조정하는 명령어를 포함하는, 데이터 압축기.
  4. 제 1 항에 있어서,
    상기 명령어들은, 압축 효율(compression efficiency)과 압축 퀄리티에 기초하여, 상기 텍스처 이미지를 소정의 크기를 갖는 블록들로 분할하는 것을 자동적으로 결정하는 명령어를 포함하는, 데이터 압축기.
  5. 제 1 항에 있어서,
    상기 명령어들은, 압축된 텍스처 크기를 최소화하고, 최소 압축 퀄리티를 나타내는 각 블록에 대한 에러 임계 테스트를 만족시키는 제약(constraints)에 기초하여, 상기 텍스처 이미지에 대한 상기 블록 크기를 독립적으로 선택하는 명령어를 포함하는, 데이터 압축기.
  6. 제 5 항에 있어서,
    사용자 입력을 수신하는 제어부;를 더 포함하고,
    상기 사용자 입력에 의해 에러 임계값(error threshold)이 결정되는, 데이터 압축기.
  7. 제 1 항에 있어서,
    압축된 텍스처 데이터는 상기 메모리에 저장되고,
    상기 명령어들은, 압축된 각 블록의 블록 크기 및 각 압축된 블록을 상기 메모리로부터 인출(fetch)하기 위한 오프셋(offset)을 나타내는, 메타데이터를 생성하기 위한 명령어를 포함하는, 데이터 압축기.
  8. 제 7 항에 있어서,
    상기 메타데이터는 리던던트 블록들(redundant blocks)의 각 인스턴스를 저장될 각 압축된 블록의 복사본(copy)과 연동시키는, 데이터 압축기.
  9. 제 1 항에 있어서,
    상기 블록 크기들은, 4 x 4 블록들, 6 x 6 블록들, 8 x 8 블록들 및 12 x 12 블록들로 구성된 그룹으로부터 선택된 적어도 2개의 블록 크기들로부터, 선택되는, 데이터 압축기.
  10. 제 1 항에 있어서,
    상기 명령어들은, 적어도 2개의 다른 블록 크기 구성들 중 어느 하나에 기초하여, 상기 텍스처 이미지를 로컬 영역들로 분할하는 명령어를 포함하는, 데이터 압축기.
  11. 제 1 항에 있어서,
    상기 명령어들은, 상기 텍스처 이미지를 서로 다른 크기들의 블록들로 분할하는 것을 결정하는 적어도 하나의 규칙을 포함하는, 데이터 압축기.
  12. 텍스처 데이터를 압축하는 방법에 있어서,
    적어도 하나의 프로세서에 의해, 텍스처 이미지에 접근하는 단계; 및
    각 블록에 대해 적어도 최소한의 압축 퀄리티를 유지하기 위해, 자동적으로 선택된 가변적인 블록 크기로, 상기 텍스처 이미지를 압축하는 단계;를 포함하는, 방법.
  13. 제 12 항에 있어서,
    상기 압축하는 단계는,
    적어도 2개의 다른 블록 크기들의 세트에 기초하여, 상기 텍스처 이미지에 대해 상기 블록 크기를 조정하는 단계를 포함하는, 방법.
  14. 제 12 항에 있어서,
    블록 크기 및 각 압축된 블록의 주소를 지정하기 위한 오프셋을 나타내는 메타데이터를 생성하는 단계를 더 포함하는, 방법.
  15. 가변 레이트 압축(variable rate compression)을 위해 적어도 2개의 허용 블록 크기들을 갖는 고정 레이트 압축기를 사용하여 텍스처를 압축하는 방법에 있어서,
    적어도 하나의 프로세서에 의해, 압축을 위해 텍스처 이미지에 접근하는 단계; 및
    압축된 텍스처 데이터를 생성하기 위해, 상기 고정 레이트 압축기에 의해 사용되는, 상기 텍스처 이미지에 대한, 블록 크기를 자동적으로 변화시키는 단계를 포함하고,
    상기 텍스처 이미지에 대한 블록 크기의 변화는, 상기 텍스처 이미지에 대한 효과적인 압축 레이트를 변화시키기 위하여 선택되는, 방법.
  16. 제 15 항에 있어서,
    상기 블록 크기의 변화는, 상기 텍스처의 각 압축된 블록에 대해 적어도 최소한의 압축 퀄리티를 성취하기 위하여 선택되는, 방법.
  17. 제 15 항에 있어서,
    상기 블록 크기의 변화는, 상기 텍스처의 각 압축된 블록에 대해 적어도 최소한의 압축 비율(compression ratio)을 성취하기 위하여 선택되는, 방법.
  18. 제 15 항에 있어서,
    상기 블록 크기의 변화는, 상기 텍스처 이미지의 압축 크기를 최소화하기 위해 선택되고, 상기 블록 크기의 변화는, 상기 텍스처의 각 압축된 블록에 대해 적어도 최소한의 압축 퀄리티를 달성하기 위하여 선택되는, 방법.
  19. 제 15 항에 있어서,
    블록 크기 및 압축된 텍스처 이미지의 압축된 블록들을 메모리로부터 인출(fetch)하기 위한 오프셋(offset)을 나타내는, 메타데이터를 생성하는 단계를 더 포함하는, 방법.
  20. 텍스처 이미지들을 사용하는 방법에 있어서,
    적어도 하나의 프로세서에 의해, 압축된 텍스처 데이터를 생성하기 위해 고정 레이트 압축기에 의해 사용되는 블록 크기를 자동적으로 변화시키는 가변 레이트 압축을 수행하여, 텍스처 이미지의 압축을 수행하는 단계;
    상기 텍스처의 압축된 블록 데이터를, 각 압축된 블록의 블록 크기를 인식시키고 상기 압축된 블록 데이터에 접근하기 위한 정보를 제공하는, 메타데이터와 함께 저장하는 단계; 및
    그래픽스 애플리케이션의 런타임(runtime) 중에, 상기 텍스처의 압축된 블록들을 인출하고 압축해제하기 위해, 상기 메타데이터를 활용하는 단계;를 포함하는, 방법.
  21. 제 20 항에 있어서,
    상기 가변 레이트 압축은, 블록 당 최소한의 퀄리티 임계값의 제약을 대상으로 수행되는, 방법.
  22. 제 20 항에 있어서,
    상기 압축을 수행하는 단계는,
    적어도 둘의 다른 고정 레이트 블록 포맷들로부터 상기 블록 크기를 선택하는 단계를 포함하는, 방법.
  23. 제 20 항에 있어서,
    상기 압축은 오프라인(offline)으로 수행되는, 방법.
  24. 제 12 항 내지 제 23 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020160057807A 2015-05-29 2016-05-11 가변 레이트 텍스처 압축을 수행하는 방법 및 압축기 KR102606241B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201562168594P 2015-05-29 2015-05-29
US62/168,594 2015-05-29
US201562233203P 2015-09-25 2015-09-25
US62/233,203 2015-09-25
US15/098,066 US10244250B2 (en) 2015-05-29 2016-04-13 Variable-rate texture compression using fixed-rate codes
US15/098,066 2016-04-13

Publications (2)

Publication Number Publication Date
KR20160140381A true KR20160140381A (ko) 2016-12-07
KR102606241B1 KR102606241B1 (ko) 2023-11-24

Family

ID=57399498

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160057807A KR102606241B1 (ko) 2015-05-29 2016-05-11 가변 레이트 텍스처 압축을 수행하는 방법 및 압축기

Country Status (2)

Country Link
US (1) US10244250B2 (ko)
KR (1) KR102606241B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10602174B2 (en) * 2016-08-04 2020-03-24 Intel Corporation Lossless pixel compression for random video memory access
US10715818B2 (en) 2016-08-04 2020-07-14 Intel Corporation Techniques for hardware video encoding
US10403003B2 (en) 2017-04-24 2019-09-03 Intel Corporation Compression mechanism
US10291925B2 (en) 2017-07-28 2019-05-14 Intel Corporation Techniques for hardware video encoding
US11025913B2 (en) 2019-03-01 2021-06-01 Intel Corporation Encoding video using palette prediction and intra-block copy
US10887589B2 (en) * 2019-04-12 2021-01-05 Realnetworks, Inc. Block size determination for video coding systems and methods
US10855983B2 (en) 2019-06-13 2020-12-01 Intel Corporation Encoding video using two-stage intra search
US11144208B2 (en) * 2019-12-23 2021-10-12 Advanced Micro Devices, Inc. Data compression system using base values and methods thereof
CN111968190B (zh) * 2020-08-21 2024-02-09 网易(杭州)网络有限公司 游戏贴图的压缩方法、装置和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090202159A1 (en) * 2006-04-20 2009-08-13 Telefonaktiebolaget Lm Ericsson (Publ) Image Processing
KR20120118501A (ko) * 2010-02-17 2012-10-26 경희대학교 산학협력단 코딩 구조

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141446A (en) * 1994-09-21 2000-10-31 Ricoh Company, Ltd. Compression and decompression system with reversible wavelets and lossy reconstruction
US5892517A (en) * 1996-01-02 1999-04-06 Integrated Device Technology, Inc. Shared access texturing of computer graphic images
US6381364B1 (en) * 1996-12-31 2002-04-30 Intel Corporation Content texture sensitive picture/video encoder/decoder
US5956431A (en) * 1997-10-02 1999-09-21 S3 Incorporated System and method for fixed-rate block-based image compression with inferred pixel values
US6658146B1 (en) * 1997-10-02 2003-12-02 S3 Graphics Co., Ltd. Fixed-rate block-based image compression with inferred pixel values
US6683978B1 (en) * 1997-10-02 2004-01-27 S3 Graphics Co., Ltd. Fixed-rate block-based image compression with inferred pixel values
US6775417B2 (en) * 1997-10-02 2004-08-10 S3 Graphics Co., Ltd. Fixed-rate block-based image compression with inferred pixel values
JP3264245B2 (ja) * 1998-04-03 2002-03-11 ソニー株式会社 画像情報処理装置
US6956667B2 (en) 1999-12-24 2005-10-18 Agfa Gevaert N. V. Page composing method using stored page elements and apparatus for using the same
US7139437B2 (en) 2002-11-12 2006-11-21 Eastman Kodak Company Method and system for removing artifacts in compressed images
US20040103215A1 (en) 2002-11-26 2004-05-27 Bmc Software, Inc. Selective compression of web-based data transmissions
US7254271B2 (en) 2003-03-05 2007-08-07 Seadragon Software, Inc. Method for encoding and serving geospatial or other vector data as images
US7606427B2 (en) * 2004-07-08 2009-10-20 Qualcomm Incorporated Efficient rate control techniques for video encoding
JP4199170B2 (ja) * 2004-07-20 2008-12-17 株式会社東芝 高次元テクスチャマッピング装置、方法及びプログラム
US9418450B2 (en) * 2006-08-31 2016-08-16 Ati Technologies Ulc Texture compression techniques
US8218640B2 (en) 2006-10-31 2012-07-10 Sony Computer Entertainment Inc. Picture decoding using same-picture reference for pixel reconstruction
WO2008070173A1 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage
WO2008085377A2 (en) 2006-12-28 2008-07-17 Thomson Licensing Banding artifact detection in digital video content
JP4921335B2 (ja) 2007-12-10 2012-04-25 キヤノン株式会社 ドキュメント処理装置及び検索方法
EP2380353B1 (en) * 2009-01-19 2017-11-08 Telefonaktiebolaget LM Ericsson (publ) Image processing for memory compression
US9582222B2 (en) 2009-04-30 2017-02-28 Western Digital Technologies, Inc. Pre-cache similarity-based delta compression for use in a data storage system
US8860781B2 (en) * 2009-06-30 2014-10-14 Qualcomm Incorporated Texture compression in a video decoder for efficient 2D-3D rendering
US8478057B1 (en) 2010-01-22 2013-07-02 Google Inc. Image compression and decompression using block prediction
WO2012082029A1 (en) * 2010-12-14 2012-06-21 Telefonaktiebolaget L M Ericsson (Publ) Method and device for storing a compression ratio indication in a pixel value buffer in tile encoding
US20120218292A1 (en) 2011-02-10 2012-08-30 Ncomputing Inc. System and method for multistage optimized jpeg output
GB2491688B (en) * 2011-05-05 2014-08-27 Advanced Risc Mach Ltd Method of and apparatus for encoding and decoding data
US20120294365A1 (en) * 2011-05-17 2012-11-22 Dong Zheng Image and video encoding and decoding
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US8861875B1 (en) 2011-07-29 2014-10-14 Teradici Corporation Method and apparatus for encoding changed image regions
GB2495301B (en) * 2011-09-30 2018-01-17 Advanced Risc Mach Ltd Method of and apparatus for encoding data
US20130148740A1 (en) 2011-12-09 2013-06-13 Qualcomm Incorporated Method and apparatus for processing partial video frame data
US9020294B2 (en) * 2012-01-18 2015-04-28 Dolby Laboratories Licensing Corporation Spatiotemporal metrics for rate distortion optimization
US9230340B2 (en) * 2012-05-04 2016-01-05 Semiconductor Components Industries, Llc Imaging systems with programmable fixed rate codecs
US20140072242A1 (en) 2012-09-10 2014-03-13 Hao Wei Method for increasing image resolution
US9336558B2 (en) 2013-09-27 2016-05-10 Apple Inc. Wavefront encoding with parallel bit stream encoding
TWI538480B (zh) * 2014-05-27 2016-06-11 敦泰電子股份有限公司 藉由偵測鄰近像素複雜度來動態調整壓縮參數的影像壓縮系統
US9947071B2 (en) * 2014-06-27 2018-04-17 Samsung Electronics Co., Ltd. Texture pipeline with online variable rate dictionary compression

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090202159A1 (en) * 2006-04-20 2009-08-13 Telefonaktiebolaget Lm Ericsson (Publ) Image Processing
KR20120118501A (ko) * 2010-02-17 2012-10-26 경희대학교 산학협력단 코딩 구조
KR101354014B1 (ko) * 2010-02-17 2014-01-23 경희대학교 산학협력단 코딩 구조

Also Published As

Publication number Publication date
US10244250B2 (en) 2019-03-26
KR102606241B1 (ko) 2023-11-24
US20160353122A1 (en) 2016-12-01

Similar Documents

Publication Publication Date Title
KR20160140381A (ko) 가변 레이트 텍스처 압축을 수행하는 방법 및 압축기
US9048862B2 (en) Systems and methods for selecting data compression for storage data in a storage system
KR102381944B1 (ko) 주파수 압축과 텍스처 파이프라인
US9478002B2 (en) Vertex parameter data compression
CN106030652B (zh) 提供输出面的方法、系统和合成显示控制器及计算机介质
US8674858B2 (en) Method for compression and real-time decompression of executable code
CN111507465B (zh) 一种可配置的卷积神经网络处理器电路
EP4390706A1 (en) Embedded vector prefetching method, apparatus and system, and related device
US11424761B2 (en) Multiple symbol decoder
US11194498B1 (en) Inline compression with small-write compression avoidance
CN113504874B (zh) 基于负载感知的自适应粒度纠删码编解码加速方法及系统
KR20220100030A (ko) 패턴 기반 캐시 블록 압축
CN112395216A (zh) 用于存储管理的方法、装置、设备和计算机可读存储介质
CN110134342A (zh) 数据近似方法及系统、存储方法及系统、读取方法及系统
US11928134B1 (en) Medoid-based data compression
US11418212B2 (en) Parallel decoding techniques
US11947512B2 (en) Feedback-based inverted index compression
CN116894457B (zh) 深度学习模型的网络权重存取方法
US11354038B2 (en) Providing random access to variable-length data
JP2010287114A (ja) データ格納方法及びデータ格納装置
CN1312845C (zh) 记录压缩编码表于虚拟只读存储器的方法及装置
CN117331497A (zh) 一种磁盘阵列算法任务处理方法、装置、设备及介质
CN116450047A (zh) Ssd数据仿真处理方法、装置、计算机设备及存储介质
CN116339627A (zh) 一种适用于低精度存储设备的数据模糊处理方法及装置
CN116318168A (zh) 一种数据无损压缩存储的方法

Legal Events

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