Lossless Compression of Floating-Point Geometry Martin Isenburg UNC Chapel Hill Peter Lindstrom LLNL Livermore Jack Snoeyink UNC Chapel Hill
Overview Motivation Geometry Compression Predictive Schemes Corrections in Floating-Point Results Conclusion
127 MB 12,748,510triangles 11,070,509vertices Meshes and Compression connectivity face face face face m 3m * 32 bits 3n * 32 bits 146 MB UNC power-plant 3 MB 25 MB 20 uniform quantization vertex 1 ( x, y, z ) vertex 2 ( x, y, z ) vertex 3 ( x, y, z ) vertex n geometry
Floating-Point Numbers have varying precision largest exponent least precise x - axis bits of precision
Samples per Millimeter 16 bit18 bit 20 bit22 bit24 bit m cm m
No quantizing possible … stubborn scientists / engineers – “Do not touch my data !!!” data has varying precision – specifically aligned with origin not enough a-priori information – no bounding box – unknown precision – streaming data source
Geometry Compression [ Deering, 95 ] – Fast Rendering – Progressive Transmission – Maximum Compression Geometry Compression [ Deering, 95 ] Mesh Compression Maximum Compression
Geometry Compression [ Deering, 95 ] – Fast Rendering – Progressive Transmission – Maximum Compression Connectivity Geometry Geometry Compression [ Deering, 95 ] Mesh Compression Maximum Compression Geometry
Geometry Compression [ Deering, 95 ] – Fast Rendering – Progressive Transmission – Maximum Compression Connectivity Geometry – lossy – lossless Geometry Compression [ Deering, 95 ] Mesh Compression lossless Maximum Compression Geometry
Overview Motivation Geometry Compression Predictive Schemes Corrections in Floating-Point Results Conclusion
Geometry Compression Classic approaches [ 95 – 98 ]: – linear prediction Geometry Compression [ Deering, 95 ] Geometric Compression through topological surgery [ Taubin & Rossignac, 98 ] Triangle Mesh Compression [ Touma & Gotsman, 98 ] Java3DMPEG - 4Virtue3D
Geometry Compression Classic approaches [ 95 – 98 ]: – linear prediction Recent approaches [ 00 – 03 ]: – spectral – re-meshing – space-dividing – vector-quantization – angle-based – delta coordinates
Geometry Compression Classic approaches [ 95 – 98 ]: – linear prediction Recent approaches [ 00 – 03 ]: – spectral – re-meshing – space-dividing – vector-quantization – angle-based – delta coordinates Spectral Compression of Mesh Geometry [ Karni & Gotsman, 00 ] expensive numerical computations
Geometry Compression Classic approaches [ 95 – 98 ]: – linear prediction Recent approaches [ 00 – 03 ]: – spectral – re-meshing – space-dividing – vector-quantization – angle-based – delta coordinates Progressive Geometry Compression [ Khodakovsky et al., 00 ] modifies mesh prior to compression
Geometry Compression Classic approaches [ 95 – 98 ]: – linear prediction Recent approaches [ 00 – 03 ]: – spectral – re-meshing – space-dividing – vector-quantization – angle-based – delta coordinates Geometric Compression for interactive transmission [ Devillers & Gandoin, 00 ] poly-soups; complex geometric algorithms
Geometry Compression Classic approaches [ 95 – 98 ]: – linear prediction Recent approaches [ 00 – 03 ]: – spectral – re-meshing – space-dividing – vector-quantization – angle-based – delta coordinates Vertex data compression for triangle meshes [ Lee & Ko, 00 ] local coord-system + vector-quantization
Geometry Compression Classic approaches [ 95 – 98 ]: – linear prediction Recent approaches [ 00 – 03 ]: – spectral – re-meshing – space-dividing – vector-quantization – angle-based – delta coordinates Angle-Analyzer: A triangle- quad mesh codec [ Lee, Alliez & Desbrun, 02 ] dihedral + internal = heavy trigonometry
Geometry Compression Classic approaches [ 95 – 98 ]: – linear prediction Recent approaches [ 00 – 03 ]: – spectral – re-meshing – space-dividing – vector-quantization – angle-based – delta coordinates High-Pass Quantization for Mesh Encoding [ Sorkine et al., 03 ] basis transformation with Laplacian matrix
Overview Motivation Geometry Compression Predictive Schemes Corrections in Floating-Point Results Conclusion
Predictive Coding 1.quantize positions with b bits 2.predict from neighbors 3.compute difference 4.compress with entropy coder ( 1.314, , ) ( 1008, 68, 718 ) floating point integer
Predictive Coding 1.quantize positions with b bits 2.predict from neighbors 3.compute difference 4.compress with entropy coder prediction rule ( 1004, 71, 723 ) prediction ( 1.276, , ) prediction prediction rule
Predictive Coding 1.quantize positions with b bits 2.predict from neighbors 3.compute difference 4.compress with entropy coder ( 1004, 71, 723 )( 1008, 68, 718 ) position ( 4, -3, -5 ) correctorprediction ( 1.314, , ) position ( 1.276, , ) prediction ?
Predictive Coding 1.quantize positions with b bits 2.predict from neighbors 3.compute difference 4.compress with entropy coder position distribution corrector distribution
Arithmetic Entropy Coder for a symbol sequence of t types # of type t pi =pi = i = 1 t Entropy = p i log 2 ( ) bits pipi 1 # total 2.0 bits 1.3 bits 0.2 bits
Deering, 95 Prediction: Delta-Coding A processed region unprocessed region P P = A
Taubin & Rossignac, 98 Prediction: Spanning Tree A B C D E processed region unprocessed region P P = α A + βB + γC + δD + εE + …
Touma & Gotsman, 98 Prediction: Parallelogram Rule processed region unprocessed region P P = A – B + C A B C
Talk Overview Motivation Geometry Compression Predictive Schemes Corrections in Floating-Point Results Conclusion
Corrective Vectors ? ( 1008, 68, 718 ) position ( 1004, 71, 723 ) prediction ( 4, -3, -5 ) corrector compute difference vector with integer arithmetic ( 1.314, , ) position ( 1.276, , ) prediction ( 0.038, , ) corrector compute difference vector with floating-point arithmetic ?
32-bit IEEE Floating-Point ½ ½ XX X X X X X X X X X X X X X X X X X X X X X X X X X X 1 bit sign 8 bit exponent 23 bit mantissa 182… 181… 180… 17E… 17D… 0 … 07E… 080… 081… 082… 17a75c28f position 1824ccccd prediction corrector 0824bd corrector
01999a 32-bit IEEE Floating-Point ½ ½ XX X X X X X X X X X X X X X X X X X X X X X X X X X X 1 bit sign 8 bit exponent 23 bit mantissa 182… 181… 180… 17E… 17D… 0 … 07E… 080… 081… 082… 175c2847a149999a a ccccd -7.9 positionprediction a75c c0f5c positionprediction a ccccd 12.8 positionprediction -0.2
Floating-Point Corrections ( 1 ) a 12.6 position 0824ccccd 12.8 prediction a 0824ccccd a4ccccd use context 82 use context 82 compress
Floating-Point Corrections ( 2 ) a -8.1 position 1817ccccd -7.9 prediction a1817ccccd a0 use context 82 use context compress
Floating-Point Corrections ( 3 ) 17a75c position 07c0f5c prediction 17a75c28407c0f5c c2840 use context 7a use context 7c 7a compress
Talk Overview Motivation Geometry Compression Predictive Schemes Corrections in Floating-Point Results Conclusion
gzip -9 buddha david power plant lucy Results [ bpv ] raw model 96.0 ours ratio
Percentage of Unique Floats buddhadavid lucy powerplant x y z x y z x y z x y z 49.0 % 82.4 % 77.2 % 40.2 % 28.9 % 42.0 % 53.4 % 37.6 % 22.2 % 4.4 % 1.5 % 2.0 % 228,402 different z-coordinates 543,652 vertices 226,235 different z-coordinates 11,070,509 vertices
Completing, not competing !!! buddha david power plant lucy model 16 bit bit-rate [bpv] buddha david power plant lucy compression ratio [ % ] 20 bit bit lossless
Simpler Scheme ( Non-Predictive ) A XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX buddha david power plant lucy A ours BC model 32 symbols, each ranging from 0 to 1 B X X XX 8 symbols, each ranging from 0 to 15 X X X X X X C 4 symbols, each ranging from 0 to 63
Simpler Scheme ( Predictive ) A X X X X X X X X C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX B X X XX XX buddha david power plant lucy A ours BC model
Talk Overview Motivation Geometry Compression Predictive Schemes Corrections in Floating-Point Results Conclusion
Summary efficient predictive compression of floating-point in a lossless manner completing, not competing – predict in floating-point – break predicted and actual float into several components – compress differences separately – use exponent to switch contexts
Current / Future Work investigate trade-offs – compression versus throughput improve scheme for “sparse” data quantize without bounding box – guarantee precision – learn bounding box optimize implementation – run faster / use less memory
Acknowledgments funding: LLNL DOE contract No. W-7405-Eng-48 models: Digital Michelangelo Project UNC Walkthru Group Newport News Shipbuilding
Thank You! ขอบคุณมาก, ครับ !