我试图在CUDA中实现最大性能Circle Hough变换,借此边缘像素坐标在Hough空间中投票。红隧伪代码如下,我使用的256×256像素的图像大小:CUDA实现Circle Hough变换
int maxRadius = 100;
int minRadius = 20;
int imageWidth = 256;
int imageHeight = 256;
int houghSpace[imageWidth x imageHeight * maxRadius];
for(int radius = minRadius; radius < maxRadius; ++radius)
{
for(float theta = 0.0; theta < 180.0; ++theta)
{
xCenter = edgeCoordinateX + (radius * cos(theta));
yCenter = edgeCoordinateY + (radius * sin(theta));
houghSpace[xCenter, yCenter, radius] += 1;
}
}
我的基本想法是让每个线程块计算输出霍夫空间的(小)瓦(也许输出霍夫空间的每一行一个块)。因此,我需要以某种方式将输入图像的所需部分分配到共享存储器中,以便在特定的输出子空间中执行投票。
我的问题如下:
如何计算和存储的坐标为共享内存中输入图像所需的部分?
如何检索以前存储在共享内存中的边缘像素的x,y坐标?
我是否可以在另一个共享内存阵列中投票或将投票直接写入全局内存?
谢谢大家为你准备的时间。我是CUDA的新手,任何与此有关的帮助都会非常感激。
请修复你的代码中的语法错误 – RoBiK
你在这里问我们的是为你工作。我建议你这两个读数,你可以自己回答。 1:http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html 2:http://docs.nvidia.com/cuda/cuda-c-best-practices-guide /index.html – KiaMorot
RoBiK - 这是伪代码,只是为了说明问题。 –