2015-10-13 145 views
-3

我有一个任务,它将本地C++算法速度与CUDA中的对应实现进行比较。我想,我的问题很简单。将图像从彩色转换为灰度

我需要在原生C++(或编写一个程序)中找到将图像从彩色转换为灰度的代码。我的任务是对算法进行基准测试,在CUDA中重写它,然后比较速度。

我猜这只是一个二维矩阵,但我很难追查一段可以用来进行基准测试的开源代码。我从哪说起呢?

回答

1

你似乎在问一个灰度算法。

struct ColorRGB8 
{ 
    char r; 
    char g; 
    char b; 

    ColorRGB8 toGrayScale() 
    { 
     ColorRGB8 ret; 

     //Intensity Algorithm as per void_ptr's request 
     char linearIntensity = (char)(0.2126f * r + 0.7512f * g + 0.0722 * b); 
     ret.r = linearIntensity; 
     ret.g = linearIntensity; 
     ret.b = linearIntensity; 
     return ret; 
    } 
}; 
+2

根据眼睛的敏感度来衡量颜色分量可能会更好。见例如https://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale另外,浮点除法在这里真的需要吗? –