Fujifilm X-Trans (6x6 pattern) files are 3-component, there is no 'second green'.
There is no way to get separate image planes via LibRaw:
- unprocessed data (assuming we're talking about bayer/xtrans camera) is single layer
- intermediate data(after LibRaw::raw2image) is a 4-component per pixel interleaved (4th component is not used in X-trans case)
Maybe Alex can clarify:
Why is the second green missing and how to fix? Having the raw packed in a three color image is not a problem but the missing second green is a problem.
Is this the LibRaw standard way for getting unprocessed raw: "getting three buffers: RED, GREEN, and BLUE. All buffers have the same sizes (size of the image) but with “holes” in the place of other colors pixels." or is a better way?
And what is also puzzling is in an other program setting libraw_set_output_color(handler, LibRaw_output_color.raw); doesn't do anything either.
Sony/compressed (ARW2.3) linearization curve is applied on LibRaw::unpack() phase.
Curve is accessible via imgdata.color.curve[] array (also, one could use RawDigger application to dump linearization curve)
I was looking into confirming if the linearization table given for a number of files is "correct". For ARW files, I was hoping to compare it to linearization data retrieved from dcraw; or to check to see if the raw cfa data has applied the linearization table correctly; however both libraw and dcraw do not seem to apply the linearization table for ARW files, nor is there a command I can run (that I know of) with dcraw to get the linearization table. I was curious if you knew the best means of confirming the correctness of the linearization table output for an ARW file/was curious how you have done so yourselves.
cdesc describes color index to color name translation, this is not pattern.
LibRaw::COLOR(row,col) returns color index for given row,col; It is not the same for LibRaw 0.19 and 0.20, please recheck (at least, imgdata.idata.filters are different, so COLOR() output should be different also)
Finally I figured out how to correctly dump memory image to Windows Bitmap file.
Simple we need add some padding bytes after each line before saving to Bitmap.
Number of padding bytes is given by following formula:
num = img.width mod 4
Since I did everything in C# language, including a wrapper around LibRaw library, I can provide only C# sample code:
var num = img.width % 4;
var padding = new byte[num];
var stride = img.width * img.colors * (img.bits / 8);
var line = new byte[stride];
var tmp = new List<byte>();
for (var i = 0; i < img.height; i++) {
// BlockCopy: src, srcIndex, dst, dstIndex, count
Buffer.BlockCopy(img.data, stride * i, line, 0, stride);
tmp.AddRange(line);
tmp.AddRange(padding);
}
tmp.ToArray(); // this will contain the correct data ready for export to Bitmap
Alex,
I am using 0.19.6 version + I am on Windows. I will look into my code and confirm my implementation is correct. Would it be possible for you to send me the PPM files for me to compare?
OUT.use_camera_wb = 1; // Use As Shot White Balance
OUT.output_bps = 16; // 16-bit output
OUT.no_auto_bright = 1; // Do not contrast stretch the image
OUT.output_color = 1; // sRGB space
OUT.gamm[0] = 1/2.4; // power for sRGB
OUT.gamm[1] = 12.92; // toe slope for sRGB
Hi Alex,
Thanks for confirming the settings are the same and for updating the help. However, I am getting differences for a RAW file from LEAF. I am providing a link to the file below:
My workflow is
open_file()
unpack()
// Set the imgdata.params as described above
get_mem_image_format(...)
dcraw_process()
dcraw_make_mem_image()
// Copy the rendered image
I have tried two camera images:
CR2, EOS 80D
CR3, EOS R
unprocessed_raw.exe writes normal raws. The 3 layer format is not a problem but then missing second green, G2 is essential
Han, what camera files do you test with?
Fujifilm X-Trans (6x6 pattern) files are 3-component, there is no 'second green'.
There is no way to get separate image planes via LibRaw:
- unprocessed data (assuming we're talking about bayer/xtrans camera) is single layer
- intermediate data(after LibRaw::raw2image) is a 4-component per pixel interleaved (4th component is not used in X-trans case)
Laheller, thanks for the wrapper. It works for colour images but at the moment not for extracting unprocessed raw.
The second green color is missing. I get RGB0 where 0 stand for zero value. See this screen shot.
https://ibb.co/d0TD6Lv
I do the following
libraw_open_file
libraw_unpack
libraw_raw2image
libraw_dcraw_make_mem_image
Maybe Alex can clarify:
Why is the second green missing and how to fix? Having the raw packed in a three color image is not a problem but the missing second green is a problem.
Is this the LibRaw standard way for getting unprocessed raw: "getting three buffers: RED, GREEN, and BLUE. All buffers have the same sizes (size of the image) but with “holes” in the place of other colors pixels." or is a better way?
And what is also puzzling is in an other program setting libraw_set_output_color(handler, LibRaw_output_color.raw); doesn't do anything either.
Han
You may need to recompile libraw samples using older version of XCode.
make -f Makefile.dist
should do that
Yes that fixes it. :)
>>What version of Mac OS X/macOS do you use?
High Sierra, 10.12
What version of Mac OS X/macOS do you use?
ASTAP a free application for processing astronomical images uses unprocessed_raw.
http://www.hnsky.org/astap.htm
Thanks for providing LibRaw.
Han
Usually we publish snapshots (or releases) every 5-7 months. LibRaw 0.20 was released in July, so....
Any idea when the next development snapshot will be?
EOS R5 is not supported by 0.20, see supported camera list: https://www.libraw.org/supported-cameras
R5 support is expected in next development snapshot.
Sony/compressed (ARW2.3) linearization curve is applied on LibRaw::unpack() phase.
Curve is accessible via imgdata.color.curve[] array (also, one could use RawDigger application to dump linearization curve)
I was looking into confirming if the linearization table given for a number of files is "correct". For ARW files, I was hoping to compare it to linearization data retrieved from dcraw; or to check to see if the raw cfa data has applied the linearization table correctly; however both libraw and dcraw do not seem to apply the linearization table for ARW files, nor is there a command I can run (that I know of) with dcraw to get the linearization table. I was curious if you knew the best means of confirming the correctness of the linearization table output for an ARW file/was curious how you have done so yourselves.
cdesc describes color index to color name translation, this is not pattern.
LibRaw::COLOR(row,col) returns color index for given row,col; It is not the same for LibRaw 0.19 and 0.20, please recheck (at least, imgdata.idata.filters are different, so COLOR() output should be different also)
I just created a FreePascal wrapper for libraw, but is should work also in Delphi, so here you go:
https://github.com/laheller/FPLibRaw
Finally I figured out how to correctly dump memory image to Windows Bitmap file.
Simple we need add some padding bytes after each line before saving to Bitmap.
Number of padding bytes is given by following formula:
Since I did everything in C# language, including a wrapper around LibRaw library, I can provide only C# sample code:
Picture Window Pro 8 - a free advanced image editor for Windows - now uses LibRaw to open raw files.
www.dl-c.com
Monochrome2DNG does more than you described.
Thank you for reporting, fixed/cleaned up by this: https://github.com/LibRaw/LibRaw/commit/37c7b517c177e4e89ae8f95baed0b2a3...
https://www.dropbox.com/s/19dm6nmr47fg0ua/raw_leaf_aptus_22.mos.ppm?dl=0
Alex,
I am using 0.19.6 version + I am on Windows. I will look into my code and confirm my implementation is correct. Would it be possible for you to send me the PPM files for me to compare?
Regards,
Dinesh
Cloned your settings into mem_image_sample.cpp:
compared with
Results are the same:
Fixed the link permissions. Here is the link again:
https://drive.google.com/file/d/1HkNwHiFGjRaz7y6nd6lWlO6W0BVE5p1z/view?u...
Dinesh
Link is not accessible
Hi Alex,
Thanks for confirming the settings are the same and for updating the help. However, I am getting differences for a RAW file from LEAF. I am providing a link to the file below:
https://drive.google.com/file/d/1HkNwHiFGjRaz7y6nd6lWlO6W0BVE5p1z/view?u...
My workflow is
open_file()
unpack()
// Set the imgdata.params as described above
get_mem_image_format(...)
dcraw_process()
dcraw_make_mem_image()
// Copy the rendered image
For a NEF file in my possession, it works fine.
Regards,
Dinesh
Pages