220 likes | 317 Views
Lossless Layered Residual System. Gary Demos HPA 24Feb2006 Palm Springs, CA. Arbitrary Precision Direct Support of Integers of Arbitrary Precision (8bits up to 16 bits tested) Floating via Direct Lossless Layered Support of OpenExr 16-bit Half-Float Wide Dynamic Range Half-Float
E N D
Lossless Layered Residual System Gary Demos HPA 24Feb2006 Palm Springs, CA
Arbitrary Precision Direct Support of Integers of Arbitrary Precision (8bits up to 16 bits tested) Floating via Direct Lossless Layered Support of OpenExr 16-bit Half-Float Wide Dynamic Range Half-Float Integrated With Floating-Point Layered Codec (as presented Oct 2004 SMPTE Pasadena) Features
Uses Bins Like the OpenExr 16-bit Half-Float “Piz” Compressor Bin List Is Sorted, and Contains All Pixel Values From Original Image Bins Can Contain Integers or Floating-Point of Arbitrary Precision Floating Point Values Can Have Any Arbitrary Dynamic Range Negative Values Are Fully Supported Currently Optimized For Integers from 8 to 16 bits, and 16-bit Half-Float Bins Are Referenced Solely By Integer Index (“Bin Number”) Unused Codes In Wide Range Representations (e.g. 16-bit Half-Float) Automatically Eliminated From Bin List Use of Bins
Bin List Lossy Codec Floating Value Nearest Bin Desired (Lossless) Bin Integer Bin Delta
Floating Lossy Value On A Cusp (nearly equidistant) Floating Point Original Values If on a Cusp, Flag This Pixel’s Primary Indicate Whether to Go Up or Down or Code The Final Bin Directly Only a Small Proportion of Pixels Will Be on a Cusp Solely a Function of Lossy Floating-Point Precision (e.g. 32-bit Floating) Necessary Because of Processor and Compiler Inconsistencies (e.g. P4 vs G5)
How To Find A Useful Intermediate Bin On the Way To Lossless? A Proportion Of the Distance And / Or Driven By A Noise-Reduced Original Image Constrain To Range Between Lossy Nearest Bin and Lossless Bin Noise-Reduced-Driven-Intermediate
Bin List Lossy Codec Floating Value Nearest Bin Noise-Reduced Original Intermediate Bin Desired (Lossless) Bin Two Bin Deltas
Integer or Floating Point Original Noise-Reduced Lossy Codec Floating Point Floating Point Bin-Delta Intermediate(s) Bin-Delta Lossless (bit exact)
Reduce Intermediate Bin Deltas By Shifting or Scaling And / Or Create a Subset of the Bin List From The Original More Than One Subset Can Support More Than One Intermediate Subsets Can Be Matched To Noise Floor Or Can Take Ever-Deeper “Bites” Out of the Noise Floor Values Can Be Added To Subset (If Not Present In Original) For Useful Step(s) Bin List Subset(s)
• Stem MMR4 4096x1714 12-bit RGB packed within 16-bit Tiff16 (Film) • Patuxent River Air Ops 1920x1080 @30fps 10bit Viper Filmstream to 16-bit Half-Float • Garden Music 1280x720 @59.94fps 10-bit Viper Filmstream to 8-bit DPX (8bit in 10bit) • Sphere 4096 x 2160 16-bit RGB as Tiff16 (noiseless CGI) Results
PaxRiver 1920 x 1080 10-bit Filmstream color adjusted using conversion to linear with rgb scale factors into OpenExr 16-bit half-float:
Conclusions: • Lossless bin-delta-style residual can be integraded with floating-point wavelet-style codec • Efficiency is good, rivalling or exceeding other lossless codecs • Supports arbitrarily wide dynamic range (including negative numbers) • Noise-reduction integrated with codec, including integration with lossless bin-delta system • Noise-reduced-driven intermediate layer forms a highly useful (perhaps optimal) step on the way to the lossless original • Intermediates can be as finely layered as desired
Contact SMPTE or see me if you don’t have a copy of my October 2004 Pasadena SMPTE codec paper and would like one Questions?