洪水填写CUDA

时间:2013-06-10 20:39:33

标签: cuda

我有一项任务要做。我需要在CUDA上运行Flood Fill算法。在CPU上我有一个带队列的非递归方法,但我不知道如何将此代码移动到GPU以便它运行得更快。有人可以帮忙吗?

编辑: 这是我的CPU代码,只是普通的FloodFill,我的修改很少

void cpuFloodFill(std::vector<std::vector<int>> *colorVector, int node)
{
    std::queue<int> q;
    q.push(node);

    int i,j;

    while(!q.empty())
    {
        int k = q.front();
        q.pop();

        k2ij(k, &i, &j);
        if((*colorVector)[i][j] == COLOR_TARGET)
        {
            (*colorVector)[i][j] = COLOR_REPLACEMENT;           
            if(i - 1 >= 0 && i - 1 < X && j >= 0 && j < Y)
                q.push(ij2k(i - 1, j));

            if(i + 1 >= 0 && i + 1 < X && j >= 0 && j < Y)
                q.push(ij2k(i + 1, j));

            if(i >= 0 && i < X && j - 1 >= 0 && j - 1 < Y)
                q.push(ij2k(i, j - 1));

            if(i >= 0 && i < X && j + 1 >= 0 && j + 1 < Y)
                q.push(ij2k(i, j + 1));
        }

    }
}

1 个答案:

答案 0 :(得分:1)

在名为CUDA Skel的图像骨架化工具包中有一个GPU泛洪填充实现。其源代码的链接在网站上。请注意代码的许可:源代码和工具包可以在适当的引用下免费用于研究目的。