Recent comments

Reply to: A question about "dcraw_make_mem_image"   7 years 8 months ago

Hi Alex,

Thanks for replying!

I actually used the conversion to "ushort *" right after posting the question. It seemed to work fine.

Have a nice day!

Mio

Reply to: A question about "dcraw_make_mem_image"   7 years 8 months ago

LibRaw is internally 16-bit unsigned int, so float conversion looks useless.
For 16-bit output just use explicit type conversion to (ushort*) for libraw_processed_image_t->data.

Reply to: Demosaicing of plain RGGB data   7 years 8 months ago

Thanks for quick response, I will try that.

Reply to: Chromatic Adaptation Matrix (CAT) question   7 years 8 months ago

There are as-shot WB coefficients (so diagonal adaptation matrix)

Reply to: Unpacking RAW without any processing using dcraw_emu   7 years 9 months ago

Awesome, thank you very much!

Jan

Reply to: Camera White Balance   7 years 9 months ago

From dcraw_emu, usage() call:
"-w Use camera white balance, if possible\n"

And, sure, it works.

Reply to: Unpacking RAW without any processing using dcraw_emu   7 years 9 months ago

There is no -d/-D keys in dcraw_emu

Use unprocessed_raw sample instead.

Reply to: Quesiton about "output_color=0"   7 years 9 months ago

Yes, you can set custom WB via user_mul. But for wrong WB demosaic results may be not good as expected.

dcraw_emu -o 0 -h works for me
(-o 0 translates to output_color=0, -h translates to half_size-1)

Reply to: Quesiton about "output_color=0"   7 years 9 months ago

Hi Alex,

From what you said, it seems like the "white balance" is necessary before normal demosaic. If a user want to supply her/his own white balance factors, it can still be done through "user_mul[i]", correct?

Also, when I use "output_color = 0" and "half_size = 1" together (regardless other parameter), the image seems to look strange. Can you take a look at it?

Thanks so much and have a nice day!

Reply to: Quesiton about "output_color=0"   7 years 9 months ago

Normal demosaic (not 'half' or 'linear interpolation') is useless without white balance first.

Reply to: Quesiton about "output_color=0"   7 years 9 months ago

Hi Alex,

I would like to use the RAW data without calling "dcraw_mem_image()"; however, there is still a need for demosaic. Currently, I have to use "dcraw_mem_image()" with the parameters listed before to get it as close as possible.

If there is a function that I can call to get the image data that only goes through demosaic step (with no other adjustment), that would be great!

Thanks,

Reply to: Quesiton about "output_color=0"   7 years 9 months ago

I'm still cannot understand what kind of data you need. You wrote 'close to', but could you please describe what you really need?

Reply to: Quesiton about "output_color=0"   7 years 9 months ago

What is 'converted image'? imgdata.image array, or result of dcraw_mem_image() call?

Reply to: Quesiton about "output_color=0"   7 years 9 months ago

Hi Alex,

"Unaltered image" is something close to what I am interested. Given the parameters that I enlisted, do they look reasonable to get the "Unaltered image"?

Also, only if you have time, would you mind replicating my test by adding "half_size = 1" (see below) and see if the converted image looks correct?

-----------------------------------------
use_camera_matrix = 0;
highlight = 0;
use_camera_wb = 0;
output_color = 0;
gamm[0] = 1.0; gamm[1] = 1.0;
no_auto_bright = 1;
user_mul[0] = 1.0; user_mul[1] = 1.0; user_mul[2] = 1.0;
half_size = 1;
-----------------------------------------

Thanks a lot!

Reply to: Quesiton about "output_color=0"   7 years 9 months ago

I can not understand what 'demosaic RAW' is.

If you just need 'source' (unaltered) values from sensor/raw file, it is much better to access imgdata.rawdata.raw_image directly.

dcraw_process() means multiple processing stages. Your parameters looks like you need unaltered image.

Reply to: Quesiton about "output_color=0"   7 years 9 months ago

Hi Alex,

Thank you for the quick reply! Appreciate it!

I understand there are several steps if dcraw_process () is called. Since I am interested in getting the image data that is very close to the "demosaic RAW", I manually set some parameter to "avoid" unnecessary processing on the RGB code values. For example, I did the following:

