Debayer with VNG OpenCV implementation produces bad quality results
Hello!
I am doing a postdoc research work related to the quality and performance assessments of various demosaicing algorithms. When measuring the quality of VNG (Variable Number of Gradients [Chang, 2009]) demosaicing algorithm using as referenced images those from the Kodak dataset with image resolution 3072 x 2048. I found the Color Peak Signal-to-Noise Ratio is approximately 28.51 dB +/- 2.94 dB. Such a result is even worse than Bilinear and EA interpolations (~36-37 dB). Also, my performance results demonstrated that this is algorithm doesn't scales well as opposed to Bilinear and EA algorithms on a multi-core platform. I've tested it with optimizations turn on (cv::setUseOptimized(true); and variable number (2, 4, 8) of threads (cv::setNumThreads(numOfThreads), but there is no any improvements related to the case with single thread.
I am using OpenCV v 3.1.0 build on Windows 6.1 AMD 64 with parallel framework Concurrency. My CPU is Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz, Quad Core CPU, architecture X86_64, Sandy Bridge.
- What is the VNG the algorithm implemented by OpenCV?
- Is this the original Chang's algorithm, described in his paper ?
- Is there is any specific feature of this OpenCV implementation I am missing? I am calling the function like this "cvtColor(pCVgrayImage_mat, pCVdebayerImage_mat, cv::COLOR_BayerBG2BGR_VNG);"
I hope to receive your assistance.
Sincerely yours, Iva Nikolova