从笛卡尔坐标到极坐标的图像转换

时间:2013-08-04 01:31:31

标签: image-processing polar-coordinates cartesian-coordinates

我想知道是否有人帮助我了解如何将顶部图像转换为底部图像。 图像可在以下链接中获得。顶部图像采用笛卡尔坐标。底部图像是极坐标转换后的图像

Image

1 个答案:

答案 0 :(得分:3)

这是一个基本的rectangular to polar coordinate transform。要进行转换,请扫描输出图像并将x和y视为r和theta。然后使用它们作为r和theta来查找输入图像中的相应像素。所以像这样:

int x, y;
for (y = 0; y < outputHeight; y++)
{
    Pixel* outputPixel = outputRowStart (y); // <- get a pointer to the start of the output row
    for (x = 0; x < outputWidth; x++)
    {
        float r = y;
        float theta = 2.0 * M_PI * x / outputWidth;
        float newX = r * cos (theta);
        float newY = r * sin (theta);
        *outputPixel = getInputPixel ( newX, newY ); // <- Should probably do at least bilinear resampling in this function
        outputPixel++;
    }
}

请注意,您可能希望根据您尝试实现的内容来处理包装。 theta值包含在2pi。