Geometry Compression Michael Deering, Sun Microsystems SIGGRAPH (1995) Presented by: Michael Chung.

Slides:



Advertisements
Similar presentations
Instruction Set Design
Advertisements

Normal Map Compression with ATI 3Dc™ Jonathan Zarge ATI Research Inc.
Image Compression. Data and information Data is not the same thing as information. Data is the means with which information is expressed. The amount of.
Michael Alves, Patrick Dugan, Robert Daniels, Carlos Vicuna
File Processing - Organizing file for Performance MVNC1 Organizing Files for Performance Chapter 6 Jim Skon.
The Assembly Language Level
SWE 423: Multimedia Systems
School of Computing Science Simon Fraser University
CPSC 231 Organizing Files for Performance (D.H.) 1 LEARNING OBJECTIVES Data compression. Reclaiming space in files. Compaction. Searching. Sorting, Keysorting.
Department of Computer Engineering University of California at Santa Cruz Data Compression (3) Hai Tao.
A Data Compression Algorithm: Huffman Compression
Chapter 1 Data Storage. 2 Chapter 1: Data Storage 1.1 Bits and Their Storage 1.2 Main Memory 1.3 Mass Storage 1.4 Representing Information as Bit Patterns.
An Approach to Generalized Hashing Michael Klipper With Dan Blandford Guy Blelloch.
T.Sharon-A.Frank 1 Multimedia Image Compression 2 T.Sharon-A.Frank Coding Techniques – Hybrid.
CS430 © 2006 Ray S. Babcock Lossy Compression Examples JPEG MPEG JPEG MPEG.
University of Texas at Austin CS 378 – Game Technology Don Fussell CS 378: Computer Game Technology Beyond Meshes Spring 2012.
Spatial data Visualization spatial data Ruslan Bobov
Software Research Image Compression Mohamed N. Ahmed, Ph.D.
CSE Lectures 22 – Huffman codes
CS559-Computer Graphics Copyright Stephen Chenney Image File Formats How big is the image? –All files in some way store width and height How is the image.
Lecture 10 Data Compression.
CS 1308 Computer Literacy and the Internet. Creating Digital Pictures  A traditional photograph is an analog representation of an image.  Digitizing.
Chapter 2 Source Coding (part 2)
Department of Physics and Astronomy DIGITAL IMAGE PROCESSING
Lab #5-6 Follow-Up: More Python; Images Images ● A signal (e.g. sound, temperature infrared sensor reading) is a single (one- dimensional) quantity that.
: Chapter 12: Image Compression 1 Montri Karnjanadecha ac.th/~montri Image Processing.
1 Perception, Illusion and VR HNRS 299, Spring 2008 Lecture 14 Introduction to Computer Graphics.
Chapter 3 Digital Representation of Geographic Data.
Data Compression By, Keerthi Gundapaneni. Introduction Data Compression is an very effective means to save storage space and network bandwidth. A large.
JPEG image compression Group 7 Arvind Babel (y07uc024) Nikhil Agarwal (y08uc086)
1 i206: Lecture 2: Computer Architecture, Binary Encodings, and Data Representation Marti Hearst Spring 2012.
Classifying GPR Machines TypeNumber of Operands Memory Operands Examples Register- Register 30 SPARC, MIPS, etc. Register- Memory 21 Intel 80x86, Motorola.
Data Compression. Compression? Compression refers to the ways in which the amount of data needed to store an image or other file can be reduced. This.
Image Compression (Chapter 8) CSC 446 Lecturer: Nada ALZaben.
Image Synthesis Rabie A. Ramadan, PhD 1. 2 About my self Rabie A. Ramadan My website and publications
CMSC 100 Storing Data: Huffman Codes and Image Representation Professor Marie desJardins Tuesday, September 18, 2012 Tue 9/18/12 1CMSC Data Compression.
Addressing Image Compression Techniques on current Internet Technologies By: Eduardo J. Moreira & Onyeka Ezenwoye CIS-6931 Term Paper.
Digital Image Processing Image Compression
Lossless Compression CIS 465 Multimedia. Compression Compression: the process of coding that will effectively reduce the total number of bits needed to.
Image Compression – Fundamentals and Lossless Compression Techniques
Image Compression Fasih ur Rehman. Goal of Compression Reduce the amount of data required to represent a given quantity of information Reduce relative.
COMPRESSION. Compression in General: Why Compress? So Many Bits, So Little Time (Space) CD audio rate: 2 * 2 * 8 * = 1,411,200 bps CD audio storage:
Lecture 11: 10/1/2002CS170 Fall CS170 Computer Organization and Architecture I Ayman Abdel-Hamid Department of Computer Science Old Dominion University.
Efficient Streaming of 3D Scenes with Complex Geometry and Complex Lighting Romain Pacanowski and M. Raynaud X. Granier P. Reuter C. Schlick P. Poulin.
Chapter 3 Data Representation. 2 Compressing Files.
Comp 335 File Structures Data Compression. Why Study Data Compression? Conserves storage space Files can be transmitted faster because there are less.
JPEG.
IT11004: Data Representation and Organization Floating Point Representation.
Introduction to JPEG m Akram Ben Ahmed
Multi-media Data compression
Fundamentals of Multimedia Chapter 6 Basics of Digital Audio Ze-Nian Li and Mark S. Drew 건국대학교 인터넷미디어공학부 임 창 훈.
Working Efficiently with Large SAS® Datasets Vishal Jain Senior Programmer.
Chapter 3 Data Representation
Lab 4 HW/SW Compression and Decompression of Captured Image
JPEG Compression What is JPEG? Motivation
IMAGE COMPRESSION.
Intermediate 2 Computing
Data Compression.
A Brief History of 3D MESH COMPRESSION ORAL, M. ELMAS, A.A.
CSc4730/6730 Scientific Visualization
Notes on the color table and indexed color concept
Chapter III Modeling.
Volume Graphics (lecture 4 : Isosurface Extraction)
Image Processing, Leture #16
UNIT IV.
Image Compression Purposes Requirements Types
GRAPHICAL DATA EXCHANGE FORMATS .jpg .gif .tif.
Data Compression.
Presentation transcript:

