用于平均具有8个邻居的像素的循环(Cuda)

时间:2014-04-02 02:03:41

标签: loops cuda

有人可以帮我解决如何遍历CUDA内核来平均Mat图像的角点像素,边界像素和/或中间像素的问题吗?

我知道对于中间像素,我应该这样做:

                                            (src[threadIdx.x][ threadIdx.y] + 
                    src[threadIdx.x -1][ threadIdx.y -1]+
                    src[threadIdx.x -1][ threadIdx.y]+
                    src[threadIdx.x -1][ threadIdx.y + 1]+
                     src[threadIdx.x][ threadIdx.y - 1]+
                    src[threadIdx.x][ threadIdx.y + 1]+
                    src[threadIdx.x +1][ threadIdx.y - 1]+
                    src[threadIdx.x + 1][ threadIdx.y]+
                    src[threadIdx.x+ 1][ threadIdx.y +1])/9.0;

正确? 角落或边框像素怎么样? 你如何处理边界?

1 个答案:

答案 0 :(得分:1)

如果寻址模式符合您的要求,纹理硬件在处理角落和边界方面非常出色。

共享内存非常适合于促进模板中像素的重用 - 查看SDK中的sobelFilter示例程序,并将Sobel计算替换为您的计算。