I would like to implement a GPU Bayer to RGB image conversion algorithm, and I was wondering what algorithm the OpenCV cvtColor function uses. Looking at the source I see what appears to be a variable number of gradients algorithm and a basic algorithm that could maybe be bilinear interpolation? Does anyone have experience with this that they could share with me, or perhaps know of GPU code to convert from Bayer to BGR format?
The source code is in imgproc/src/color.cpp. I’m looking for a link to it. Bayer2RGB_ and Bayer2RGB_VNG_8u are the functions I’m looking at.
Edit: Here’s a link to the source.
I’ve already implemented a bilinear interpolation algorithm, but it doesn’t seem to work very well for my purposes. The picture looks ok, but I want to compute HOG features from it and in that respect it doesn’t seem like a good fit.
Default is 4way linear interpolation or variable number of gradients if you specify the VNG version.
see ..\modules\imgproc\src\color.cpp for details.
I submitted a simple linear CUDA Bayer->RGB(A) to opencv, haven’t followed if it’s been accepted but it should be in the bugs tracker.
It’s based on the code in Cuda Bayer/CFA demosaicing example.
Here is a sample of howto use cv::GPU in your own code.