Interpretation of Raw frame data once uploaded via LibRaw

Dear Forum,

Since a few weeks I started working with LibRaw and rawpy in order to interpret Raw dark frames I took with my Pentax K5. I started understanding how things were working after having downloaded the paper of Pavel Rojtberg "Processing RAW images in Python".
Now that I have access to the visible frame data I start finding out what the differences are between the different commands, and exactly at this point I have a serious problem with interpreting data.

I open the raw frame, unpack it and create the raw_image. Looking in the black_level_per_channel vector I see all 0s. Some LibRaw documentation explains that that is possible and linked to the brand of my DSLR. Using exiftool I see a black point 515 515 516 515. Taking the minimum of the raw_image_visible I find 170. Looking at the margin columns of the frame before the visible part, indeed I see many values around 515. How should I interpret these parameters? If the black point from exif was obtained after processing in the DSLR, can I reproduce these values, and how? Are they averages of the dark pixels in the DSLR frame, or something else? I assume that the minimum intensity of 170 found in the frame is an almost dead pixel here or there. Is it correct to assume that black_level_per_channel being all 0 is because they have not been calculated, or does it mean that all pixel values are put at black=0 and white being full scale whatever than might be?

Is there some documentation, tutorial or post on one or another forum available discribing the way of processing for the different commands in LibRaw, or should I start digging in the code to understand?

Thanks in advance for your help!

Best regards,



Dear Sir,

Dear Sir,

unfortunately, we could not help. LibRaw Python bindings (rawpy) is not our product, so we completely do not know what is 'black_level_per_channel' vector (and other variables you mentioned)

-- Alex Tutubalin @LibRaw LLC