2013-07-21 3 views
0

Привет Я пытаюсь нарисовать изображение.Как рисовать/рисовать с несколькими матрицами

У меня есть три матрицы:

Матрица А: координаты х

Матрица B: Y координаты

Матрица C: изображение серой шкалы

Например:

A = [1, 1;  B = [1, 2;  C = [1, 2; 
    2, 2]   1, 2]   3, 4] 

Я построю точку со значением C (1) в X (1), Y (1). Значение 1 обращается в точке (1,1) Значение 2 обращается в точке (1,2) Значение 3 обращается в точке (2,1) Значение 4 обращается в точке (2,2)

Есть функцию, которую я могу использовать для построения этого, или мне нужно это реализовать? Любое предложение о том, как реализовать это, будет оценено по достоинству. Спасибо.

+0

Теперь это сопоставление от одного к одному, т. Е. Существует ли только одно значение C для пары (x, y)? Более конкретно, каковы матрицы X и Y? – voxeloctree

+0

Это все 2D-матрицы с одинаковым размером. Я не уверен, что вы подразумеваете под одной картиной. Поэтому значение C (1) используется в X (1), Y (1). Значение C (2) используется при X (2), Y (2) и т. Д. –

+0

Вы можете узнать больше о них в Интернете, найти инъективные функции. Извините, что смутил вас, я был в замешательстве. Но вы сделали это более понятным с помощью ваших матриц A, B, C. – voxeloctree

ответ

0

Это полное изображение? А A, B и C 1D, верно? Если это так, вы можете сделать 2D-массив со значениями Matrix C в соответствующих индексах, преобразовать его в изображение и отобразить изображения.

img = zeros(max(max(B)),max(max(A))); %initialize the new matrix 
for i = 1:numel(C)      %for each element in C 
     img(B(i),A(i)) = C(i);   %fill the matrix one element at a time 
end 
img = mat2gray(img);     %optional. More information in edit 
imshow(img);       %display the image 

Это предполагает, что минимальное значение индекса равно 1. Если 0 вместо этого, вы должны добавить 1 для всех индексов.

My matlab немного ржавый, но это должно сработать.

Редактировать: Есть ли причина, по которой они предназначены для создания двухмерных массивов? Несмотря на это, я обновил свой ответ на работу в любом случае.

edit2: mat2gray будет масштабировать ваши значения между 0 и 1. Если ваши значения уже оттенки серого, это не нужно. Если ваши значения имеют другую шкалу, но не обязательно содержат минимальные и максимальные значения, вы можете указать минуты и макс. Например, если ваш диапазон от 0 до 255, используйте mat2gray(img,[0,255]);

Смежные вопросы