2016-05-11 13 views
1

редактирования: Я решил разделить этот вопрос на две части, потому что это было на самом деле два вопроса: 1. как сделать полярную поверхность участка в MATLAB (этот вопрос) и 2. how to put fit polar data points into a coarse (and non-polar) matrixMatlab: полярные координаты серая шкала сюжет

У меня есть матрица, содержащая определенные значения серого (значения от нуля до единицы). Эти точки хранятся в прямоугольной матрице, но на самом деле точки данных приобретаются путем вращения детектора. Это означает, что у меня действительно есть полярные координаты (я знаю полярные координаты для каждого пикселя в исходной матрице).

Я хочу создать полярный график точек данных. У меня есть пример этого ниже.

Image as I want it

Поскольку MATLAB хранит изображения в виде матрицы, полярные координаты у меня точно не соответствуют «Лари» матрицы. Поэтому в настоящее время мы используем алгоритм интерполяции, чтобы поместить полярные координаты в квадратную матрицу. Однако это очень медленно. Я вижу два метода для решения этой проблемы:

  1. Позволяет MATLAB напрямую строить точки данных как полярные.
  2. calculate once how to convert from the start matrix to the end matrix and let MATLAB do this through matrix multiplication.

Некоторые основные сведения:

Размер входного матрица: 512 × 960

Текущий размер выход матрицы: 1024 × 1024

+0

Возможный дубликат [Как изменить изображение из (х) координат полярных координат MATLAB] (http://stackoverflow.com/questions/7580623/how-to-change-an-image- from-xy-coord-to-polar-coord-matlab) – tvo

+0

@tvo, я боюсь, что это не дубликат. Они имеют декартовую картинку и хотят сделать из нее полярный образ. У меня есть полярные координаты и значения, но я хочу, чтобы график был также полярным, и это то, чего я, похоже, не могу. – BramMooij

+0

Я перепутал, отметив дубликат. Я хотел бы отметить это: http://stackoverflow.com/questions/12924598/examples-to-convert-image-to-polar-coordinates-do-it-explicitly-want-a-slick-m. Может быть, это не дубликат, но может быть полезно посмотреть. – tvo

ответ

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" и указать цветовую палитру для "серого"

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

+0

Это просто указывает полярные точки, а не серые значения справа? Если я ошибаюсь, пожалуйста, уточните, как я могу использовать это в моем случае. – BramMooij

+0

да, эта функция будет строить точки !! –

+0

, если вам нужно построить сюжет в оттенках серого, вы можете использовать «pcolor» –

1

Вопрос был решен (кроме незначительного недостатка), частично потому, что К.М. Шихаб Уддин указал мне в правильном направлении. К сожалению, использование серфинга означает непрерывное построение изображения на фигуре, и это тоже медленно.

Итак, у меня есть значения X и Y как в отдельных матрицах, так и в оттенках серого (в матрице C) для каждой комбинации X и Y.

Я узнал, что 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 радиальных линий, один из них остался белым, поэтому я все еще должен решить это. Тем не менее, я считаю, что это техническая деталь функции surf, и ответ на эту часть не относится к этому вопросу.

The resulting image