Получение положения точки в пикселях в Matlab для данных МРТ

Данные МРТ могу показать на рисунке. Я использовал источник:

load mri
figure('Colormap',map)
load DCE_sec05_inp.mat
image(data2{1,1}) %i get 128*96 pixel picture
axis image

Но я не могу найти решение, как я могу получить положение пикселя в рабочей области, когда я нажимаю на пиксель на рисунке. Я нашел этот код:

I = imread('cameraman.tif');  %read the image in I
imshow(I);                    %display I
[c,r,P] = impixel(I)

но я не могу получить данные МРТ в режиме imshow. Спасибо за любую помощь


person user3077942    schedule 03.01.2014    source источник
comment
Что происходит, когда вы используете imshow? Вы получаете сообщение об ошибке? Или просто ничего не показывает? Кроме того, вы можете использовать imread вместо load, если можете.   -  person Cape Code    schedule 04.01.2014


Ответы (2)


Вам не обязательно нужен imshow, попробуйте следующее:

image(data2{1,1}) %i get 128*96 pixel picture
axis image
[u v]=getpts;

Координаты точек, которые вы нажали, будут сохранены в u и v.

person Cape Code    schedule 03.01.2014

Изображение или данные, которые вы читаете, имеют тип map (mri), который не обязательно имеет форму RGB (cameraman). Чтобы показать изображение с помощью imshow, вам потребуются данные карты в качестве второго аргумента. Например, первое изображение в данных МРТ может быть показано с использованием следующего синтаксиса:

load mri
imshow(D(:,:,:,1), map)  %map is provided the mri.dat

После того, как вы используете imshow, вы можете использовать impixel, как в приведенном вами примере.

person Lokesh A. R.    schedule 04.01.2014