天天看点

OpenCL 学习step by step (8) 灰度图Histogram计算(2)

     现在我们利用上一篇教程的方法,来统计一副RGBA图像中有多少个像素点(该像素点满足R, G, B, A任意分量>=5)。我考虑的方法是建立256 bin的直方图,对于一个像素,求max(R, G,B,A),用该值决定该像素点进入那个bin,这样求出直方图后,width*height - hostBin[0] - hostBin[1] - hostBin[2] - hostBin[3] - hostBin[4],即为我们要的结果。

     本教程代码基本上和上一篇教程中代码是一样的,区别主要包括以下两点:

1、我们装入的是RGBA 彩色图。

//装入图像

unsigned char *src_image=0;

gFreeImage img;

if(!img.LoadImage("../lenna.jpg"))

    {

    printf("can‘t load lenna.jpg\n");

    exit(0);

    }

src_image = img.getImageData(width,height);

2、在kernel代码中,有点小变化,kernel代码如下:

完整的代码请参考:

工程文件gclTutorial8

代码下载:

<a href="http://files.cnblogs.com/mikewolf2002/gclTutorial.zip">http://files.cnblogs.com/mikewolf2002/gclTutorial.zip</a>

继续阅读