2015-07-30 5 views
0

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

Я хотел бы загрузить эти координаты (создание круговых областей интереса (ROI) с диаметром 3 пикселя) на мое изображение и извлечь интенсивность этих пикселей.

Я могу загрузить/наложить координаты на изображение, используя;

imshow(file); 
hold on 
scatter(xCoords, yCoords, 'g') 

Но не может извлечь интенсивность.

Можете вы, ребята, указать мне в правильном направлении?

+1

Не могли бы вы опубликовать образец изображения и образец согласовывает с ожидаемым выходом, пожалуйста (т.е. [mcve] (http://stackoverflow.com/help/mcve). Это, безусловно, поможет вам получать полезный ответ . – kkuilla

+3

'pixeldata = файл (xCoords, yCoords)' –

+0

@AnderBiguir Спасибо большое, его почти работает я использовал ? 'а = imread (файл);' pixeldata = а (xCoords, yCoords);» Я использовал матрицу (добавил одно координатное значение +/- 3 пикселя в направлениях X и Y), чтобы извлечь более крупный (квадратный) ROI, чем точный пиксель ... но не разработал, как извлекать данные из кругового регион Небольшая проблема заключается в том, что imread не предоставляет 16-битные значения. – user3644826

ответ

0

Я не уверен, что вы подразумеваете под кругом с диаметром 3 пикселя, так как вы находитесь в квадратной сетке (как упоминалось в Ander Biguri). Но вы можете использовать fspecial, чтобы создать фильтр диска, а затем нормализовать. Что-то вроде этого:

r = 1.5; % for diameter = 3 
h = fspecial('disk', r); 
h = h/h(ceil(r),ceil(r)); 

Вы можете использовать его как маску для получения интенсивностей в данной области изображения.

im = imread(file); 
ROI = im(xCoord-1:xCoord+1; yCoord-1:yCoord+1); 
I = ROI.*h; 
Смежные вопросы