2017-01-30 25 views
1

У меня есть объем 3D-объема мозга (x, y) и z = фрагменты. Для этого тома у меня есть конкретные координаты (которые отражают некоторые функции), и я хочу выделить эти координаты (например, путем рисования с определенным цветом). Я искал и нашел подобный код:Нарисуйте 3D-объем в MATLAB

t=image;     % gray scale image 
red=t; 
green=t; 
blue=t; 
for i=1:size(indx,1)  %indx: indexes of the featured coordinates 
red(indx(i,1),indx(i,2))=255; 
green(indx(i,1),indx(i,2))=0; 
blue(indx(i,1),indx(i,2))=0; 
end 
out=cat(3,red,green,blue); 

Проблема заключается в том, что этот код работает с серой шкалы изображения. Когда я попытался обобщить его объема я получил что-то с размером: (х, у, г, 3) через:

for i=1:size(indx,1) 
red(indx(i,1),indx(i,2),indx(i,3))=255; 
green(indx(i,1),indx(i,2),indx(i,3))=0; 
blue(indx(i,1),indx(i,2),indx(i,3))=0; 
end 
out = cat(4, red, green, blue); 

Является ли это обобщение верно? если да, то как показать результирующие срезы с цветными частями?

ответ

0

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

VolLabels = uint8(VolData); 

VolLabels(indx) = 1; %same notation, linear indices. 'colour1' 
VolLabels(indx2) = 2; %different feature, 'colour2' 

Затем вы можете просмотреть ломтики нормально, т.е. imshow (VolLabels (:,:, sliceZ)). Затем, используя инструмент imcontrast, вы можете установить функцию (ы), которую хотите видеть, установив пределы. Также помогает игра с цветами.

Или экстракт тома с только одна особенность по: (? МРТ)

VolRedLabel = VolLabels == 1; %extracts the 'colour1' label 

Если вы только начинаете с Matlab и КТ - изображения проверить функцию изоповерхность(). Однако он перестает работать с более крупными наборами данных.