Geometry Compression Michael Deering, Sun Microsystems SIGGRAPH (1995) Presented by: Michael Chung

Geometry Compression What is it? Lossy technique for reducing the size of geometry representation.

Motivation Save bandwidth and transmission time in graphics accelerators and networks. Save storage space in main memory and on disk.

Proposed Contributions Technique for lossy compression ratios of between 6 and 10 to 1 –Claims only slight losses in object quality –Depends on original representation format and final quality level desired

Geometry Compression What is it? Trade-off between quality (subjective) and amount of compression. Compression steps can be reversed for decompression

Geometry Compression What is it? Goal: represent geometry with geometry compression instructions

Insights Reduce size of geometry representation in several ways. –Reuse vertices in triangle strip via reference –Bit shaving –Geometry is local, encode deltas –Normals as indices

Compression Steps 1.Convert triangle data to generalized triangle mesh 2.Quantization of positions, colors, normals 3.Delta encoding of quantized values 4.Huffman tag-based variable-length encoding of deltas 5.Output binary output stream with Huffman table initializations and geometry compression instructions

Compression Steps 1.Convert triangle data to generalized triangle mesh 2.Quantization of positions, colors, normals 3.Delta encoding of quantized values 4.Huffman tag-based variable-length encoding of deltas 5.Output binary output stream with Huffman table initializations and geometry compression instructions

