我試圖在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 - 這是僞代碼,只是爲了說明問題。 –