Image 在MATLAB中绘制极坐标图

Image 在MATLAB中绘制极坐标图,image,matlab,plot,polar-coordinates,Image,Matlab,Plot,Polar Coordinates,我有1024x256个极坐标数据(行-半径,列-角度),需要打印为图像。我从文件交换处得到的一个m文件可以做到这一点。但是,对于大型图像来说,速度确实很慢。我相信有一个快速的方法可以做到这一点,使用冲浪功能,我正在努力。(见下面的代码) 结果似乎不正确 知道我做错了什么吗? 谢谢 是的,你的问题很简单: pol2cart Transform polar to Cartesian coordinates. [X,Y] = pol2cart(TH,R) transforms correspo

我有1024x256个极坐标数据(行-半径,列-角度),需要打印为图像。我从文件交换处得到的一个m文件可以做到这一点。但是,对于大型图像来说,速度确实很慢。我相信有一个快速的方法可以做到这一点,使用冲浪功能,我正在努力。(见下面的代码)

结果似乎不正确

知道我做错了什么吗?
谢谢

是的,你的问题很简单:

pol2cart Transform polar to Cartesian coordinates.
    [X,Y] = pol2cart(TH,R) transforms corresponding elements of data
    stored in polar coordinates (angle TH, radius R) to Cartesian
    coordinates X,Y.  The arrays TH and R must the same size (or
    either can be scalar).  ***TH must be in radians***.

解决方案:删除180/pi

M文件的方法是正确的。但你是对的,它的实施非常缓慢。您缺少的部分是数据本身从极坐标到矩形的转换,这是最困难的部分。当前,您正在变换要在其中绘制的坐标,但随后会将极坐标数据当作笛卡尔坐标来绘制(将笛卡尔坐标施加在数据上)

您应该采取的正确快速的方法是:

  • 在要绘制的区域上生成笛卡尔网格(meshgrid),每个目标像素一个条目
  • 将x/y笛卡尔变量转换为极坐标
  • 缩放极坐标以索引到极坐标图像中(这将考虑矩阵大小和成像深度)
  • 使用极坐标索引,使用interp2从极坐标图像中插值(这是使慢速处理变快的原因)
  • 生成的图像是笛卡尔图像,其像素位置位于原始x/y网格点

  • 这个过程有意义吗?在图像处理中,通常从目标空间(即需要整像素的地方)开始,然后向后移动到源图像中的分数像素偏移,然后进行插值。

    谢谢您的回复。我相信您的描述就是我在fileexchange中遇到的另一个算法所使用的。然而,出于我的目的,我可以使用surf函数。
    pol2cart Transform polar to Cartesian coordinates.
        [X,Y] = pol2cart(TH,R) transforms corresponding elements of data
        stored in polar coordinates (angle TH, radius R) to Cartesian
        coordinates X,Y.  The arrays TH and R must the same size (or
        either can be scalar).  ***TH must be in radians***.