Nikon Z7II files smaller than D850

I’m trying to understand the files coming out of the Nikon Z7II. In theory, the files are both coming from the same sized sensor with common file dimensions. Uncompressed 14 bit RAW files from the Z7II are averaging 85 MB while Uncompressed RAW files from the D850 are 97 MB. That’s 13% smaller - supposedly without any compression.

Does anyone have an idea what happened? I have sample files available here:

Maybe the Z 7 II are tightly packed 14-bit, while D850 ones are using a 16-bit container, thus introducing a 14.29% (2/14) overhead?

What does ExifTool say?

I just had a look at Exif data on RPU: it looks like the D850 samples really have no compression applied, whereas the Z 7 II has some presumably lossless compression on, even though it says “uncompressed” (as opposed to traditional NEF lossy compression I guess).

From the StripByteCounts tag, I’m still banking on no packing (8288*5520*16/8) vs tight packing (8288*5520*14/8)…

Thanks for checking.

Lossless compressed files are much smaller - in the range of 62 MB for this test scene depending on ISO. I verified the camera setting for Compression is Off - Uncompressed.

I wonder if something other than image data is being compressed?

Nope, just confirmed, take a look at the NEFCompression tag here, the new “type 10” is just packing.

Extract your preview. It is part of the file size. Likely they dont have the same size preview embedded for one thing…

I suspect if they have “versions” of the raw file in one camera then they are likely to be different between cameras…I guess the Z7 is using a new or perhaps modified version of one of these??

Adding in the sizes of the embedded JPGs, I suspect the Z7 stores sensel values in 14 bits, but the D850 takes 16 bits:

D850:

               1 File(s)     99,583,420 bytes

f:\web\im>ccalc = 8288*5520 * 16/8 + 6810500 + 1004012 + 141497 = exit
99455529


Z7-2:

               1 File(s)     88,046,780 bytes

f:\web\im>ccalc = 8288*5520 * 14/8 + 6634406 + 974633 + 140168 = exit
87811287

EDIT: I labelled the calculations the wrong way round.

Interesting. I wonder whether the extra bits are all zeros or whether they actually save 16-bit processed raw data.

I am thinking that there is a lot of processing performed on data coming off the ADC before it is saved to the raw file - and that processing supposedly happens at 16 bits (e.g. keeping the BlackLevel steady with increasing gain, low pass, WB pre-conditioning, microlens compensation, etc.)