2013-04-08 6 views
0

У меня проблема:извлечение значений матрицы из другой матрицы

points (размер = 65,2) - это переменная, которая имеет пиксельные координаты изображения. В первом столбце есть координаты x, а во вторых координатах y и я хочу взять значения амплитуды матрицы (размер = 256,256,6) из этих пиксельных координат только одного канала, например. 3 (три).

Я не мог добиться этого.

intensities = images(points(:,2), points(:,1), 3); 

делает матрицу 65x65.

Благодаря

Jimenez

+0

Ваш вопрос не достаточно ясен, чтобы я дал вам ответ. Если изображения являются вашей матрицей 256x256x6, то интенсивности теперь являются значениями в канале 3 из ваших точек. abs (интенсивности) дает вам величину этих значений, но тогда что вы хотите сделать оттуда? – Geodesic

ответ

1

Вы можете конвертировать x,y индексов в линейные индексы, чтобы получить значение, которые вы хотите от вашего изображения:

% some sample data  
list = round(256*rand(65,2)); 
im = rand(256,256); 
% calculate linear indices 
ind = sub2ind([256,256],list(:,1),list(:,2)); 
intensities = im(ind); 

Это приводит к intensities матрице, которая 65x1, где каждый элемент соответствует парам x,y из вашего списка.

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