-----------------------------------------
use_camera_matrix = 0;
highlight = 0;
use_camera_wb = 0;
output_color = 0;
gamm[0] = 1.0; gamm[1] = 1.0;
no_auto_bright = 1;
user_mul[0] = 1.0; user_mul[1] = 1.0; user_mul[2] = 1.0;
-----------------------------------------

If the setting sounds reasonable, when I add "half_size=1", the converted image looks like a channel is missing.

Thanks a lot!

Reply to: Quesiton about "output_color=0"   7 years 9 months ago

I did not understand exactly what you want
Standard raw processing sequence is (for decoded/linearized data) in dcraw_process is
- black subtraction
- white balance
- demosaic
- data scaling to use full range
- conversion to output color space
Than, on output
- brightness correction
- gamma curve

What stages do you need and what is not?

BTW, besides demosaic, all other steps are trivial and very easy to implement.

Reply to: Quesiton about "output_color=0"   7 years 9 months ago

Thanks a lot for the quick reply!

I meant the "raw image data" that only has demosaic process. In this case, I may still need "dcraw_process", right? if it is, then when I use "output_color = 0" and "half_size = 1", the output seems like missing a channel.

Have a great day!

Reply to: Quesiton about "output_color=0"   7 years 9 months ago

To get fully unprocessed raw data you may
1) Access imgdata.rawimage.raw_data array which stores raw values read from sensor as is
2) set params.half_size=1 and call raw2image() after unpack (instead of dcraw_process).
raw2image will arrange raw_data to imgdata.image[][4] array

Reply to: Quesiton about "output_color=0"   7 years 9 months ago

Hi,

Thanks for the quick response!

I tried to use "output_color = 0" and "half_size = 1" at the same time, the output looks like a channel is missing.

Is there a way that I can have a unprocessed raw in half size? Perhaps I am unaware of something?

Thanks a lot,

Reply to: Loading (unpacking), processing, but no interpolation   7 years 9 months ago

We assume that someone who uses 'parts' of dcraw_process() will subclass LibRaw :)

Reply to: Loading (unpacking), processing, but no interpolation   7 years 9 months ago

Nice and thanks! I think the only issue for having this be a general solution (and not just having me rework the source a touch - fine for me, but...) is that scale_colors is protected rather than public.

Reply to: Loading (unpacking), processing, but no interpolation   7 years 9 months ago

unpack() is affected by camera_wb only in some (very rare) cases (I can not remember the details, it affects very small set of cameras, may be old Kodaks and/or foveon /old ones, before Sigma Merill).
For modern cameras unpack is not affected by color setting (but default for 'use_camera_matrix' for some cameras depends on wb settings)

subtract_black and scale_colors works with image[][4] array, so you need to call raw2image() before subtract_black().

Also, there is single call for raw2image and subtract_black:

int LibRaw::raw2image_ex(int do_subtract_black);

So:
open_file()
unpack();
raw2image_ex(1);
scale_colors();

will put black-subtracted and white-balanced image in image[][4]

Reply to: Loading (unpacking), processing, but no interpolation   7 years 9 months ago

Alex,

Thank you for all the details! I've been using:
RawProcessor.raw2image()
CFA data then from RawProcessor.imgdata.image[r*RAW_S.iwidth+c][RawProcessor.FC(r,c)]

in my code since ... well, a long time ago... to extract the unprocessed data for Bayer-matrix data. (The idea being, I do my own hot pixel / bad pixel mapping -- this is astrophotography work). When non-Bayer, I run:
RawProcessor.dcraw_process();
red data then from RawProcessor.imgdata.image[r*RAW_S.iwidth+c][0]
green from[1], blue from [2]

I poked around in the debugger and docs last night but still couldn't see the effect of use_camera_wb. The docs (http://www.libraw.org/docs/API-notes.html#imgdata_params) say that unpack() is affected by this but no matter what the setting, the output of raw2image() seems the same.

For Bayer matrices, is there a spot where I can pull off the still-CFA encoded data but having run say black level and color scaling? Or, should I just:
unpack()
subtract_black()
scale_colors()
raw2image()
and find CFA data then from RawProcessor.imgdata.image[r*RAW_S.iwidth+c][RawProcessor.FC(r,c)]

Craig

Pages