Hi Alex,
thanks a lot for the fast response. Good to hear, that I can proceed with 32-bit. I am also surprised that there still seems to be the need for it.
My LibRaw is older. I started with https://github.com/hurlbertvisionlab/LibRawWrapper.git which includes LibRaw and is from July 2021. Will update the local copy of LibRaw with latest version from https://github.com/LibRaw/LibRaw.git and will let you know about the result.
Link to sample file is sent to info@libraw.org.
If your LibRaw is older consider upgrade via github (or just apply this patch)
The easiest way to build 32-bit LibRaw for windows is
1) start Visual Studio developer shell in 32 bit mode
(e.g: run cmd.exe and execute
call "C:\Program Files ... path to VisualStudio installation...\VC\vcvarsall.bat" x86
)
2) run nmake -f Makefile.msvc to build LibRaw
32-bit windows (and even more broadly, 32-bit apps) don't look relevant in 2022, nevertheless, it is still too early to completely stop 32-bit systems support.
LibRaw's main goal is RAW data extraction (plus metadata needed for RAW processing).
RAW conversion is very basic and no plans to improve it (or even touch it).
Generally speaking, raw color data is also out of LibRaw's scope (unless contained in RAW metadata), although we provide some basic data enough for basic processing.
I just put the cam_xyz into ColorMatrix1 and set the illuminant1 to D65.
The DNG output color is slightly off but acceptable.
I'm not sure if libraw can do this. Take the PixelShift2DNG application as an example, that one is built around libraw but only supports a few cameras, the ColorMatrix1 field can be easily copied from Adobe DNG Converter results.
Well, that's one possible solution, convert the images using Adobe DNG Converter first, then you have it.
rawtherapee which uses some custom dcraw success in extracting the compressed raw data,
but it fails in decoding the decompressed structure.
I modified it to dump the uncompressed raw (which display as garbage currently).
For a 25 mb pixels image, there is exactly 50 mbytes of decoded data being decoded.
which correspond to 2 bytes per pixel, which seems to be confirming the 16 bits per pixel.
I tried making a black frame and a white frame,
just to see if I could understand something, but the result are not that great:
The first bytes of the frames are looking like that:
So...
either they are crypted or salted,
either the colorspace is uncommon,
either I am missing something, which can be possible as I am far from an expert in this domain.
The data are there : (including the two RW2 files)
samples/unprocessed_raw.cpp code sample shows how to use imgdata.rawdata.raw_image array (other cases: 3/4 color images, float images are not covered by this sample)
Sorry, know nothing about VB.NET, so I don't know what your problems might be
The profile created is very close to sRGB profile (default tone curve is slightly different).
So, if the problem still exists: please make sure
a) you use real updated LibRaw, not outdated .dll or .so/.dylib somewhere in the shared library path
b) you have recompiled your application too: offsets in LibRaw object may change resulting in unexpected things
But is there any way to use:
libraw_processed_image_t *image = RawProcessor->dcraw_make_mem_image(&ret);
and to get the color profile which is embedded by dcraw_emu into the TIFF?
Just use Adobe DNG SDK:
- it is free
- it is BSD licensed
- it is capable to record industry-standard RAW files compatible with ANY raw-processing software.
(the only problem is lack of useable documentation but it is easy to grab a working sample code from github :)
Actually, I am in position similar to the OP's, so I would like to expand a bit on the subject:
- many industrial cameras can be interfaced using the Gige Vision protocol.
- this protocol is very low-level, and each frame is received with minimal meta-data.
- so storing the pixel values is mostly the programmer's responsibility.
- so every person facing such a camera ends up defining his/her RAW format.
- still, it would be good if the images produced could be read by LibRaw, and all the programs built around it.
- and it would hardly make any sense to add to LibRaw a routine for each file type produced by each version of each software written by each new person.
So the bottom line is:
- given LibRaw's developers experience with RAW file formats, could they point out an existing one that is already handled by LibRaw with which newcomers could comply with minimal hassle? (as the OP pointed out, DNG seems to have been designed just for that, but I have no idea how hard writing DNG files is).
Hi Alex,
thanks a lot for the fast response. Good to hear, that I can proceed with 32-bit. I am also surprised that there still seems to be the need for it.
My LibRaw is older. I started with https://github.com/hurlbertvisionlab/LibRawWrapper.git which includes LibRaw and is from July 2021. Will update the local copy of LibRaw with latest version from https://github.com/LibRaw/LibRaw.git and will let you know about the result.
Link to sample file is sent to info@libraw.org.
Norbert
Could you please provide the sample file that is handled wrong in 32-bit mode? Use info@libraw.org for that :)
On Nov 26, 2021 we fixed one 32-bit related error via this commit: https://github.com/LibRaw/LibRaw/commit/30595a731f3bea78f0410426b73ef3af...
Probably it will fix the issue but we need sample file to be sure.
If your LibRaw is older consider upgrade via github (or just apply this patch)
The easiest way to build 32-bit LibRaw for windows is
1) start Visual Studio developer shell in 32 bit mode
(e.g: run cmd.exe and execute
call "C:\Program Files ... path to VisualStudio installation...\VC\vcvarsall.bat" x86
)
2) run nmake -f Makefile.msvc to build LibRaw
32-bit windows (and even more broadly, 32-bit apps) don't look relevant in 2022, nevertheless, it is still too early to completely stop 32-bit systems support.
LibRaw's main goal is RAW data extraction (plus metadata needed for RAW processing).
RAW conversion is very basic and no plans to improve it (or even touch it).
Generally speaking, raw color data is also out of LibRaw's scope (unless contained in RAW metadata), although we provide some basic data enough for basic processing.
I think for me the real question is why libraw only uses one color matrix? Why not use two like DNG 1.5 and before or even three like DNG 1.6?
I just put the cam_xyz into ColorMatrix1 and set the illuminant1 to D65.
The DNG output color is slightly off but acceptable.
I'm not sure if libraw can do this. Take the PixelShift2DNG application as an example, that one is built around libraw but only supports a few cameras, the ColorMatrix1 field can be easily copied from Adobe DNG Converter results.
Well, that's one possible solution, convert the images using Adobe DNG Converter first, then you have it.
According to Update Policy section at this site homepage: https://www.libraw.org/
Thanks. Do you have a timeframe for this snapshot release?
I tried to inspect a bit more the situation:
rawtherapee which uses some custom dcraw success in extracting the compressed raw data,
but it fails in decoding the decompressed structure.
I modified it to dump the uncompressed raw (which display as garbage currently).
For a 25 mb pixels image, there is exactly 50 mbytes of decoded data being decoded.
which correspond to 2 bytes per pixel, which seems to be confirming the 16 bits per pixel.
I tried making a black frame and a white frame,
just to see if I could understand something, but the result are not that great:
The first bytes of the frames are looking like that:
white frame:
black frame:
So...
either they are crypted or salted,
either the colorspace is uncommon,
either I am missing something, which can be possible as I am far from an expert in this domain.
The data are there : (including the two RW2 files)
http://esby.free.fr/perso/GH6-RW2/
See
http://esby.free.fr/perso/GH6-RW2/P1000404-black.info
and
http://esby.free.fr/perso/GH6-RW2/P1000407-white.info
for the filesizes and basic descriptions
(the dng were producted by Adobe Dngconverter 14_3 under wine staging 7.2 )
In the meantime conversion with the most recent Adobe DNG Converter works.
Most likely not
Will GH6 raw format supported in the next release/snapshot?
Regards
Ugo
Nikon Z9/standard compression support will be published in next snapshot or release (whatever comes first)
Thanks. This gives me the confidence that I am looking at the correct data structure.
I have looked at unprocessed_raw.cpp, but it is slow going for me, not being a C or C++ developer, but I will keep at it.
I now have the confidence that I should be able to solve my issue in VB.NET.
Will keep you posted.
SteveR
Dear SteveR:
Quoting from datastructures API (https://www.libraw.org/docs/API-datastruct-eng.html#libraw_rawdata_t already quoted above):
unsigned short *raw_image;
Pointer to buffer with one-component (bayer) data.
Have you looked at the source code of the unprocessed_raw.cpp (also quoted above)?
Thanks. However, I don't believe I can create an instance in VB.NET of imgdata to be able to access the raw_image array
I can access the various data structures in VB.NET, as listed previously.
Does one of the data structures contain the RAW values from the sensor pixels?
libraw_rawdata_t is described in documentation: https://www.libraw.org/docs/API-datastruct-eng.html#libraw_rawdata_t
samples/unprocessed_raw.cpp code sample shows how to use imgdata.rawdata.raw_image array (other cases: 3/4 color images, float images are not covered by this sample)
Sorry, know nothing about VB.NET, so I don't know what your problems might be
Yes, this is completely new encoding format, nothing common with previous panasonic formats.
The profile created is very close to sRGB profile (default tone curve is slightly different).
So, if the problem still exists: please make sure
a) you use real updated LibRaw, not outdated .dll or .so/.dylib somewhere in the shared library path
b) you have recompiled your application too: offsets in LibRaw object may change resulting in unexpected things
The approach via dcraw_emu works.
But is there any way to use:
libraw_processed_image_t *image = RawProcessor->dcraw_make_mem_image(&ret);
and to get the color profile which is embedded by dcraw_emu into the TIFF?
Thorsten
Here is your file processed with dcraw_emu -w -T: https://www.dropbox.com/s/z14eycj4932v47s/original.orf.tiff?dl=0
I do not see anything that bad here.
dcraw_emu was just built from LibRaw github/master
Please try to repeat the problem with LibRaw's dcraw_emu (-w -T), if it is not reproduce: the problem is in your code.
I tried the latest patch.
It imports the ORF file. But the colors are really terrible with the default settings. Do you suggest any special settings?
Original file: https://www.lemkesoft.org/temp/original.orf
Imported file: https://www.lemkesoft.org/temp/import_25percent.png
Thorsten
Just use Adobe DNG SDK:
- it is free
- it is BSD licensed
- it is capable to record industry-standard RAW files compatible with ANY raw-processing software.
(the only problem is lack of useable documentation but it is easy to grab a working sample code from github :)
Actually, I am in position similar to the OP's, so I would like to expand a bit on the subject:
- many industrial cameras can be interfaced using the Gige Vision protocol.
- this protocol is very low-level, and each frame is received with minimal meta-data.
- so storing the pixel values is mostly the programmer's responsibility.
- so every person facing such a camera ends up defining his/her RAW format.
- still, it would be good if the images produced could be read by LibRaw, and all the programs built around it.
- and it would hardly make any sense to add to LibRaw a routine for each file type produced by each version of each software written by each new person.
So the bottom line is:
- given LibRaw's developers experience with RAW file formats, could they point out an existing one that is already handled by LibRaw with which newcomers could comply with minimal hassle? (as the OP pointed out, DNG seems to have been designed just for that, but I have no idea how hard writing DNG files is).
ILCE-7M4 support will be published in the next public snapshot (or beta/release, if it comes first)
request a7iv (ILCE-7M4) raw support
Environment
I tried my EOS 80D's cr2 file and SONY a330's ARW file, both of them are working okay. But the ARW shoot by a7m4 does not work.
Pages