Я пытаюсь реализовать максимальную производительность Circle Hough Transform в CUDA, благодаря чему пиксельные координаты края подают голоса в пространстве hough. Псевдо код СНТ выглядит следующим образом, я использую размеры изображения от 256 х 256 пикселей:CUDA реализация Circle Hough Transform
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;
}
}
Моя основная идея заключается в том, чтобы каждый блок нить вычислить (небольшой) плитку выходного Hough пространства (возможно, один блок для каждой строки выходного пространства hough). Поэтому мне нужно каким-то образом получить требуемую часть входного изображения в разделяемую память, чтобы провести голосование в определенном пространстве суб-хау.
Мои вопросы заключаются в следующем:
Как рассчитать и сохранять координаты нужной части входного изображения в общей памяти?
Как получить координаты 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 - это псевдокод, чтобы получить точку. –