WARNING: Would not recommend this project for anything, it is greater than 13 years old at this point and not maintained. I am sure you can find better projects out there doing essentially the same thing, e.g. OpenCV can demosaic raw data. I plan to post some updates just because I wish to toy with cmake and github actions and this felt like a good dummy project in which to do that. Just becuase there are some recent commits does not mean this is a maintained project :) -- Jeff circa 2021
bayer2rgb will convert naked (no header) bayer grid data into rgb data. There are several choices of interpolation . It can output tiff files, and can integrate with ImageMagick to output other formats.
The bayer.c
was borrowed from the libdc1394 project [1], it is licensed under
LGPL. The interpolation algorithms used are described at [3].
This is an implementation of the idea I stumbled upon on ImageMagick's mailing list while searching for a bayer grid converter. The thread can be found at [2].
mkdir build/ && cd build/
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release
ctest --verbose
cp delegates.xml ~/.config/ImageMagick/
usage: ./bayer2rgb
--input,-i input file
--output,-o output file
--width,-w image width (pixels)
--height,-v image height (pixels)
--bpp,-b bits per pixel
--first,-f first pixel color: RGGB, GBRG, GRBG, BGGR
--method,-m interpolation method: NEAREST, SIMPLE, BILINEAR, HQLINEAR, DOWNSAMPLE, EDGESENSE, VNG, AHD
--tiff,-t add a tiff header
--swap,-s if bpp == 16, swap byte order before conversion
--help,-h this helpful message
- https://damien.douxchamps.net/ieee1394/libdc1394/
- http://www.imagemagick.org/pipermail/magick-developers/2008-May/002953.html
- http://scien.stanford.edu/class/psych221/projects/99/tingchen/main.htm
A delegates.xml file is included. Add the entries from it to your delegates.xml and you should be able to do:
convert -size 1328x498 -depth 8 RGGB_BAYER:./tests/SV0030.RAW ./SV0030.jpg