With default settings, LibRaw processing:
1) Adjust data maximum using real maximum in RAW file (use params.adjust_maximum_thr to adjust)
2) Brighten image to put 1% in saturation (parms.auto_bright_thr to adjust, or turn brightening off via params.no_auto_bright)
Darktable uses own raw processing with all things different.
If you have two PNG converters, that take a BMP and turn it into PNG form and found that the output from these converters were different, what would you do? Note that PNG is simply using lossless compression on a BMP any differences means someone is at fault!
Why does this change for RAW converters? Aren't RAW converters "suppose" to be "lossless" or are they horrifically lossy programs that have been touted about as needed by people who have a vested interest in keeping the status quo?
OpenRAW makes far more sense. Proprietary formats don't matter so much as holding a knife to Adobe's throat and saying "we're documenting our RAWs now, so update your code for all platforms because you only exist because of our customers." Companies working together for the betterment of the consumer rather than whatever they think they're doing, should be the real goal here.
Fuji X-Trans is so special and requires different processing in most cases, so COLOR() really used only in bayer processing code, but not in X-Trans.
BTW, this need to be fixed and COLOR() should return correct color even for X-Trans files too. I'll reply to this thread again after pushing fix to github repo.
Thanks for you reply. And I have another question.when I read the part of source code in libraw_cxx.cpp, the part of source code is :
char name[100], value[100];
utf2char(P[i].name,name);
utf2char(P[i].value,value);
if (!strcmp (name, "ISO"))
imgdata.other.iso_speed = atoi(value);
I am confused with this part of source code. when you developed this libraw library,how can you read "ISO speed" from Raw file to iso_speed variable of libraw?
Have not used XCode GUI mode.
To re-build LibRaw from command line, start with OS X tuned version (http://www.libraw.org/data/LibRaw-0.16.2-MacOSX.zip). To rebuild it just use
make -f Makefile.dist
It should works fine
Could you possibly explain the steps required to compile those samples? Preferably using xcode?
Also building a command line tool from the modified sample file, how could I do this on a linux system?
I have no experience with working with c++.
I essentially need to extract out the thumbnail from a raw but be able to specify the output directory of the file.
Since I am watching the dir, when any new files are added I process them, but do not want to add the thumbnail to the same directory for several reasons. dcraw does not seem to have a flag to specify an output directory when extracting the thumbnail.
It also is creating strange images when we apply the color profile.
I would love to be able to dig into libraw and start creating dedicated command line tools for our processing, if you could direct me in the right direction to things I would need to learn and tools I would use.
Also, since this is going to run on raspberry pi, would you be able to recommend a build process that would work for a device like that?
I know this may be a lot to ask. Sorry for the newbie questions. Any help is greatly appreciated.
Thanks.
LibRaw 0.17 works fine with these files, so switch to actual release
(I'll not inspect LibRaw 0.16 for this problem, because 0.16 branch will receive only critical security bugfixes).
https://yadi.sk/d/DQkLznQcj9JeT
https://yadi.sk/d/FIj0e9Uhj9JdL
With default settings, LibRaw processing:
1) Adjust data maximum using real maximum in RAW file (use params.adjust_maximum_thr to adjust)
2) Brighten image to put 1% in saturation (parms.auto_bright_thr to adjust, or turn brightening off via params.no_auto_bright)
Darktable uses own raw processing with all things different.
egor@shutter:~/src/libraw/LibRaw-0.16.2/bin$ ./simple_dcraw -v -4 -T ~/tmp/raw/IMGP3859.PEF
Processing file /home/egor/tmp/raw/IMGP3859.PEF
/home/egor/tmp/raw/IMGP3859.PEF: data corrupted at 160143
Cannot unpack /home/egor/tmp/raw/IMGP3859.PEF: Input/output error
egor@shutter:~/src/libraw/LibRaw-0.16.2/bin$ cd ../../LibRaw-0.17.0/bin/
egor@shutter:~/src/libraw/LibRaw-0.17.0/bin$ ./simple_dcraw -v -4 -T ~/tmp/raw/IMGP3859.PEF
Processing file /home/egor/tmp/raw/IMGP3859.PEF
Writing file /home/egor/tmp/raw/IMGP3859.PEF.tiff
egor@shutter:~/src/libraw/LibRaw-0.17.0/bin$
Could you please upload sample file somewhere (dropbox, etc) and share the link.
If you have two PNG converters, that take a BMP and turn it into PNG form and found that the output from these converters were different, what would you do? Note that PNG is simply using lossless compression on a BMP any differences means someone is at fault!
Why does this change for RAW converters? Aren't RAW converters "suppose" to be "lossless" or are they horrifically lossy programs that have been touted about as needed by people who have a vested interest in keeping the status quo?
OpenRAW makes far more sense. Proprietary formats don't matter so much as holding a knife to Adobe's throat and saying "we're documenting our RAWs now, so update your code for all platforms because you only exist because of our customers." Companies working together for the betterment of the consumer rather than whatever they think they're doing, should be the real goal here.
Got the file, thanks.
This is very special case:
color.maximum is calculated from metadata for these files, this is just 0xfffc - black_level
And after LibRaw::unpack() real data maximum is within this range.
But on postprocessing stage, PhaseOne data are linearized using other metadata contained in file (complex process in phase_one_flat_field() call).
After that stage, real (linearized) data values may have values above color.maximum
The best way it to share it somewhere (Dropbox, google) and send me link.
Or just send via E-mail
my personal e-mail is lexa@lexa.ru
Sure, how to send you the file (46,9 MB)?
This is possible and normal for some formats. For example, for DNG files color.maximum is read from corresponding tag, that may contain anything.
BTW, could you provide sample file for analysis?
LibRaw do not write RAW data in any format. It can store processing results in .ppm or .tiff, that's all.
Consider Adobe DNG SDK, it can read and write DNG files.
Could you please specify more details
- environment (OS, etc)
- compiler used
- interpolation mode used
Thank you!
You may use fcol() instead of FC() in COLOR() definition:
int COLOR(int row, int col) { return libraw_internal_data.internal_output_params.fuji_width? FCF(row,col):fcol(row,col);}This is not so efficient because fcol() is not inlined, but if you do not use COLOR() for all pixels of image, it will work.
fcol do not take into account Fuji SuperCCD specifics.
What is LibRaw::fcol, can it be used instead?
Fuji X-Trans is so special and requires different processing in most cases, so COLOR() really used only in bayer processing code, but not in X-Trans.
BTW, this need to be fixed and COLOR() should return correct color even for X-Trans files too. I'll reply to this thread again after pushing fix to github repo.
For most (TIFF/EP) raw files, EXIF data is pointed by EXIF (34665) tag
Make and model for these files are parsed in other place.
Can you tell me the method to find the exif metadata location in Raw files?
How about other parameters like "camera model" ,"camera make", like this Exif metadata, how can you read it to the libraw datastructure?
This piece of code is related only to foveon images with own (non-EXIF) metadata format
Thanks for you reply. And I have another question.when I read the part of source code in libraw_cxx.cpp, the part of source code is :
char name[100], value[100];
utf2char(P[i].name,name);
utf2char(P[i].value,value);
if (!strcmp (name, "ISO"))
imgdata.other.iso_speed = atoi(value);
I am confused with this part of source code. when you developed this libraw library,how can you read "ISO speed" from Raw file to iso_speed variable of libraw?
Have not used XCode GUI mode.
To re-build LibRaw from command line, start with OS X tuned version (http://www.libraw.org/data/LibRaw-0.16.2-MacOSX.zip). To rebuild it just use
make -f Makefile.dist
It should works fine
Thank you Alex.
Could you possibly explain the steps required to compile those samples? Preferably using xcode?
Also building a command line tool from the modified sample file, how could I do this on a linux system?
I have no experience with working with c++.
I essentially need to extract out the thumbnail from a raw but be able to specify the output directory of the file.
Since I am watching the dir, when any new files are added I process them, but do not want to add the thumbnail to the same directory for several reasons. dcraw does not seem to have a flag to specify an output directory when extracting the thumbnail.
It also is creating strange images when we apply the color profile.
I would love to be able to dig into libraw and start creating dedicated command line tools for our processing, if you could direct me in the right direction to things I would need to learn and tools I would use.
Also, since this is going to run on raspberry pi, would you be able to recommend a build process that would work for a device like that?
I know this may be a lot to ask. Sorry for the newbie questions. Any help is greatly appreciated.
Thank you!
Pages