c - 在 CUDA 中倾斜图像

标签 c image cuda

我正在尝试将图像倾斜 90 度,目前我正在按照此处介绍的方法进行操作: http://www.scribd.com/doc/66589491/Image-Rotation-Using-CUDA

我当前的内核代码是这样的:

 __global__ void kernCuda(float *Source,float * Destination, int width)
{
    int x = blockIdx.x * blockDim.x + threadIdx.x;
    int y = blockIdx.y * blockDim.y + threadIdx.y; 

    int i = abs(x*cosf(theta)-y*sinf(theta));
    int j = abs(x*sinf(theta)+y*cosf(theta));

    if(x<width && y<width){
        Destination[j*width+i]=Source[y*width+x];
    }

}

图像有些倾斜,但看起来不正确,最重要的是一些彩色像素现在变成了黑色 (0)。任何帮助将不胜感激

最佳答案

我假设 theta 是一个 float 。所以你混合了浮点和整数变量。我建议您使用适当的转换来使其工作并查找舍入问题。

其次,为了查看您的程序是否正常工作,您可以将 cosf(theta) 替换为 0,将 sinf(theta) 替换为 1。

我看到的第三个问题是您只获取一个 x,y 值,而不是使用 while 循环遍历它们。因此,如果您的图像尺寸大于您使用的内核,您将无法获得所有像素。

编辑:我只是简单地看了一眼报告。真的不是很好。如果您只想了解 CUDA,我建议您阅读名为“CUDA 实例”的书。

关于c - 在 CUDA 中倾斜图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9884978/

相关文章:

java - 将图像加载到 jar 中

c++ - CMake 找不到 CUDA : "Could not find cmake module file: CMakeDetermineCUDACompiler.cmake"

c++ - 如何使用 CUDA 将 std::vector<std::string> 复制到 GPU 设备

c - 如何在 C 中用 printf 打印一个 unsigned long int?

c# - 从 C# 调用 C# : How to marshall that one 2D array of doubles when the others go so well?

javascript - 如何等待用javascript加载的图像?

ios - viewController 中幻灯片类型显示多张照片?

cuda - OpenCL get_local_id() 的成本

c - 均衡后如何避免音频样本16位削波?

c++ - Arduino - 在 sketch 中使用的 C 库中包含 SD.h