【问题标题】:cuda blur with array带有数组的cuda模糊
【发布时间】:2012-05-01 22:47:01
【问题描述】:

我是图像处理的新手,想根据每个像素模糊值进行模糊。有一个整数数组保存每个像素的模糊值,并在全局函数中使用 threadid,我想更改该像素值以进行模糊。我的图像格式是 Format24bppRgb 并且当我想更新像素值时出现问题,我无法将整数值加载到该像素。我真的不了解结构,也不知道是否可以直接使用 int 值更改像素而不更改 Color.red Color.blue ..value。我应该为此将 Format24bppRgb 格式转换为任何其他图像吗?这是我的代码:

__global__ void Workload(Format24bppRgb* imageData, int imageWidth, int *PixelBlurAmount)
 {
int tidX = threadIdx.x + blockIdx.x * blockDim.x;
int tidY = threadIdx.y + blockIdx.y * blockDim.y;

int tid  = tidX + tidY * imageWidth; 

imageData[tid] = PixelBlurAmount[tid];
 }

主要功能:

       int pixelBlurValue[1024*1024];

   for(int i=0; i<8; i++) 
   {
       for(int j=0; j<(1024*1024/8); j++) 
       { 
           pixelBlurValue[i*j]=i;  // VALUE
       }
   }       

   int * dev_pixValue;
   cudaMalloc(&dev_pixValue,sizeof(int)* (1024*1024));  
   cudaMemcpy(dev_pixValue,pixelBlurValue,sizeof(int) * (1024*1024)    ,cudaMemcpyHostToDevice);

   Workload<<<gridDim, blockDim>>>(
   dev_ptr_imageData,  
   imageWidth,
   dev_pixValue);

感谢您的帮助

【问题讨论】:

  • 您的问题是什么?您没有详细解释您想要做什么或遇到问题,并且您发布的代码仅显示相当于memcpy 内核的内容。请编辑您的问题,以更清楚地解释您正在尝试做什么以及您想知道什么。 Stack Overflow 上有很多知识渊博、乐于助人的人,但他们不会读心术......
  • 对不起,简短的解释。我希望现在更清楚了。
  • Format24bppRgb的定义在哪里?

标签: cuda


【解决方案1】:

您可能已经安装了 CUDA SDK 中的一些示例代码,请检查。理论部分基于this technical note。请注意,大多数模糊实际上是可分离的内核,因此已经有一些快速的卷积算法(可以适应 CUDA)。

【讨论】:

  • 谢谢。我尝试过这种方式并使用了均值滤波器。但是我想让每个像素都应该知道它们的模糊值是多少(根据平均过滤器都是 1),并直接将每个像素赋予该值以进行模糊。我不想使用过滤器数组。是否可以为像素赋予整数值?
猜你喜欢
  • 2012-05-05
  • 2012-03-27
  • 2013-02-13
  • 2012-11-09
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多