Step 1: Conversion to Generalized Triangle Mesh generalized triangle strip  generalized triangle mesh Generalized triangle strip –Specifies vertices with four vertex replacement codes (2 bits): Replace oldest Replace middle Restart clockwise Restart counterclockwise

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle strip (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle strip (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle strip (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle strip (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle strip (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle strip (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle strip (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle strip (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle strip (example)

Geometry Compression Instruction Set

Step 1: Conversion to Generalized Triangle Mesh generalized triangle strip  generalized triangle mesh Generalized triangle mesh –Generalized triangle strip –Mesh buffer 16 slot queue 4 bit index Explicitly push vertices onto mesh buffer for reuse. –We save because only 4 bits are required to reference old vertex.

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle mesh (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle mesh (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle mesh (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle mesh (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle mesh (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle mesh (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle mesh (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle mesh (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle mesh (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle mesh (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle mesh (example)

Step 1: Conversion to Generalized Triangle Mesh Generalized triangle mesh (example)

Step 1: Conversion to Generalized Triangle Mesh

Geometry Compression Instruction Set

Compression Steps 1.Convert triangle data to generalized triangle mesh 2.Quantization of positions, colors, normals 3.Delta encoding of quantized values 4.Huffman tag-based variable-length encoding of deltas 5.Output binary output stream with Huffman table initializations and geometry compression instructions

Step 2: Quantization

Some parts of the geometry may require more or less precision than others.

Step 2: Quantization Some parts of the geometry may require more or less precision than others. So, the amount of quantization we perform per position, normal, and color is variable.

Step 2: Quantization Position –32-bit floating-point coordinates are wasteful. 8-bit exponent allows an unnecessary range of values. 24-bit fixed-point mantissa offers unnecessary precision.

Step 2: Quantization Position –Based on empirical visual tests, allow at most 16 bits per component (X, Y, Z)

Step 2: Quantization Color –Linear reflectivity values R, G, B, (optional) A Range from 0.0 to 1.0 per component cap state bit sets alpha ON and OFF –At most 12 unsigned fraction bits per component

Geometry Compression Instruction Set

Step 2: Quantization Normal –96 bits can represent up to 2 96 different normals We don’t need so many –Angular density of 0.01 radians between normals visually indistinguishable This is about 100,000 normals distributed over a unit sphere 48 bits to represent a normal (16 bits per X, Y, Z) –We can do better than 48 bits per normal Use clever indexing to represent ~100,000 normals with 18 bits…

Step 2: Quantization Normal –96 bits can represent up to 2 96 different normals We don’t need so many –Angular density of 0.01 radians between normals visually indistinguishable This is about 100,000 normals distributed over a unit sphere 48 bits to represent a normal (16 bits per X, Y, Z) –We can do better than 48 bits per normal Use clever indexing to represent ~100,000 normals with 18 bits…

Step 2: Quantization Normal –96 bits can represent up to 2 96 different normals We don’t need so many –Angular density of 0.01 radians between normals visually indistinguishable This is about 100,000 normals distributed over a unit sphere 48 bits to represent a normal (16 bits per X, Y, Z) –We can do better than 48 bits per normal Use clever indexing to represent ~100,000 normals with 18 bits…

Step 2: Quantization Normal –Take advantage of symmetry About 100,000 unit normals distributed across unit sphere Split unit sphere into 48 symmetrical parts

Step 2: Quantization –3 bits to specify octant –3 bits to specify sextant within octant –All normals in sextant (~2000) stored in a table Two orthogonal angular addresses index into table At most 6 bits per angular index –Grand total: 6 – 18 bit index per normal

Step 2: Quantization –3 bits to specify octant –3 bits to specify sextant within octant –All normals in sextant (~2000) stored in a table Two orthogonal angular addresses index into table At most 6 bits per angular index –Grand total: 6 – 18 bit index per normal

Step 2: Quantization –3 bits to specify octant –3 bits to specify sextant within octant –All normals in sextant (~2000) stored in a table Two orthogonal angular addresses index into table At most 6 bits per angular index –Grand total: 6 – 18 bit index per normal

Step 2: Quantization –What about the 26 normals at the shared corners of each sextant? These normals belong to more than one sextant, but should be represented only once –3-bit indices 110 and 111 have not been assigned to a sextant Use one of these indices to represent the unique collection of these 26 normals

Step 2: Quantization –What about the 26 normals at the shared corners of each sextant? These normals belong to more than one sextant, but should be represented only once –3-bit indices 110 and 111 have not been assigned to a sextant Use one of these indices to represent the unique collection of these 26 normals

Step 2: Quantization –Angular indices represent a regular grid of coordinates in angular space

Step 2: Quantization –Angular indices represent a regular grid of coordinates in angular space

Step 2: Quantization –Angular indices represent a regular grid of coordinates in angular space

Step 2: Quantization Summary –Position: 16 bits or less per component –Color: 12 bits or less per component –Normal: 6 – 18 bits total 6 bits to take advantage of symmetry 0 – 12 bits to index table of normals per sextant

Compression Steps 1.Convert triangle data to generalized triangle mesh 2.Quantization of positions, colors, normals 3.Delta encoding of quantized values 4.Huffman tag-based variable-length encoding of deltas 5.Output binary output stream with Huffman table initializations and geometry compression instructions

Step 3: Delta Encoding Represent components with deltas between neighbors

Step 3: Delta Encoding

Represent components with deltas between neighbors

Step 3: Delta Encoding Represent components with deltas between neighbors Store histogram of delta group bit lengths –One histogram per group type (position, normal, color)

Compression Steps 1.Convert triangle data to generalized triangle mesh 2.Quantization of positions, colors, normals 3.Delta encoding of quantized values 4.Huffman tag-based variable-length encoding of deltas 5.Output binary output stream with Huffman table initializations and geometry compression instructions

Huffman Encoding Huffman encoding assigns shorter tags to more frequently encountered data.

Huffman Encoding Huffman encoding assigns shorter tags to more frequently encountered data.

Huffman Encoding Huffman encoding assigns shorter tags to more frequently encountered data.

Huffman Encoding Huffman encoding assigns shorter tags to more frequently encountered data.

Huffman Encoding Huffman encoding assigns shorter tags to more frequently encountered data.

Huffman Encoding Huffman encoding assigns shorter tags to more frequently encountered data.

Step 4: Huffman Tag-Based Variable-Length Encoding Assign a Huffman tag to each delta encoded position, normal, or color. The tag encodes the bit length of the associated delta data.

Compression Steps 1.Convert triangle data to generalized triangle mesh 2.Quantization of positions, colors, normals 3.Delta encoding of quantized values 4.Huffman tag-based variable-length encoding of deltas 5.Output binary output stream with Huffman table initializations and geometry compression instructions

Geometry Compression Instruction Set

Binary output –Series of geometry compression instructions. –Initialize Huffman table first, then describe geometry. –Header must be placed in stream before the body of the previous instruction: …H1 B0 H2 B1 H3 B2… This gives hardware time to process header

Compression Steps Any Questions? 1.Convert triangle data to generalized triangle mesh 2.Quantization of positions, colors, normals 3.Delta encoding of quantized values 4.Huffman tag-based variable-length encoding of deltas 5.Output binary output stream with Huffman table initializations and geometry compression instructions

Results Software implementation Compression speed: ~3000 triangles / second Decompression speed: ~10,000 triangles / second No information about machine used for evaluation

Results

Response The technique is supposed to be lossy. –It would be nice to see example images of this. Only one image of an original model is shown. –For the other model examples, there is no original to compare to. Paper claims that compression speed is not important. –Is this true for virtual worlds?

Response The technique is supposed to be lossy. –It would be nice to see example images of this. Only one image of an original model is shown. –For the other model examples, there is no original to compare to. Paper claims that compression speed is not important. –Is this true for virtual worlds?

Response The technique is supposed to be lossy. –It would be nice to see example images of this. Only one image of an original model is shown. –For the other model examples, there is no original to compare to. Paper claims that compression speed is not important. –Is this true for virtual worlds?

Response The technique is supposed to be lossy. –It would be nice to see example images of this. Only one image of an original model is shown. –For the other model examples, there is no original to compare to. Paper claims that compression speed is not important. –Is this true for virtual worlds?

Summary First paper on geometry compression Lossy compression of 3D geometry –Reuse vertices in triangle strip using mesh buffer –Shave bits via variable levels of quantization –18-bit indices to reference 48-bit normals –Delta compression saves bits since geometry tends to be local Compressed result is 6 to 10 times fewer bits than original geometry data

Summary First paper on geometry compression Lossy compression of 3D geometry –Reuse vertices in triangle strip using mesh buffer –Shave bits via variable levels of quantization –18-bit indices to reference 48-bit normals –Delta compression saves bits since geometry tends to be local Compressed result is 6 to 10 times fewer bits than original geometry data

Summary First paper on geometry compression Lossy compression of 3D geometry –Reuse vertices in triangle strip using mesh buffer –Shave bits via variable levels of quantization –18-bit indices to reference 48-bit normals –Delta compression saves bits since geometry tends to be local Compressed result is 6 to 10 times fewer bits than original geometry data

Summary First paper on geometry compression Lossy compression of 3D geometry –Reuse vertices in triangle strip using mesh buffer –Shave bits via variable levels of quantization –18-bit indices to reference 48-bit normals –Delta compression saves bits since geometry tends to be local Compressed result is 6 to 10 times fewer bits than original geometry data