Matlab: polar coordinates grey scale plot

▼魔方 西西 提交于 2019-12-24 18:40:19

问题


edit: I decided to split this question into two parts, because it were really two questions: 1. how to make a polar surface plot in MATLAB (this question) and 2. how to put fit polar data points into a coarse (and non-polar) matrix

I have a matrix that contains certain grey values (values between zero and one). These points are stored in a rectangular matrix, but really the data points are acquired by rotating the detector. This means that I actually have polar coordinates (I know the polar coordinates for every single pixel in my starting matrix).

I want to make a polar plot of the data points. I have the example of this below.

Because MATLAB stores images as matrices, the polar coordinates I have do not exactly match the 'bins' of the matrix. Therefore, we currently use an interpolation algorithm to put the polar coordinates into a square matrix. However, this is extremely slow. I see two methods to solve this issue:

  1. let MATLAB directly plot the data points as polar.
  2. calculate once how to convert from the start matrix to the end matrix and let MATLAB do this through matrix multiplication.

Some basic information:

Input matrix size: 512×960

Current output matrix size: 1024×1024


回答1:


I think there is built in function for polar plot in matlab.

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

this command plots: plot polar

See this link:

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

To plot in grayscale, use "pcolor" and specify colormap to "gray"

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




回答2:


The question was solved (apart from a minor flaw), partially because K.M. Shihab Uddin pointed me in the right direction. Unfortunately, using surf means continuously really plotting the image in a figure, and this is slow as well.

So I have X and Y values both in separate matrices and greyscale values (in a matrix called C) for every X and Y combination.

I found out that pcolor is just surf with a viewpoint from the top. So I used the following code to plot my graph.

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

However, this gave me a completely black image. This is because surf (and pcolor) create 960 grid lines radially in my case. The solution is to use:

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

Now I have an almost perfect image, like I had before. Only, of my 960 radial lines, one is left white, so I still have to solve that. However, I feel this is a technical detail of the function surf, and answering this part does not belong in this question.

The resulting image



来源:https://stackoverflow.com/questions/37170450/matlab-polar-coordinates-grey-scale-plot

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!