Matlab:极坐标灰度图

时间:2016-05-11 18:16:28

标签: image matlab matrix polar-coordinates

编辑:我决定将这个问题分成两部分,因为它实际上是两个问题:1。如何在MATLAB(这个问题)和2. how to put fit polar data points into a coarse (and non-polar) matrix 中制作极面曲线图

我有一个包含某些灰度值的矩阵(值介于0和1之间)。这些点存储在矩形矩阵中,但实际上通过旋转检测器获取数据点。这意味着我实际上有极坐标(我知道我的起始矩阵中每个像素的极坐标)。

我想制作数据点的极坐标图。我有下面的例子。

Image as I want it

因为MATLAB将图像存储为矩阵,所以极坐标I与矩阵的“bins”不完全匹配。因此,我们目前使用插值算法将极坐标放入方阵中。但是,这非常慢。我看到两种方法来解决这个问题:

  1. 让MATLAB直接将数据点绘制为极坐标。
  2. calculate once how to convert from the start matrix to the end matrix and let MATLAB do this through matrix multiplication
  3. 一些基本信息:

    输入矩阵大小:512×960

    当前输出矩阵大小:1024×1024

2 个答案:

答案 0 :(得分:1)

我认为matlab中存在极坐标图的内置函数。

Z = [2+3i 2 -1+4i 3-4i 5+2i -4-2i -2+3i -2 -3i 3i-2i];
polarplot(Z,'*')

此命令绘制: plot polar

请看这个链接:

http://www.mathworks.com/help/matlab/ref/polarplot.html

要以灰度绘制,请使用“pcolor”并将colormap指定为“gray”

www.mathworks.com/help/matlab/ref/pcolor.html

答案 1 :(得分:1)

问题解决了(除了一个小缺陷),部分是因为K.M. Shihab Uddin指出了我正确的方向。不幸的是,使用冲浪意味着不断地在图中绘制图像,这也很慢。

因此,对于每个X和Y组合,我在X和Y值中都有单独的矩阵和灰度值(在一个名为C的矩阵中)。

我发现pcolor只是从顶部观察冲浪。所以我使用以下代码绘制我的图表。

surf(X,Y,C*255)
view([0,0,500])

然而,这给了我一个完全黑色的图像。这是因为在我的情况下,surf(和pcolor)径向创建960个网格线。解决方案是使用:

surf(X,Y,img2*255,'EdgeColor','none')
view([0,0,500])

现在我有一个几乎完美的形象,就像我以前一样。只有在我的960个径向线中,一个是白色的,所以我仍然必须解决这个问题。但是,我觉得这是功能冲浪的技术细节,回答这一部分不属于这个问题。

The resulting image