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