I worked with Digital sensors when they were new, almost 35 years ago now. Data compression schemes were subroutines that you wrote and called before storing the data to tape or disk. There was no JPEG.
Lossless compression - run length encoding, meaning counting how many pixels in a row were the same, storing a repeat factor and value- worked for Graphics, not imagery.
Imagery- you have enough resolution, the data does not change "too fast", you store a running difference frame on a row-by-row basis. SO- you have 14-bit data that normally requires two-bytes to store. For all the Red, Green, Blue pixels- store the first full-pixel value for each color of the row, Red-Green for a Bayer filter in one row, Green-Blue for the next- Subtract the second value from it and store the difference in 1-byte. Use values -127:+127, and use -128 (FF'x) as an "escape" to store a new 16-bit value. For most images, you get close to a 2:1 compression.
Leica did not use that for compressed DNG on the M9 and M8. Compressed DNG stores the "Square-Root" of the value. It stores J= SQRT( I* 4), then restores it using I= (J** 2)/ 4.
I hate it. It is "Chaotic", meaning loss of precision due to computer round-off error. Great for making interesting Graphics, just ask Dr. Mandelbrot.
It loses data. It is responsible for the very poor High-ISO performance of the M8.
This is what an M8 looks like at ISO5000 when using M8RAW2DNG to get uncompressed DNG files.
autocurves_ISO5000eqv by fiftyonepointsix, on Flickr
If M8 ISO5000 files had looked like this in 2006, no one would have complained.
Better than what you are used to.
I had to "Visualize" what the compression routine discards.
First image is the original M9 image at base ISO, 160.
by fiftyonepointsix, on Flickr
This is the Information that is Thrown Away by DNG8.
by fiftyonepointsix, on Flickr
"The Daughter is in the details"
Lots of high-frequency information, noise and signal.
A second one, less highlights- ISO160.
L1000441 by fiftyonepointsix, on Flickr
L441DFSC by fiftyonepointsix, on Flickr
Lossless compression - run length encoding, meaning counting how many pixels in a row were the same, storing a repeat factor and value- worked for Graphics, not imagery.
Imagery- you have enough resolution, the data does not change "too fast", you store a running difference frame on a row-by-row basis. SO- you have 14-bit data that normally requires two-bytes to store. For all the Red, Green, Blue pixels- store the first full-pixel value for each color of the row, Red-Green for a Bayer filter in one row, Green-Blue for the next- Subtract the second value from it and store the difference in 1-byte. Use values -127:+127, and use -128 (FF'x) as an "escape" to store a new 16-bit value. For most images, you get close to a 2:1 compression.
Leica did not use that for compressed DNG on the M9 and M8. Compressed DNG stores the "Square-Root" of the value. It stores J= SQRT( I* 4), then restores it using I= (J** 2)/ 4.
I hate it. It is "Chaotic", meaning loss of precision due to computer round-off error. Great for making interesting Graphics, just ask Dr. Mandelbrot.
It loses data. It is responsible for the very poor High-ISO performance of the M8.
This is what an M8 looks like at ISO5000 when using M8RAW2DNG to get uncompressed DNG files.
If M8 ISO5000 files had looked like this in 2006, no one would have complained.
Better than what you are used to.
I had to "Visualize" what the compression routine discards.
First image is the original M9 image at base ISO, 160.
by fiftyonepointsix, on Flickr
This is the Information that is Thrown Away by DNG8.
by fiftyonepointsix, on Flickr
"The Daughter is in the details"
Lots of high-frequency information, noise and signal.
A second one, less highlights- ISO160.
Last edited: