image - CUDA 图像旋转

标签 image cuda

我在 CUDA 中实现图像旋转时遇到问题。我有一个非常简单的旋转函数,其工作方式如下:

__device__ float readPixVal( float* ImgSrc,int ImgWidth,int x,int y)
{
    return (float)ImgSrc[y*ImgWidth+x];
}
__device__ void putPixVal( float* ImgSrc,int ImgWidth,int x,int y, float floatVal)
{
    ImgSrc[y*ImgWidth+x] = floatVal;
}

__global__ void Rotate(float* Source, float* Destination, int sizeX, int sizeY, float deg)
{
    int i = blockIdx.x * blockDim.x + threadIdx.x;// Kernel definition
    int j = blockIdx.y * blockDim.y + threadIdx.y;

    if(i < sizeX && j < sizeY)
    {
        putPixVal(Destination, sizeX, ((float)i)*cos(deg) - ((float)j)*sin(deg), ((float)i)*sin(deg) + ((float)j)*cos(deg)), readPixVal(Source, sizeX, i, j));
    }
}

问题是,我不知道如何进行插值。通过上述,由于整数舍入,许多像素被跳过。任何人都知道如何解决这个问题,或者是否有图像旋转的任何免费/开源实现?我找不到任何 CUDA。

最佳答案

通常,在这种图像处理中,您会遍历所有目标像素位置,计算源图像中的相应像素(或内插像素组)。

这可确保您均匀一致地填充生成的图像,这通常是您关心的。

关于image - CUDA 图像旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9833316/

相关文章:

C#、WPF、嵌入式资源/嵌入式资源

css - 小 div 内的大图像,没有裁剪或纵横比变化

c++ - OpenACC 嵌套循环依赖错误

graphics - 我可以在英特尔集成图形处理器上运行 CUDA 吗?

java - 将网页转换为 PDF 或图像

C# 图像分析库

CUDA 内核未在 CudaDeviceSynchronize 之前启动

linux - linux安装opencv报错

c++ - 为数组中的每个段推力 CUDA 计算索引

android - 使用 Gmail 应用程序共享图像不起作用