Comb distribution after PhaseOne image debayering


I found a strange problem after analyzing the histograms on images right after debayering (16-bit data so 65536 bins per channel). We use PhaseOne cameras at work and we are interested to get images with a minimum of processing done (debayering, 16-bit per channel, linear response, nothing else). I tried different debayering algorithm using the user_qual but the same problem can be observed. I also created the distribution of the last digit of the pixel values. You can see clearly that there is a unbalance between even and odd numbers. See the attached screenshots.

I hope I m wrong but it sounds like a rounding problem to me. Assuming only 14 bits are usable we shouldnt be able to see this. I don't see the same effect using the very limited ImageSDK from PhaseOne. But I dont know what processing is done.

Thanks in advance.


Image icon Zoom-in.jpg191.14 KB


Could you please provide RAW

Could you please provide RAW file sample for analysis?

BTW, 'minimum processing done' is no processing at al. Consider use LibRaw's unprocessed_raw sample or RawDigger.

-- Alex Tutubalin @LibRaw LLC

Hi Alex,

Hi Alex,

Thank you for your reply. After further analysis, it seems that this kind of histogram is to be expected. I think part of the confusion for me was because I initially assumed that the values coming from the camera will occupy the first 14 bits of the 16-bit range. They are instead spread over 16 bits. I recreated an histogram but this time without any debayering, so directly on the sensor data. In this case we can see that the values are always even numbers (at least most of them) and are spaced evenly on 16-bit range (between 0 and 65533). The gap between each value is 4 which is logical since only 16384 values are possible with 14-bit. I also went back to the histogram that I produced using the PhaseOne SDK and gaps were present too (but less obvious). In this case, they seems to use some kind of contrast correction which I don't have control over. So that's it, I suppose I just need now to divide the pixel values by 4 so all the data will be concentrated on the first 16384 values. Thanks again.